phasorpy 0.10__tar.gz → 0.11__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.
Files changed (129) hide show
  1. {phasorpy-0.10 → phasorpy-0.11}/PKG-INFO +17 -4
  2. {phasorpy-0.10 → phasorpy-0.11}/README.md +13 -0
  3. {phasorpy-0.10 → phasorpy-0.11}/docs/_static/switcher.json +8 -3
  4. {phasorpy-0.10 → phasorpy-0.11}/docs/acknowledgments.rst +3 -3
  5. {phasorpy-0.10 → phasorpy-0.11}/docs/api/index.rst +2 -2
  6. {phasorpy-0.10 → phasorpy-0.11}/docs/conf.py +18 -9
  7. {phasorpy-0.10 → phasorpy-0.11}/docs/contributing.rst +8 -9
  8. {phasorpy-0.10 → phasorpy-0.11}/docs/index.rst +6 -6
  9. {phasorpy-0.10 → phasorpy-0.11}/docs/phasor_approach.rst +102 -50
  10. {phasorpy-0.10 → phasorpy-0.11}/pyproject.toml +15 -13
  11. {phasorpy-0.10 → phasorpy-0.11}/src/phasorpy/__init__.py +1 -1
  12. {phasorpy-0.10 → phasorpy-0.11}/src/phasorpy/_phasorpy.pyx +5 -5
  13. {phasorpy-0.10 → phasorpy-0.11}/src/phasorpy/_utils.py +4 -4
  14. {phasorpy-0.10 → phasorpy-0.11}/src/phasorpy/cli.py +3 -3
  15. {phasorpy-0.10 → phasorpy-0.11}/src/phasorpy/cluster.py +3 -3
  16. {phasorpy-0.10 → phasorpy-0.11}/src/phasorpy/color.py +3 -3
  17. {phasorpy-0.10 → phasorpy-0.11}/src/phasorpy/component.py +44 -20
  18. {phasorpy-0.10 → phasorpy-0.11}/src/phasorpy/cursor.py +7 -8
  19. {phasorpy-0.10 → phasorpy-0.11}/src/phasorpy/datasets.py +43 -4
  20. {phasorpy-0.10 → phasorpy-0.11}/src/phasorpy/filter.py +107 -35
  21. {phasorpy-0.10 → phasorpy-0.11}/src/phasorpy/io/__init__.py +25 -12
  22. {phasorpy-0.10 → phasorpy-0.11}/src/phasorpy/io/_flimlabs.py +5 -3
  23. {phasorpy-0.10 → phasorpy-0.11}/src/phasorpy/io/_leica.py +16 -0
  24. {phasorpy-0.10 → phasorpy-0.11}/src/phasorpy/io/_ometiff.py +98 -2
  25. {phasorpy-0.10 → phasorpy-0.11}/src/phasorpy/io/_other.py +31 -10
  26. {phasorpy-0.10 → phasorpy-0.11}/src/phasorpy/io/_simfcs.py +17 -1
  27. {phasorpy-0.10 → phasorpy-0.11}/src/phasorpy/lifetime.py +37 -15
  28. {phasorpy-0.10 → phasorpy-0.11}/src/phasorpy/phasor.py +23 -7
  29. {phasorpy-0.10 → phasorpy-0.11}/src/phasorpy/plot/_functions.py +10 -11
  30. {phasorpy-0.10 → phasorpy-0.11}/src/phasorpy/plot/_lifetime_plots.py +2 -2
  31. {phasorpy-0.10 → phasorpy-0.11}/src/phasorpy/plot/_phasorplot.py +21 -12
  32. {phasorpy-0.10 → phasorpy-0.11}/src/phasorpy/plot/_phasorplot_fret.py +3 -3
  33. {phasorpy-0.10 → phasorpy-0.11}/src/phasorpy/utils.py +9 -2
  34. {phasorpy-0.10 → phasorpy-0.11}/src/phasorpy.egg-info/PKG-INFO +17 -4
  35. {phasorpy-0.10 → phasorpy-0.11}/src/phasorpy.egg-info/SOURCES.txt +1 -0
  36. {phasorpy-0.10 → phasorpy-0.11}/src/phasorpy.egg-info/requires.txt +3 -3
  37. {phasorpy-0.10 → phasorpy-0.11}/tests/io/test_ometiff.py +26 -1
  38. {phasorpy-0.10 → phasorpy-0.11}/tests/io/test_other.py +6 -1
  39. {phasorpy-0.10 → phasorpy-0.11}/tests/test_filter.py +213 -13
  40. {phasorpy-0.10 → phasorpy-0.11}/tutorials/api/phasorpy_component.py +6 -6
  41. {phasorpy-0.10 → phasorpy-0.11}/tutorials/api/phasorpy_cursor.py +1 -1
  42. {phasorpy-0.10 → phasorpy-0.11}/tutorials/api/phasorpy_filter.py +24 -13
  43. {phasorpy-0.10 → phasorpy-0.11}/tutorials/api/phasorpy_fret.py +3 -3
  44. {phasorpy-0.10 → phasorpy-0.11}/tutorials/api/phasorpy_io.py +40 -21
  45. {phasorpy-0.10 → phasorpy-0.11}/tutorials/api/phasorpy_lifetime_to_signal.py +4 -4
  46. {phasorpy-0.10 → phasorpy-0.11}/tutorials/api/phasorpy_multi_harmonic.py +1 -1
  47. {phasorpy-0.10 → phasorpy-0.11}/tutorials/api/phasorpy_pca.py +1 -1
  48. {phasorpy-0.10 → phasorpy-0.11}/tutorials/api/phasorpy_phasor_from_lifetime.py +2 -2
  49. {phasorpy-0.10 → phasorpy-0.11}/tutorials/api/phasorpy_phasorplot.py +3 -3
  50. {phasorpy-0.10 → phasorpy-0.11}/tutorials/applications/phasorpy_component_fit.py +5 -3
  51. {phasorpy-0.10 → phasorpy-0.11}/tutorials/applications/phasorpy_fret_efficiency.py +2 -2
  52. {phasorpy-0.10 → phasorpy-0.11}/tutorials/applications/phasorpy_multidimensional.py +3 -1
  53. {phasorpy-0.10 → phasorpy-0.11}/tutorials/applications/phasorpy_nadh_concentration.py +4 -4
  54. phasorpy-0.11/tutorials/applications/phasorpy_nadh_fraction.py +251 -0
  55. {phasorpy-0.10 → phasorpy-0.11}/tutorials/misc/phasorpy_apps.py +9 -9
  56. {phasorpy-0.10 → phasorpy-0.11}/tutorials/misc/phasorpy_phasor_from_signal.py +1 -1
  57. {phasorpy-0.10 → phasorpy-0.11}/tutorials/phasorpy_introduction.py +1 -1
  58. {phasorpy-0.10 → phasorpy-0.11}/tutorials/phasorpy_lfd_workshop.py +7 -2
  59. {phasorpy-0.10 → phasorpy-0.11}/tutorials/phasorpy_lifetime_geometry.py +3 -3
  60. {phasorpy-0.10 → phasorpy-0.11}/LICENSE.txt +0 -0
  61. {phasorpy-0.10 → phasorpy-0.11}/MANIFEST.in +0 -0
  62. {phasorpy-0.10 → phasorpy-0.11}/docs/_static/categorical.png +0 -0
  63. {phasorpy-0.10 → phasorpy-0.11}/docs/_static/custom-icons.js +0 -0
  64. {phasorpy-0.10 → phasorpy-0.11}/docs/_static/favicon.ico +0 -0
  65. {phasorpy-0.10 → phasorpy-0.11}/docs/_static/phasorpy_logo.png +0 -0
  66. {phasorpy-0.10 → phasorpy-0.11}/docs/_static/phasorpy_logo.svg +0 -0
  67. {phasorpy-0.10 → phasorpy-0.11}/docs/_static/srgb_spectrum.png +0 -0
  68. {phasorpy-0.10 → phasorpy-0.11}/docs/api/_phasorpy.rst +0 -0
  69. {phasorpy-0.10 → phasorpy-0.11}/docs/api/_utils.rst +0 -0
  70. {phasorpy-0.10 → phasorpy-0.11}/docs/api/cli.rst +0 -0
  71. {phasorpy-0.10 → phasorpy-0.11}/docs/api/cluster.rst +0 -0
  72. {phasorpy-0.10 → phasorpy-0.11}/docs/api/color.rst +0 -0
  73. {phasorpy-0.10 → phasorpy-0.11}/docs/api/component.rst +0 -0
  74. {phasorpy-0.10 → phasorpy-0.11}/docs/api/cursor.rst +0 -0
  75. {phasorpy-0.10 → phasorpy-0.11}/docs/api/datasets.rst +0 -0
  76. {phasorpy-0.10 → phasorpy-0.11}/docs/api/experimental.rst +0 -0
  77. {phasorpy-0.10 → phasorpy-0.11}/docs/api/filter.rst +0 -0
  78. {phasorpy-0.10 → phasorpy-0.11}/docs/api/io.rst +0 -0
  79. {phasorpy-0.10 → phasorpy-0.11}/docs/api/lifetime.rst +0 -0
  80. {phasorpy-0.10 → phasorpy-0.11}/docs/api/phasor.rst +0 -0
  81. {phasorpy-0.10 → phasorpy-0.11}/docs/api/phasorpy.rst +0 -0
  82. {phasorpy-0.10 → phasorpy-0.11}/docs/api/plot.rst +0 -0
  83. {phasorpy-0.10 → phasorpy-0.11}/docs/api/utils.rst +0 -0
  84. {phasorpy-0.10 → phasorpy-0.11}/docs/code_of_conduct.rst +0 -0
  85. {phasorpy-0.10 → phasorpy-0.11}/docs/license.rst +0 -0
  86. {phasorpy-0.10 → phasorpy-0.11}/setup.cfg +0 -0
  87. {phasorpy-0.10 → phasorpy-0.11}/setup.py +0 -0
  88. {phasorpy-0.10 → phasorpy-0.11}/src/phasorpy/__main__.py +0 -0
  89. {phasorpy-0.10 → phasorpy-0.11}/src/phasorpy/_typing.py +0 -0
  90. {phasorpy-0.10 → phasorpy-0.11}/src/phasorpy/conftest.py +0 -0
  91. {phasorpy-0.10 → phasorpy-0.11}/src/phasorpy/experimental.py +0 -0
  92. {phasorpy-0.10 → phasorpy-0.11}/src/phasorpy/plot/__init__.py +0 -0
  93. {phasorpy-0.10 → phasorpy-0.11}/src/phasorpy/py.typed +0 -0
  94. {phasorpy-0.10 → phasorpy-0.11}/src/phasorpy.egg-info/dependency_links.txt +0 -0
  95. {phasorpy-0.10 → phasorpy-0.11}/src/phasorpy.egg-info/entry_points.txt +0 -0
  96. {phasorpy-0.10 → phasorpy-0.11}/src/phasorpy.egg-info/not-zip-safe +0 -0
  97. {phasorpy-0.10 → phasorpy-0.11}/src/phasorpy.egg-info/top_level.txt +0 -0
  98. {phasorpy-0.10 → phasorpy-0.11}/tests/conftest.py +0 -0
  99. {phasorpy-0.10 → phasorpy-0.11}/tests/io/_conftest.py +0 -0
  100. {phasorpy-0.10 → phasorpy-0.11}/tests/io/test_flimlabs.py +0 -0
  101. {phasorpy-0.10 → phasorpy-0.11}/tests/io/test_leica.py +0 -0
  102. {phasorpy-0.10 → phasorpy-0.11}/tests/io/test_simfcs.py +0 -0
  103. {phasorpy-0.10 → phasorpy-0.11}/tests/plot/test_functions.py +0 -0
  104. {phasorpy-0.10 → phasorpy-0.11}/tests/plot/test_lifetime_plots.py +0 -0
  105. {phasorpy-0.10 → phasorpy-0.11}/tests/plot/test_phasorplot.py +0 -0
  106. {phasorpy-0.10 → phasorpy-0.11}/tests/plot/test_phasorplot_fret.py +0 -0
  107. {phasorpy-0.10 → phasorpy-0.11}/tests/test__phasorpy.py +0 -0
  108. {phasorpy-0.10 → phasorpy-0.11}/tests/test__typing.py +0 -0
  109. {phasorpy-0.10 → phasorpy-0.11}/tests/test__utils.py +0 -0
  110. {phasorpy-0.10 → phasorpy-0.11}/tests/test_cli.py +0 -0
  111. {phasorpy-0.10 → phasorpy-0.11}/tests/test_cluster.py +0 -0
  112. {phasorpy-0.10 → phasorpy-0.11}/tests/test_color.py +0 -0
  113. {phasorpy-0.10 → phasorpy-0.11}/tests/test_component.py +0 -0
  114. {phasorpy-0.10 → phasorpy-0.11}/tests/test_cursor.py +0 -0
  115. {phasorpy-0.10 → phasorpy-0.11}/tests/test_datasets.py +0 -0
  116. {phasorpy-0.10 → phasorpy-0.11}/tests/test_experimental.py +0 -0
  117. {phasorpy-0.10 → phasorpy-0.11}/tests/test_lifetime.py +0 -0
  118. {phasorpy-0.10 → phasorpy-0.11}/tests/test_nan.py +0 -0
  119. {phasorpy-0.10 → phasorpy-0.11}/tests/test_phasor.py +0 -0
  120. {phasorpy-0.10 → phasorpy-0.11}/tests/test_phasorpy.py +0 -0
  121. {phasorpy-0.10 → phasorpy-0.11}/tests/test_utils.py +0 -0
  122. {phasorpy-0.10 → phasorpy-0.11}/tools/build_manylinux.cmd +0 -0
  123. {phasorpy-0.10 → phasorpy-0.11}/tools/build_manylinux.sh +0 -0
  124. {phasorpy-0.10 → phasorpy-0.11}/tools/sha256.py +0 -0
  125. {phasorpy-0.10 → phasorpy-0.11}/tutorials/README.rst +0 -0
  126. {phasorpy-0.10 → phasorpy-0.11}/tutorials/api/README.rst +0 -0
  127. {phasorpy-0.10 → phasorpy-0.11}/tutorials/applications/README.rst +0 -0
  128. {phasorpy-0.10 → phasorpy-0.11}/tutorials/misc/README.rst +0 -0
  129. {phasorpy-0.10 → phasorpy-0.11}/tutorials/misc/phasorpy_logo.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: phasorpy
3
- Version: 0.10
3
+ Version: 0.11
4
4
  Summary: Analysis of luminescence lifetime and hyperspectral images using the phasor approach
5
5
  Author: PhasorPy Contributors
6
6
  License-Expression: MIT
@@ -29,7 +29,7 @@ Requires-Dist: matplotlib>=3.9.0
29
29
  Requires-Dist: pandas>=2.3.0
30
30
  Requires-Dist: scikit-learn>=1.5.0
31
31
  Requires-Dist: scipy>=1.14.0
32
- Requires-Dist: tifffile>=2024.8.30
32
+ Requires-Dist: tifffile>=2026.5.2
33
33
  Requires-Dist: xarray>=2024.6.0
34
34
  Requires-Dist: click
35
35
  Requires-Dist: pooch
@@ -37,12 +37,12 @@ Requires-Dist: tqdm
37
37
  Provides-Extra: all
38
38
  Requires-Dist: czifile>=2026.4.11; extra == "all"
39
39
  Requires-Dist: fbdfile>=2025.9.18; extra == "all"
40
- Requires-Dist: lfdfiles>=2024.5.24; extra == "all"
40
+ Requires-Dist: lfdfiles>=2026.4.30; extra == "all"
41
41
  Requires-Dist: liffile>=2025.2.10; extra == "all"
42
42
  Requires-Dist: ptufile>=2024.9.14; extra == "all"
43
43
  Requires-Dist: sdtfile>=2024.5.24; extra == "all"
44
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"
45
+ Requires-Dist: imagecodecs==2026.6.6; (sys_platform == "darwin" and platform_machine == "x86_64") and extra == "all"
46
46
  Dynamic: license-file
47
47
 
48
48
  # <img src="https://www.phasorpy.org/_static/phasorpy_logo.svg" alt="&#x25CB;" width="48" height="48" align="left"/> PhasorPy
@@ -50,6 +50,19 @@ Dynamic: license-file
50
50
  PhasorPy is an open-source Python library for the analysis of luminescence
51
51
  lifetime and hyperspectral images using the phasor approach.
52
52
 
53
+ The phasor approach represents time-resolved and spectral signals as
54
+ phasor coordinates (normalized Fourier coefficients at harmonic frequencies)
55
+ for intuitive visualization and analysis.
56
+
57
+ PhasorPy enables reproducible phasor-based fluorescence lifetime imaging
58
+ (FLIM) and hyperspectral imaging (HSI) workflows in scientific Python.
59
+ It provides tools to read microscopy data in many file formats and to
60
+ calculate, calibrate, filter, visualize, and interconvert phasor coordinates,
61
+ lifetimes, and signals. Phasor coordinates can be exported to standard
62
+ formats and analyzed through cursor-based region-of-interest selection,
63
+ cluster detection, multi-component unmixing, FRET efficiency and concentration
64
+ estimation.
65
+
53
66
  - [Homepage](https://www.phasorpy.org)
54
67
  - [Documentation](https://www.phasorpy.org/docs/stable/)
55
68
  - [Source code](https://github.com/phasorpy/phasorpy)
@@ -3,6 +3,19 @@
3
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
+ The phasor approach represents time-resolved and spectral signals as
7
+ phasor coordinates (normalized Fourier coefficients at harmonic frequencies)
8
+ for intuitive visualization and analysis.
9
+
10
+ PhasorPy enables reproducible phasor-based fluorescence lifetime imaging
11
+ (FLIM) and hyperspectral imaging (HSI) workflows in scientific Python.
12
+ It provides tools to read microscopy data in many file formats and to
13
+ calculate, calibrate, filter, visualize, and interconvert phasor coordinates,
14
+ lifetimes, and signals. Phasor coordinates can be exported to standard
15
+ formats and analyzed through cursor-based region-of-interest selection,
16
+ cluster detection, multi-component unmixing, FRET efficiency and concentration
17
+ estimation.
18
+
6
19
  - [Homepage](https://www.phasorpy.org)
7
20
  - [Documentation](https://www.phasorpy.org/docs/stable/)
8
21
  - [Source code](https://github.com/phasorpy/phasorpy)
@@ -1,15 +1,20 @@
1
1
  [
2
2
  {
3
3
  "name": "dev",
4
- "version": "0.11",
4
+ "version": "0.12",
5
5
  "url": "https://www.phasorpy.org/docs/dev/"
6
6
  },
7
7
  {
8
- "name": "0.10 (stable)",
9
- "version": "0.10",
8
+ "name": "0.11 (stable)",
9
+ "version": "0.11",
10
10
  "url": "https://www.phasorpy.org/docs/stable/",
11
11
  "preferred": true
12
12
  },
13
+ {
14
+ "name": "0.10",
15
+ "version": "0.10",
16
+ "url": "https://www.phasorpy.org/docs/v0.10/"
17
+ },
13
18
  {
14
19
  "name": "0.9",
15
20
  "version": "0.9",
@@ -11,11 +11,11 @@ PhasorPy was inspired by the
11
11
  `Globals for Images - SimFCS <https://www.lfd.uci.edu/globals/>`_ software by
12
12
  Enrico Gratton.
13
13
 
14
- This software project was supported in part by the
14
+ This project was supported in part by the
15
15
  `Essential Open Source Software for Science (EOSS)
16
16
  <https://chanzuckerberg.com/eoss/>`_ program at
17
17
  `Chan Zuckerberg Initiative <https://chanzuckerberg.com/>`_
18
- (grant number 2022-252604, 2022-2024).
18
+ (grant number 2022-252604; 2022-2024).
19
19
 
20
20
  .. _contributors:
21
21
 
@@ -32,7 +32,7 @@ and
32
32
  User Community
33
33
  --------------
34
34
 
35
- Many thanks to the PhasorPy user community for their feedback, bug reports,
35
+ Thanks to the PhasorPy user community for their feedback, bug reports,
36
36
  feature suggestions, and data files that have helped improve the library.
37
37
 
38
38
  Citation
@@ -5,8 +5,8 @@ This documents the application programming and command-line interfaces of
5
5
  the PhasorPy library version |version|.
6
6
 
7
7
  .. note::
8
- The PhasorPy library is still under construction. Backwards-incompatible
9
- changes may occur between revisions.
8
+ PhasorPy is still under active development, and changes in new releases
9
+ may require updates to existing code.
10
10
 
11
11
  .. toctree::
12
12
  :maxdepth: 3
@@ -13,6 +13,7 @@ sys.path.insert(0, os.path.dirname(__file__))
13
13
 
14
14
  # remove the examples header from HTML tutorials
15
15
  import sphinx_gallery.gen_rst
16
+ from sphinx_gallery.sorting import ExplicitOrder
16
17
 
17
18
  sphinx_gallery.gen_rst.EXAMPLE_HEADER = (
18
19
  sphinx_gallery.gen_rst.EXAMPLE_HEADER.replace(
@@ -63,7 +64,7 @@ exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
63
64
  # html_theme = 'sphinx_rtd_theme'
64
65
  html_theme = 'pydata_sphinx_theme'
65
66
  html_static_path = ['_static']
66
- html_js_files = ['custom-icons.js']
67
+ html_js_files = [('custom-icons.js', {'defer': 'defer'})]
67
68
  html_show_sourcelink = False
68
69
  html_sidebars = {'**': ['sidebar-nav-bs']}
69
70
 
@@ -130,6 +131,13 @@ sphinx_gallery_conf = {
130
131
  'filename_pattern': 'phasorpy_',
131
132
  'examples_dirs': '../tutorials',
132
133
  'gallery_dirs': 'tutorials',
134
+ 'subsection_order': ExplicitOrder(
135
+ [
136
+ '../tutorials/applications',
137
+ '../tutorials/api',
138
+ '../tutorials/misc',
139
+ ]
140
+ ),
133
141
  'reference_url': {'phasorpy': None},
134
142
  'matplotlib_animations': True,
135
143
  'within_subsection_order': 'conf.TutorialOrder',
@@ -151,22 +159,23 @@ class TutorialOrder:
151
159
  'introduction',
152
160
  'lifetime_geometry',
153
161
  'lfd_workshop',
162
+ # applications
163
+ 'component_fit',
164
+ 'fret_efficiency',
165
+ 'nadh_fraction',
166
+ 'nadh_concentration',
167
+ 'multidimensional',
154
168
  # api
155
169
  'io',
170
+ 'lifetime_to_signal',
156
171
  'phasor_from_lifetime',
157
- 'multi_harmonic',
172
+ 'fret',
158
173
  'filter',
174
+ 'multi_harmonic',
159
175
  'phasorplot',
160
176
  'cursor',
161
177
  'component',
162
- 'fret',
163
- 'lifetime_to_signal',
164
178
  'pca',
165
- # applications
166
- 'component_fit',
167
- 'fret_efficiency',
168
- 'nadh_concentration',
169
- 'multidimensional',
170
179
  # misc
171
180
  'logo',
172
181
  'apps',
@@ -4,7 +4,7 @@ Contributing guide
4
4
  As a community-maintained project, PhasorPy welcomes contributions in the form
5
5
  of bug reports, bug fixes, feature implementations, documentation, datasets,
6
6
  and enhancement proposals.
7
- This document provides information on how to contribute.
7
+ This guide explains how to contribute.
8
8
 
9
9
  The :doc:`code_of_conduct` applies to everyone participating in the
10
10
  PhasorPy community.
@@ -74,13 +74,13 @@ a GitHub repository at
74
74
  `https://github.com/phasorpy/phasorpy <https://github.com/phasorpy/phasorpy>`_.
75
75
 
76
76
  The repository is based on `git <https://git-scm.com/>`_, a distributed
77
- version control software for tracking changes in the source code files and for
77
+ version control system for tracking changes in source code files and for
78
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>`_.
82
82
  All contributions to the PhasorPy source code and documentation should
83
- be developed in personal forks/copies of the code, and then submitted as
83
+ be developed in personal forks of the repository, and then submitted as
84
84
  `pull requests <https://github.com/phasorpy/phasorpy/pulls>`_ (PRs).
85
85
 
86
86
  The PhasorPy project loosely follows the
@@ -203,7 +203,6 @@ static type checker::
203
203
 
204
204
  $ python -m mypy
205
205
 
206
-
207
206
  The PhasorPy project follows the Scientific Python
208
207
  `SPEC 0 - Minimum Supported Dependencies
209
208
  <https://scientific-python.org/specs/spec-0000/>`_ recommendation
@@ -219,7 +218,7 @@ following the `numpydoc
219
218
  standard.
220
219
 
221
220
  Examples in docstrings must run and pass as
222
- `doctests <https://docs.python.org/3/library/doctest.html>`_ ::
221
+ `doctests <https://docs.python.org/3/library/doctest.html>`_::
223
222
 
224
223
  $ python -m pytest -v src/phasorpy
225
224
 
@@ -232,7 +231,7 @@ to generate the documentation in HTML format published at
232
231
 
233
232
  Sphinx documentation is written in the
234
233
  `reStructuredText <https://docutils.sourceforge.io/rst.html>`_
235
- markup language in the .rst files in the ``docs`` and ``tutorials`` folders.
234
+ markup language in .rst files in the ``docs`` and ``tutorials`` folders.
236
235
 
237
236
  All user-facing classes and functions should be included in the
238
237
  ``docs/api/*.rst`` files.
@@ -251,8 +250,8 @@ Examples in the .rst files must run and pass as doctests::
251
250
 
252
251
  $ python -m pytest -v docs
253
252
 
254
- Documentation in HTML format can be built from the docstrings, .rst,
255
- and tutorial files by running::
253
+ Documentation can be built in HTML format from docstrings, .rst files,
254
+ and tutorials by running::
256
255
 
257
256
  $ cd docs
258
257
  $ make clean
@@ -263,7 +262,7 @@ Then open ``_build/html/index.html`` in a web browser.
263
262
  Commit the changes
264
263
  ..................
265
264
 
266
- Commit changed and new files to the local repository::
265
+ Commit modified and new files to the local repository::
267
266
 
268
267
  $ git add phasorpy/new_file.py
269
268
  $ git commit -a -m "Summarize changes in 50 characters or less"
@@ -2,13 +2,13 @@
2
2
  PhasorPy documentation
3
3
  ======================
4
4
 
5
- Welcome to the documentation of PhasorPy version |version|.
5
+ Welcome to the documentation for PhasorPy version |version|.
6
6
 
7
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
- Quickstart
11
- ==========
10
+ Project guide
11
+ =============
12
12
 
13
13
  The :doc:`tutorials/index` demonstrate how to use the library, from simple
14
14
  examples to advanced applications.
@@ -16,8 +16,8 @@ examples to advanced applications.
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/index` list recent bug fixes, feature enhancements, documentation,
20
- and maintenance changes.
19
+ The :doc:`release/index` list recent bug fixes, feature enhancements,
20
+ documentation, and maintenance changes.
21
21
 
22
22
  The :doc:`contributing` explains how to get support, report bugs,
23
23
  submit fixes, and improve the documentation.
@@ -44,7 +44,7 @@ Sample data files used in tutorials and testing are available from the
44
44
  Report issues with the code or documentation on the
45
45
  `issue tracker on GitHub <https://github.com/phasorpy/phasorpy/issues>`_.
46
46
 
47
- Questions about the usage of the PhasorPy library are answered on the
47
+ Questions about using the PhasorPy library can be asked on the
48
48
  `issue tracker on GitHub <https://github.com/phasorpy/phasorpy/issues>`_.
49
49
 
50
50
  Please cite
@@ -1,4 +1,4 @@
1
- Phasor approach
1
+ Phasor approach
2
2
  ===============
3
3
 
4
4
  "The phasor approach to fluorescence lifetime imaging, and more recently
@@ -140,23 +140,45 @@ Articles
140
140
  Software
141
141
  --------
142
142
 
143
- Besides the PhasorPy library, several other software implemented the phasor
144
- approach to analyze fluorescence time-resolved or spectral images:
143
+ Several software packages implement the phasor approach for analyzing
144
+ luminescence time-resolved or spectral images:
145
145
 
146
146
  .. list-table::
147
147
  :header-rows: 0
148
148
 
149
+ * - **Library**
150
+ - :ref:`PhasorPy <phasorpy>`,
151
+ :ref:`tttrlib <tttrlib>`,
152
+ :ref:`FLIMLib <flimlib>`:sup:`2`,
153
+ :ref:`BrightEyes <brighteyes>`:sup:`2`,
154
+ :ref:`FLIM_tools <flim_tools>`:sup:`2,4`,
155
+ :ref:`Cell-analysis-tools <cell_analysis_tools>`:sup:`2,4`
149
156
  * - **Desktop**
150
- - :ref:`SimFCS <simfcs>`,
157
+ - :ref:`SimFCS <simfcs>`:sup:`3,4`,
158
+ :ref:`FLIM Playground <flim_playground>`:sup:`1`,
151
159
  :ref:`FLUTE <flute>`,
152
160
  :ref:`FLIMPA <flimpa>`,
153
161
  :ref:`GSLab <gslab>`,
154
162
  :ref:`AlliGator <alligator>`,
155
- :ref:`BrightEyes <brighteyes>`,
156
- :ref:`FLIM Playground <flim_playground>`,
157
- :ref:`HySP <hysp>`,
158
- :ref:`FlimFast <flimfast>`
159
- * - **Commercial**
163
+ :ref:`HySP <hysp>`:sup:`3,4`,
164
+ :ref:`FlimFast <flimfast>`:sup:`3,4`
165
+ * - **Napari**
166
+ - :ref:`Napari-phasors <napari_phasors>`:sup:`1`,
167
+ :ref:`FLIMari <flimari>`:sup:`1`,
168
+ :ref:`Napari-flim-phasor-plotter <napari_flim_phasor_plotter>`,
169
+ :ref:`FLOPA <flopa>`:sup:`2`,
170
+ :ref:`Napari-live-flim <napari_live_flim>`:sup:`2,4`
171
+ * - **ImageJ**
172
+ - :ref:`Spectral/Time Gated Phasor PlugIns <phasor_plugins>`:sup:`4`
173
+ * - **Notebook**
174
+ - :ref:`PhasorAnalysis <phasor_analysis>`,
175
+ :ref:`PhasorIdentifier <phasor_identifier>`:sup:`4`,
176
+ :ref:`PhasorPlots for dummies <phasorplots_for_dummies>`:sup:`2,4`
177
+ * - **Matlab**
178
+ - :ref:`FLIMfit <flimfit>`:sup:`2`,
179
+ :ref:`PAM <pam>`:sup:`2`,
180
+ :ref:`Instant-FLIM-Analysis <instant_flim_analysis>`:sup:`4`
181
+ * - **Commercial**:sup:`3`
160
182
  - :ref:`FLIM Studio <flim_studio>`,
161
183
  :ref:`VistaVision <vistavision>`,
162
184
  :ref:`SPCImage <spcimage>`,
@@ -164,29 +186,29 @@ approach to analyze fluorescence time-resolved or spectral images:
164
186
  :ref:`Luminosa <luminosa>`,
165
187
  :ref:`EzTime <eztime>`,
166
188
  :ref:`LIFA <lifa>`
167
- * - **Napari**
168
- - :ref:`Napari-phasors <napari_phasors>`,
169
- :ref:`Napari-flim-phasor-plotter <napari_flim_phasor_plotter>`,
170
- :ref:`Napari-live-flim <napari_live_flim>`,
171
- :ref:`FLOPA <flopa>`,
172
- :ref:`FLIMari <flimari>`
173
- * - **ImageJ**
174
- - :ref:`Spectral/Time Gated Phasor PlugIns <phasor_plugins>`
175
- * - **Matlab**
176
- - :ref:`FLIMfit <flimfit>`,
177
- :ref:`PAM <pam>`,
178
- :ref:`Instant-FLIM-Analysis <instant_flim_analysis>`
179
- * - **Library**
180
- - :ref:`FLIMLib <flimlib>`,
181
- :ref:`tttrlib <tttrlib>`,
182
- :ref:`FLIM_tools <flim_tools>`,
183
- :ref:`Cell-analysis-tools <cell_analysis_tools>`
184
- * - **Notebook**
185
- - :ref:`PhasorIdentifier <phasor_identifier>`,
186
- :ref:`PhasorPlots for dummies <phasorplots_for_dummies>`
189
+
190
+ | :sup:`1` Uses PhasorPy internally.
191
+ | :sup:`2` GPL-licensed.
192
+ | :sup:`3` Proprietary or closed-source.
193
+ | :sup:`4` Legacy: no known maintenance activity for at least 2 years.
187
194
 
188
195
  Details:
189
196
 
197
+ -
198
+ .. _phasorpy:
199
+
200
+ `PhasorPy <https://github.com/phasorpy/phasorpy/>`__
201
+ is an open-source Python library for the analysis of luminescence lifetime
202
+ and hyperspectral images using the phasor approach.
203
+ The library enables reproducible phasor-based FLIM and HSI workflows.
204
+ It provides tools to read microscopy data in many file formats and to
205
+ calculate, calibrate, filter, visualize, and interconvert phasor coordinates,
206
+ lifetimes, and signals. Phasor coordinates can be exported to standard
207
+ formats and analyzed through cursor-based region-of-interest selection,
208
+ cluster detection, multi-component unmixing, FRET efficiency and
209
+ concentration estimation.
210
+ It is distributed under the permissive MIT license.
211
+
190
212
  -
191
213
  .. _simfcs:
192
214
 
@@ -194,9 +216,8 @@ Details:
194
216
  is a free, closed-source, Windows desktop application for fluorescence image
195
217
  analysis, visualization, simulation, and acquisition.
196
218
  The software was developed by Enrico Gratton during 1998-2022 at the
197
- Laboratory for Fluorescence Dynamics. It provides the most comprehensive
198
- set of features for phasor analysis of fluorescence lifetime and
199
- hyperspectral images.
219
+ Laboratory for Fluorescence Dynamics. It provides a broad set of features
220
+ for phasor analysis of fluorescence lifetime and hyperspectral images.
200
221
  Many `tutorials <https://www.lfd.uci.edu/globals/tutorials/>`__ are
201
222
  available.
202
223
 
@@ -226,7 +247,7 @@ Details:
226
247
  .. _flopa:
227
248
 
228
249
  `FLOPA <https://github.com/IMCF-Biocev/FLOPA>`__
229
- is a napari plugin for FLIM data opening, processing and analysis.
250
+ is a napari plugin for FLIM data opening, processing, and analysis.
230
251
  The plugin is distributed under the GPLv3 license.
231
252
 
232
253
  -
@@ -257,7 +278,7 @@ Details:
257
278
  .. _flimpa:
258
279
 
259
280
  `FLIMPA <https://github.com/SofiaKapsiani/FLIMPA>`__
260
- is an open-source GUI software designed for the phasor plot analysis of
281
+ is an open-source GUI application designed for phasor-plot analysis of
261
282
  raw TCSPC-FLIM data. The software is written in Python and distributed
262
283
  under the BSD-3-Clause license.
263
284
 
@@ -284,7 +305,7 @@ Details:
284
305
  is a collection of open-source software for the acquisition, analysis,
285
306
  and simulation of image-scanning microscopy data, including FLIM-phasor
286
307
  analysis of time-resolved images. The software is written in Python/VHDL
287
- by the lab of Giuseppe Vicidomini and distributed under the GPL3 license.
308
+ by the lab of Giuseppe Vicidomini and distributed under the GPL v3 license.
288
309
 
289
310
  -
290
311
  .. _flim_playground:
@@ -301,7 +322,7 @@ Details:
301
322
  `FLIM_tools <https://github.com/jayunruh/FLIM_tools>`__
302
323
  is an open-source Python library for linear unmixing and phasor tools for
303
324
  FLIM analysis developed by Jay Unruh. The library is distributed under
304
- the GPL2 license.
325
+ the GPL v2 license.
305
326
 
306
327
  -
307
328
  .. _tttrlib:
@@ -312,6 +333,14 @@ Details:
312
333
  and correcting phasor coordinates. The library is distributed under the
313
334
  BSD license.
314
335
 
336
+ -
337
+ .. _phasor_analysis:
338
+
339
+ `PhasorAnalysis <https://zenodo.org/records/15616954>`__
340
+ is a Jupyter notebook for the PhasorScope project, an open, integrated
341
+ platform for multiplexed bioluminescence microscopy. The notebook is
342
+ designed to run on Google Colab and is distributed under the MIT license.
343
+
315
344
  -
316
345
  .. _phasor_identifier:
317
346
 
@@ -350,7 +379,7 @@ Details:
350
379
  .. _flimfit:
351
380
 
352
381
  `FLIMfit <https://github.com/flimfit/FLIMfit>`__ is an open-source,
353
- MATLAB-based tool to analyse and visualize time-resolved data from FLIM
382
+ MATLAB-based tool to analyze and visualize time-resolved data from FLIM
354
383
  measurements including TCSPC and wide-field time-gated imaging.
355
384
  It includes a segmentation tool based on the phasor approach.
356
385
  The affiliated `FlimReader <https://github.com/flimfit/FlimReader>`__
@@ -362,7 +391,7 @@ Details:
362
391
 
363
392
  `PAM <https://pam.readthedocs.io/en/latest/phasor.html>`__
364
393
  is an open-source GUI-based MATLAB package for the analysis of fluorescence
365
- experiments. The phasor analysis includes region of interests, fractions,
394
+ experiments. The phasor analysis includes regions of interest, fractions,
366
395
  triangular mixtures, and FRET estimation. PAM is licensed under the GPL v3.
367
396
 
368
397
  -
@@ -385,7 +414,7 @@ Details:
385
414
  .. _flim_studio:
386
415
 
387
416
  `FLIM Studio <https://www.flimlabs.com/software/>`__
388
- is a commercial software by FLIM LABS, a vendor of portable devices for
417
+ is commercial software by FLIM LABS, a vendor of portable devices for
389
418
  fluorescence lifetime imaging and spectroscopy. The software provides
390
419
  real-time FLIM phasor-plot analysis, AI-driven phasor-plot analysis
391
420
  techniques, and an application programming interface. Python modules
@@ -395,7 +424,7 @@ Details:
395
424
  .. _vistavision:
396
425
 
397
426
  `VistaVision <https://iss.com/software/vistavision>`__
398
- is a commercial Windows desktop software by ISS, Inc., for confocal
427
+ is a commercial Windows desktop application by ISS, Inc., for confocal
399
428
  microscopy applications, including instrument control, data acquisition,
400
429
  and data processing. It performs image segmentation of FLIM images via
401
430
  the phasor plot.
@@ -404,7 +433,7 @@ Details:
404
433
  .. _spcimage:
405
434
 
406
435
  `SPCImage <https://www.becker-hickl.com/literature/documents/flim/spcimage-ng/>`__
407
- is a commercial Windows desktop software by Becker & Hickl (tm) for
436
+ is a commercial Windows desktop application by Becker & Hickl (tm) for
408
437
  TCSPC-FLIM data analysis. It performs image segmentation of time-resolved
409
438
  data via the phasor plot.
410
439
 
@@ -412,24 +441,24 @@ Details:
412
441
  .. _lasx:
413
442
 
414
443
  `LAS X <https://www.leica-microsystems.com/science-lab/phasor-analysis-for-flim-fluorescence-lifetime-imaging-microscopy/>`__
415
- is a commercial Windows desktop software by Leica Microsystems.
416
- The software allows, by using phasors, to follow microenvironmental changes,
417
- select components to multiplex signal, and determine FRET efficiency.
444
+ is a commercial Windows desktop application by Leica Microsystems.
445
+ The software uses phasors to track microenvironmental changes,
446
+ select components for signal multiplexing, and determine FRET efficiency.
418
447
 
419
448
  -
420
449
  .. _luminosa:
421
450
 
422
451
  `Luminosa <https://www.picoquant.com/products/category/fluorescence-microscopes/luminosa-single-photon-counting-confocal-microscope#documents>`__
423
- is a commercial Windows desktop software by PicoQuant GmbH, which includes
452
+ is a commercial Windows desktop application by PicoQuant GmbH, which includes
424
453
  single molecule detection, FCS, and time-resolved imaging methods.
425
- The InstaFLIM module allows simultaneous TCSPC and phasor analysis
426
- options for ROI determination.
454
+ The InstaFLIM module supports simultaneous TCSPC and phasor analysis
455
+ for ROI determination.
427
456
 
428
457
  -
429
458
  .. _eztime:
430
459
 
431
460
  `EzTime <https://www.horiba.com/int/scientific/products/detail/action/show/Product/eztime-software-6283/>`__
432
- is a commercial software by HORIBA Scientific. It allows real-time TCSPC
461
+ is commercial software by HORIBA Scientific. It allows real-time TCSPC
433
462
  image analysis and visualization, including phasor plots, in conjunction
434
463
  with the FLIMera wide-field camera.
435
464
 
@@ -437,14 +466,37 @@ Details:
437
466
  .. _lifa:
438
467
 
439
468
  `LIFA <https://lambertinstruments.com/lifa-software>`__
440
- is a commercial software by Lambert Instruments to record and analyze
469
+ is commercial software by Lambert Instruments to record and analyze
441
470
  fluorescence lifetime images, integrating all Lambert hardware.
442
471
 
443
472
  -
444
473
  .. _flimfast:
445
474
 
446
475
  `FlimFast <https://www.cgohlke.com/flimfast/>`__
447
- was a research-grade Windows desktop software for frequency-domain,
476
+ was a research-grade Windows desktop application for frequency-domain,
448
477
  full-field, fluorescence lifetime imaging at video rate, developed by
449
478
  Christoph Gohlke during 2000-2002 at UIUC. It enabled phasor vs intensity
450
479
  plots of FLIM images during real-time acquisition.
480
+
481
+ The following software packages are related to FLIM analysis but are primarily
482
+ fitting-based and therefore not included in the phasor-focused list above:
483
+
484
+ -
485
+ .. _flimj:
486
+
487
+ `FLIMJ <https://flimj.github.io/>`__
488
+ is an open-source ImageJ toolkit for fluorescence lifetime image data
489
+ analysis based on FLIMLib, licensed under the GPL v3.
490
+
491
+ -
492
+ .. _flimx:
493
+
494
+ `FLIMX <https://github.com/M-Klemm/FLIMX/>`__
495
+ is an open-source MATLAB package to determine and analyze the fluorescence
496
+ lifetime in time-resolved fluorescence data.
497
+
498
+ -
499
+ .. _flimview:
500
+
501
+ `FLIMVIEW <https://github.com/mgckind/flimview>`__ is an open-source,
502
+ lightweight Python package for FLIM image processing.