phasorpy 0.9__tar.gz → 0.10__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {phasorpy-0.9 → phasorpy-0.10}/PKG-INFO +8 -6
- {phasorpy-0.9 → phasorpy-0.10}/README.md +1 -1
- phasorpy-0.10/docs/_static/switcher.json +18 -0
- {phasorpy-0.9 → phasorpy-0.10}/docs/acknowledgments.rst +1 -1
- {phasorpy-0.9 → phasorpy-0.10}/docs/conf.py +2 -0
- {phasorpy-0.9 → phasorpy-0.10}/docs/contributing.rst +1 -1
- {phasorpy-0.9 → phasorpy-0.10}/docs/phasor_approach.rst +17 -8
- {phasorpy-0.9 → phasorpy-0.10}/pyproject.toml +34 -18
- {phasorpy-0.9 → phasorpy-0.10}/src/phasorpy/__init__.py +1 -1
- {phasorpy-0.9 → phasorpy-0.10}/src/phasorpy/_phasorpy.pyx +255 -105
- {phasorpy-0.9 → phasorpy-0.10}/src/phasorpy/_utils.py +24 -29
- {phasorpy-0.9 → phasorpy-0.10}/src/phasorpy/cli.py +5 -2
- {phasorpy-0.9 → phasorpy-0.10}/src/phasorpy/cluster.py +18 -1
- {phasorpy-0.9 → phasorpy-0.10}/src/phasorpy/component.py +381 -14
- {phasorpy-0.9 → phasorpy-0.10}/src/phasorpy/cursor.py +15 -8
- {phasorpy-0.9 → phasorpy-0.10}/src/phasorpy/datasets.py +16 -4
- {phasorpy-0.9 → phasorpy-0.10}/src/phasorpy/filter.py +525 -28
- {phasorpy-0.9 → phasorpy-0.10}/src/phasorpy/io/__init__.py +12 -9
- {phasorpy-0.9 → phasorpy-0.10}/src/phasorpy/io/_flimlabs.py +17 -6
- {phasorpy-0.9 → phasorpy-0.10}/src/phasorpy/io/_leica.py +12 -9
- {phasorpy-0.9 → phasorpy-0.10}/src/phasorpy/io/_ometiff.py +12 -6
- {phasorpy-0.9 → phasorpy-0.10}/src/phasorpy/io/_other.py +105 -16
- {phasorpy-0.9 → phasorpy-0.10}/src/phasorpy/io/_simfcs.py +14 -12
- {phasorpy-0.9 → phasorpy-0.10}/src/phasorpy/lifetime.py +143 -58
- {phasorpy-0.9 → phasorpy-0.10}/src/phasorpy/phasor.py +16 -14
- {phasorpy-0.9 → phasorpy-0.10}/src/phasorpy/plot/_functions.py +16 -15
- {phasorpy-0.9 → phasorpy-0.10}/src/phasorpy/plot/_lifetime_plots.py +18 -20
- {phasorpy-0.9 → phasorpy-0.10}/src/phasorpy/plot/_phasorplot.py +26 -16
- {phasorpy-0.9 → phasorpy-0.10}/src/phasorpy/plot/_phasorplot_fret.py +18 -17
- {phasorpy-0.9 → phasorpy-0.10}/src/phasorpy/utils.py +14 -13
- {phasorpy-0.9 → phasorpy-0.10}/src/phasorpy.egg-info/PKG-INFO +8 -6
- {phasorpy-0.9 → phasorpy-0.10}/src/phasorpy.egg-info/SOURCES.txt +1 -0
- {phasorpy-0.9 → phasorpy-0.10}/src/phasorpy.egg-info/requires.txt +7 -3
- {phasorpy-0.9 → phasorpy-0.10}/tests/io/_conftest.py +2 -2
- {phasorpy-0.9 → phasorpy-0.10}/tests/io/test_other.py +24 -0
- {phasorpy-0.9 → phasorpy-0.10}/tests/io/test_simfcs.py +4 -4
- {phasorpy-0.9 → phasorpy-0.10}/tests/test__phasorpy.py +27 -0
- {phasorpy-0.9 → phasorpy-0.10}/tests/test__utils.py +0 -7
- {phasorpy-0.9 → phasorpy-0.10}/tests/test_cluster.py +13 -0
- {phasorpy-0.9 → phasorpy-0.10}/tests/test_component.py +186 -0
- {phasorpy-0.9 → phasorpy-0.10}/tests/test_cursor.py +5 -0
- {phasorpy-0.9 → phasorpy-0.10}/tests/test_filter.py +334 -27
- {phasorpy-0.9 → phasorpy-0.10}/tests/test_lifetime.py +100 -6
- {phasorpy-0.9 → phasorpy-0.10}/tests/test_phasor.py +4 -4
- {phasorpy-0.9 → phasorpy-0.10}/tools/sha256.py +3 -3
- {phasorpy-0.9 → phasorpy-0.10}/tutorials/api/phasorpy_component.py +2 -2
- {phasorpy-0.9 → phasorpy-0.10}/tutorials/api/phasorpy_filter.py +145 -27
- {phasorpy-0.9 → phasorpy-0.10}/tutorials/api/phasorpy_io.py +34 -15
- {phasorpy-0.9 → phasorpy-0.10}/tutorials/api/phasorpy_lifetime_to_signal.py +36 -12
- phasorpy-0.10/tutorials/applications/phasorpy_nadh_concentration.py +432 -0
- {phasorpy-0.9 → phasorpy-0.10}/tutorials/misc/phasorpy_logo.py +8 -9
- {phasorpy-0.9 → phasorpy-0.10}/tutorials/phasorpy_lfd_workshop.py +1 -1
- phasorpy-0.9/docs/_static/switcher.json +0 -23
- {phasorpy-0.9 → phasorpy-0.10}/LICENSE.txt +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/MANIFEST.in +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/docs/_static/categorical.png +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/docs/_static/custom-icons.js +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/docs/_static/favicon.ico +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/docs/_static/phasorpy_logo.png +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/docs/_static/phasorpy_logo.svg +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/docs/_static/srgb_spectrum.png +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/docs/api/_phasorpy.rst +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/docs/api/_utils.rst +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/docs/api/cli.rst +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/docs/api/cluster.rst +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/docs/api/color.rst +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/docs/api/component.rst +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/docs/api/cursor.rst +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/docs/api/datasets.rst +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/docs/api/experimental.rst +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/docs/api/filter.rst +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/docs/api/index.rst +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/docs/api/io.rst +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/docs/api/lifetime.rst +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/docs/api/phasor.rst +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/docs/api/phasorpy.rst +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/docs/api/plot.rst +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/docs/api/utils.rst +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/docs/code_of_conduct.rst +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/docs/index.rst +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/docs/license.rst +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/setup.cfg +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/setup.py +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/src/phasorpy/__main__.py +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/src/phasorpy/_typing.py +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/src/phasorpy/color.py +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/src/phasorpy/conftest.py +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/src/phasorpy/experimental.py +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/src/phasorpy/plot/__init__.py +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/src/phasorpy/py.typed +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/src/phasorpy.egg-info/dependency_links.txt +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/src/phasorpy.egg-info/entry_points.txt +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/src/phasorpy.egg-info/not-zip-safe +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/src/phasorpy.egg-info/top_level.txt +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/tests/conftest.py +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/tests/io/test_flimlabs.py +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/tests/io/test_leica.py +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/tests/io/test_ometiff.py +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/tests/plot/test_functions.py +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/tests/plot/test_lifetime_plots.py +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/tests/plot/test_phasorplot.py +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/tests/plot/test_phasorplot_fret.py +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/tests/test__typing.py +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/tests/test_cli.py +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/tests/test_color.py +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/tests/test_datasets.py +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/tests/test_experimental.py +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/tests/test_nan.py +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/tests/test_phasorpy.py +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/tests/test_utils.py +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/tools/build_manylinux.cmd +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/tools/build_manylinux.sh +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/tutorials/README.rst +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/tutorials/api/README.rst +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/tutorials/api/phasorpy_cursor.py +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/tutorials/api/phasorpy_fret.py +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/tutorials/api/phasorpy_multi_harmonic.py +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/tutorials/api/phasorpy_pca.py +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/tutorials/api/phasorpy_phasor_from_lifetime.py +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/tutorials/api/phasorpy_phasorplot.py +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/tutorials/applications/README.rst +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/tutorials/applications/phasorpy_component_fit.py +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/tutorials/applications/phasorpy_fret_efficiency.py +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/tutorials/applications/phasorpy_multidimensional.py +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/tutorials/misc/README.rst +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/tutorials/misc/phasorpy_apps.py +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/tutorials/misc/phasorpy_phasor_from_signal.py +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/tutorials/phasorpy_introduction.py +0 -0
- {phasorpy-0.9 → phasorpy-0.10}/tutorials/phasorpy_lifetime_geometry.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: phasorpy
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.10
|
|
4
4
|
Summary: Analysis of luminescence lifetime and hyperspectral images using the phasor approach
|
|
5
5
|
Author: PhasorPy Contributors
|
|
6
6
|
License-Expression: MIT
|
|
@@ -10,7 +10,7 @@ Project-URL: Download, https://pypi.org/project/phasorpy/#files
|
|
|
10
10
|
Project-URL: Source code, https://github.com/phasorpy/phasorpy
|
|
11
11
|
Project-URL: Issue tracker, https://github.com/phasorpy/phasorpy/issues
|
|
12
12
|
Project-URL: Release notes, https://www.phasorpy.org/docs/stable/release
|
|
13
|
-
Classifier: Development Status ::
|
|
13
|
+
Classifier: Development Status :: 4 - Beta
|
|
14
14
|
Classifier: Intended Audience :: Developers
|
|
15
15
|
Classifier: Intended Audience :: Science/Research
|
|
16
16
|
Classifier: Programming Language :: Python
|
|
@@ -24,26 +24,28 @@ Classifier: Programming Language :: Python :: 3.14
|
|
|
24
24
|
Requires-Python: >=3.12
|
|
25
25
|
Description-Content-Type: text/markdown
|
|
26
26
|
License-File: LICENSE.txt
|
|
27
|
-
Requires-Dist: numpy>=2.
|
|
27
|
+
Requires-Dist: numpy>=2.1.0
|
|
28
28
|
Requires-Dist: matplotlib>=3.9.0
|
|
29
|
-
Requires-Dist: pandas>=2.
|
|
29
|
+
Requires-Dist: pandas>=2.3.0
|
|
30
30
|
Requires-Dist: scikit-learn>=1.5.0
|
|
31
|
-
Requires-Dist: scipy>=1.
|
|
31
|
+
Requires-Dist: scipy>=1.14.0
|
|
32
32
|
Requires-Dist: tifffile>=2024.8.30
|
|
33
33
|
Requires-Dist: xarray>=2024.6.0
|
|
34
34
|
Requires-Dist: click
|
|
35
35
|
Requires-Dist: pooch
|
|
36
36
|
Requires-Dist: tqdm
|
|
37
37
|
Provides-Extra: all
|
|
38
|
+
Requires-Dist: czifile>=2026.4.11; extra == "all"
|
|
38
39
|
Requires-Dist: fbdfile>=2025.9.18; extra == "all"
|
|
39
40
|
Requires-Dist: lfdfiles>=2024.5.24; extra == "all"
|
|
40
41
|
Requires-Dist: liffile>=2025.2.10; extra == "all"
|
|
41
42
|
Requires-Dist: ptufile>=2024.9.14; extra == "all"
|
|
42
43
|
Requires-Dist: sdtfile>=2024.5.24; extra == "all"
|
|
43
44
|
Requires-Dist: pawflim>=1.0.4; extra == "all"
|
|
45
|
+
Requires-Dist: imagecodecs==2026.3.6; (sys_platform == "darwin" and platform_machine == "x86_64") and extra == "all"
|
|
44
46
|
Dynamic: license-file
|
|
45
47
|
|
|
46
|
-
# <img src="
|
|
48
|
+
# <img src="https://www.phasorpy.org/_static/phasorpy_logo.svg" alt="○" width="48" height="48" align="left"/> PhasorPy
|
|
47
49
|
|
|
48
50
|
PhasorPy is an open-source Python library for the analysis of luminescence
|
|
49
51
|
lifetime and hyperspectral images using the phasor approach.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# <img src="
|
|
1
|
+
# <img src="https://www.phasorpy.org/_static/phasorpy_logo.svg" alt="○" width="48" height="48" align="left"/> PhasorPy
|
|
2
2
|
|
|
3
3
|
PhasorPy is an open-source Python library for the analysis of luminescence
|
|
4
4
|
lifetime and hyperspectral images using the phasor approach.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"name": "dev",
|
|
4
|
+
"version": "0.11",
|
|
5
|
+
"url": "https://www.phasorpy.org/docs/dev/"
|
|
6
|
+
},
|
|
7
|
+
{
|
|
8
|
+
"name": "0.10 (stable)",
|
|
9
|
+
"version": "0.10",
|
|
10
|
+
"url": "https://www.phasorpy.org/docs/stable/",
|
|
11
|
+
"preferred": true
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"name": "0.9",
|
|
15
|
+
"version": "0.9",
|
|
16
|
+
"url": "https://www.phasorpy.org/docs/v0.9/"
|
|
17
|
+
}
|
|
18
|
+
]
|
|
@@ -8,7 +8,7 @@ at the University of the Republic and Institut Pasteur de Montevideo, and the
|
|
|
8
8
|
at the University of California, Irvine.
|
|
9
9
|
|
|
10
10
|
PhasorPy was inspired by the
|
|
11
|
-
`Globals for Images
|
|
11
|
+
`Globals for Images - SimFCS <https://www.lfd.uci.edu/globals/>`_ software by
|
|
12
12
|
Enrico Gratton.
|
|
13
13
|
|
|
14
14
|
This software project was supported in part by the
|
|
@@ -65,6 +65,7 @@ html_theme = 'pydata_sphinx_theme'
|
|
|
65
65
|
html_static_path = ['_static']
|
|
66
66
|
html_js_files = ['custom-icons.js']
|
|
67
67
|
html_show_sourcelink = False
|
|
68
|
+
html_sidebars = {'**': ['sidebar-nav-bs']}
|
|
68
69
|
|
|
69
70
|
html_title = f'PhasorPy {version} documentation'
|
|
70
71
|
html_logo = '_static/phasorpy_logo.svg'
|
|
@@ -164,6 +165,7 @@ class TutorialOrder:
|
|
|
164
165
|
# applications
|
|
165
166
|
'component_fit',
|
|
166
167
|
'fret_efficiency',
|
|
168
|
+
'nadh_concentration',
|
|
167
169
|
'multidimensional',
|
|
168
170
|
# misc
|
|
169
171
|
'logo',
|
|
@@ -205,7 +205,7 @@ static type checker::
|
|
|
205
205
|
|
|
206
206
|
|
|
207
207
|
The PhasorPy project follows the Scientific Python
|
|
208
|
-
`SPEC 0
|
|
208
|
+
`SPEC 0 - Minimum Supported Dependencies
|
|
209
209
|
<https://scientific-python.org/specs/spec-0000/>`_ recommendation
|
|
210
210
|
for Python, NumPy, and other dependencies.
|
|
211
211
|
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
Phasor approach
|
|
2
2
|
===============
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
"The phasor approach to fluorescence lifetime imaging, and more recently
|
|
5
5
|
hyperspectral fluorescence imaging, has increased the use of these
|
|
6
6
|
techniques, and improved the ease and intuitiveness of the data analysis.
|
|
7
7
|
The fit-free nature of the phasor plots increases the speed of the analysis
|
|
8
8
|
and reduces the dimensionality, optimization of data handling and storage.
|
|
9
|
-
The reciprocity principle between the real and imaginary space
|
|
9
|
+
The reciprocity principle between the real and imaginary space--where the
|
|
10
10
|
phasor and the pixel that the phasor originated from are linked and can be
|
|
11
|
-
converted from one another
|
|
11
|
+
converted from one another--has helped the expansion of this method.
|
|
12
12
|
The phasor coordinates calculated from a pixel, where multiple fluorescent
|
|
13
13
|
species are present, depends on the phasor positions of those components.
|
|
14
14
|
The relative positions are governed by the linear combination properties of
|
|
@@ -21,7 +21,7 @@ the total fluorescence from that image pixel.
|
|
|
21
21
|
The higher the fractional intensity contribution of a vertex, the closer is
|
|
22
22
|
the resultant phasor. The linear additivity in the phasor space can be
|
|
23
23
|
exploited to obtain the fractional intensity contribution from multiple
|
|
24
|
-
species and quantify their contribution
|
|
24
|
+
species and quantify their contribution."
|
|
25
25
|
(quoted from :ref:`Malacrida et al., 2021 <malacrida-2021>`)
|
|
26
26
|
|
|
27
27
|
The following resources provide an overview of the history, theory,
|
|
@@ -168,7 +168,8 @@ approach to analyze fluorescence time-resolved or spectral images:
|
|
|
168
168
|
- :ref:`Napari-phasors <napari_phasors>`,
|
|
169
169
|
:ref:`Napari-flim-phasor-plotter <napari_flim_phasor_plotter>`,
|
|
170
170
|
:ref:`Napari-live-flim <napari_live_flim>`,
|
|
171
|
-
:ref:`FLOPA <flopa
|
|
171
|
+
:ref:`FLOPA <flopa>`,
|
|
172
|
+
:ref:`FLIMari <flimari>`
|
|
172
173
|
* - **ImageJ**
|
|
173
174
|
- :ref:`Spectral/Time Gated Phasor PlugIns <phasor_plugins>`
|
|
174
175
|
* - **Matlab**
|
|
@@ -189,7 +190,7 @@ Details:
|
|
|
189
190
|
-
|
|
190
191
|
.. _simfcs:
|
|
191
192
|
|
|
192
|
-
`Globals for Images
|
|
193
|
+
`Globals for Images - SimFCS <https://www.lfd.uci.edu/globals/>`__
|
|
193
194
|
is a free, closed-source, Windows desktop application for fluorescence image
|
|
194
195
|
analysis, visualization, simulation, and acquisition.
|
|
195
196
|
The software was developed by Enrico Gratton during 1998-2022 at the
|
|
@@ -228,6 +229,14 @@ Details:
|
|
|
228
229
|
is a napari plugin for FLIM data opening, processing and analysis.
|
|
229
230
|
The plugin is distributed under the GPLv3 license.
|
|
230
231
|
|
|
232
|
+
-
|
|
233
|
+
|
|
234
|
+
.. _flimari:
|
|
235
|
+
|
|
236
|
+
`FLIMari <https://github.com/GuangchenW/FLIMari>`__
|
|
237
|
+
is a napari plugin for FLIM analysis. It provides an interactive,
|
|
238
|
+
phasor-based lifetime visualization and analysis pipeline.
|
|
239
|
+
The plugin is distributed under the MIT license.
|
|
231
240
|
-
|
|
232
241
|
.. _hysp:
|
|
233
242
|
|
|
@@ -314,9 +323,9 @@ Details:
|
|
|
314
323
|
-
|
|
315
324
|
.. _phasor_plugins:
|
|
316
325
|
|
|
317
|
-
`Spectral Phasor PlugIn <http://spechron.com/Spectral%20Phasor-
|
|
326
|
+
`Spectral Phasor PlugIn <https://web.archive.org/web/20250621131318/http://spechron.com/Spectral%20Phasor-Introduction.aspx>`__
|
|
318
327
|
and
|
|
319
|
-
`Time Gated Phasor PlugIn <http://spechron.com/Time%20gated%20Phasor
|
|
328
|
+
`Time Gated Phasor PlugIn <https://web.archive.org/web/20240910041344/http://spechron.com/Time%20gated%20Phasor%20Introduction.aspx>`__
|
|
320
329
|
are open-source ImageJ plugins by Farzad Fereidouni, which provide
|
|
321
330
|
visualization, segmentation, and unmixing of time-resolved and spectral
|
|
322
331
|
images using the phasor approach. The software is distributed under an
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
[build-system]
|
|
2
2
|
requires = [
|
|
3
3
|
"setuptools>=68",
|
|
4
|
-
"numpy>=2.
|
|
5
|
-
"cython>=3.2.
|
|
4
|
+
"numpy>=2.1.0",
|
|
5
|
+
"cython>=3.2.4",
|
|
6
6
|
]
|
|
7
7
|
build-backend = "setuptools.build_meta"
|
|
8
8
|
|
|
@@ -14,12 +14,12 @@ dynamic = ["version"]
|
|
|
14
14
|
dependencies = [
|
|
15
15
|
# sync with [dependency-groups.run]
|
|
16
16
|
# https://scientific-python.org/specs/spec-0000/
|
|
17
|
-
"numpy>=2.
|
|
17
|
+
"numpy>=2.1.0",
|
|
18
18
|
"matplotlib>=3.9.0",
|
|
19
|
-
"pandas>=2.
|
|
20
|
-
# "scikit-image>=0.
|
|
19
|
+
"pandas>=2.3.0",
|
|
20
|
+
# "scikit-image>=0.24.0",
|
|
21
21
|
"scikit-learn>=1.5.0",
|
|
22
|
-
"scipy>=1.
|
|
22
|
+
"scipy>=1.14.0",
|
|
23
23
|
"tifffile>=2024.8.30",
|
|
24
24
|
"xarray>=2024.6.0",
|
|
25
25
|
"click",
|
|
@@ -28,7 +28,7 @@ dependencies = [
|
|
|
28
28
|
]
|
|
29
29
|
requires-python = ">=3.12"
|
|
30
30
|
classifiers = [
|
|
31
|
-
"Development Status ::
|
|
31
|
+
"Development Status :: 4 - Beta",
|
|
32
32
|
"Intended Audience :: Developers",
|
|
33
33
|
"Intended Audience :: Science/Research",
|
|
34
34
|
"Programming Language :: Python",
|
|
@@ -58,23 +58,25 @@ phasorpy = "phasorpy.cli:main"
|
|
|
58
58
|
[project.optional-dependencies]
|
|
59
59
|
all = [
|
|
60
60
|
# sync with [dependency-groups.optional]
|
|
61
|
+
"czifile>=2026.4.11",
|
|
61
62
|
"fbdfile>=2025.9.18",
|
|
62
63
|
"lfdfiles>=2024.5.24",
|
|
63
64
|
"liffile>=2025.2.10",
|
|
64
65
|
"ptufile>=2024.9.14",
|
|
65
66
|
"sdtfile>=2024.5.24",
|
|
66
67
|
"pawflim>=1.0.4",
|
|
68
|
+
"imagecodecs==2026.3.6; sys_platform == 'darwin' and platform_machine == 'x86_64'",
|
|
67
69
|
# "mkl-fft>=2.1.1",
|
|
68
70
|
]
|
|
69
71
|
|
|
70
72
|
[dependency-groups]
|
|
71
73
|
run = [
|
|
72
74
|
# runtime dependencies; sync with [project.dependencies]
|
|
73
|
-
"numpy>=2.
|
|
74
|
-
"matplotlib>=3.
|
|
75
|
-
"pandas>=2.
|
|
75
|
+
"numpy>=2.1.0",
|
|
76
|
+
"matplotlib>=3.10.0",
|
|
77
|
+
"pandas>=2.3.0",
|
|
76
78
|
"scikit-learn>=1.5.0",
|
|
77
|
-
"scipy>=1.
|
|
79
|
+
"scipy>=1.14.0",
|
|
78
80
|
"tifffile>=2024.8.30",
|
|
79
81
|
"xarray>=2024.6.0",
|
|
80
82
|
"click",
|
|
@@ -83,23 +85,26 @@ run = [
|
|
|
83
85
|
]
|
|
84
86
|
optional = [
|
|
85
87
|
# optional runtime dependencies; sync with [project.optional-dependencies]
|
|
88
|
+
"czifile>=2026.4.11",
|
|
86
89
|
"fbdfile>=2025.9.18",
|
|
87
90
|
"lfdfiles>=2024.5.24",
|
|
88
91
|
"liffile>=2025.2.10",
|
|
89
92
|
"ptufile>=2024.9.14",
|
|
90
93
|
"sdtfile>=2024.5.24",
|
|
91
94
|
"pawflim>=1.0.4",
|
|
95
|
+
"imagecodecs==2026.3.6; sys_platform == 'darwin' and platform_machine == 'x86_64'",
|
|
92
96
|
]
|
|
93
97
|
minimal = [
|
|
94
98
|
# minimal runtime versions for testing against oldest supported versions
|
|
95
|
-
"numpy==2.0
|
|
96
|
-
"matplotlib==3.
|
|
97
|
-
"pandas==2.2
|
|
99
|
+
"numpy==2.1.0; python_version == \"3.12\"",
|
|
100
|
+
"matplotlib==3.10.3; python_version == \"3.12\"",
|
|
101
|
+
"pandas==2.3.2; python_version == \"3.12\"",
|
|
98
102
|
"scikit-learn==1.5.0; python_version == \"3.12\"",
|
|
99
|
-
"scipy==1.
|
|
103
|
+
"scipy==1.14.1; python_version == \"3.12\"",
|
|
100
104
|
"tifffile==2024.8.30; python_version == \"3.12\"",
|
|
101
105
|
"xarray==2024.6.0; python_version == \"3.12\"",
|
|
102
106
|
# optional
|
|
107
|
+
"czifile==2026.4.11; python_version == \"3.12\"",
|
|
103
108
|
"fbdfile==2025.9.18; python_version == \"3.12\"",
|
|
104
109
|
"lfdfiles==2024.5.24; python_version == \"3.12\"",
|
|
105
110
|
"liffile==2025.2.10; python_version == \"3.12\"",
|
|
@@ -109,8 +114,8 @@ minimal = [
|
|
|
109
114
|
]
|
|
110
115
|
build = [
|
|
111
116
|
# build requirements
|
|
112
|
-
"cython>=3.2.
|
|
113
|
-
"numpy>=2.
|
|
117
|
+
"cython>=3.2.4",
|
|
118
|
+
"numpy>=2.1.0",
|
|
114
119
|
"abi3audit",
|
|
115
120
|
"build",
|
|
116
121
|
"cibuildwheel",
|
|
@@ -174,6 +179,10 @@ version = { attr = "phasorpy.__version__" }
|
|
|
174
179
|
[tool.setuptools.package-data]
|
|
175
180
|
phasorpy = ["py.typed"]
|
|
176
181
|
|
|
182
|
+
[tool.check-unicode]
|
|
183
|
+
allow-codepoints = ["U+00B0", "U+00F6", "U+039B", "U+03BB"]
|
|
184
|
+
check-confusables = true
|
|
185
|
+
|
|
177
186
|
[tool.ruff]
|
|
178
187
|
line-length = 79
|
|
179
188
|
exclude = [
|
|
@@ -295,7 +304,7 @@ disable = [
|
|
|
295
304
|
|
|
296
305
|
[tool.black]
|
|
297
306
|
line-length = 79
|
|
298
|
-
target-version = ["py312", "py313"]
|
|
307
|
+
target-version = ["py312", "py313", "py314"]
|
|
299
308
|
skip-string-normalization = true
|
|
300
309
|
|
|
301
310
|
[tool.isort]
|
|
@@ -355,6 +364,7 @@ directory = "_htmlcov"
|
|
|
355
364
|
|
|
356
365
|
[tool.pytest.ini_options]
|
|
357
366
|
minversion = "7"
|
|
367
|
+
log_level = "INFO"
|
|
358
368
|
log_cli_level = "INFO"
|
|
359
369
|
# filterwarnings = ["error"] # breaks debugging tests in VSCode (Sept. 2024)
|
|
360
370
|
xfail_strict = true
|
|
@@ -406,6 +416,7 @@ test-command = "pytest {project}/tests"
|
|
|
406
416
|
test-skip = ["cp314t*"]
|
|
407
417
|
test-requires = [
|
|
408
418
|
# sync with [dependency-groups.optional]
|
|
419
|
+
"czifile>=2026.4.11",
|
|
409
420
|
"fbdfile",
|
|
410
421
|
"lfdfiles",
|
|
411
422
|
"liffile",
|
|
@@ -421,6 +432,11 @@ test-requires = [
|
|
|
421
432
|
"pytest-runner",
|
|
422
433
|
]
|
|
423
434
|
|
|
435
|
+
[[tool.cibuildwheel.overrides]]
|
|
436
|
+
select = "*-macosx_x86_64"
|
|
437
|
+
inherit.test-requires = "append"
|
|
438
|
+
test-requires = ["imagecodecs==2026.3.6"]
|
|
439
|
+
|
|
424
440
|
[tool.cibuildwheel.test-environment]
|
|
425
441
|
PHASORPY_DATA_ON_GITHUB = "1"
|
|
426
442
|
SKIP_FETCH = "1"
|