From 6d22efd758438a6a80170e2191bb9cae92ae5d1f Mon Sep 17 00:00:00 2001 From: Jianxu Chen Date: Tue, 21 Mar 2023 09:43:13 +0100 Subject: [PATCH] add demo --- scripts/data_format.ipynb | 167 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 167 insertions(+) create mode 100644 scripts/data_format.ipynb diff --git a/scripts/data_format.ipynb b/scripts/data_format.ipynb new file mode 100644 index 0000000..57f1b83 --- /dev/null +++ b/scripts/data_format.ipynb @@ -0,0 +1,167 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from aicsimageio import AICSImage\n", + "from aicsimageio.writers import OmeTiffWriter\n", + "from aicsimageio.types import PhysicalPixelSizes\n", + "from pathlib import Path\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "base_path = \"/mnt/eternus/share/immun_project/\"\n", + "cut_path = base_path / Path(\"cut\")\n", + "new_path = base_path / Path(\"source_cut\")\n", + "\n", + "filenames = sorted(cut_path.glob(\"*_DAPI.tif\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/mnt/eternus/anaconda3_shared/envs/jc_im2im_dev/lib/python3.9/site-packages/ome_types/_convenience.py:105: FutureWarning: The default XML parser will be changing from 'xmlschema' to 'lxml' in version 0.4.0. To silence this warning, please provide the `parser` argument, specifying either 'lxml' (to opt into the new behavior), or'xmlschema' (to retain the old behavior).\n", + " d = to_dict(os.fspath(xml), parser=parser, validate=validate)\n", + "/mnt/eternus/anaconda3_shared/envs/jc_im2im_dev/lib/python3.9/site-packages/ome_types/_convenience.py:105: FutureWarning: The default XML parser will be changing from 'xmlschema' to 'lxml' in version 0.4.0. To silence this warning, please provide the `parser` argument, specifying either 'lxml' (to opt into the new behavior), or'xmlschema' (to retain the old behavior).\n", + " d = to_dict(os.fspath(xml), parser=parser, validate=validate)\n", + "/mnt/eternus/anaconda3_shared/envs/jc_im2im_dev/lib/python3.9/site-packages/ome_types/_convenience.py:105: FutureWarning: The default XML parser will be changing from 'xmlschema' to 'lxml' in version 0.4.0. To silence this warning, please provide the `parser` argument, specifying either 'lxml' (to opt into the new behavior), or'xmlschema' (to retain the old behavior).\n", + " d = to_dict(os.fspath(xml), parser=parser, validate=validate)\n", + "/mnt/eternus/anaconda3_shared/envs/jc_im2im_dev/lib/python3.9/site-packages/ome_types/_convenience.py:105: FutureWarning: The default XML parser will be changing from 'xmlschema' to 'lxml' in version 0.4.0. To silence this warning, please provide the `parser` argument, specifying either 'lxml' (to opt into the new behavior), or'xmlschema' (to retain the old behavior).\n", + " d = to_dict(os.fspath(xml), parser=parser, validate=validate)\n", + "/mnt/eternus/anaconda3_shared/envs/jc_im2im_dev/lib/python3.9/site-packages/ome_types/_convenience.py:105: FutureWarning: The default XML parser will be changing from 'xmlschema' to 'lxml' in version 0.4.0. To silence this warning, please provide the `parser` argument, specifying either 'lxml' (to opt into the new behavior), or'xmlschema' (to retain the old behavior).\n", + " d = to_dict(os.fspath(xml), parser=parser, validate=validate)\n", + "/mnt/eternus/anaconda3_shared/envs/jc_im2im_dev/lib/python3.9/site-packages/ome_types/_convenience.py:105: FutureWarning: The default XML parser will be changing from 'xmlschema' to 'lxml' in version 0.4.0. To silence this warning, please provide the `parser` argument, specifying either 'lxml' (to opt into the new behavior), or'xmlschema' (to retain the old behavior).\n", + " d = to_dict(os.fspath(xml), parser=parser, validate=validate)\n", + "/mnt/eternus/anaconda3_shared/envs/jc_im2im_dev/lib/python3.9/site-packages/ome_types/_convenience.py:105: FutureWarning: The default XML parser will be changing from 'xmlschema' to 'lxml' in version 0.4.0. To silence this warning, please provide the `parser` argument, specifying either 'lxml' (to opt into the new behavior), or'xmlschema' (to retain the old behavior).\n", + " d = to_dict(os.fspath(xml), parser=parser, validate=validate)\n", + "/mnt/eternus/anaconda3_shared/envs/jc_im2im_dev/lib/python3.9/site-packages/ome_types/_convenience.py:105: FutureWarning: The default XML parser will be changing from 'xmlschema' to 'lxml' in version 0.4.0. To silence this warning, please provide the `parser` argument, specifying either 'lxml' (to opt into the new behavior), or'xmlschema' (to retain the old behavior).\n", + " d = to_dict(os.fspath(xml), parser=parser, validate=validate)\n", + "/mnt/eternus/anaconda3_shared/envs/jc_im2im_dev/lib/python3.9/site-packages/ome_types/_convenience.py:105: FutureWarning: The default XML parser will be changing from 'xmlschema' to 'lxml' in version 0.4.0. To silence this warning, please provide the `parser` argument, specifying either 'lxml' (to opt into the new behavior), or'xmlschema' (to retain the old behavior).\n", + " d = to_dict(os.fspath(xml), parser=parser, validate=validate)\n", + "/mnt/eternus/anaconda3_shared/envs/jc_im2im_dev/lib/python3.9/site-packages/ome_types/_convenience.py:105: FutureWarning: The default XML parser will be changing from 'xmlschema' to 'lxml' in version 0.4.0. To silence this warning, please provide the `parser` argument, specifying either 'lxml' (to opt into the new behavior), or'xmlschema' (to retain the old behavior).\n", + " d = to_dict(os.fspath(xml), parser=parser, validate=validate)\n", + "/mnt/eternus/anaconda3_shared/envs/jc_im2im_dev/lib/python3.9/site-packages/ome_types/_convenience.py:105: FutureWarning: The default XML parser will be changing from 'xmlschema' to 'lxml' in version 0.4.0. To silence this warning, please provide the `parser` argument, specifying either 'lxml' (to opt into the new behavior), or'xmlschema' (to retain the old behavior).\n", + " d = to_dict(os.fspath(xml), parser=parser, validate=validate)\n", + "/mnt/eternus/anaconda3_shared/envs/jc_im2im_dev/lib/python3.9/site-packages/ome_types/_convenience.py:105: FutureWarning: The default XML parser will be changing from 'xmlschema' to 'lxml' in version 0.4.0. To silence this warning, please provide the `parser` argument, specifying either 'lxml' (to opt into the new behavior), or'xmlschema' (to retain the old behavior).\n", + " d = to_dict(os.fspath(xml), parser=parser, validate=validate)\n", + "/mnt/eternus/anaconda3_shared/envs/jc_im2im_dev/lib/python3.9/site-packages/ome_types/_convenience.py:105: FutureWarning: The default XML parser will be changing from 'xmlschema' to 'lxml' in version 0.4.0. To silence this warning, please provide the `parser` argument, specifying either 'lxml' (to opt into the new behavior), or'xmlschema' (to retain the old behavior).\n", + " d = to_dict(os.fspath(xml), parser=parser, validate=validate)\n", + "/mnt/eternus/anaconda3_shared/envs/jc_im2im_dev/lib/python3.9/site-packages/ome_types/_convenience.py:105: FutureWarning: The default XML parser will be changing from 'xmlschema' to 'lxml' in version 0.4.0. To silence this warning, please provide the `parser` argument, specifying either 'lxml' (to opt into the new behavior), or'xmlschema' (to retain the old behavior).\n", + " d = to_dict(os.fspath(xml), parser=parser, validate=validate)\n", + "/mnt/eternus/anaconda3_shared/envs/jc_im2im_dev/lib/python3.9/site-packages/ome_types/_convenience.py:105: FutureWarning: The default XML parser will be changing from 'xmlschema' to 'lxml' in version 0.4.0. To silence this warning, please provide the `parser` argument, specifying either 'lxml' (to opt into the new behavior), or'xmlschema' (to retain the old behavior).\n", + " d = to_dict(os.fspath(xml), parser=parser, validate=validate)\n", + "/mnt/eternus/anaconda3_shared/envs/jc_im2im_dev/lib/python3.9/site-packages/ome_types/_convenience.py:105: FutureWarning: The default XML parser will be changing from 'xmlschema' to 'lxml' in version 0.4.0. To silence this warning, please provide the `parser` argument, specifying either 'lxml' (to opt into the new behavior), or'xmlschema' (to retain the old behavior).\n", + " d = to_dict(os.fspath(xml), parser=parser, validate=validate)\n", + "/mnt/eternus/anaconda3_shared/envs/jc_im2im_dev/lib/python3.9/site-packages/ome_types/_convenience.py:105: FutureWarning: The default XML parser will be changing from 'xmlschema' to 'lxml' in version 0.4.0. To silence this warning, please provide the `parser` argument, specifying either 'lxml' (to opt into the new behavior), or'xmlschema' (to retain the old behavior).\n", + " d = to_dict(os.fspath(xml), parser=parser, validate=validate)\n", + "/mnt/eternus/anaconda3_shared/envs/jc_im2im_dev/lib/python3.9/site-packages/ome_types/_convenience.py:105: FutureWarning: The default XML parser will be changing from 'xmlschema' to 'lxml' in version 0.4.0. To silence this warning, please provide the `parser` argument, specifying either 'lxml' (to opt into the new behavior), or'xmlschema' (to retain the old behavior).\n", + " d = to_dict(os.fspath(xml), parser=parser, validate=validate)\n", + "/mnt/eternus/anaconda3_shared/envs/jc_im2im_dev/lib/python3.9/site-packages/ome_types/_convenience.py:105: FutureWarning: The default XML parser will be changing from 'xmlschema' to 'lxml' in version 0.4.0. To silence this warning, please provide the `parser` argument, specifying either 'lxml' (to opt into the new behavior), or'xmlschema' (to retain the old behavior).\n", + " d = to_dict(os.fspath(xml), parser=parser, validate=validate)\n", + "/mnt/eternus/anaconda3_shared/envs/jc_im2im_dev/lib/python3.9/site-packages/ome_types/_convenience.py:105: FutureWarning: The default XML parser will be changing from 'xmlschema' to 'lxml' in version 0.4.0. To silence this warning, please provide the `parser` argument, specifying either 'lxml' (to opt into the new behavior), or'xmlschema' (to retain the old behavior).\n", + " d = to_dict(os.fspath(xml), parser=parser, validate=validate)\n", + "/mnt/eternus/anaconda3_shared/envs/jc_im2im_dev/lib/python3.9/site-packages/ome_types/_convenience.py:105: FutureWarning: The default XML parser will be changing from 'xmlschema' to 'lxml' in version 0.4.0. To silence this warning, please provide the `parser` argument, specifying either 'lxml' (to opt into the new behavior), or'xmlschema' (to retain the old behavior).\n", + " d = to_dict(os.fspath(xml), parser=parser, validate=validate)\n", + "/mnt/eternus/anaconda3_shared/envs/jc_im2im_dev/lib/python3.9/site-packages/ome_types/_convenience.py:105: FutureWarning: The default XML parser will be changing from 'xmlschema' to 'lxml' in version 0.4.0. To silence this warning, please provide the `parser` argument, specifying either 'lxml' (to opt into the new behavior), or'xmlschema' (to retain the old behavior).\n", + " d = to_dict(os.fspath(xml), parser=parser, validate=validate)\n", + "/mnt/eternus/anaconda3_shared/envs/jc_im2im_dev/lib/python3.9/site-packages/ome_types/_convenience.py:105: FutureWarning: The default XML parser will be changing from 'xmlschema' to 'lxml' in version 0.4.0. To silence this warning, please provide the `parser` argument, specifying either 'lxml' (to opt into the new behavior), or'xmlschema' (to retain the old behavior).\n", + " d = to_dict(os.fspath(xml), parser=parser, validate=validate)\n", + "/mnt/eternus/anaconda3_shared/envs/jc_im2im_dev/lib/python3.9/site-packages/ome_types/_convenience.py:105: FutureWarning: The default XML parser will be changing from 'xmlschema' to 'lxml' in version 0.4.0. To silence this warning, please provide the `parser` argument, specifying either 'lxml' (to opt into the new behavior), or'xmlschema' (to retain the old behavior).\n", + " d = to_dict(os.fspath(xml), parser=parser, validate=validate)\n", + "/mnt/eternus/anaconda3_shared/envs/jc_im2im_dev/lib/python3.9/site-packages/ome_types/_convenience.py:105: FutureWarning: The default XML parser will be changing from 'xmlschema' to 'lxml' in version 0.4.0. To silence this warning, please provide the `parser` argument, specifying either 'lxml' (to opt into the new behavior), or'xmlschema' (to retain the old behavior).\n", + " d = to_dict(os.fspath(xml), parser=parser, validate=validate)\n", + "/mnt/eternus/anaconda3_shared/envs/jc_im2im_dev/lib/python3.9/site-packages/ome_types/_convenience.py:105: FutureWarning: The default XML parser will be changing from 'xmlschema' to 'lxml' in version 0.4.0. To silence this warning, please provide the `parser` argument, specifying either 'lxml' (to opt into the new behavior), or'xmlschema' (to retain the old behavior).\n", + " d = to_dict(os.fspath(xml), parser=parser, validate=validate)\n", + "/mnt/eternus/anaconda3_shared/envs/jc_im2im_dev/lib/python3.9/site-packages/ome_types/_convenience.py:105: FutureWarning: The default XML parser will be changing from 'xmlschema' to 'lxml' in version 0.4.0. To silence this warning, please provide the `parser` argument, specifying either 'lxml' (to opt into the new behavior), or'xmlschema' (to retain the old behavior).\n", + " d = to_dict(os.fspath(xml), parser=parser, validate=validate)\n" + ] + } + ], + "source": [ + "for fn in filenames:\n", + " fn_base = fn.stem[:-5]\n", + " dapi = AICSImage(fn).get_image_data(\"YX\", Z=0, T=0, C=0)\n", + " CD64 = AICSImage(cut_path / f\"{fn_base}_CD64.tif\").get_image_data(\"YX\", Z=0, T=0, C=0)\n", + " TMEM119 = AICSImage(cut_path / f\"{fn_base}_TMEM119.tif\").get_image_data(\"YX\", Z=0, T=0, C=0)\n", + " merged = np.stack([dapi, CD64, TMEM119], axis=0)\n", + " out_fn = new_path / f\"{fn_base}.tiff\"\n", + " OmeTiffWriter.save(merged, out_fn, dim_order=\"CYX\", physical_pixel_sizes=[PhysicalPixelSizes(0, 0.325, 0.325)], channel_names=[[\"DAPI\", \"CD64\", \"TMEM119\"]])" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.325\n", + "0.325\n", + "\n" + ] + } + ], + "source": [ + "reader = AICSImage(out_fn)\n", + "print(reader.physical_pixel_sizes.Y)\n", + "print(reader.physical_pixel_sizes.X)\n", + "print(reader.dims)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "img_DAPI = reader.get_image_data(\"YX\", C=reader.channel_names.index(\"DAPI\"), T=0, Z=0)\n", + "img_CD64 = reader.get_image_data(\"YX\", C=reader.channel_names.index(\"CD64\"), T=0, Z=0)\n", + "img_TMEM119 = reader.get_image_data(\"YX\", C=reader.channel_names.index(\"TMEM119\"), T=0, Z=0)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "jc_im2im_dev", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.15" + }, + "orig_nbformat": 4, + "vscode": { + "interpreter": { + "hash": "50fa6b3a3d2c08b8f5587b2999a963caca3e95136a1c3abe22c8121754c6ac26" + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}