phasorpy 0.8__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.8 → phasorpy-0.10}/LICENSE.txt +3 -3
- {phasorpy-0.8/src/phasorpy.egg-info → phasorpy-0.10}/PKG-INFO +20 -22
- {phasorpy-0.8 → phasorpy-0.10}/README.md +5 -2
- phasorpy-0.10/docs/_static/switcher.json +18 -0
- {phasorpy-0.8 → phasorpy-0.10}/docs/acknowledgments.rst +5 -5
- {phasorpy-0.8 → phasorpy-0.10}/docs/api/cli.rst +1 -1
- {phasorpy-0.8 → phasorpy-0.10}/docs/api/index.rst +2 -2
- {phasorpy-0.8 → phasorpy-0.10}/docs/conf.py +17 -9
- {phasorpy-0.8 → phasorpy-0.10}/docs/contributing.rst +36 -33
- {phasorpy-0.8 → phasorpy-0.10}/docs/index.rst +9 -9
- phasorpy-0.10/docs/license.rst +5 -0
- {phasorpy-0.8 → phasorpy-0.10}/docs/phasor_approach.rst +187 -66
- phasorpy-0.10/pyproject.toml +443 -0
- {phasorpy-0.8 → phasorpy-0.10}/setup.py +17 -6
- {phasorpy-0.8 → phasorpy-0.10}/src/phasorpy/__init__.py +1 -1
- {phasorpy-0.8 → phasorpy-0.10}/src/phasorpy/__main__.py +1 -1
- {phasorpy-0.8 → phasorpy-0.10}/src/phasorpy/_phasorpy.pyx +291 -145
- {phasorpy-0.8 → phasorpy-0.10}/src/phasorpy/_typing.py +1 -5
- {phasorpy-0.8 → phasorpy-0.10}/src/phasorpy/_utils.py +126 -106
- {phasorpy-0.8 → phasorpy-0.10}/src/phasorpy/cli.py +21 -19
- {phasorpy-0.8 → phasorpy-0.10}/src/phasorpy/cluster.py +63 -36
- {phasorpy-0.8 → phasorpy-0.10}/src/phasorpy/color.py +21 -17
- phasorpy-0.10/src/phasorpy/component.py +1100 -0
- {phasorpy-0.8 → phasorpy-0.10}/src/phasorpy/cursor.py +76 -58
- {phasorpy-0.8 → phasorpy-0.10}/src/phasorpy/datasets.py +30 -12
- {phasorpy-0.8 → phasorpy-0.10}/src/phasorpy/experimental.py +7 -9
- {phasorpy-0.8 → phasorpy-0.10}/src/phasorpy/filter.py +615 -112
- {phasorpy-0.8 → phasorpy-0.10}/src/phasorpy/io/__init__.py +27 -26
- {phasorpy-0.8 → phasorpy-0.10}/src/phasorpy/io/_flimlabs.py +62 -35
- {phasorpy-0.8 → phasorpy-0.10}/src/phasorpy/io/_leica.py +39 -36
- {phasorpy-0.8 → phasorpy-0.10}/src/phasorpy/io/_ometiff.py +57 -48
- {phasorpy-0.8 → phasorpy-0.10}/src/phasorpy/io/_other.py +202 -112
- {phasorpy-0.8 → phasorpy-0.10}/src/phasorpy/io/_simfcs.py +79 -72
- {phasorpy-0.8 → phasorpy-0.10}/src/phasorpy/lifetime.py +372 -260
- {phasorpy-0.8 → phasorpy-0.10}/src/phasorpy/phasor.py +186 -162
- {phasorpy-0.8 → phasorpy-0.10}/src/phasorpy/plot/__init__.py +0 -2
- {phasorpy-0.8 → phasorpy-0.10}/src/phasorpy/plot/_functions.py +92 -80
- {phasorpy-0.8 → phasorpy-0.10}/src/phasorpy/plot/_lifetime_plots.py +64 -48
- {phasorpy-0.8 → phasorpy-0.10}/src/phasorpy/plot/_phasorplot.py +121 -98
- {phasorpy-0.8 → phasorpy-0.10}/src/phasorpy/plot/_phasorplot_fret.py +50 -47
- {phasorpy-0.8 → phasorpy-0.10}/src/phasorpy/utils.py +38 -32
- {phasorpy-0.8 → phasorpy-0.10/src/phasorpy.egg-info}/PKG-INFO +20 -22
- {phasorpy-0.8 → phasorpy-0.10}/src/phasorpy.egg-info/SOURCES.txt +2 -1
- {phasorpy-0.8 → phasorpy-0.10}/src/phasorpy.egg-info/requires.txt +13 -17
- {phasorpy-0.8 → phasorpy-0.10}/tests/io/_conftest.py +23 -17
- {phasorpy-0.8 → phasorpy-0.10}/tests/io/test_flimlabs.py +1 -1
- {phasorpy-0.8 → phasorpy-0.10}/tests/io/test_leica.py +8 -8
- {phasorpy-0.8 → phasorpy-0.10}/tests/io/test_ometiff.py +15 -13
- {phasorpy-0.8 → phasorpy-0.10}/tests/io/test_other.py +25 -1
- {phasorpy-0.8 → phasorpy-0.10}/tests/io/test_simfcs.py +15 -11
- {phasorpy-0.8 → phasorpy-0.10}/tests/plot/test_functions.py +16 -14
- {phasorpy-0.8 → phasorpy-0.10}/tests/plot/test_phasorplot.py +9 -7
- {phasorpy-0.8 → phasorpy-0.10}/tests/test__phasorpy.py +36 -9
- {phasorpy-0.8 → phasorpy-0.10}/tests/test__typing.py +1 -1
- {phasorpy-0.8 → phasorpy-0.10}/tests/test__utils.py +4 -9
- {phasorpy-0.8 → phasorpy-0.10}/tests/test_cli.py +2 -2
- {phasorpy-0.8 → phasorpy-0.10}/tests/test_cluster.py +27 -15
- {phasorpy-0.8 → phasorpy-0.10}/tests/test_color.py +6 -6
- {phasorpy-0.8 → phasorpy-0.10}/tests/test_component.py +217 -25
- {phasorpy-0.8 → phasorpy-0.10}/tests/test_cursor.py +29 -13
- {phasorpy-0.8 → phasorpy-0.10}/tests/test_datasets.py +3 -3
- {phasorpy-0.8 → phasorpy-0.10}/tests/test_experimental.py +2 -2
- {phasorpy-0.8 → phasorpy-0.10}/tests/test_filter.py +472 -190
- {phasorpy-0.8 → phasorpy-0.10}/tests/test_lifetime.py +171 -68
- {phasorpy-0.8 → phasorpy-0.10}/tests/test_nan.py +35 -35
- {phasorpy-0.8 → phasorpy-0.10}/tests/test_phasor.py +84 -91
- {phasorpy-0.8 → phasorpy-0.10}/tests/test_phasorpy.py +1 -1
- {phasorpy-0.8 → phasorpy-0.10}/tests/test_utils.py +1 -5
- {phasorpy-0.8 → phasorpy-0.10}/tools/build_manylinux.cmd +3 -3
- phasorpy-0.10/tools/build_manylinux.sh +10 -0
- {phasorpy-0.8 → phasorpy-0.10}/tools/sha256.py +6 -4
- {phasorpy-0.8 → phasorpy-0.10}/tutorials/README.rst +2 -2
- {phasorpy-0.8 → phasorpy-0.10}/tutorials/api/phasorpy_component.py +28 -28
- {phasorpy-0.8 → phasorpy-0.10}/tutorials/api/phasorpy_cursor.py +26 -16
- phasorpy-0.10/tutorials/api/phasorpy_filter.py +335 -0
- {phasorpy-0.8 → phasorpy-0.10}/tutorials/api/phasorpy_fret.py +32 -59
- {phasorpy-0.8 → phasorpy-0.10}/tutorials/api/phasorpy_io.py +81 -60
- {phasorpy-0.8 → phasorpy-0.10}/tutorials/api/phasorpy_lifetime_to_signal.py +60 -30
- {phasorpy-0.8 → phasorpy-0.10}/tutorials/api/phasorpy_multi_harmonic.py +34 -29
- {phasorpy-0.8 → phasorpy-0.10}/tutorials/api/phasorpy_pca.py +19 -15
- {phasorpy-0.8 → phasorpy-0.10}/tutorials/api/phasorpy_phasor_from_lifetime.py +21 -18
- {phasorpy-0.8 → phasorpy-0.10}/tutorials/api/phasorpy_phasorplot.py +12 -11
- {phasorpy-0.8 → phasorpy-0.10}/tutorials/applications/phasorpy_component_fit.py +22 -17
- {phasorpy-0.8 → phasorpy-0.10}/tutorials/applications/phasorpy_fret_efficiency.py +28 -7
- {phasorpy-0.8 → phasorpy-0.10}/tutorials/applications/phasorpy_multidimensional.py +19 -17
- phasorpy-0.10/tutorials/applications/phasorpy_nadh_concentration.py +432 -0
- phasorpy-0.10/tutorials/misc/phasorpy_apps.py +77 -0
- {phasorpy-0.8 → phasorpy-0.10}/tutorials/misc/phasorpy_logo.py +24 -23
- {phasorpy-0.8 → phasorpy-0.10}/tutorials/misc/phasorpy_phasor_from_signal.py +47 -43
- {phasorpy-0.8 → phasorpy-0.10}/tutorials/phasorpy_introduction.py +35 -27
- {phasorpy-0.8 → phasorpy-0.10}/tutorials/phasorpy_lfd_workshop.py +46 -32
- {phasorpy-0.8 → phasorpy-0.10}/tutorials/phasorpy_lifetime_geometry.py +19 -18
- phasorpy-0.8/docs/_static/switcher.json +0 -23
- phasorpy-0.8/docs/license.rst +0 -22
- phasorpy-0.8/docs/release.rst +0 -456
- phasorpy-0.8/pyproject.toml +0 -185
- phasorpy-0.8/src/phasorpy/component.py +0 -711
- phasorpy-0.8/tools/build_manylinux.sh +0 -10
- phasorpy-0.8/tutorials/api/phasorpy_filter.py +0 -214
- {phasorpy-0.8 → phasorpy-0.10}/MANIFEST.in +0 -0
- {phasorpy-0.8 → phasorpy-0.10}/docs/_static/categorical.png +0 -0
- {phasorpy-0.8 → phasorpy-0.10}/docs/_static/custom-icons.js +0 -0
- {phasorpy-0.8 → phasorpy-0.10}/docs/_static/favicon.ico +0 -0
- {phasorpy-0.8 → phasorpy-0.10}/docs/_static/phasorpy_logo.png +0 -0
- {phasorpy-0.8 → phasorpy-0.10}/docs/_static/phasorpy_logo.svg +0 -0
- {phasorpy-0.8 → phasorpy-0.10}/docs/_static/srgb_spectrum.png +0 -0
- {phasorpy-0.8 → phasorpy-0.10}/docs/api/_phasorpy.rst +0 -0
- {phasorpy-0.8 → phasorpy-0.10}/docs/api/_utils.rst +0 -0
- {phasorpy-0.8 → phasorpy-0.10}/docs/api/cluster.rst +0 -0
- {phasorpy-0.8 → phasorpy-0.10}/docs/api/color.rst +0 -0
- {phasorpy-0.8 → phasorpy-0.10}/docs/api/component.rst +0 -0
- {phasorpy-0.8 → phasorpy-0.10}/docs/api/cursor.rst +0 -0
- {phasorpy-0.8 → phasorpy-0.10}/docs/api/datasets.rst +0 -0
- {phasorpy-0.8 → phasorpy-0.10}/docs/api/experimental.rst +0 -0
- {phasorpy-0.8 → phasorpy-0.10}/docs/api/filter.rst +0 -0
- {phasorpy-0.8 → phasorpy-0.10}/docs/api/io.rst +0 -0
- {phasorpy-0.8 → phasorpy-0.10}/docs/api/lifetime.rst +0 -0
- {phasorpy-0.8 → phasorpy-0.10}/docs/api/phasor.rst +0 -0
- {phasorpy-0.8 → phasorpy-0.10}/docs/api/phasorpy.rst +0 -0
- {phasorpy-0.8 → phasorpy-0.10}/docs/api/plot.rst +0 -0
- {phasorpy-0.8 → phasorpy-0.10}/docs/api/utils.rst +0 -0
- {phasorpy-0.8 → phasorpy-0.10}/docs/code_of_conduct.rst +0 -0
- {phasorpy-0.8 → phasorpy-0.10}/setup.cfg +0 -0
- {phasorpy-0.8 → phasorpy-0.10}/src/phasorpy/conftest.py +0 -0
- {phasorpy-0.8 → phasorpy-0.10}/src/phasorpy/py.typed +0 -0
- {phasorpy-0.8 → phasorpy-0.10}/src/phasorpy.egg-info/dependency_links.txt +0 -0
- {phasorpy-0.8 → phasorpy-0.10}/src/phasorpy.egg-info/entry_points.txt +0 -0
- {phasorpy-0.8 → phasorpy-0.10}/src/phasorpy.egg-info/not-zip-safe +0 -0
- {phasorpy-0.8 → phasorpy-0.10}/src/phasorpy.egg-info/top_level.txt +0 -0
- {phasorpy-0.8 → phasorpy-0.10}/tests/conftest.py +0 -0
- {phasorpy-0.8 → phasorpy-0.10}/tests/plot/test_lifetime_plots.py +0 -0
- {phasorpy-0.8 → phasorpy-0.10}/tests/plot/test_phasorplot_fret.py +0 -0
- {phasorpy-0.8 → phasorpy-0.10}/tutorials/api/README.rst +0 -0
- {phasorpy-0.8 → phasorpy-0.10}/tutorials/applications/README.rst +0 -0
- {phasorpy-0.8 → phasorpy-0.10}/tutorials/misc/README.rst +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2022-
|
|
3
|
+
Copyright (c) 2022-2026 PhasorPy Contributors
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -9,8 +9,8 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
|
9
9
|
copies of the Software, and to permit persons to whom the Software is
|
|
10
10
|
furnished to do so, subject to the following conditions:
|
|
11
11
|
|
|
12
|
-
The above copyright notice and this permission notice shall be included in
|
|
13
|
-
copies or substantial portions of the Software.
|
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
|
13
|
+
all copies or substantial portions of the Software.
|
|
14
14
|
|
|
15
15
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
16
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: phasorpy
|
|
3
|
-
Version: 0.
|
|
4
|
-
Summary: Analysis of
|
|
3
|
+
Version: 0.10
|
|
4
|
+
Summary: Analysis of luminescence lifetime and hyperspectral images using the phasor approach
|
|
5
5
|
Author: PhasorPy Contributors
|
|
6
6
|
License-Expression: MIT
|
|
7
7
|
Project-URL: Homepage, https://www.phasorpy.org
|
|
@@ -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,35 +24,30 @@ 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:
|
|
29
|
+
Requires-Dist: pandas>=2.3.0
|
|
30
|
+
Requires-Dist: scikit-learn>=1.5.0
|
|
31
|
+
Requires-Dist: scipy>=1.14.0
|
|
32
|
+
Requires-Dist: tifffile>=2024.8.30
|
|
33
|
+
Requires-Dist: xarray>=2024.6.0
|
|
30
34
|
Requires-Dist: click
|
|
31
35
|
Requires-Dist: pooch
|
|
32
36
|
Requires-Dist: tqdm
|
|
33
|
-
Requires-Dist: scikit-learn>=1.5.0
|
|
34
|
-
Requires-Dist: xarray>=2024.6.0
|
|
35
|
-
Requires-Dist: tifffile>=2024.8.30
|
|
36
|
-
Provides-Extra: docs
|
|
37
|
-
Requires-Dist: sphinx; extra == "docs"
|
|
38
|
-
Requires-Dist: sphinx-issues; extra == "docs"
|
|
39
|
-
Requires-Dist: sphinx_gallery; extra == "docs"
|
|
40
|
-
Requires-Dist: sphinx-copybutton; extra == "docs"
|
|
41
|
-
Requires-Dist: sphinx_click; extra == "docs"
|
|
42
|
-
Requires-Dist: pydata-sphinx-theme>=0.16.0; extra == "docs"
|
|
43
|
-
Requires-Dist: numpydoc; extra == "docs"
|
|
44
37
|
Provides-Extra: all
|
|
38
|
+
Requires-Dist: czifile>=2026.4.11; extra == "all"
|
|
39
|
+
Requires-Dist: fbdfile>=2025.9.18; extra == "all"
|
|
45
40
|
Requires-Dist: lfdfiles>=2024.5.24; extra == "all"
|
|
46
|
-
Requires-Dist: sdtfile>=2024.5.24; extra == "all"
|
|
47
|
-
Requires-Dist: ptufile>=2024.9.14; extra == "all"
|
|
48
41
|
Requires-Dist: liffile>=2025.2.10; extra == "all"
|
|
49
|
-
Requires-Dist:
|
|
50
|
-
Requires-Dist:
|
|
42
|
+
Requires-Dist: ptufile>=2024.9.14; extra == "all"
|
|
43
|
+
Requires-Dist: sdtfile>=2024.5.24; extra == "all"
|
|
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"
|
|
51
46
|
Dynamic: license-file
|
|
52
47
|
|
|
53
|
-
# PhasorPy
|
|
48
|
+
# <img src="https://www.phasorpy.org/_static/phasorpy_logo.svg" alt="○" width="48" height="48" align="left"/> PhasorPy
|
|
54
49
|
|
|
55
|
-
PhasorPy is an open-source Python library for the analysis of
|
|
50
|
+
PhasorPy is an open-source Python library for the analysis of luminescence
|
|
56
51
|
lifetime and hyperspectral images using the phasor approach.
|
|
57
52
|
|
|
58
53
|
- [Homepage](https://www.phasorpy.org)
|
|
@@ -62,6 +57,9 @@ lifetime and hyperspectral images using the phasor approach.
|
|
|
62
57
|
- [Data files](https://zenodo.org/communities/phasorpy/)
|
|
63
58
|
- [Issues and questions](https://github.com/phasorpy/phasorpy/issues)
|
|
64
59
|
|
|
60
|
+
Please cite [doi: 10.5281/zenodo.13862586](https://doi.org/10.5281/zenodo.13862586)
|
|
61
|
+
if PhasorPy contributes to research that leads to a publication.
|
|
62
|
+
|
|
65
63
|
PhasorPy is a community-maintained project.
|
|
66
64
|
[Contributions](https://www.phasorpy.org/docs/stable/contributing/)
|
|
67
65
|
in the form of bug reports, bug fixes, feature implementations, documentation,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# PhasorPy
|
|
1
|
+
# <img src="https://www.phasorpy.org/_static/phasorpy_logo.svg" alt="○" width="48" height="48" align="left"/> PhasorPy
|
|
2
2
|
|
|
3
|
-
PhasorPy is an open-source Python library for the analysis of
|
|
3
|
+
PhasorPy is an open-source Python library for the analysis of luminescence
|
|
4
4
|
lifetime and hyperspectral images using the phasor approach.
|
|
5
5
|
|
|
6
6
|
- [Homepage](https://www.phasorpy.org)
|
|
@@ -10,6 +10,9 @@ lifetime and hyperspectral images using the phasor approach.
|
|
|
10
10
|
- [Data files](https://zenodo.org/communities/phasorpy/)
|
|
11
11
|
- [Issues and questions](https://github.com/phasorpy/phasorpy/issues)
|
|
12
12
|
|
|
13
|
+
Please cite [doi: 10.5281/zenodo.13862586](https://doi.org/10.5281/zenodo.13862586)
|
|
14
|
+
if PhasorPy contributes to research that leads to a publication.
|
|
15
|
+
|
|
13
16
|
PhasorPy is a community-maintained project.
|
|
14
17
|
[Contributions](https://www.phasorpy.org/docs/stable/contributing/)
|
|
15
18
|
in the form of bug reports, bug fixes, feature implementations, documentation,
|
|
@@ -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
|
+
]
|
|
@@ -3,12 +3,12 @@ Acknowledgments
|
|
|
3
3
|
|
|
4
4
|
The PhasorPy project was established by the
|
|
5
5
|
`Advanced Bioimaging Unit <https://pasteur.uy/en/units/advanced-bioimaging>`_
|
|
6
|
-
at the University of the Republic and Institut Pasteur de Montevideo and the
|
|
6
|
+
at the University of the Republic and Institut Pasteur de Montevideo, and the
|
|
7
7
|
`Laboratory for Fluorescence Dynamics <https://www.lfd.uci.edu>`_
|
|
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
|
|
@@ -22,7 +22,8 @@ This software project was supported in part by the
|
|
|
22
22
|
Contributors
|
|
23
23
|
------------
|
|
24
24
|
|
|
25
|
-
PhasorPy is developed by
|
|
25
|
+
PhasorPy is developed by
|
|
26
|
+
`contributors to the PhasorPy repository
|
|
26
27
|
<https://github.com/phasorpy/phasorpy/graphs/contributors>`_
|
|
27
28
|
and
|
|
28
29
|
`members of the PhasorPy organization
|
|
@@ -37,6 +38,5 @@ feature suggestions, and data files that have helped improve the library.
|
|
|
37
38
|
Citation
|
|
38
39
|
--------
|
|
39
40
|
|
|
40
|
-
If PhasorPy contributes to
|
|
41
|
-
please cite
|
|
41
|
+
If PhasorPy contributes to research that leads to a publication, please cite
|
|
42
42
|
`doi: 10.5281/zenodo.13862586 <https://doi.org/10.5281/zenodo.13862586>`_.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
API reference
|
|
2
2
|
=============
|
|
3
3
|
|
|
4
|
-
This documents the application programming and command
|
|
5
|
-
PhasorPy library version |version|.
|
|
4
|
+
This documents the application programming and command-line interfaces of
|
|
5
|
+
the PhasorPy library version |version|.
|
|
6
6
|
|
|
7
7
|
.. note::
|
|
8
8
|
The PhasorPy library is still under construction. Backwards-incompatible
|
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"""Sphinx build configuration file.
|
|
2
|
+
|
|
3
|
+
https://www.sphinx-doc.org/en/master/usage/configuration.html
|
|
4
|
+
|
|
5
|
+
"""
|
|
6
|
+
|
|
3
7
|
# pylint: skip-file
|
|
4
8
|
|
|
5
9
|
import os
|
|
@@ -19,7 +23,7 @@ sphinx_gallery.gen_rst.EXAMPLE_HEADER = (
|
|
|
19
23
|
# project information
|
|
20
24
|
|
|
21
25
|
project = 'PhasorPy'
|
|
22
|
-
copyright = '2022-
|
|
26
|
+
copyright = '2022-2026 PhasorPy Contributors'
|
|
23
27
|
author = 'PhasorPy Contributors'
|
|
24
28
|
|
|
25
29
|
import phasorpy
|
|
@@ -31,6 +35,7 @@ version_match = version.split('.dev')[0].split('.rc')[0]
|
|
|
31
35
|
# general configuration
|
|
32
36
|
|
|
33
37
|
extensions = [
|
|
38
|
+
'sphinx.ext.mathjax',
|
|
34
39
|
'sphinx.ext.napoleon',
|
|
35
40
|
'sphinx.ext.autodoc',
|
|
36
41
|
'sphinx.ext.autosummary',
|
|
@@ -60,6 +65,7 @@ html_theme = 'pydata_sphinx_theme'
|
|
|
60
65
|
html_static_path = ['_static']
|
|
61
66
|
html_js_files = ['custom-icons.js']
|
|
62
67
|
html_show_sourcelink = False
|
|
68
|
+
html_sidebars = {'**': ['sidebar-nav-bs']}
|
|
63
69
|
|
|
64
70
|
html_title = f'PhasorPy {version} documentation'
|
|
65
71
|
html_logo = '_static/phasorpy_logo.svg'
|
|
@@ -134,6 +140,9 @@ sphinx_gallery_conf = {
|
|
|
134
140
|
# 'backreferences_dir': None,
|
|
135
141
|
}
|
|
136
142
|
|
|
143
|
+
# TODO: remove MathJax 3 link once scroll bar issue is resolved
|
|
144
|
+
mathjax_path = 'https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js'
|
|
145
|
+
|
|
137
146
|
|
|
138
147
|
class TutorialOrder:
|
|
139
148
|
"""Order tutorials in gallery subsections."""
|
|
@@ -156,10 +165,12 @@ class TutorialOrder:
|
|
|
156
165
|
# applications
|
|
157
166
|
'component_fit',
|
|
158
167
|
'fret_efficiency',
|
|
168
|
+
'nadh_concentration',
|
|
159
169
|
'multidimensional',
|
|
160
170
|
# misc
|
|
161
|
-
'phasor_from_signal',
|
|
162
171
|
'logo',
|
|
172
|
+
'apps',
|
|
173
|
+
'phasor_from_signal',
|
|
163
174
|
]
|
|
164
175
|
|
|
165
176
|
def __init__(self, srcdir: str): ...
|
|
@@ -234,7 +245,7 @@ def linkcode_resolve(domain: str, info: dict[str, str]) -> str | None:
|
|
|
234
245
|
except (OSError, TypeError):
|
|
235
246
|
lineno = None
|
|
236
247
|
|
|
237
|
-
linespec = f
|
|
248
|
+
linespec = f'#L{lineno:d}-L{lineno + len(source) - 1:d}' if lineno else ''
|
|
238
249
|
|
|
239
250
|
startdir = Path(phasorpy.__file__).parent.parent
|
|
240
251
|
try:
|
|
@@ -242,10 +253,7 @@ def linkcode_resolve(domain: str, info: dict[str, str]) -> str | None:
|
|
|
242
253
|
except ValueError:
|
|
243
254
|
return None
|
|
244
255
|
|
|
245
|
-
if '.dev' in version or '.rc' in version
|
|
246
|
-
tag = 'main'
|
|
247
|
-
else:
|
|
248
|
-
tag = f'v{version}'
|
|
256
|
+
tag = 'main' if '.dev' in version or '.rc' in version else f'v{version}'
|
|
249
257
|
return (
|
|
250
258
|
f'https://github.com/phasorpy/phasorpy/blob/{tag}/src/{fn}{linespec}'
|
|
251
259
|
)
|
|
@@ -6,7 +6,7 @@ of bug reports, bug fixes, feature implementations, documentation, datasets,
|
|
|
6
6
|
and enhancement proposals.
|
|
7
7
|
This document provides information on how to contribute.
|
|
8
8
|
|
|
9
|
-
The :doc:`code_of_conduct`
|
|
9
|
+
The :doc:`code_of_conduct` applies to everyone participating in the
|
|
10
10
|
PhasorPy community.
|
|
11
11
|
|
|
12
12
|
Ask for help
|
|
@@ -24,8 +24,8 @@ To suggest a new feature or other improvement to the PhasorPy library, open a
|
|
|
24
24
|
Share data files
|
|
25
25
|
----------------
|
|
26
26
|
|
|
27
|
-
The PhasorPy project strives to support reading
|
|
28
|
-
time-resolved and hyperspectral file formats used in
|
|
27
|
+
The PhasorPy project strives to support reading images and metadata from many
|
|
28
|
+
time-resolved and hyperspectral file formats used in bioimaging.
|
|
29
29
|
Consider sharing datasets for testing and use in tutorials, preferably with the
|
|
30
30
|
`PhasorPy community on Zenodo <https://zenodo.org/communities/phasorpy/>`_.
|
|
31
31
|
|
|
@@ -36,8 +36,8 @@ To report a bug in the PhasorPy library, please open a
|
|
|
36
36
|
`GitHub issue <https://github.com/phasorpy/phasorpy/issues>`_
|
|
37
37
|
and include the following items in the bug report:
|
|
38
38
|
|
|
39
|
-
- A minimal, self-contained Python
|
|
40
|
-
Format the code
|
|
39
|
+
- A minimal, self-contained Python script reproducing the problem.
|
|
40
|
+
Format the code as a Python code block, for example::
|
|
41
41
|
|
|
42
42
|
```Python
|
|
43
43
|
import phasorpy
|
|
@@ -54,16 +54,16 @@ and include the following items in the bug report:
|
|
|
54
54
|
or shared via cloud storage, preferably on
|
|
55
55
|
`Zenodo.org <https://zenodo.org/communities/phasorpy/>`_.
|
|
56
56
|
|
|
57
|
-
- An explanation why the current behavior is wrong and what is expected
|
|
57
|
+
- An explanation of why the current behavior is wrong and what is expected
|
|
58
58
|
instead.
|
|
59
59
|
|
|
60
|
-
- Information how PhasorPy was installed (pip, conda, or other) and the
|
|
61
|
-
of::
|
|
60
|
+
- Information on how PhasorPy was installed (pip, conda, or other) and the
|
|
61
|
+
output of::
|
|
62
62
|
|
|
63
63
|
$ python -m phasorpy versions
|
|
64
|
-
Python-3.
|
|
65
|
-
phasorpy-0.
|
|
66
|
-
numpy-2.
|
|
64
|
+
Python-3.14.1
|
|
65
|
+
phasorpy-0.8
|
|
66
|
+
numpy-2.3.5
|
|
67
67
|
...
|
|
68
68
|
|
|
69
69
|
Contribute code or documentation
|
|
@@ -75,7 +75,7 @@ a GitHub repository at
|
|
|
75
75
|
|
|
76
76
|
The repository is based on `git <https://git-scm.com/>`_, a distributed
|
|
77
77
|
version control software for tracking changes in the source code files and for
|
|
78
|
-
coordinating work among programmers
|
|
78
|
+
coordinating work among programmers collaboratively developing the code.
|
|
79
79
|
|
|
80
80
|
PhasorPy uses GitHub's `fork and pull collaborative development model
|
|
81
81
|
<https://docs.github.com/en/pull-requests/collaborating-with-pull-requests>`_.
|
|
@@ -91,7 +91,7 @@ development guidelines.
|
|
|
91
91
|
Fork the repository
|
|
92
92
|
...................
|
|
93
93
|
|
|
94
|
-
To work
|
|
94
|
+
To work with the PhasorPy source code, fork the repository by pressing the
|
|
95
95
|
"Fork" button at
|
|
96
96
|
`https://github.com/phasorpy/phasorpy <https://github.com/phasorpy/phasorpy>`_.
|
|
97
97
|
|
|
@@ -105,14 +105,15 @@ There are now two remote repositories:
|
|
|
105
105
|
``upstream``, which refers to the PhasorPy repository, and
|
|
106
106
|
``origin``, which refers to the personal fork.
|
|
107
107
|
|
|
108
|
-
Instead of using the git command
|
|
108
|
+
Instead of using the git command-line application, you may find
|
|
109
109
|
`GitHub Desktop <https://desktop.github.com>`_ easier to use.
|
|
110
110
|
|
|
111
111
|
Create a development environment
|
|
112
112
|
................................
|
|
113
113
|
|
|
114
|
-
A
|
|
115
|
-
library. For example,
|
|
114
|
+
A C compiler compatible with the Python distribution is required for
|
|
115
|
+
developing the PhasorPy library. For example,
|
|
116
|
+
`Visual Studio <https://visualstudio.microsoft.com/>`_,
|
|
116
117
|
`Xcode <https://developer.apple.com/xcode/>`_, or gcc.
|
|
117
118
|
|
|
118
119
|
To work with the PhasorPy source code, it is recommended to set up a Python
|
|
@@ -124,7 +125,8 @@ following from within the local phasorpy repository::
|
|
|
124
125
|
$ mkdir -p ~/pyenv/phasorpy-dev
|
|
125
126
|
$ python -m venv ~/pyenv/phasorpy-dev
|
|
126
127
|
$ source ~/pyenv/phasorpy-dev/bin/activate
|
|
127
|
-
$ pip install
|
|
128
|
+
$ pip install --upgrade pip
|
|
129
|
+
$ pip install --upgrade --group dev
|
|
128
130
|
$ pip install -e .
|
|
129
131
|
|
|
130
132
|
Verify that the development environment is working by running the tests::
|
|
@@ -152,7 +154,7 @@ For example::
|
|
|
152
154
|
This changes the local repository to the "new-feature-branch" branch.
|
|
153
155
|
Keep any changes in this branch specific to one bug or feature.
|
|
154
156
|
|
|
155
|
-
To update this branch with latest code from the PhasorPy repository,
|
|
157
|
+
To update this branch with the latest code from the PhasorPy repository,
|
|
156
158
|
retrieve the changes from the main branch, make a backup of the feature
|
|
157
159
|
branch, and perform a rebase::
|
|
158
160
|
|
|
@@ -161,16 +163,16 @@ branch, and perform a rebase::
|
|
|
161
163
|
$ git branch new-feature-branch-backup new-feature-branch
|
|
162
164
|
$ git rebase upstream/main
|
|
163
165
|
|
|
164
|
-
This replays local commits
|
|
166
|
+
This replays local commits on the "new-feature-branch" branch on top
|
|
165
167
|
of the latest PhasorPy upstream main branch.
|
|
166
|
-
Merge
|
|
168
|
+
Merge conflicts need to be resolved before submitting a pull request.
|
|
167
169
|
|
|
168
170
|
Tests
|
|
169
171
|
.....
|
|
170
172
|
|
|
171
173
|
PhasorPy includes a `pytest <https://docs.pytest.org/>`_ based suite of
|
|
172
|
-
unit tests in the ``tests`` folder. All classes and functions
|
|
173
|
-
|
|
174
|
+
unit tests in the ``tests`` folder. All user-facing classes and functions
|
|
175
|
+
should be covered by tests.
|
|
174
176
|
|
|
175
177
|
Run the unit tests in the development environment::
|
|
176
178
|
|
|
@@ -188,7 +190,7 @@ Code standards
|
|
|
188
190
|
..............
|
|
189
191
|
|
|
190
192
|
All the PhasorPy source code, including tutorials and docstring examples,
|
|
191
|
-
must conform to certain styles, which can be and applied with
|
|
193
|
+
must conform to certain styles, which can be checked and applied with
|
|
192
194
|
`pre-commit <https://pre-commit.com/>`_::
|
|
193
195
|
|
|
194
196
|
$ python -m pre_commit run --all-files
|
|
@@ -203,7 +205,7 @@ static type checker::
|
|
|
203
205
|
|
|
204
206
|
|
|
205
207
|
The PhasorPy project follows the Scientific Python
|
|
206
|
-
`SPEC 0
|
|
208
|
+
`SPEC 0 - Minimum Supported Dependencies
|
|
207
209
|
<https://scientific-python.org/specs/spec-0000/>`_ recommendation
|
|
208
210
|
for Python, NumPy, and other dependencies.
|
|
209
211
|
|
|
@@ -221,7 +223,7 @@ Examples in docstrings must run and pass as
|
|
|
221
223
|
|
|
222
224
|
$ python -m pytest -v src/phasorpy
|
|
223
225
|
|
|
224
|
-
Examples in docstrings are meant to illustrate
|
|
226
|
+
Examples in docstrings are meant to illustrate basic usage, not to
|
|
225
227
|
provide a testing framework.
|
|
226
228
|
|
|
227
229
|
PhasorPy uses `Sphinx <https://www.sphinx-doc.org>`_
|
|
@@ -235,13 +237,15 @@ markup language in the .rst files in the ``docs`` and ``tutorials`` folders.
|
|
|
235
237
|
All user-facing classes and functions should be included in the
|
|
236
238
|
``docs/api/*.rst`` files.
|
|
237
239
|
|
|
238
|
-
Any changes should be mentioned in the release notes
|
|
240
|
+
Any changes should be mentioned in the release notes
|
|
241
|
+
(``docs/release/index.rst``).
|
|
239
242
|
|
|
240
243
|
New features or important usage information should be covered in the
|
|
241
244
|
tutorials. Tutorials are included in the documentation via the
|
|
242
245
|
`Sphinx-Gallery <https://sphinx-gallery.github.io>`_
|
|
243
246
|
extension, which builds an HTML gallery of examples from the set of Python
|
|
244
247
|
scripts in the ``tutorials`` folder.
|
|
248
|
+
Avoid large external datasets or long-running computations.
|
|
245
249
|
|
|
246
250
|
Examples in the .rst files must run and pass as doctests::
|
|
247
251
|
|
|
@@ -253,7 +257,8 @@ and tutorial files by running::
|
|
|
253
257
|
$ cd docs
|
|
254
258
|
$ make clean
|
|
255
259
|
$ make html
|
|
256
|
-
|
|
260
|
+
|
|
261
|
+
Then open ``_build/html/index.html`` in a web browser.
|
|
257
262
|
|
|
258
263
|
Commit the changes
|
|
259
264
|
..................
|
|
@@ -274,11 +279,9 @@ on GitHub::
|
|
|
274
279
|
|
|
275
280
|
$ git push origin new-feature-branch
|
|
276
281
|
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
Click the green "pull request" button on the "new-feature-branch" branch.
|
|
282
|
+
Then navigate to the personal fork on GitHub at
|
|
283
|
+
``https://github.com/your-user-name/phasorpy`` and click the green
|
|
284
|
+
"pull request" button on the "new-feature-branch" branch.
|
|
282
285
|
|
|
283
286
|
Review the pull request checklist for recommendations.
|
|
284
287
|
|
|
@@ -287,7 +290,7 @@ All tests are automatically run via
|
|
|
287
290
|
and must pass before code or documentation can be accepted.
|
|
288
291
|
|
|
289
292
|
Other PhasorPy developers will review the pull request to check and help
|
|
290
|
-
|
|
293
|
+
improve its implementation, documentation, and style.
|
|
291
294
|
|
|
292
295
|
Pull requests must be approved by a
|
|
293
296
|
`PhasorPy organization member <https://github.com/orgs/phasorpy/people>`_
|
|
@@ -4,26 +4,26 @@ PhasorPy documentation
|
|
|
4
4
|
|
|
5
5
|
Welcome to the documentation of PhasorPy version |version|.
|
|
6
6
|
|
|
7
|
-
PhasorPy is an open-source Python library for the analysis of
|
|
7
|
+
PhasorPy is an open-source Python library for the analysis of luminescence
|
|
8
8
|
lifetime and hyperspectral images using the :doc:`phasor_approach`.
|
|
9
9
|
|
|
10
10
|
Quickstart
|
|
11
11
|
==========
|
|
12
12
|
|
|
13
|
-
The :doc:`tutorials/index` demonstrate
|
|
13
|
+
The :doc:`tutorials/index` demonstrate how to use the library, from simple
|
|
14
14
|
examples to advanced applications.
|
|
15
15
|
|
|
16
16
|
The :doc:`api/index` contains detailed information about all functions and
|
|
17
17
|
classes of the library.
|
|
18
18
|
|
|
19
|
-
The :doc:`release` list recent bug fixes, feature enhancements, documentation
|
|
19
|
+
The :doc:`release/index` list recent bug fixes, feature enhancements, documentation,
|
|
20
20
|
and maintenance changes.
|
|
21
21
|
|
|
22
22
|
The :doc:`contributing` explains how to get support, report bugs,
|
|
23
|
-
submit
|
|
23
|
+
submit fixes, and improve the documentation.
|
|
24
24
|
|
|
25
|
-
The :doc:`code_of_conduct`
|
|
26
|
-
|
|
25
|
+
The :doc:`code_of_conduct` applies to everyone participating in the
|
|
26
|
+
PhasorPy community.
|
|
27
27
|
|
|
28
28
|
The :doc:`acknowledgments` list individuals and organizations that
|
|
29
29
|
contributed to the development of PhasorPy.
|
|
@@ -48,8 +48,8 @@ Questions about the usage of the PhasorPy library are answered on the
|
|
|
48
48
|
`issue tracker on GitHub <https://github.com/phasorpy/phasorpy/issues>`_.
|
|
49
49
|
|
|
50
50
|
Please cite
|
|
51
|
-
`doi: 10.5281/zenodo.
|
|
52
|
-
if PhasorPy contributes to
|
|
51
|
+
`doi: 10.5281/zenodo.13862586 <https://doi.org/10.5281/zenodo.13862586>`_
|
|
52
|
+
if PhasorPy contributes to research that leads to a publication.
|
|
53
53
|
|
|
54
54
|
Contents
|
|
55
55
|
========
|
|
@@ -60,7 +60,7 @@ Contents
|
|
|
60
60
|
phasor_approach
|
|
61
61
|
tutorials/index
|
|
62
62
|
api/index
|
|
63
|
-
release
|
|
63
|
+
release/index
|
|
64
64
|
contributing
|
|
65
65
|
acknowledgments
|
|
66
66
|
license
|