[![PyPI version](https://badge.fury.io/py/stardist.svg)](https://pypi.org/project/stardist)
[![Anaconda-Server Badge](https://anaconda.org/conda-forge/stardist/badges/version.svg)](https://anaconda.org/conda-forge/stardist)
[![Test](https://github.com/stardist/stardist/workflows/Test/badge.svg)](https://github.com/stardist/stardist/actions?query=workflow%3ATest)
[![Test (PyPI)](https://github.com/stardist/stardist/workflows/Test%20(PyPI)/badge.svg)](https://github.com/stardist/stardist/actions?query=workflow%3A%22Test+%28PyPI%29%22)
[![Image.sc forum](https://img.shields.io/badge/dynamic/json.svg?label=forum&url=https%3A%2F%2Fforum.image.sc%2Ftags%2Fstardist.json&query=%24.topic_list.tags.0.topic_count&colorB=brightgreen&suffix=%20topics&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAABPklEQVR42m3SyyqFURTA8Y2BER0TDyExZ+aSPIKUlPIITFzKeQWXwhBlQrmFgUzMMFLKZeguBu5y+//17dP3nc5vuPdee6299gohUYYaDGOyyACq4JmQVoFujOMR77hNfOAGM+hBOQqB9TjHD36xhAa04RCuuXeKOvwHVWIKL9jCK2bRiV284QgL8MwEjAneeo9VNOEaBhzALGtoRy02cIcWhE34jj5YxgW+E5Z4iTPkMYpPLCNY3hdOYEfNbKYdmNngZ1jyEzw7h7AIb3fRTQ95OAZ6yQpGYHMMtOTgouktYwxuXsHgWLLl+4x++Kx1FJrjLTagA77bTPvYgw1rRqY56e+w7GNYsqX6JfPwi7aR+Y5SA+BXtKIRfkfJAYgj14tpOF6+I46c4/cAM3UhM3JxyKsxiOIhH0IO6SH/A1Kb1WBeUjbkAAAAAElFTkSuQmCC)](https://forum.image.sc/tags/stardist)
[![PyPI - Downloads](https://img.shields.io/pypi/dm/stardist)](https://pypistats.org/packages/stardist)
# *StarDist* - Object Detection with Star-convex Shapes
![](https://github.com/stardist/stardist/raw/main/images/stardist_overview.png)
This repository contains the Python implementation of star-convex object detection for 2D and 3D images, as described in the papers:
<img src="https://github.com/stardist/stardist/raw/main/images/stardist_logo.jpg" title="siân is the king of the universe" width="25%" align="right">
- Uwe Schmidt, Martin Weigert, Coleman Broaddus, and Gene Myers.
[*Cell Detection with Star-convex Polygons*](https://arxiv.org/abs/1806.03535).
International Conference on Medical Image Computing and Computer-Assisted Intervention (MICCAI), Granada, Spain, September 2018.
- Martin Weigert, Uwe Schmidt, Robert Haase, Ko Sugawara, and Gene Myers.
[*Star-convex Polyhedra for 3D Object Detection and Segmentation in Microscopy*](http://openaccess.thecvf.com/content_WACV_2020/papers/Weigert_Star-convex_Polyhedra_for_3D_Object_Detection_and_Segmentation_in_Microscopy_WACV_2020_paper.pdf).
The IEEE Winter Conference on Applications of Computer Vision (WACV), Snowmass Village, Colorado, March 2020
Please [cite the paper(s)](#how-to-cite) if you are using this code in your research.
## Overview
The following figure illustrates the general approach for 2D images. The training data consists of corresponding pairs of input (i.e. raw) images and fully annotated label images (i.e. every pixel is labeled with a unique object id or 0 for background).
A model is trained to densely predict the distances (r) to the object boundary along a fixed set of rays and object probabilities (d), which together produce an overcomplete set of candidate polygons for a given input image. The final result is obtained via non-maximum suppression (NMS) of these candidates.
![](https://github.com/stardist/stardist/raw/main/images/overview_2d.png)
The approach for 3D volumes is similar to the one described for 2D, using pairs of input and fully annotated label volumes as training data.
![](https://github.com/stardist/stardist/raw/main/images/overview_3d.png)
## Webinar/Tutorial
If you want to know more about the concepts and practical applications of StarDist, please have a look at the following webinar that was given at NEUBIAS Academy @Home 2020:
[![webinar video](http://img.youtube.com/vi/Amn_eHRGX5M/0.jpg)](http://www.youtube.com/watch?v=Amn_eHRGX5M "Webinar")
## Installation
This package is compatible with Python 3.6 - 3.12.
If you only want to use a StarDist plugin for a GUI-based software, please read [this](#plugins-for-other-software).
1. Please first [install TensorFlow](https://www.tensorflow.org/install)
(either TensorFlow 1 or 2) by following the official instructions.
For [GPU support](https://www.tensorflow.org/install/gpu), it is very
important to install the specific versions of CUDA and cuDNN that are
compatible with the respective version of TensorFlow. (If you need help and can use `conda`, take a look at [this](https://github.com/CSBDeep/CSBDeep/tree/main/extras#conda-environment).)
2. *StarDist* can then be installed with `pip`:
- If you installed TensorFlow 2 (version *2.x.x*):
pip install stardist
- If you installed TensorFlow 1 (version *1.x.x*):
pip install "stardist[tf1]"
#### Notes
- Depending on your Python installation, you may need to use `pip3` instead of `pip`.
- You can find out which version of TensorFlow is installed via `pip show tensorflow`.
- We provide pre-compiled binaries ("wheels") that should work for most Linux, Windows, and macOS platforms. If you're having problems, please see the [troubleshooting](#installation-1) section below.
- *(Optional)* You need to install [gputools](https://github.com/maweigert/gputools) if you want to use OpenCL-based computations on the GPU to speed up training.
- *(Optional)* You might experience improved performance during training if you additionally install the [Multi-Label Anisotropic 3D Euclidean Distance Transform (MLAEDT-3D)](https://github.com/seung-lab/euclidean-distance-transform-3d).
## Usage
We provide example workflows for 2D and 3D via Jupyter [notebooks](https://github.com/stardist/stardist/tree/main/examples) that illustrate how this package can be used.
![](https://github.com/stardist/stardist/raw/main/images/example_steps.png)
### Pretrained Models for 2D
Currently we provide some pretrained models in 2D that might already be suitable for your images:
| key | Modality (Staining) | Image format | Example Image | Description |
| :-- | :-: | :-:| :-:| :-- |
| `2D_versatile_fluo` `2D_paper_dsb2018`| Fluorescence (nuclear marker) | 2D single channel| <img src="https://github.com/stardist/stardist/raw/main/images/example_fluo.jpg" title="example image fluo" width="120px" align="center"> | *Versatile (fluorescent nuclei)* and *DSB 2018 (from StarDist 2D paper)* that were both trained on a [subset of the DSB 2018 nuclei segmentation challenge dataset](https://github.com/stardist/stardist/releases/download/0.1.0/dsb2018.zip). |
|`2D_versatile_he` | Brightfield (H&E) | 2D RGB | <img src="https://github.com/stardist/stardist/raw/main/images/example_histo.jpg" title="example image histo" width="120px" align="center"> | *Versatile (H&E nuclei)* that was trained on images from the [MoNuSeg 2018 training data](https://monuseg.grand-challenge.org/Data/) and the [TNBC dataset from Naylor et al. (2018)](https://zenodo.org/record/1175282#.X6mwG9so-CN). |
You can access these pretrained models from `stardist.models.StarDist2D`
```python
from stardist.models import StarDist2D
# prints a list of available models
StarDist2D.from_pretrained()
# creates a pretrained model
model = StarDist2D.from_pretrained('2D_versatile_fluo')
```
And then try it out with a test image:
```python
from stardist.data import test_image_nuclei_2d
from stardist.plot import render_label
from csbdeep.utils import normalize
import matplotlib.pyplot as plt
img = test_image_nuclei_2d()
labels, _ = model.predict_instances(normalize(img))
plt.subplot(1,2,1)
plt.imshow(img, cmap="gray")
plt.axis("off")
plt.title("input image")
plt.subplot(1,2,2)
plt.imshow(render_label(labels, img=img))
plt.axis("off")
plt.title("prediction + input overlay")
```
![](images/pretrained_example.png)
### Annotating Images
To train a *StarDist* model you will need some ground-truth annotations: for every raw training image there has to be a corresponding label image where all pixels of a cell region are labeled with a distinct integer (and background pixels are labeled with 0).
To create such annotations in 2D, there are several options, among them being [Fiji](http://fiji.sc/), [Labkit](https://imagej.net/Labkit), or [QuPath](https://qupath.github.io). In 3D, there are fewer options: [Labkit](https://github.com/maarzt/imglib2-labkit) and [Paintera](https://github.com/saalfeldlab/paintera) (the latter being very sophisticated but having a steeper learning curve).
Although each of these provide decent annotation tools, we currently recommend using Labkit (for 2D or 3D images) or QuPath (for 2D):
#### Annotating with LabKit (2D or 3D)
1. Install [Fiji](https://fiji.sc) and the [Labkit](https://imagej.net/Labkit) plugin
2. Open the (2D or 3D) image and start Labkit via `Plugins > Labkit > Open Current Image With Labkit`
3. Successively add a new label and annotate a single cell instance with the brush tool until *all* cells are labeled.
(Always disable `allow overlapping labels` or – in older versions of LabKit – enable the `override` option.)
4. Export the label image via `Labeling > Save Labeling ...` with `Files of Type > TIF Image` making sure that the file name ends with `.tif` or `.tiff`.
![](https://github.com/stardist/stardist/raw/main/images/labkit_2d_labkit.png)
Additional tips:
* The Labkit viewer uses [BigDataViewer](https://imagej.net/BigDataViewer) and its keybindings (e.g. <kbd>s</kbd> for contrast options, <kbd>CTRL</kbd>+<kbd>Shift</kbd>+<kbd>mouse-wheel</kbd> for zoom-in/out etc.)
* For 3D images (XYZ) it is best to first convert it to a (XYT) timeseries (via `Re-Order Hyperstack` and swapping `z` and `t`) and then use <kbd>[</kbd> and <kbd>]</kbd> in Labkit to walk through the slices.
#### Annotating with QuPath (2D)
1. Install [QuPath](https://qupath.github.io/)
2. Create a new project (`File -> Project...-> Create project`) and add your raw images
3. Annotate nuclei/objects
4. Run [this script](https://raw.githubusercontent.com/stardist/stardist/main/extras/qupath_export_annotations.groovy) to export the annotations (save the script and drag it on QuPath. Then execute it with `Run for project`). The script will create a `ground_truth` folder within your QuPath project that includes both the `images` and `masks` subfolder that then can directly be used with *StarDist*.
To see how this could be done, have a look at the following [example QuPath project](https://raw.githubusercontent.com/stardist/stardist/main/extras/qupath_example_project.zip) (data courtesy of Romain Guiet, EPFL).
![](https://github.com/stardist/stardist/raw/main/images/qupath.png)
### Multi-class Prediction
StarDist also supports multi-class prediction, i.e. each found object instance can additionally be classified into a fixed number of discrete object classes (e.g. cell types):
![](https://github.com/stardist/stardist/raw/main/images/stardist_multiclass.png)
Please see the [multi-class example notebook](https://nbviewer.jupyter.org/github/stardist/stardist/blob/main/examples/other2D/multiclass.ipynb) if you're interested in this.
## Instance segmentation metrics
StarDist contains the `stardist.matching` submodule that provides functions to compute common instance segmentation metrics between ground-truth label masks and predictions (not necessarily from StarDist). Currently available metrics are
* `tp`, `fp`, `fn`
* `precision`, `recall`, `accuracy`, `f1`
* `panoptic_quality`
* `mean_true_score`, `mean_matched_score`
which are computed by matching ground-truth/prediction objects if their IoU exceeds a threshold (by default 50%). See the documentation of `stardist.matching.matching` for a detailed explanation.
Here is an example how to use it:
```python
# create some example ground-truth and dummy prediction data
from stardist.data import test_image_nuclei_2d
from scipy.ndimage import rotate
_, y_true = test_image_nuclei_2d(return_mask=True)
y_pred = rotate(y_true, 2, order=0, reshape=False)
# compute metrics between ground-truth and prediction
from stardist.matching import matching
metrics = matching(y_true, y_pred)
print(metrics)
```
```
Matching(criterion='iou', thresh=0.5, fp=88, tp=37, fn=88, precision=0.296,
recall=0.296, accuracy=0.1737, f1=0.296, n_true=125, n_pred=125,
mean_true_score=0.19490, mean_matched_score=0.65847, panoptic_quality=0.19490)
```
If you want to compare a list of images you can use `stardist.matching.matching_dataset`:
```python
from stardist.matching import matching_dataset
metrics = matching_dataset([y_true, y_true], [y_pred, y_pred])
print(metrics)
```
```
DatasetMatching(criterion='iou', thresh=0.5, fp=176, tp=74, fn=176, precision=0.296,
recall=0.296, accuracy=0.1737, f1=0.296, n_true=250, n_pred=250,
mean_true_score=0.19490, mean_matched_score=0.6584, panoptic_quality=0.1949, by_image=False)
```
## Troubleshooting & Support
1. Please first take a look at the [frequently asked questions (FAQ)]( https://stardist.net/docs/faq.html).
2. If you need further help, please go to the [image.sc forum](https://forum.image.sc) and try to find out if the issue you're having has already been discussed or solved by other people. If not, feel free to create a new topic there and make sure to use the tag `stardist` (we are monitoring all questions with this tag). When opening a new topic, please provide a clear and concise description to understand and ideally reproduce the issue you're having (e.g. including a code snippet, Python script, or Jupyter notebook).
3. If you have a technical question related to the source code or believe to have found a bug, feel free to [open an issue](https://github.com/stardist/stardist/issues), but please check first if someone already created a similar issue.
### Installation
If `pip install stardist` fails, it could be because there are no compatible wheels (`.whl`) for your platform ([see list](https://pypi.org/project/stardist/#files)). In this case, `pip` tries to compile a C++ extension that our Python package relies on (see below). While this often works on Linux out of the box, it will likely fail on Windows and macOS without installing a suitable compiler. (Note that you can enforce compilation by installing via `pip install stardist --no-binary :stardist:`.)
Installation without using wheels requires Python 3.6 (or newer) and a working C++ compiler. We have only tested [GCC](http://gcc.gnu.org) (macOS, Linux), [Clang](https://clang.llvm.org) (macOS), and [Visual Studio](https://visualstudio.microsoft.com) (Windows 10). Please [open an issue](https://github.com/stardist/stardist/issues) if you have problems that are not resolved by the information below.
If available, the C++ code will make use of [OpenMP](https://en.wikipedia.org/wiki/OpenMP) to exploit multiple CPU cores for substantially reduced runtime on modern CPUs. This can be important to prevent slow model training.
#### macOS
The default C/C++ compiler Clang that comes with the macOS command line tools (installed via `xcode-select --install`) does not support OpenMP out of the box, but it can be added. Alternatively, a suitable compiler can be installed from [conda-forge](https://conda-forge.org). Please see this [detailed guide](https://scikit-learn.org/stable/developers/advanced_installation.html#macos) for more information on both strategies (although written for [scikit-image](https://scikit-learn.org), it also applies here).
A third alternative (and what we did until StarDist 0.8.1) is to install the OpenMP-enabled GCC compiler via [Homebrew](https://brew.sh) with `brew install gcc` (e.g. installing `gcc-12`/`g++-12` or newer). After that, you can build the package like this (adjust compiler names/paths as necessary):
CC=gcc-12 CXX=g++-12 pip install stardist
If you use `conda` on macOS and after `import stardist` see errors similar to `Symbol not found: _GOMP_loop_nonmonotonic_dynamic_next`, please see [this issue](https://github.com/stardist/stardist/issues/19#issuecomment-535610758) for a temporary workaround.
If you encounter an `ImportError: dlopen(...): symbol not found in flat namespace ...` error on `import stardist`, you may try to install it like so:
```
brew install libomp
export HOMEBREW_PREFIX=/opt/homebrew #set to your homebrew prefix
export CPPFLAGS="$CPPFLAGS -Xpreprocessor -fopenmp"
export CFLAGS="$CFLAGS -I/usr/local/opt/libomp/include"
export CXXFLAGS="$CXXFLAGS -I/usr/local/opt/libomp/include"
export LDFLAGS="$LDFLAGS -Wl,-rpath,/usr/local/opt/libomp/lib -L/usr/local/opt/libomp/lib -lomp"
pip install stardist --no-binary :all:
```
##### Apple Silicon
As of StarDist 0.8.2, we provide `arm64` wheels that should work with [macOS on Apple Silicon](https://support.apple.com/en-us/HT211814) (M1 chip or newer).
We recommend setting up an `arm64` `conda` environment with GPU-accelerated TensorFlow following [Apple's instructions](https://developer.apple.com/metal/tensorflow-plugin/) (ensure you are using macOS 12 Monterey or newer) using [conda-forge miniforge3 or mambaforge](https://github.com/conda-forge/miniforge). Then install `stardist` using `pip`.
```
conda create -y -n stardist-env python=3.9
conda activate stardist-env
conda install -c apple tensorflow-deps
pip install tensorflow-macos tensorflow-metal
pip install stardist
```
#### Windows
Please install the [Build Tools for Visual Studio 2019](https://www.visualstudio.com/downloads/#build-tools-for-visual-studio-2019) (or newer) from Microsoft to compile extensions for Python 3.6+ (see [this](https://wiki.python.org/moin/WindowsCompilers) for further information). During installation, make sure to select the *C++ build tools*. Note that the compiler comes with OpenMP support.
## Plugins for other software
### ImageJ/Fiji
We currently provide a ImageJ/Fiji plugin that can be used to run pretrained StarDist models on 2D or 2D+time images. Installation and usage instructions can be found at the [plugin page](https://imagej.net/StarDist).
### Napari
We made a plugin for the Python-based multi-dimensional image viewer [napari](https://napari.org). It directly uses the StarDist Python package and works for 2D and 3D images. Please see the [code repository](https://github.com/stardist/stardist-napari) for further details.
### QuPath
Inspired by the Fiji plugin, [Pete Bankhead](https://github.com/petebankhead) made a custom implementation of StarDist 2D for [QuPath](https://qupath.github.io) to use pretrained models. Please see [this page](https://qupath.readthedocs.io/en/latest/docs/advanced/stardist.html) for documentation and installation instructions.
### Icy
Based on the Fiji plugin, [Deborah Schmidt](https://github.com/frauzufall) made a StarDist 2D plugin for [Icy](https://github.com/stardist/stardist-icy) to use pretrained models. Please see the [code repository](https://github.com/stardist/stardist-icy) for further details.
### KNIME
[Stefan Helfrich](https://github.com/stelfrich) has modified the Fiji plugin to be compatible with [KNIME](https://www.knime.com). Please see [this page](https://hub.knime.com/stelfrich/spaces/Public/latest/StarDist/StarDist%202D) for further details.
## How to cite
```bibtex
@inproceedings{schmidt2018,
author = {Uwe Schmidt and Martin Weigert and Coleman Broaddus and Gene Myers},
title = {Cell Detection with Star-Convex Polygons},
booktitle = {Medical Image Computing and Computer Assisted Intervention - {MICCAI}
2018 - 21st International Conference, Granada, Spain, September 16-20, 2018, Proceedings, Part {II}},
pages = {265--273},
year = {2018},
doi = {10.1007/978-3-030-00934-2_30}
}
@inproceedings{weigert2020,
author = {Martin Weigert and Uwe Schmidt and Robert Haase and Ko Sugawara and Gene Myers},
title = {Star-convex Polyhedra for 3D Object Detection and Segmentation in Microscopy},
booktitle = {The IEEE Winter Conference on Applications of Computer Vision (WACV)},
month = {March},
year = {2020},
doi = {10.1109/WACV45572.2020.9093435}
}
```
Raw data
{
"_id": null,
"home_page": "https://github.com/stardist/stardist",
"name": "stardist",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.6",
"maintainer_email": null,
"keywords": null,
"author": "Uwe Schmidt, Martin Weigert",
"author_email": "research@uweschmidt.org, martin.weigert@epfl.ch",
"download_url": "https://files.pythonhosted.org/packages/1f/99/f1d73061a663bfa66d92fcf6d4d696cc1a64a5d23be8f8667aecbe2490fe/stardist-0.9.1.tar.gz",
"platform": null,
"description": "[![PyPI version](https://badge.fury.io/py/stardist.svg)](https://pypi.org/project/stardist)\n[![Anaconda-Server Badge](https://anaconda.org/conda-forge/stardist/badges/version.svg)](https://anaconda.org/conda-forge/stardist)\n[![Test](https://github.com/stardist/stardist/workflows/Test/badge.svg)](https://github.com/stardist/stardist/actions?query=workflow%3ATest)\n[![Test (PyPI)](https://github.com/stardist/stardist/workflows/Test%20(PyPI)/badge.svg)](https://github.com/stardist/stardist/actions?query=workflow%3A%22Test+%28PyPI%29%22)\n[![Image.sc forum](https://img.shields.io/badge/dynamic/json.svg?label=forum&url=https%3A%2F%2Fforum.image.sc%2Ftags%2Fstardist.json&query=%24.topic_list.tags.0.topic_count&colorB=brightgreen&suffix=%20topics&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAABPklEQVR42m3SyyqFURTA8Y2BER0TDyExZ+aSPIKUlPIITFzKeQWXwhBlQrmFgUzMMFLKZeguBu5y+//17dP3nc5vuPdee6299gohUYYaDGOyyACq4JmQVoFujOMR77hNfOAGM+hBOQqB9TjHD36xhAa04RCuuXeKOvwHVWIKL9jCK2bRiV284QgL8MwEjAneeo9VNOEaBhzALGtoRy02cIcWhE34jj5YxgW+E5Z4iTPkMYpPLCNY3hdOYEfNbKYdmNngZ1jyEzw7h7AIb3fRTQ95OAZ6yQpGYHMMtOTgouktYwxuXsHgWLLl+4x++Kx1FJrjLTagA77bTPvYgw1rRqY56e+w7GNYsqX6JfPwi7aR+Y5SA+BXtKIRfkfJAYgj14tpOF6+I46c4/cAM3UhM3JxyKsxiOIhH0IO6SH/A1Kb1WBeUjbkAAAAAElFTkSuQmCC)](https://forum.image.sc/tags/stardist)\n[![PyPI - Downloads](https://img.shields.io/pypi/dm/stardist)](https://pypistats.org/packages/stardist)\n\n# *StarDist* - Object Detection with Star-convex Shapes\n\n![](https://github.com/stardist/stardist/raw/main/images/stardist_overview.png)\n\nThis repository contains the Python implementation of star-convex object detection for 2D and 3D images, as described in the papers:\n\n<img src=\"https://github.com/stardist/stardist/raw/main/images/stardist_logo.jpg\" title=\"si\u00e2n is the king of the universe\" width=\"25%\" align=\"right\">\n\n- Uwe Schmidt, Martin Weigert, Coleman Broaddus, and Gene Myers. \n[*Cell Detection with Star-convex Polygons*](https://arxiv.org/abs/1806.03535). \nInternational Conference on Medical Image Computing and Computer-Assisted Intervention (MICCAI), Granada, Spain, September 2018.\n\n- Martin Weigert, Uwe Schmidt, Robert Haase, Ko Sugawara, and Gene Myers. \n[*Star-convex Polyhedra for 3D Object Detection and Segmentation in Microscopy*](http://openaccess.thecvf.com/content_WACV_2020/papers/Weigert_Star-convex_Polyhedra_for_3D_Object_Detection_and_Segmentation_in_Microscopy_WACV_2020_paper.pdf). \nThe IEEE Winter Conference on Applications of Computer Vision (WACV), Snowmass Village, Colorado, March 2020\n\nPlease [cite the paper(s)](#how-to-cite) if you are using this code in your research.\n\n\n## Overview\n\nThe following figure illustrates the general approach for 2D images. The training data consists of corresponding pairs of input (i.e. raw) images and fully annotated label images (i.e. every pixel is labeled with a unique object id or 0 for background).\nA model is trained to densely predict the distances (r) to the object boundary along a fixed set of rays and object probabilities (d), which together produce an overcomplete set of candidate polygons for a given input image. The final result is obtained via non-maximum suppression (NMS) of these candidates.\n\n![](https://github.com/stardist/stardist/raw/main/images/overview_2d.png)\n\nThe approach for 3D volumes is similar to the one described for 2D, using pairs of input and fully annotated label volumes as training data.\n\n![](https://github.com/stardist/stardist/raw/main/images/overview_3d.png)\n\n## Webinar/Tutorial\n\nIf you want to know more about the concepts and practical applications of StarDist, please have a look at the following webinar that was given at NEUBIAS Academy @Home 2020:\n\n[![webinar video](http://img.youtube.com/vi/Amn_eHRGX5M/0.jpg)](http://www.youtube.com/watch?v=Amn_eHRGX5M \"Webinar\")\n\n\n## Installation\n\nThis package is compatible with Python 3.6 - 3.12.\n\nIf you only want to use a StarDist plugin for a GUI-based software, please read [this](#plugins-for-other-software).\n\n1. Please first [install TensorFlow](https://www.tensorflow.org/install)\n(either TensorFlow 1 or 2) by following the official instructions.\nFor [GPU support](https://www.tensorflow.org/install/gpu), it is very\nimportant to install the specific versions of CUDA and cuDNN that are\ncompatible with the respective version of TensorFlow. (If you need help and can use `conda`, take a look at [this](https://github.com/CSBDeep/CSBDeep/tree/main/extras#conda-environment).)\n\n2. *StarDist* can then be installed with `pip`:\n\n - If you installed TensorFlow 2 (version *2.x.x*):\n\n pip install stardist\n\n - If you installed TensorFlow 1 (version *1.x.x*):\n\n pip install \"stardist[tf1]\"\n\n\n#### Notes\n\n- Depending on your Python installation, you may need to use `pip3` instead of `pip`.\n- You can find out which version of TensorFlow is installed via `pip show tensorflow`.\n- We provide pre-compiled binaries (\"wheels\") that should work for most Linux, Windows, and macOS platforms. If you're having problems, please see the [troubleshooting](#installation-1) section below.\n- *(Optional)* You need to install [gputools](https://github.com/maweigert/gputools) if you want to use OpenCL-based computations on the GPU to speed up training.\n- *(Optional)* You might experience improved performance during training if you additionally install the [Multi-Label Anisotropic 3D Euclidean Distance Transform (MLAEDT-3D)](https://github.com/seung-lab/euclidean-distance-transform-3d).\n\n\n## Usage\n\nWe provide example workflows for 2D and 3D via Jupyter [notebooks](https://github.com/stardist/stardist/tree/main/examples) that illustrate how this package can be used.\n\n![](https://github.com/stardist/stardist/raw/main/images/example_steps.png)\n\n### Pretrained Models for 2D\n\nCurrently we provide some pretrained models in 2D that might already be suitable for your images:\n\n\n| key | Modality (Staining) | Image format | Example Image | Description |\n| :-- | :-: | :-:| :-:| :-- |\n| `2D_versatile_fluo` `2D_paper_dsb2018`| Fluorescence (nuclear marker) | 2D single channel| <img src=\"https://github.com/stardist/stardist/raw/main/images/example_fluo.jpg\" title=\"example image fluo\" width=\"120px\" align=\"center\"> | *Versatile (fluorescent nuclei)* and *DSB 2018 (from StarDist 2D paper)* that were both trained on a [subset of the DSB 2018 nuclei segmentation challenge dataset](https://github.com/stardist/stardist/releases/download/0.1.0/dsb2018.zip). |\n|`2D_versatile_he` | Brightfield (H&E) | 2D RGB | <img src=\"https://github.com/stardist/stardist/raw/main/images/example_histo.jpg\" title=\"example image histo\" width=\"120px\" align=\"center\"> | *Versatile (H&E nuclei)* that was trained on images from the [MoNuSeg 2018 training data](https://monuseg.grand-challenge.org/Data/) and the [TNBC dataset from Naylor et al. (2018)](https://zenodo.org/record/1175282#.X6mwG9so-CN). |\n\n\nYou can access these pretrained models from `stardist.models.StarDist2D`\n\n```python\nfrom stardist.models import StarDist2D\n\n# prints a list of available models\nStarDist2D.from_pretrained()\n\n# creates a pretrained model\nmodel = StarDist2D.from_pretrained('2D_versatile_fluo')\n```\n\nAnd then try it out with a test image:\n\n```python\nfrom stardist.data import test_image_nuclei_2d\nfrom stardist.plot import render_label\nfrom csbdeep.utils import normalize\nimport matplotlib.pyplot as plt\n\nimg = test_image_nuclei_2d()\n\nlabels, _ = model.predict_instances(normalize(img))\n\nplt.subplot(1,2,1)\nplt.imshow(img, cmap=\"gray\")\nplt.axis(\"off\")\nplt.title(\"input image\")\n\nplt.subplot(1,2,2)\nplt.imshow(render_label(labels, img=img))\nplt.axis(\"off\")\nplt.title(\"prediction + input overlay\")\n```\n\n![](images/pretrained_example.png)\n\n\n### Annotating Images\n\nTo train a *StarDist* model you will need some ground-truth annotations: for every raw training image there has to be a corresponding label image where all pixels of a cell region are labeled with a distinct integer (and background pixels are labeled with 0).\nTo create such annotations in 2D, there are several options, among them being [Fiji](http://fiji.sc/), [Labkit](https://imagej.net/Labkit), or [QuPath](https://qupath.github.io). In 3D, there are fewer options: [Labkit](https://github.com/maarzt/imglib2-labkit) and [Paintera](https://github.com/saalfeldlab/paintera) (the latter being very sophisticated but having a steeper learning curve).\n\nAlthough each of these provide decent annotation tools, we currently recommend using Labkit (for 2D or 3D images) or QuPath (for 2D):\n\n#### Annotating with LabKit (2D or 3D)\n\n1. Install [Fiji](https://fiji.sc) and the [Labkit](https://imagej.net/Labkit) plugin\n2. Open the (2D or 3D) image and start Labkit via `Plugins > Labkit > Open Current Image With Labkit`\n3. Successively add a new label and annotate a single cell instance with the brush tool until *all* cells are labeled. \n (Always disable `allow overlapping labels` or \u2013 in older versions of LabKit \u2013 enable the `override` option.) \n4. Export the label image via `Labeling > Save Labeling ...` with `Files of Type > TIF Image` making sure that the file name ends with `.tif` or `.tiff`.\n\n![](https://github.com/stardist/stardist/raw/main/images/labkit_2d_labkit.png)\n\n\nAdditional tips:\n\n* The Labkit viewer uses [BigDataViewer](https://imagej.net/BigDataViewer) and its keybindings (e.g. <kbd>s</kbd> for contrast options, <kbd>CTRL</kbd>+<kbd>Shift</kbd>+<kbd>mouse-wheel</kbd> for zoom-in/out etc.)\n* For 3D images (XYZ) it is best to first convert it to a (XYT) timeseries (via `Re-Order Hyperstack` and swapping `z` and `t`) and then use <kbd>[</kbd> and <kbd>]</kbd> in Labkit to walk through the slices.\n\n#### Annotating with QuPath (2D)\n\n1. Install [QuPath](https://qupath.github.io/)\n2. Create a new project (`File -> Project...-> Create project`) and add your raw images\n3. Annotate nuclei/objects\n4. Run [this script](https://raw.githubusercontent.com/stardist/stardist/main/extras/qupath_export_annotations.groovy) to export the annotations (save the script and drag it on QuPath. Then execute it with `Run for project`). The script will create a `ground_truth` folder within your QuPath project that includes both the `images` and `masks` subfolder that then can directly be used with *StarDist*.\n\nTo see how this could be done, have a look at the following [example QuPath project](https://raw.githubusercontent.com/stardist/stardist/main/extras/qupath_example_project.zip) (data courtesy of Romain Guiet, EPFL).\n\n![](https://github.com/stardist/stardist/raw/main/images/qupath.png)\n\n\n### Multi-class Prediction\n\nStarDist also supports multi-class prediction, i.e. each found object instance can additionally be classified into a fixed number of discrete object classes (e.g. cell types):\n\n![](https://github.com/stardist/stardist/raw/main/images/stardist_multiclass.png)\n\nPlease see the [multi-class example notebook](https://nbviewer.jupyter.org/github/stardist/stardist/blob/main/examples/other2D/multiclass.ipynb) if you're interested in this.\n\n## Instance segmentation metrics\n\nStarDist contains the `stardist.matching` submodule that provides functions to compute common instance segmentation metrics between ground-truth label masks and predictions (not necessarily from StarDist). Currently available metrics are\n\n* `tp`, `fp`, `fn`\n* `precision`, `recall`, `accuracy`, `f1`\n* `panoptic_quality`\n* `mean_true_score`, `mean_matched_score`\n\nwhich are computed by matching ground-truth/prediction objects if their IoU exceeds a threshold (by default 50%). See the documentation of `stardist.matching.matching` for a detailed explanation.\n\nHere is an example how to use it:\n\n```python\n\n# create some example ground-truth and dummy prediction data\nfrom stardist.data import test_image_nuclei_2d\nfrom scipy.ndimage import rotate\n_, y_true = test_image_nuclei_2d(return_mask=True)\ny_pred = rotate(y_true, 2, order=0, reshape=False)\n\n# compute metrics between ground-truth and prediction\nfrom stardist.matching import matching\n\nmetrics = matching(y_true, y_pred)\n\nprint(metrics)\n```\n```\nMatching(criterion='iou', thresh=0.5, fp=88, tp=37, fn=88, precision=0.296, \n recall=0.296, accuracy=0.1737, f1=0.296, n_true=125, n_pred=125, \n mean_true_score=0.19490, mean_matched_score=0.65847, panoptic_quality=0.19490)\n```\n\nIf you want to compare a list of images you can use `stardist.matching.matching_dataset`:\n\n```python\n\nfrom stardist.matching import matching_dataset\n\nmetrics = matching_dataset([y_true, y_true], [y_pred, y_pred])\n\nprint(metrics)\n```\n```\nDatasetMatching(criterion='iou', thresh=0.5, fp=176, tp=74, fn=176, precision=0.296, \n recall=0.296, accuracy=0.1737, f1=0.296, n_true=250, n_pred=250, \n mean_true_score=0.19490, mean_matched_score=0.6584, panoptic_quality=0.1949, by_image=False)\n```\n\n\n\n## Troubleshooting & Support\n\n1. Please first take a look at the [frequently asked questions (FAQ)]( https://stardist.net/docs/faq.html).\n2. If you need further help, please go to the [image.sc forum](https://forum.image.sc) and try to find out if the issue you're having has already been discussed or solved by other people. If not, feel free to create a new topic there and make sure to use the tag `stardist` (we are monitoring all questions with this tag). When opening a new topic, please provide a clear and concise description to understand and ideally reproduce the issue you're having (e.g. including a code snippet, Python script, or Jupyter notebook).\n3. If you have a technical question related to the source code or believe to have found a bug, feel free to [open an issue](https://github.com/stardist/stardist/issues), but please check first if someone already created a similar issue.\n\n### Installation\n\nIf `pip install stardist` fails, it could be because there are no compatible wheels (`.whl`) for your platform ([see list](https://pypi.org/project/stardist/#files)). In this case, `pip` tries to compile a C++ extension that our Python package relies on (see below). While this often works on Linux out of the box, it will likely fail on Windows and macOS without installing a suitable compiler. (Note that you can enforce compilation by installing via `pip install stardist --no-binary :stardist:`.)\n\nInstallation without using wheels requires Python 3.6 (or newer) and a working C++ compiler. We have only tested [GCC](http://gcc.gnu.org) (macOS, Linux), [Clang](https://clang.llvm.org) (macOS), and [Visual Studio](https://visualstudio.microsoft.com) (Windows 10). Please [open an issue](https://github.com/stardist/stardist/issues) if you have problems that are not resolved by the information below.\n\nIf available, the C++ code will make use of [OpenMP](https://en.wikipedia.org/wiki/OpenMP) to exploit multiple CPU cores for substantially reduced runtime on modern CPUs. This can be important to prevent slow model training.\n\n#### macOS\nThe default C/C++ compiler Clang that comes with the macOS command line tools (installed via `xcode-select --install`) does not support OpenMP out of the box, but it can be added. Alternatively, a suitable compiler can be installed from [conda-forge](https://conda-forge.org). Please see this [detailed guide](https://scikit-learn.org/stable/developers/advanced_installation.html#macos) for more information on both strategies (although written for [scikit-image](https://scikit-learn.org), it also applies here).\n\nA third alternative (and what we did until StarDist 0.8.1) is to install the OpenMP-enabled GCC compiler via [Homebrew](https://brew.sh) with `brew install gcc` (e.g. installing `gcc-12`/`g++-12` or newer). After that, you can build the package like this (adjust compiler names/paths as necessary):\n\n CC=gcc-12 CXX=g++-12 pip install stardist\n\nIf you use `conda` on macOS and after `import stardist` see errors similar to `Symbol not found: _GOMP_loop_nonmonotonic_dynamic_next`, please see [this issue](https://github.com/stardist/stardist/issues/19#issuecomment-535610758) for a temporary workaround.\n\nIf you encounter an `ImportError: dlopen(...): symbol not found in flat namespace ...` error on `import stardist`, you may try to install it like so:\n\n```\nbrew install libomp\n\nexport HOMEBREW_PREFIX=/opt/homebrew #set to your homebrew prefix\nexport CPPFLAGS=\"$CPPFLAGS -Xpreprocessor -fopenmp\"\nexport CFLAGS=\"$CFLAGS -I/usr/local/opt/libomp/include\"\nexport CXXFLAGS=\"$CXXFLAGS -I/usr/local/opt/libomp/include\"\nexport LDFLAGS=\"$LDFLAGS -Wl,-rpath,/usr/local/opt/libomp/lib -L/usr/local/opt/libomp/lib -lomp\"\n\npip install stardist --no-binary :all:\n```\n\n##### Apple Silicon\n\nAs of StarDist 0.8.2, we provide `arm64` wheels that should work with [macOS on Apple Silicon](https://support.apple.com/en-us/HT211814) (M1 chip or newer). \nWe recommend setting up an `arm64` `conda` environment with GPU-accelerated TensorFlow following [Apple's instructions](https://developer.apple.com/metal/tensorflow-plugin/) (ensure you are using macOS 12 Monterey or newer) using [conda-forge miniforge3 or mambaforge](https://github.com/conda-forge/miniforge). Then install `stardist` using `pip`.\n```\nconda create -y -n stardist-env python=3.9 \nconda activate stardist-env\nconda install -c apple tensorflow-deps\npip install tensorflow-macos tensorflow-metal\npip install stardist\n```\n\n#### Windows\nPlease install the [Build Tools for Visual Studio 2019](https://www.visualstudio.com/downloads/#build-tools-for-visual-studio-2019) (or newer) from Microsoft to compile extensions for Python 3.6+ (see [this](https://wiki.python.org/moin/WindowsCompilers) for further information). During installation, make sure to select the *C++ build tools*. Note that the compiler comes with OpenMP support.\n\n## Plugins for other software\n\n### ImageJ/Fiji\n\nWe currently provide a ImageJ/Fiji plugin that can be used to run pretrained StarDist models on 2D or 2D+time images. Installation and usage instructions can be found at the [plugin page](https://imagej.net/StarDist).\n\n### Napari\n\nWe made a plugin for the Python-based multi-dimensional image viewer [napari](https://napari.org). It directly uses the StarDist Python package and works for 2D and 3D images. Please see the [code repository](https://github.com/stardist/stardist-napari) for further details.\n\n### QuPath\n\nInspired by the Fiji plugin, [Pete Bankhead](https://github.com/petebankhead) made a custom implementation of StarDist 2D for [QuPath](https://qupath.github.io) to use pretrained models. Please see [this page](https://qupath.readthedocs.io/en/latest/docs/advanced/stardist.html) for documentation and installation instructions.\n\n### Icy\n\nBased on the Fiji plugin, [Deborah Schmidt](https://github.com/frauzufall) made a StarDist 2D plugin for [Icy](https://github.com/stardist/stardist-icy) to use pretrained models. Please see the [code repository](https://github.com/stardist/stardist-icy) for further details.\n\n### KNIME\n\n[Stefan Helfrich](https://github.com/stelfrich) has modified the Fiji plugin to be compatible with [KNIME](https://www.knime.com). Please see [this page](https://hub.knime.com/stelfrich/spaces/Public/latest/StarDist/StarDist%202D) for further details.\n\n## How to cite\n```bibtex\n@inproceedings{schmidt2018,\n author = {Uwe Schmidt and Martin Weigert and Coleman Broaddus and Gene Myers},\n title = {Cell Detection with Star-Convex Polygons},\n booktitle = {Medical Image Computing and Computer Assisted Intervention - {MICCAI} \n 2018 - 21st International Conference, Granada, Spain, September 16-20, 2018, Proceedings, Part {II}},\n pages = {265--273},\n year = {2018},\n doi = {10.1007/978-3-030-00934-2_30}\n}\n\n@inproceedings{weigert2020,\n author = {Martin Weigert and Uwe Schmidt and Robert Haase and Ko Sugawara and Gene Myers},\n title = {Star-convex Polyhedra for 3D Object Detection and Segmentation in Microscopy},\n booktitle = {The IEEE Winter Conference on Applications of Computer Vision (WACV)},\n month = {March},\n year = {2020},\n doi = {10.1109/WACV45572.2020.9093435}\n}\n```\n",
"bugtrack_url": null,
"license": "BSD-3-Clause",
"summary": "StarDist - Object Detection with Star-convex Shapes",
"version": "0.9.1",
"project_urls": {
"Homepage": "https://github.com/stardist/stardist"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "28b1f27677c543e4b9b34283c08e7884ad78efe67aceb54216fab60824c38e9b",
"md5": "79011d6b860e916845fc90fb72f9e901",
"sha256": "15bd50cc8353ffd9cc0c54a26477a0d1b0f142ad8c80699e3950e428a693a0dc"
},
"downloads": -1,
"filename": "stardist-0.9.1-cp310-cp310-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "79011d6b860e916845fc90fb72f9e901",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.6",
"size": 1167233,
"upload_time": "2024-04-25T21:59:11",
"upload_time_iso_8601": "2024-04-25T21:59:11.558196Z",
"url": "https://files.pythonhosted.org/packages/28/b1/f27677c543e4b9b34283c08e7884ad78efe67aceb54216fab60824c38e9b/stardist-0.9.1-cp310-cp310-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ed9a456b9c5a2648f46fa621ac84e090ac6570ae610001fe791d626c20da9d7c",
"md5": "3ea20f9258ee81a21197c0c863d8f000",
"sha256": "de25d3cd8e9e67d21837a44106fe37bab25b051e4d23c010ee7dddcff4ffe8fb"
},
"downloads": -1,
"filename": "stardist-0.9.1-cp310-cp310-macosx_12_0_arm64.whl",
"has_sig": false,
"md5_digest": "3ea20f9258ee81a21197c0c863d8f000",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.6",
"size": 1086246,
"upload_time": "2024-04-25T21:59:13",
"upload_time_iso_8601": "2024-04-25T21:59:13.958942Z",
"url": "https://files.pythonhosted.org/packages/ed/9a/456b9c5a2648f46fa621ac84e090ac6570ae610001fe791d626c20da9d7c/stardist-0.9.1-cp310-cp310-macosx_12_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "755e4c0d2e48d064dec8f81be2b88404ce1f3440d0b86ee68dc43ab6924008da",
"md5": "5a6201ac1e48c8c5c6adc0876ec58615",
"sha256": "f0f4542970e1c37472bb185bb36c3e4acb9e4efd65181cbbb89de917b7511e42"
},
"downloads": -1,
"filename": "stardist-0.9.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "5a6201ac1e48c8c5c6adc0876ec58615",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.6",
"size": 3051554,
"upload_time": "2024-04-25T21:59:15",
"upload_time_iso_8601": "2024-04-25T21:59:15.920950Z",
"url": "https://files.pythonhosted.org/packages/75/5e/4c0d2e48d064dec8f81be2b88404ce1f3440d0b86ee68dc43ab6924008da/stardist-0.9.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "1cba09931e4c2326099de302113b9a9104935d0393025e1ffea3ecfd6274fabc",
"md5": "a0f7c317983cbbc599234609ea0c2d25",
"sha256": "f746193f2c434ad9c5fae091740f7e0bcf9a0c8ac5a0dade3b354c6386c5c643"
},
"downloads": -1,
"filename": "stardist-0.9.1-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "a0f7c317983cbbc599234609ea0c2d25",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.6",
"size": 786064,
"upload_time": "2024-04-25T21:59:17",
"upload_time_iso_8601": "2024-04-25T21:59:17.688233Z",
"url": "https://files.pythonhosted.org/packages/1c/ba/09931e4c2326099de302113b9a9104935d0393025e1ffea3ecfd6274fabc/stardist-0.9.1-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8969e486bf5b662c88e027936a96538d3657cff41353e7718b4bb4db404aeb36",
"md5": "f8e2c9c21732b2b5521fd5af5d939e8b",
"sha256": "da0f5a4be2140ff974b1dc9d51e57431cfe258800dca28cdcf28bb78c1163e59"
},
"downloads": -1,
"filename": "stardist-0.9.1-cp311-cp311-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "f8e2c9c21732b2b5521fd5af5d939e8b",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.6",
"size": 1167235,
"upload_time": "2024-04-25T21:59:19",
"upload_time_iso_8601": "2024-04-25T21:59:19.586830Z",
"url": "https://files.pythonhosted.org/packages/89/69/e486bf5b662c88e027936a96538d3657cff41353e7718b4bb4db404aeb36/stardist-0.9.1-cp311-cp311-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9e3f40719f6cda755785954ff7ab99b4235284f2cd4ebb648c0236175cfac39b",
"md5": "e961feac0a2d40313244f76197e85e2c",
"sha256": "dbff43119ef3e73f665bac08a37bd75715642cf3b8addc24bc8a0efeccc0b85a"
},
"downloads": -1,
"filename": "stardist-0.9.1-cp311-cp311-macosx_12_0_arm64.whl",
"has_sig": false,
"md5_digest": "e961feac0a2d40313244f76197e85e2c",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.6",
"size": 1086233,
"upload_time": "2024-04-25T21:59:21",
"upload_time_iso_8601": "2024-04-25T21:59:21.452358Z",
"url": "https://files.pythonhosted.org/packages/9e/3f/40719f6cda755785954ff7ab99b4235284f2cd4ebb648c0236175cfac39b/stardist-0.9.1-cp311-cp311-macosx_12_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9c7b19cdd1829523426dd45f4624d6e836834c0c8b91510df2c10520814ac918",
"md5": "d053fc5c1bdc67d21361674bf9aca788",
"sha256": "1f2caf3a071c1ead1b0cbbf9614ff2c82967be1bd22764f097871fb9bbd2718f"
},
"downloads": -1,
"filename": "stardist-0.9.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "d053fc5c1bdc67d21361674bf9aca788",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.6",
"size": 3051625,
"upload_time": "2024-04-25T21:59:23",
"upload_time_iso_8601": "2024-04-25T21:59:23.386931Z",
"url": "https://files.pythonhosted.org/packages/9c/7b/19cdd1829523426dd45f4624d6e836834c0c8b91510df2c10520814ac918/stardist-0.9.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "926c83f4a3ae69fc7eb6f145e86c02500f47cc429f9cc845ce570e33a2dbc4cb",
"md5": "3ba9bb6de156e74808d6d519f37e0fb0",
"sha256": "6cdd0e9902489724b3b00082ff4c05775cb4b82feb971814b9ca141eee162d8a"
},
"downloads": -1,
"filename": "stardist-0.9.1-cp311-cp311-win_amd64.whl",
"has_sig": false,
"md5_digest": "3ba9bb6de156e74808d6d519f37e0fb0",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.6",
"size": 786064,
"upload_time": "2024-04-25T21:59:25",
"upload_time_iso_8601": "2024-04-25T21:59:25.435391Z",
"url": "https://files.pythonhosted.org/packages/92/6c/83f4a3ae69fc7eb6f145e86c02500f47cc429f9cc845ce570e33a2dbc4cb/stardist-0.9.1-cp311-cp311-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8d94daf45462e9bb10e92794a38bd61648b4e972bc28c3816fabb75884188ee4",
"md5": "6574ac9d9c3e6c8424058d1787720364",
"sha256": "1ac81239ac04cc8e06dcac47e2c93f103d318d2d2c788483336211bacbbd0634"
},
"downloads": -1,
"filename": "stardist-0.9.1-cp312-cp312-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "6574ac9d9c3e6c8424058d1787720364",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.6",
"size": 1167458,
"upload_time": "2024-04-25T21:59:27",
"upload_time_iso_8601": "2024-04-25T21:59:27.311796Z",
"url": "https://files.pythonhosted.org/packages/8d/94/daf45462e9bb10e92794a38bd61648b4e972bc28c3816fabb75884188ee4/stardist-0.9.1-cp312-cp312-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "855b02b076f75cbff4910be28a3f73f315a4548c385b9107b5f88f82ae3cd633",
"md5": "77bd1b8f31cbc4d53a1c71539f498470",
"sha256": "0aebe9cedb0ba19cb13e23900393b5e890476031a7784a5abc4b34cc87393195"
},
"downloads": -1,
"filename": "stardist-0.9.1-cp312-cp312-macosx_12_0_arm64.whl",
"has_sig": false,
"md5_digest": "77bd1b8f31cbc4d53a1c71539f498470",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.6",
"size": 1086422,
"upload_time": "2024-04-25T21:59:28",
"upload_time_iso_8601": "2024-04-25T21:59:28.813830Z",
"url": "https://files.pythonhosted.org/packages/85/5b/02b076f75cbff4910be28a3f73f315a4548c385b9107b5f88f82ae3cd633/stardist-0.9.1-cp312-cp312-macosx_12_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "30cf7d964a93ca6ef9a3182924a7a85aba08209fb316a411cb058d76043e9b5f",
"md5": "22071c74c9f8559304143cdf1c344490",
"sha256": "cb64b8eb63813ad20a3cb61a605bdbf6072932571818ed20f71ac630c13d3cd8"
},
"downloads": -1,
"filename": "stardist-0.9.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "22071c74c9f8559304143cdf1c344490",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.6",
"size": 3051989,
"upload_time": "2024-04-25T21:59:31",
"upload_time_iso_8601": "2024-04-25T21:59:31.287595Z",
"url": "https://files.pythonhosted.org/packages/30/cf/7d964a93ca6ef9a3182924a7a85aba08209fb316a411cb058d76043e9b5f/stardist-0.9.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2035b27f306745edb2e53614fb4a4dbfe9062598f5d4063d4979c8ad1c2b8606",
"md5": "a8928fc201c9b1c46f96ce495e5e6c9e",
"sha256": "07b0c174eea6edacff7113a3eb4a5e7144fe7e3d838b56a46168e9d38f6cb19d"
},
"downloads": -1,
"filename": "stardist-0.9.1-cp312-cp312-win_amd64.whl",
"has_sig": false,
"md5_digest": "a8928fc201c9b1c46f96ce495e5e6c9e",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.6",
"size": 786158,
"upload_time": "2024-04-25T21:59:33",
"upload_time_iso_8601": "2024-04-25T21:59:33.343386Z",
"url": "https://files.pythonhosted.org/packages/20/35/b27f306745edb2e53614fb4a4dbfe9062598f5d4063d4979c8ad1c2b8606/stardist-0.9.1-cp312-cp312-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "06c2379a749beeec11a571c2e012af3cf5d72458009e8358d6ab6d113425a483",
"md5": "14d68cb7aacd1df39a5288119e989e14",
"sha256": "a3620658c5c1ec5d477c4a2701859d40e67a2d3869048e0d320b4797b5dc4e35"
},
"downloads": -1,
"filename": "stardist-0.9.1-cp36-cp36m-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "14d68cb7aacd1df39a5288119e989e14",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": ">=3.6",
"size": 1166080,
"upload_time": "2024-04-25T21:59:34",
"upload_time_iso_8601": "2024-04-25T21:59:34.549104Z",
"url": "https://files.pythonhosted.org/packages/06/c2/379a749beeec11a571c2e012af3cf5d72458009e8358d6ab6d113425a483/stardist-0.9.1-cp36-cp36m-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "fdc79784ee838a55151fd4e930d4c53bc932c4be661d2c96fb539dfa33cb6d2a",
"md5": "070bd029135b408d4460d5d3647c94ea",
"sha256": "b6c500badf6294d6123154c98d9cfe6240692c5c8cab4b1ed270aa16f0d4c09e"
},
"downloads": -1,
"filename": "stardist-0.9.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "070bd029135b408d4460d5d3647c94ea",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": ">=3.6",
"size": 3060139,
"upload_time": "2024-04-25T21:59:35",
"upload_time_iso_8601": "2024-04-25T21:59:35.891202Z",
"url": "https://files.pythonhosted.org/packages/fd/c7/9784ee838a55151fd4e930d4c53bc932c4be661d2c96fb539dfa33cb6d2a/stardist-0.9.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2f338b290b0626125f4039ae0d83048f9873e287f866c8ca74f13e4600c6683d",
"md5": "ff6bcd5f3013bf413995d9966fbbe8ad",
"sha256": "b26cb847ec9380588a36f8e71be52249a2a899e55df9606cb022c35beec91233"
},
"downloads": -1,
"filename": "stardist-0.9.1-cp36-cp36m-win_amd64.whl",
"has_sig": false,
"md5_digest": "ff6bcd5f3013bf413995d9966fbbe8ad",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": ">=3.6",
"size": 804580,
"upload_time": "2024-04-25T21:59:37",
"upload_time_iso_8601": "2024-04-25T21:59:37.300863Z",
"url": "https://files.pythonhosted.org/packages/2f/33/8b290b0626125f4039ae0d83048f9873e287f866c8ca74f13e4600c6683d/stardist-0.9.1-cp36-cp36m-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "3d042a738f027a5294f12cb3f921ea7dcc2537472c7231c4b38560be7c65a1e7",
"md5": "7503837d93c1d1392352ae16c194a598",
"sha256": "e361ab12be2c9e0500b97c88a5a747665fd5f75c422c38631a79a263468b7f56"
},
"downloads": -1,
"filename": "stardist-0.9.1-cp37-cp37m-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "7503837d93c1d1392352ae16c194a598",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.6",
"size": 1167205,
"upload_time": "2024-04-25T21:59:39",
"upload_time_iso_8601": "2024-04-25T21:59:39.171149Z",
"url": "https://files.pythonhosted.org/packages/3d/04/2a738f027a5294f12cb3f921ea7dcc2537472c7231c4b38560be7c65a1e7/stardist-0.9.1-cp37-cp37m-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "649af93bad1a4e3e45c1235d388372c470e225b87ae15585526975eec4860c04",
"md5": "d988cdd340f46a018a4b6957d1ad94b6",
"sha256": "b05664502bd925b3fdd4ccc3660ba7ae6f6f2b056fe353b34db17fa6c565401c"
},
"downloads": -1,
"filename": "stardist-0.9.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "d988cdd340f46a018a4b6957d1ad94b6",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.6",
"size": 3050802,
"upload_time": "2024-04-25T21:59:40",
"upload_time_iso_8601": "2024-04-25T21:59:40.714721Z",
"url": "https://files.pythonhosted.org/packages/64/9a/f93bad1a4e3e45c1235d388372c470e225b87ae15585526975eec4860c04/stardist-0.9.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "eb03baa8d6f57e481c91fbb54582104a36cb6541840bb56b60c564ca5a673272",
"md5": "90d5d7b6b14ca5b7f8d2187074f3eabb",
"sha256": "25a72c04ea82cc756bae25805e33a5f635a5e99292cbde9a6c64416da5e6e41b"
},
"downloads": -1,
"filename": "stardist-0.9.1-cp37-cp37m-win_amd64.whl",
"has_sig": false,
"md5_digest": "90d5d7b6b14ca5b7f8d2187074f3eabb",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.6",
"size": 785985,
"upload_time": "2024-04-25T21:59:42",
"upload_time_iso_8601": "2024-04-25T21:59:42.336168Z",
"url": "https://files.pythonhosted.org/packages/eb/03/baa8d6f57e481c91fbb54582104a36cb6541840bb56b60c564ca5a673272/stardist-0.9.1-cp37-cp37m-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "648c242345b43d97d7cc0ca6f89d4829bf903f98fd00a25d5aca7aa95947196c",
"md5": "ad622ea3afa5c190b1cdf773e079677c",
"sha256": "8a156436a35befa7602037e4397fff2d7cf51a8108ddad67fe1cc475ad7a72a4"
},
"downloads": -1,
"filename": "stardist-0.9.1-cp38-cp38-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "ad622ea3afa5c190b1cdf773e079677c",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.6",
"size": 1167231,
"upload_time": "2024-04-25T21:59:43",
"upload_time_iso_8601": "2024-04-25T21:59:43.602704Z",
"url": "https://files.pythonhosted.org/packages/64/8c/242345b43d97d7cc0ca6f89d4829bf903f98fd00a25d5aca7aa95947196c/stardist-0.9.1-cp38-cp38-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "bf326b4cf60913815870951149cf2cb8536bbda38ef26f7ffeeef819eadfe157",
"md5": "57233072c4a1359b1715cee357889771",
"sha256": "35b35ae2b8f5269eccadc2b62eb295d83e2c0ea0ce33e72e530f3ea71b623e07"
},
"downloads": -1,
"filename": "stardist-0.9.1-cp38-cp38-macosx_12_0_arm64.whl",
"has_sig": false,
"md5_digest": "57233072c4a1359b1715cee357889771",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.6",
"size": 1086238,
"upload_time": "2024-04-25T21:59:45",
"upload_time_iso_8601": "2024-04-25T21:59:45.007475Z",
"url": "https://files.pythonhosted.org/packages/bf/32/6b4cf60913815870951149cf2cb8536bbda38ef26f7ffeeef819eadfe157/stardist-0.9.1-cp38-cp38-macosx_12_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "3ca82a2ce5cb8c68b35d14067b9e949e9a9144b1fd5e7e686f79ad7898b3dfed",
"md5": "f275dd32b1bb00df2628c5954555c4d6",
"sha256": "135d9fab8752316515b6489a11620765cc94edb915d27834a33faca288270e0e"
},
"downloads": -1,
"filename": "stardist-0.9.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "f275dd32b1bb00df2628c5954555c4d6",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.6",
"size": 3051416,
"upload_time": "2024-04-25T21:59:46",
"upload_time_iso_8601": "2024-04-25T21:59:46.640035Z",
"url": "https://files.pythonhosted.org/packages/3c/a8/2a2ce5cb8c68b35d14067b9e949e9a9144b1fd5e7e686f79ad7898b3dfed/stardist-0.9.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a8bbc427395798447aa3dfa897f4e2e1c0ebdd5c2aa559ce90414b61c991cb09",
"md5": "90cff7f7971f69db921f608b0f67f33f",
"sha256": "dd4ec0fb2fb2f548fc02b26914195899c706aaff700ebb3beb915eef9a7afb6c"
},
"downloads": -1,
"filename": "stardist-0.9.1-cp38-cp38-win_amd64.whl",
"has_sig": false,
"md5_digest": "90cff7f7971f69db921f608b0f67f33f",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.6",
"size": 786059,
"upload_time": "2024-04-25T21:59:49",
"upload_time_iso_8601": "2024-04-25T21:59:49.460546Z",
"url": "https://files.pythonhosted.org/packages/a8/bb/c427395798447aa3dfa897f4e2e1c0ebdd5c2aa559ce90414b61c991cb09/stardist-0.9.1-cp38-cp38-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "19e88914afff2e8746625d1bed637612ef2ceddb64bd48d714ac9e922ec2b7f5",
"md5": "db907583dd15eaaf896f75a8cad4eef6",
"sha256": "0fe259ef45386d6ee2cf853298bf7dcd8303e09a2821418de5eaa3591eb1b6c2"
},
"downloads": -1,
"filename": "stardist-0.9.1-cp39-cp39-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "db907583dd15eaaf896f75a8cad4eef6",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.6",
"size": 1167227,
"upload_time": "2024-04-25T21:59:51",
"upload_time_iso_8601": "2024-04-25T21:59:51.000178Z",
"url": "https://files.pythonhosted.org/packages/19/e8/8914afff2e8746625d1bed637612ef2ceddb64bd48d714ac9e922ec2b7f5/stardist-0.9.1-cp39-cp39-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "1a7719e5d4490961974085c1f564c83b17d8c556d8260ce22a1df30c71e854e1",
"md5": "f84145a54bf20149fd12865dd825cfee",
"sha256": "841b51b1cbe90bc7cf7ebeaeda8323a5e7971984e1fcadbb6ac6e110c9fd742b"
},
"downloads": -1,
"filename": "stardist-0.9.1-cp39-cp39-macosx_12_0_arm64.whl",
"has_sig": false,
"md5_digest": "f84145a54bf20149fd12865dd825cfee",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.6",
"size": 1086235,
"upload_time": "2024-04-25T21:59:52",
"upload_time_iso_8601": "2024-04-25T21:59:52.266678Z",
"url": "https://files.pythonhosted.org/packages/1a/77/19e5d4490961974085c1f564c83b17d8c556d8260ce22a1df30c71e854e1/stardist-0.9.1-cp39-cp39-macosx_12_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4eff52edc1c9ce201600a48726c1c14991600c945bb3c123dbde1ade936e97c8",
"md5": "4d4794ddec406d7d84c1b654152dcedb",
"sha256": "d55371206f231879cf5afe61b72981cf986be602b0026191737f505e1a73a093"
},
"downloads": -1,
"filename": "stardist-0.9.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "4d4794ddec406d7d84c1b654152dcedb",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.6",
"size": 3051206,
"upload_time": "2024-04-25T21:59:54",
"upload_time_iso_8601": "2024-04-25T21:59:54.219223Z",
"url": "https://files.pythonhosted.org/packages/4e/ff/52edc1c9ce201600a48726c1c14991600c945bb3c123dbde1ade936e97c8/stardist-0.9.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b5c0492dd6bf747d47cd4cc2a29dec3be0bb056c79bf4098f6946982e044a9e1",
"md5": "ebc95db0e48382db3c3427987e5605d8",
"sha256": "2b4326294fa0e91bd46e0afaacf2ceaece476f0d31ff966c72da072bda5de433"
},
"downloads": -1,
"filename": "stardist-0.9.1-cp39-cp39-win_amd64.whl",
"has_sig": false,
"md5_digest": "ebc95db0e48382db3c3427987e5605d8",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.6",
"size": 786056,
"upload_time": "2024-04-25T21:59:55",
"upload_time_iso_8601": "2024-04-25T21:59:55.688160Z",
"url": "https://files.pythonhosted.org/packages/b5/c0/492dd6bf747d47cd4cc2a29dec3be0bb056c79bf4098f6946982e044a9e1/stardist-0.9.1-cp39-cp39-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "1f99f1d73061a663bfa66d92fcf6d4d696cc1a64a5d23be8f8667aecbe2490fe",
"md5": "8bb5862b8ec9e70fe1aed5d54bc7af16",
"sha256": "fc96e8da35b49ac1e8990e2c15fecf129e5161fae9dfe17cb7b85a026163fbd5"
},
"downloads": -1,
"filename": "stardist-0.9.1.tar.gz",
"has_sig": false,
"md5_digest": "8bb5862b8ec9e70fe1aed5d54bc7af16",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 888249,
"upload_time": "2024-04-25T21:59:56",
"upload_time_iso_8601": "2024-04-25T21:59:56.967844Z",
"url": "https://files.pythonhosted.org/packages/1f/99/f1d73061a663bfa66d92fcf6d4d696cc1a64a5d23be8f8667aecbe2490fe/stardist-0.9.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-04-25 21:59:56",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "stardist",
"github_project": "stardist",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "stardist"
}