Metadata-Version: 2.4
Name: napari-storm
Version: 2.0.0
Summary: A Napari plugin for visualizing single-molecule localization microscopy data.
Home-page: https://github.com/napari-storm/napari-storm
Author: Lenny Reinkensmeier
Author-email: lrein@live.de
License: BSD-3-Clause
Project-URL: Bug Tracker, https://github.com/napari-storm/napari-storm/issues
Project-URL: Documentation, https://github.com/napari-storm/napari-storm/tree/main/docs
Project-URL: Source Code, https://github.com/napari-storm/napari-storm
Project-URL: User Support, https://github.com/napari-storm/napari-storm/issues
Classifier: Framework :: napari
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Operating System :: OS Independent
Classifier: License :: OSI Approved :: BSD License
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: napari<0.8,>=0.4
Requires-Dist: qtpy
Requires-Dist: numpy
Requires-Dist: pandas
Requires-Dist: matplotlib
Requires-Dist: imageio
Requires-Dist: tifffile
Requires-Dist: h5py
Requires-Dist: vispy
Requires-Dist: scikit-image
Requires-Dist: scikit-learn
Requires-Dist: pillow
Provides-Extra: pyqt6
Requires-Dist: napari[pyqt6]<0.8,>=0.4; extra == "pyqt6"
Provides-Extra: pyside6
Requires-Dist: PySide6; extra == "pyside6"
Provides-Extra: dev
Requires-Dist: black; extra == "dev"
Requires-Dist: flake8; extra == "dev"
Requires-Dist: pytest; extra == "dev"
Requires-Dist: pytest-cov; extra == "dev"
Requires-Dist: pytest-qt; extra == "dev"
Requires-Dist: napari[all]<0.8,>=0.4; extra == "dev"
Requires-Dist: tox; extra == "dev"
Requires-Dist: twine; extra == "dev"
Requires-Dist: build; extra == "dev"
Requires-Dist: isort; extra == "dev"
Dynamic: license-file

![alt text](/resources/napari_storm_logo.png)

# napari-storm

A plugin for interactive visualization of Single Molecule Localization Microscopy (SMLM) datasets with Napari.  This package uses the (currently experimental) Napari Particles layer developed by Martin Weigert (https://github.com/maweigert).

----------------------------------


## Installation

napari-storm needs Python 3.10–3.12. It's recommended to install it into its
own environment, e.g. with conda:

    conda create --name napari-storm python=3.11 pip

    conda activate napari-storm

Then install from PyPI. The `[pyqt6]` extra brings in napari's Qt backend;
without an extra, no Qt binding is installed and napari cannot open a window
(use `[pyside6]` if you prefer PySide):

    pip install "napari-storm[pyqt6]"

To work on napari-storm itself, install from a clone instead:

    git clone https://github.com/napari-storm/napari-storm

    cd napari-storm

    pip install -e ".[dev,pyqt6]"



## Usage

### Starting napari-storm
To start the program, run the napari_start.py, e.g. by navigating in your anaconda prompt to the location of the 
napri_start.py (root) and run it with:

    python.exe napari_start.py 

Or simply start the napari version that was just installed into your environment, e.g. again using the conda prompt:  

    napari 

and then opening napari-storm in the plugins tab.

### Importing data into napari-storm
Drag & drop onto the dock widget supported file types (Picasso, ThunderSTORM, MINFLUX, etc.) directly into napari or use the import file dialog. If that's not the case for your file:


- one can either write a custom import function by following the instructions in the src/napari_storm/Custom_Import.py
- try the (experimental) file recognition import button, which will try to extract the headers of your file
and lets you assign your data. This should work for any .hdf5, .csv or npy. file. 

### Basic usage
When a dataset is imported you should be able to see 4 tabs in the widget: Data Controls, File Infos, Decorators and 
Data Filter. In the data controls tab you can change the render range, load 
a new file, merge the currently open dataset with another that from another file and change your view.
There is also the option to change the colormap, adjust the contrast with the slider beneath the colormap picking as well
as adding a scalebar or active rainbow colorcoding (for 3D datasets).

The File Infos tab simply displays information on the currently opened datasets.

In the decorators tab you can activate a grid plane and customize a lot of things for the grid as well as the render range box. 

Last but not least is the data filter tab, which gives you the option to filter your displayed datasets by all properties available in the dataset.
There you will find two sliders, where the top one lets you change the x-range of the displayed property and the other one controlls 
the cut-off/cut-on of your filter. To apply the filter settings to the dataset simply press 
one of the apply buttons.

### Tips
- Double click or drag the tabs anywhere to detach them from the window. This way you have an overview over all of them at the same time
- For STORM/PALM ... datasets, it is possible to change the rendering options in the data controls tab to "variabel gaussian mode", to include the uncertainty values or photon counts for the rendering
- hold shift and drag the mouse for panning

## Documentation
There is a custom Q&A GPT for this repo specifically, available at 
https://chatgpt.com/g/g-68aebb6371a88191877094b48513d690-napari-storm-q-a

To access the documentation install the following packages (once):
```bash
pip install mkdocs mkdocs-material mkdocstrings[python] pymdown-extensions
```

Then build and serve the docs:

```bash
mkdocs serve
```

## Issues

If you encounter any problems, please [file an issue] along with a detailed description.

[napari]: https://github.com/napari/napari
[Cookiecutter]: https://github.com/audreyr/cookiecutter
[@napari]: https://github.com/napari
[MIT]: http://opensource.org/licenses/MIT
[BSD-3]: http://opensource.org/licenses/BSD-3-Clause
[GNU GPL v3.0]: http://www.gnu.org/licenses/gpl-3.0.txt
[GNU LGPL v3.0]: http://www.gnu.org/licenses/lgpl-3.0.txt
[Apache Software License 2.0]: http://www.apache.org/licenses/LICENSE-2.0
[Mozilla Public License 2.0]: https://www.mozilla.org/media/MPL/2.0/index.txt
[cookiecutter-napari-plugin]: https://github.com/napari/cookiecutter-napari-plugin

[file an issue]: https://github.com/napari-storm/napari-storm/issues

[napari]: https://github.com/napari/napari
[tox]: https://tox.readthedocs.io/en/latest/
[pip]: https://pypi.org/project/pip/
[PyPI]: https://pypi.org/
