From 9f797df19e25a30050769be3eeecedf3a9f01c3a Mon Sep 17 00:00:00 2001 From: "glegoc@NeuroPSI" Date: Wed, 18 Dec 2024 13:36:38 +0100 Subject: [PATCH] - added tables as pip dependency - removed create_pyramids in favor of standalone package - mention pyramid-creator standalone package - updated miniconda to miniforge, explaining anaconda licensing --- docs/api-script-pyramids.md | 1 - docs/guide-create-pyramids.md | 100 +++---- docs/guide-install-abba.md | 4 +- docs/images/anaconda-licences.png | Bin 0 -> 143832 bytes docs/main-getting-started.md | 33 ++- mkdocs.yml | 1 - pyproject.toml | 11 +- scripts/pyramids/createPyramids.groovy | 44 --- scripts/pyramids/create_pyramids.py | 378 ------------------------- 9 files changed, 61 insertions(+), 511 deletions(-) delete mode 100644 docs/api-script-pyramids.md create mode 100644 docs/images/anaconda-licences.png delete mode 100644 scripts/pyramids/createPyramids.groovy delete mode 100644 scripts/pyramids/create_pyramids.py diff --git a/docs/api-script-pyramids.md b/docs/api-script-pyramids.md deleted file mode 100644 index 6b9bec5..0000000 --- a/docs/api-script-pyramids.md +++ /dev/null @@ -1 +0,0 @@ -:::scripts.pyramids.create_pyramids \ No newline at end of file diff --git a/docs/guide-create-pyramids.md b/docs/guide-create-pyramids.md index daa46a8..69df0d8 100644 --- a/docs/guide-create-pyramids.md +++ b/docs/guide-create-pyramids.md @@ -1,33 +1,49 @@ # Create pyramidal OME-TIFF -This page will guide you to use the `create_pyramids` script, in the event the CZI file does not work directly in QuPath. The script will generate [pyramids](tips-formats.md#pyramids) from OME-TIFF files exported from ZEN. +This page will guide you to use the `pyramid-creator` package, in the event the CZI file does not work directly in QuPath. The script will generate [pyramids](tips-formats.md#pyramids) from OME-TIFF files exported from ZEN. !!! tip inline end - The `create_pyramids.py` script can also pyramidalize images using Python only with the `--no-use-qupath` option, but I find it slower and less reliable. + `pyramid-creator` can also pyramidalize images using Python only with the `--no-use-qupath` option. This Python script uses QuPath under the hood, via a companion script called `createPyramids.groovy`. It will find the OME-TIFF files and make QuPath run the groovy script on it, in console mode (without graphical user interface). This script is standalone, eg. it does not rely on the `histoquant` package. But installing the later makes sure all dependencies are installed (namely `typer` and `tqdm` with the QuPath backend and quite a few more for the Python backend). +`pyramid-creator` moved to a standalone package that you can find [here](https://github.com/TeamNCMC/pyramid-creator#pyramid_creator) with [installation](https://github.com/TeamNCMC/pyramid-creator#install) and [usage](https://github.com/TeamNCMC/pyramid-creator#usage) instructions. + ## Installation -You will need a virtual environment with the required dependencies. +You will find instructions on the dedicated project page over at [Github](https://github.com/TeamNCMC/pyramid-creator#pyramid_creator). + +For reference : + +You will need `conda`, follow [those instructions](main-getting-started.md#python-virtual-environment-manager-conda) to install it. -Follow [those instructions](main-getting-started.md#python-virtual-environment-manager-conda) to install miniconda3 if you didn't already. +Then, create a virtual environment if you didn't already (`pyramid-creator` can be installed in the environment for `histoquant`) and install the [`pyramid-creator`](https://github.com/TeamNCMC/pyramid-creator) package. +```bash +conda create -c conda-forge -n hq python=3.12 # not required if you already create an environment +conda activate hq +pip install pyramid-creator +``` +To use the Python backend (with `tifffile`), replace the last line with : +``` +pip install pyramid-creator[python-backend] +``` +To use the QuPath backend, a working QuPath installation is required, and the `pyramid-creator` command needs to be aware of its location. + +To do so, first, install [QuPath](https://qupath.github.io). By default, it will install in `~\AppData\QuPath-0.X.Y`. In any case, note down the installation location. + +Then, you have several options : +- Create a file in your user directory called "QUPATH_PATH" (without extension), containing the full path to the QuPath console executable. In my case, it reads : `C:\Users\glegoc\AppData\Local\QuPath-0.5.1\QuPath-0.5.1 (console).exe`. Then, the `pyramid-creator` script will read this file to find the QuPath executable. +- Specify the QuPath path as an option when calling the command line interface (see the [Usage](#usage) section) : +```bash +pyramid-creator /path/to/your/images --qupath-path "C:\Users\glegoc\AppData\Local\QuPath-0.5.1\QuPath-0.5.1 (console).exe" +``` +- Specify the QuPath path as an option when using the package in a Python script (see the [Usage](#usage) section) : +```python +from pyramid_creator import pyramidalize_directory +pyramidalize_directory("/path/to/your/images/", qupath_path="C:\Users\glegoc\AppData\Local\QuPath-0.5.1\QuPath-0.5.1 (console).exe") +``` +- If you're using Windows, using QuPath v0.6.0, v0.5.1 or v0.5.0 and chose the default installation location, `pyramid-creator` *should* find it automatically and write it down in the "QUPATH_PATH" file by itself. -Then, install the required dependencies. -=== "Recommended" - Install the `histoquant` package by following [those instructions](main-getting-started.md#installation). -=== "Minimal" - Alternatively, if you don't plan to use the `histoquant` package, you can create a minimal conda environment with only the libraries required for `create_pyramids.py`. - ```bash title="With QuPath backend" - conda create -n hq python=3.12 - conda activate hq - pip install typer tqdm - ``` - ```bash title="With Python backend" - conda create -n hq python=3.12 - conda activate hq - pip install typer tqdm numpy tifffile scikit-image - ``` ## Export CZI to OME-TIFF [OME-TIFF](https://ome-model.readthedocs.io/en/stable/ome-tiff/) is a specification of the TIFF image format. It specifies how the metadata should be written to the file to be interoperable between softwares. ZEN can export to OME-TIFF so you don't need to pay attention to [metadata](tips-formats.md#metadata). Therefore, you won't need to specify pixel size and channels names and colors as it will be read directly from the OME-TIFF files. !!! example "" @@ -47,48 +63,4 @@ Then, install the required dependencies. The OME-TIFF files should be ready to be pyramidalized with the `create_pyramids.py` script. ## Usage -The script is located under `scripts/pyramids`. Copy the two files (.py and .groovy) elsewhere on your computer. - -To use the QuPath backend (recommended), you need to set its path in the script. To do so, open the `create_pyramids.py` file with a text editor (Notepad or [vscode](https://code.visualstudio.com/) to get nice syntax coloring). -Locate the `QUPATH_PATH` line : -``` python linenums="51" hl_lines="2" ---8<-- "scripts/pyramids/create_pyramids.py:51:54" -``` - -!!! info inline end - The AppData directory is hidden by default. In the file explorer, you can go to the "View" tab and check "Hidden items" under "Show/hide". -And replace the path to the "QuPath-0.X.Y (console).exe" executable. QuPath should be installed in `C:\Users\USERNAME\AppData\Local\QuPath-0.X.Y\` by default. -Save the file. Then run the script on your images : - -!!! example "" - 1. Open a terminal (PowerShell) so that it can find the `create_pyramids.py` script, by either : - - open PowerShell from the start menu, then browse to the location of your script: - ```bash - cd /path/to/your/scripts - ``` - - From the file explorer, browse to where the script is and in an empty space, ++shift+right-button++ to "Open PowerShell window here" - 2. Activate the virtual environment : - ```bash - conda activate hq - ``` - 3. Copy the path to your OME-TIFF images (for example "D:\Data\Histo\NiceMouseName\NiceMouseName-tiff\") - 4. In the terminal, run the script on your images : - ```bash - python create_pyramids.py "D:\Data\Histo\NiceMouseName\NiceMouseName-tiff\" - ``` - !!! warning - Make sure to use **double quotes** when specifying the path (**"**D:\some\path**"**), because if there are whitespaces in it, each whitespace-separated bits will be parsed as several arguments for the script. - -!!! tip - `create_pyramids.py` can behave like a command line interface. In the event you would need to modify the default values used in the script (tile size and the like), you can either edit the script or, preferably, use options when calling the script like so : - ```bash - python create_pyramids.py --OPTION VALUE /path/to/images - ``` - Learn more by asking for help : - ```bash - python create_pyramids.py --help - ``` - -Upon completion, this will create a subdirectory "pyramidal" next to your OME-TIFF files where you will find the pyramidal images ready to be used in QuPath and ABBA. You can safely delete the original OME-TIFF exported from ZEN. - -You can check the API documentation for this script [here](api-script-pyramids.md). \ No newline at end of file +See the instructions on the dedicated project page over at [Github](https://github.com/TeamNCMC/pyramid-creator#pyramid_creator). diff --git a/docs/guide-install-abba.md b/docs/guide-install-abba.md index 3713b44..1c728a4 100644 --- a/docs/guide-install-abba.md +++ b/docs/guide-install-abba.md @@ -35,8 +35,8 @@ ABBA should be installed and functional ! You can check the [official documentat To be able to leverage those atlases, we need to make ImageJ and Python be able to talk to each other. This is the purpose of [abba_python](https://github.com/BIOP/abba_python), that will install ImageJ and its ABBA plugins *inside* a python environment, with bindings between the two worlds. -### Install conda -If not done already, follow [those instructions](main-getting-started.md#python-virtual-environment-manager-conda) to install miniconda3. +### Install `conda` +If not done already, follow [those instructions](main-getting-started.md#python-virtual-environment-manager-conda) to install `conda`. ### Install abba_python in a virtual environment 1. Open a terminal (PowerShell). diff --git a/docs/images/anaconda-licences.png b/docs/images/anaconda-licences.png new file mode 100644 index 0000000000000000000000000000000000000000..3ce4a2352cb0a7403b56b7e90e9371a404408840 GIT binary patch literal 143832 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

-)Vr>-slND!z!dpF5Iq?;dC0mJ?( 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 literal 0 HcmV?d00001 diff --git a/docs/main-getting-started.md b/docs/main-getting-started.md index ee19010..8b2a9ea 100644 --- a/docs/main-getting-started.md +++ b/docs/main-getting-started.md @@ -1,10 +1,10 @@ # Getting started ## Quick start -1. Install QuPath, ABBA and miniconda3. +1. Install QuPath, ABBA and conda. 2. Create an environment : ``` -conda create -c conda-forge -n hq python=3.12 pytables +conda create -c conda-forge -n hq python=3.12 ``` 3. Activate it : ``` @@ -35,15 +35,23 @@ This is where you'll create QuPath projects, in which you'll be able to browse y ### Aligning Big Brain and Atlases (ABBA) This is the tool you'll use to register 2D histological sections to 3D atlases. See the [dedicated page](guide-install-abba.md). -### Python virtual environment manager (conda) +### Python virtual environment manager (`conda`) The `histoquant` package is written in Python. It depends on scientific libraries (such as [NumPy](https://numpy.org/), [pandas](https://pandas.pydata.org/) and many more). Those libraries need to be installed in versions that are compatible with each other and with `histoquant`. To make sure those versions do not conflict with other Python tools you might be using (`deeplabcut`, `abba_python`, ...), we will install `histoquant` and its dependencies in a dedicated *virtual environment*. -[conda](https://docs.conda.io/en/latest/) is a software that takes care of this. It comes with a "base" environment, from which we will create and manage other environments. It is included with the Anaconda distribution, but the latter is bloated : its "base" environment already contains tons of libraries, and tends to self-destruct at some point (eg. becomes unable to resolve the inter-dependencies), which makes you unable to install new libraries nor create new environments. +[`conda`](https://docs.conda.io/en/latest/) is a software that takes care of this. It comes with a "base" environment, from which we will create and manage other, project-specific environments. It is also used to download and install python in each of those environments, as well as third-party libraries. `conda` in itself is free and open-source and can be used freely by anyone. -This is why it is *highly* recommended to install miniconda3 instead, a minimal installer for conda : +It is included with the Anaconda distribution, which is subject to [specific terms of service](https://www.anaconda.com/blog/update-on-anacondas-terms-of-service-for-academia-and-research), which state that unless you're an individual, a member of a company with less than 200 employees or a member of an university (but *not* a national research lab) it's free to use, otherwise, you need to pay a licence. `conda`, while being free, is by default configured to use the "defaults" channel to fetch the packages (including Python itself), a repository operated by Anaconda, which is, itself, subject to the Anaconda terms of service. + +In contrast, conda-forge is a community-run repository that contains more numerous and more update-to-date packages. This is free to use for anyone. The idea is to use `conda` directly (instead of Anaconda graphical interface) and download packages from conda-forge (instead of the Anaconda-run defaults). To try to decipher this mess, Anaconda provides this figure : + +![Anaconda terms of service](images/anaconda-licences.png) + +Furthermore, the "base" conda environment installed with the Anaconda distribution is bloated and already contains tons of libraries, and tends to self-destruct at some point (eg. becomes unable to resolve the inter-dependencies), which makes you unable to install new libraries nor create new environments. + +This is why it is *highly* recommended to install Miniconda instead, a minimal installer for conda, and configure it to use the free, community-run channel conda-forge, or, even better, use Miniforge which is basically the same but pre-configured to use conda-forge. The only downside is that will not get the Anaonda graphical user interface and you'll need to use the terminal instead, but worry not ! We got you covered. !!! example "" - 1. Download and install [miniconda3](https://repo.anaconda.com/miniconda/) (choose the "latest" version for your system). During the installation, choose to install for the current user, add conda to PATH and make python the default interpreter. + 1. Download and install [Miniforge](https://conda-forge.org/download/) (choose the latest release for your system). During the installation, choose to install for the current user, add conda to PATH and make python the default interpreter. 2. Open a terminal (PowerShell in Windows). Run : ```bash conda init @@ -52,22 +60,13 @@ This is why it is *highly* recommended to install miniconda3 instead, a minimal ```bash (base) PS C:\Users\myname> ``` - 3. Run : - ```bash - conda config --add channels conda-forge - ``` - Then : - ```bash - conda config --set channel_priority flexible - ``` - This will make conda download the packages from the "conda-forge" online repository, which is more complete and up-to-date. The flag `-c conda-forge` in the subsequent instructions won't be necessary anymore. !!! tip - If Anaconda is already installed and you don't have the rights to uninstall it, you'll have to use it instead. You can launch the "Anaconda Prompt (PowerShell)", run `conda init` and follow the same instructions below (and hope it won't break in the foreseeable future). + If Anaconda is already installed and you don't have the rights to uninstall it, you'll have to use it instead. You can launch the "Anaconda Prompt (PowerShell)", run `conda init`. Open a regular PowerShell window and run `conda config --add channels conda-forge`, so that subsequent installations and environments creation will fetch required dependencies from conda-forge. ### Installation This section explains how to actually install the `histoquant` package. -The following commands should be run from a terminal (PowerShell). Remember that the `-c conda-forge` bits are not necessary if you did the step 3. above. +The following commands should be run from a terminal (PowerShell). Remember that the `-c conda-forge` bits are not necessary if you installed conda with the miniforge distribution. !!! example "" 1. Create a virtual environment with python 3.12 and some libraries: diff --git a/mkdocs.yml b/mkdocs.yml index 8c540d9..061a816 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -57,7 +57,6 @@ nav: - histoquant.io: api-io.md - histoquant.seg: api-seg.md - Scripts reference: - - create_pyramids: api-script-pyramids.md - segment_images: api-script-segment.md - qupath_script_runner: api-script-qupath-script-runner.md - main-getting-help.md diff --git a/pyproject.toml b/pyproject.toml index 66ad841..f799b79 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,6 +29,7 @@ dependencies = [ "seaborn>=0.13.2", "shapely>=2.0.4", "skan>=0.12.0", + "tables>=3.10.1", "tifffile>=2024.4.24", "tqdm", "typer", @@ -51,9 +52,11 @@ doc = [ requires = ["setuptools", "wheel"] build-backend = "setuptools.build_meta" +[tool.hatch.build] +include = [ + "histoquant" +] + [tool.ruff] line-length = 88 -extend-include = ["*.ipynb"] - -[tool.setuptools.packages.find] -include = ["histoquant"] +extend-include = ["*.ipynb"] \ No newline at end of file diff --git a/scripts/pyramids/createPyramids.groovy b/scripts/pyramids/createPyramids.groovy deleted file mode 100644 index cfaff9a..0000000 --- a/scripts/pyramids/createPyramids.groovy +++ /dev/null @@ -1,44 +0,0 @@ -/** - * createPyramids.groovy - * - * Convert OME-TIFF to pyramidal OME-TIFF, using QuPath. - * See 'create_pyramids.py' python script to call this script in batch from python. - * - * author : Guillaume Le Goc (g.legoc@posteo.org) @ NeuroPSI - * version : 2024.08.30 - */ - -// --- Parameters -def compression = OMEPyramidWriter.CompressionType.LZW // compression (lossless) - -// parse input arguments -def uid = args[0] -def tileSize = args[1] as int // TIFF tile size -def pyramidScaling = args[2] as int // factor between two consecutive pyramid level -def nThreads = args[3] as int // number of threads for parallelization - -// --- Preparation - -// get QuPath image server -def server = getCurrentServer() - -// define input and output file names -def imagePath = server.getBuilder().getURIs()[0].getPath() -File imageFile = new File(imagePath) -def newImageName = uid + '_' + imageFile.getName().toString() -def outputPath = new File(imageFile.getParent().toString(), newImageName).toString() - -// --- Write the new pyramidal tiff -new OMEPyramidWriter.Builder(server) - .parallelize(nThreads) - .tileSize(tileSize) - .scaledDownsampling(1, pyramidScaling) // 1 : full resolution - .compression(compression) - .build() - .writePyramid(outputPath) - -// --- Imports -import qupath.lib.images.writers.ome.OMEPyramidWriter -import qupath.lib.images.servers.* -import javax.imageio.* -import qupath.lib.images.servers.ImageServerMetadata diff --git a/scripts/pyramids/create_pyramids.py b/scripts/pyramids/create_pyramids.py deleted file mode 100644 index 73a78f1..0000000 --- a/scripts/pyramids/create_pyramids.py +++ /dev/null @@ -1,378 +0,0 @@ -""" -create_pyramids command line interface (CLI). -You can set up your settings filling the variables at the top of the file and run the -script : -> python create_pyramids.py /path/to/your/images - -Or alternatively, you can run the script as a CLI : -> python create_pyramids.py [options] /path/to/your/images - -Example : -> python create_pyramids.py --tile-size 1024 --pyramid-factor 4 /path/to/your/images - -To get help (eg. list all options), run : -> python create_pyramids.py --help - -To use the QuPath backend, you'll need the companion 'createPyramids.groovy' script. - -author : Guillaume Le Goc (g.legoc@posteo.org) @ NeuroPSI -version : 2024.11.19 - -""" - -import math -import multiprocessing -import os -import subprocess -import sys -import uuid -import warnings -from typing import Optional - -import typer -from tqdm import tqdm -from typing_extensions import Annotated - -__version__ = 1.2 - -# --- Parameters (default values) -TILE_SIZE: int = 512 -"""Tile size (usually 512 or 1024).""" -PYRAMID_FACTOR: int = 2 -"""Factor between two consecutive pyramid levels.""" -NTHREADS: int = int(multiprocessing.cpu_count() / 2) -"""Number of threads for parallelization.""" - -# --- QuPath backend parameters (default values) -USE_QUPATH: bool = True -"""Use QuPath and the external groovy script instead of pure python (more reliable).""" -SCRIPT_PATH: str = os.path.join(os.path.dirname(__file__), "createPyramids.groovy") -"""Full path to the groovy script that does the job.""" -QUPATH_PATH: str = ( - "C:/Users/glegoc/AppData/Local/QuPath-0.5.1/QuPath-0.5.1 (console).exe" -) -"""Full path to the QuPath (console) executable.""" -PYRAMID_MAX: int = 32 -"""Maximum rescaling (smaller pyramid).""" - -INEXT: str = "ome.tiff" -"""Input files extension.""" -COMPRESSION_PYTHON: str = "LZW" -"""Compression method.""" - - -# --- Typer functions -def version_callback(value: bool): - if value: - print(f"create-pyramids CLI version : {__version__}") - raise typer.Exit() - - -# --- Processing functions -def pyramidalize_qupath( - image_path: str, - output_image: str, - qupath_path: str, - script_path: str, - tile_size: int, - pyramid_factor: int, - nthreads: int, -): - """ - Pyramidalization with QuPath backend. - - """ - # generate an uid to make sure to not overwrite original file - uid = uuid.uuid1().hex - - # prepare image names - imagename = os.path.basename(image_path) - inputdir = os.path.dirname(image_path) - new_imagename = uid + "_" + imagename - new_imagepath = os.path.join(inputdir, new_imagename) - - # prepare arguments - args = "[" f"{uid}," f"{tile_size}," f"{pyramid_factor}," f"{nthreads}" "]" - - # call the qupath groovy script within a shell - subprocess.run( - [qupath_path, "script", script_path, "-i", image_path, "--args", args], - shell=True, - stdout=subprocess.DEVNULL, - ) - - if not os.path.isfile(new_imagepath): - raise FileNotFoundError( - "QuPath did not manage to create the pyramidalized image." - ) - - # move the pyramidalized image in the output directory - os.rename(new_imagepath, output_image) - - -def pyramidalize_python( - image_path: str, output_image: str, levels: list | tuple, tiffoptions: dict -): - """ - Pyramidalization with tifffile and scikit-image. - - Parameters - ---------- - image_path : str - Full path to the image. - output_image : str - Full path to the pyramidalized image. - levels : list-like of int - Pyramids levels. - tiffoptions : dict - Options for TiffWriter. - """ - # specific imports - import xml.etree.ElementTree as ET - - import numpy as np - import tifffile - from skimage import transform - - # Nested functions - def get_pixelsize_ome( - desc: str, - namespace: dict = {"ome": "http://www.openmicroscopy.org/Schemas/OME/2016-06"}, - ) -> float: - """ - Extract physical pixel size from OME-XML description. - - Raise a warning if pixels are anisotropic (eg. X and Y sizes are not the same). - Raise an error if size units are not microns ("µm"). - - Parameters - ---------- - desc : str - OME-XML string from Tiff page. - namespace : dict, optional - XML namespace, defaults to latest OME-XML schema (2016-06). - - Returns - ------- - pixelsize : float - Physical pixel size. - - """ - root = ET.fromstring(desc) - - for pixels in root.findall(".//ome:Pixels", namespace): - pixelsize_x = float(pixels.get("PhysicalSizeX")) - pixelsize_y = float(pixels.get("PhysicalSizeY")) - break # stop at first Pixels field in the XML - - # sanity checks - if pixelsize_x != pixelsize_y: - warnings.warn( - f"Anisotropic pixels size found, are you sure ? ({pixelsize_x}, {pixelsize_y})" - ) - - return np.mean([pixelsize_x, pixelsize_y]) - - def im_downscale(img, downfactor, **kwargs): - """ - Downscale an image by the given factor. - - Wrapper for `skimage.transform.rescale`. - - Parameters - ---------- - img : np.ndarray - downfactor : int or float - Downscaling factor. - **kwargs : passed to skimage.transform.rescale - - Returns - ------- - img_rs : np.ndarray - Rescaled image. - - """ - return transform.rescale( - img, 1 / downfactor, anti_aliasing=False, preserve_range=True, **kwargs - ) - - # get metadata from original file (without loading the whole image) - with tifffile.TiffFile(image_path) as tifin: - metadata = tifin.ome_metadata - pixelsize = get_pixelsize_ome(metadata) - - with tifffile.TiffWriter(output_image, ome=False) as tifout: - # read full image - img = tifffile.imread(image_path) - - # write full resolution multichannel image - tifout.write( - img, - subifds=len(levels), - resolution=(1e4 / pixelsize, 1e4 / pixelsize), - description=metadata, - metadata=None, - **tiffoptions, - ) - - # write downsampled images (pyramidal levels) - for level in levels: - img_down = im_downscale( - img, level, order=0, channel_axis=0 - ) # downsample image - tifout.write( - img_down, - subfiletype=1, - resolution=(1e4 / level / pixelsize, 1e4 / level / pixelsize), - **tiffoptions, - ) - - -def get_tiff_options(compression: str, nthreads: int, tilesize: int) -> dict: - """ - Get the relevant tags and options to write a TIFF file. - - The returned dict is meant to be used to write a new tiff page with those tags. - - Parameters - ---------- - compression : str - Tiff compression (None, LZW, ...). - nthreads : int - Number of threads to write tiles. - tilesize : int - Tile size in pixels. Should be a power of 2. - - Returns - ------- - options : dict - Dictionary with Tiff tags. - - """ - return { - "compression": compression, - "photometric": "minisblack", - "resolutionunit": "CENTIMETER", - "maxworkers": nthreads, - "tile": (tilesize, tilesize), - } - - -def pyramidalize_directory( - inputdir: Annotated[ - str, - typer.Argument(help="Full path to the directory with images to pyramidalize."), - ], - version: Annotated[ - Optional[bool], - typer.Option("--version", callback=version_callback, is_eager=True), - ] = None, - use_qupath: Annotated[ - Optional[bool], - typer.Option(help="Use QuPath backend instead of Python."), - ] = USE_QUPATH, - tile_size: Annotated[ - Optional[int], - typer.Option(help="Image tile size, typically 512 or 1024."), - ] = TILE_SIZE, - pyramid_factor: Annotated[ - Optional[int], - typer.Option(help="Factor between two consecutive pyramid levels."), - ] = PYRAMID_FACTOR, - nthreads: Annotated[ - Optional[int], - typer.Option(help="Number of threads to parallelize image writing."), - ] = NTHREADS, - qupath_path: Annotated[ - Optional[str], - typer.Option( - help="Full path to the QuPath (console) executable.", - rich_help_panel="QuPath backend", - ), - ] = QUPATH_PATH, - script_path: Annotated[ - Optional[str], - typer.Option( - help="Full path to the groovy script that does the job.", - rich_help_panel="QuPath backend", - ), - ] = SCRIPT_PATH, - pyramid_max: Annotated[ - Optional[int], - typer.Option( - help="Maximum rescaling (smaller pyramid, will be rounded to closer power of 2).", - rich_help_panel="Python backend", - ), - ] = PYRAMID_MAX, -): - """ - Create pyramidal versions of .ome.tiff images found in the input directory. - You need to edit the script to set the "QUPATH_PATH" to your installation of QuPath. - Usually on Windows it should be here : - C:/Users/$USERNAME$/AppData/Local/QuPath-0.X.Y/QuPath-0.X.Y (console).exe - Alternatively you can run the script with the --qupath-path option. - - """ - # check QuPath was correctly set - if not os.path.isfile(qupath_path): - raise FileNotFoundError( - """QuPath executable was not found. Edit the script to set 'QUPATH_PATH', - or run the script with the --qupath-path option. Usually it is installed - at C:/Users/$USERNAME$/AppData/Local/QuPath-0.X.Y/QuPath-0.X.Y (console).exe""" - ) - # prepare output directory - outputdir = os.path.join(inputdir, "pyramidal") - if not os.path.isdir(outputdir): - os.mkdir(outputdir) - - # get a list of images - files = [filename for filename in os.listdir(inputdir) if filename.endswith(INEXT)] - - # check we have files to process - if len(files) == 0: - print("Specified input directory is empty.") - sys.exit() - - # loop over all files - print(f"Found {len(files)} to pyramidalize...") - - pbar = tqdm(files) - for imagename in pbar: - # prepare image names - image_path = os.path.join(inputdir, imagename) - output_image = os.path.join(outputdir, imagename) - - # check if output file already exists - if os.path.isfile(output_image): - continue - - # verbose - pbar.set_description(f"Pyramidalyzing {imagename}") - - if use_qupath: - pyramidalize_qupath( - image_path, - output_image, - qupath_path, - script_path, - tile_size, - pyramid_factor, - nthreads, - ) - else: - # prepare tiffwriter options - tiffoptions = get_tiff_options(COMPRESSION_PYTHON, nthreads, tile_size) - - # number of pyramid levels - levels = [ - pyramid_factor**i - for i in range(1, int(math.log(pyramid_max, pyramid_factor)) + 1) - ] - pyramidalize_python(image_path, output_image, levels, tiffoptions) - - print("All done!") - - -# --- Call -if __name__ == "__main__": - typer.run(pyramidalize_directory)