phasorpy 0.9__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 (131) hide show
  1. {phasorpy-0.9 → phasorpy-0.11}/PKG-INFO +23 -8
  2. {phasorpy-0.9 → phasorpy-0.11}/README.md +14 -1
  3. {phasorpy-0.9 → phasorpy-0.11}/docs/_static/switcher.json +9 -9
  4. {phasorpy-0.9 → phasorpy-0.11}/docs/acknowledgments.rst +4 -4
  5. {phasorpy-0.9 → phasorpy-0.11}/docs/api/index.rst +2 -2
  6. {phasorpy-0.9 → phasorpy-0.11}/docs/conf.py +19 -8
  7. {phasorpy-0.9 → phasorpy-0.11}/docs/contributing.rst +9 -10
  8. {phasorpy-0.9 → phasorpy-0.11}/docs/index.rst +6 -6
  9. {phasorpy-0.9 → phasorpy-0.11}/docs/phasor_approach.rst +117 -56
  10. {phasorpy-0.9 → phasorpy-0.11}/pyproject.toml +45 -27
  11. {phasorpy-0.9 → phasorpy-0.11}/src/phasorpy/__init__.py +1 -1
  12. {phasorpy-0.9 → phasorpy-0.11}/src/phasorpy/_phasorpy.pyx +260 -110
  13. {phasorpy-0.9 → phasorpy-0.11}/src/phasorpy/_utils.py +28 -33
  14. {phasorpy-0.9 → phasorpy-0.11}/src/phasorpy/cli.py +8 -5
  15. {phasorpy-0.9 → phasorpy-0.11}/src/phasorpy/cluster.py +21 -4
  16. {phasorpy-0.9 → phasorpy-0.11}/src/phasorpy/color.py +3 -3
  17. {phasorpy-0.9 → phasorpy-0.11}/src/phasorpy/component.py +423 -32
  18. {phasorpy-0.9 → phasorpy-0.11}/src/phasorpy/cursor.py +20 -14
  19. {phasorpy-0.9 → phasorpy-0.11}/src/phasorpy/datasets.py +59 -8
  20. {phasorpy-0.9 → phasorpy-0.11}/src/phasorpy/filter.py +610 -41
  21. {phasorpy-0.9 → phasorpy-0.11}/src/phasorpy/io/__init__.py +37 -21
  22. {phasorpy-0.9 → phasorpy-0.11}/src/phasorpy/io/_flimlabs.py +22 -9
  23. {phasorpy-0.9 → phasorpy-0.11}/src/phasorpy/io/_leica.py +28 -9
  24. {phasorpy-0.9 → phasorpy-0.11}/src/phasorpy/io/_ometiff.py +110 -8
  25. {phasorpy-0.9 → phasorpy-0.11}/src/phasorpy/io/_other.py +134 -24
  26. {phasorpy-0.9 → phasorpy-0.11}/src/phasorpy/io/_simfcs.py +31 -13
  27. {phasorpy-0.9 → phasorpy-0.11}/src/phasorpy/lifetime.py +180 -73
  28. {phasorpy-0.9 → phasorpy-0.11}/src/phasorpy/phasor.py +38 -20
  29. {phasorpy-0.9 → phasorpy-0.11}/src/phasorpy/plot/_functions.py +26 -26
  30. {phasorpy-0.9 → phasorpy-0.11}/src/phasorpy/plot/_lifetime_plots.py +20 -22
  31. {phasorpy-0.9 → phasorpy-0.11}/src/phasorpy/plot/_phasorplot.py +47 -28
  32. {phasorpy-0.9 → phasorpy-0.11}/src/phasorpy/plot/_phasorplot_fret.py +21 -20
  33. {phasorpy-0.9 → phasorpy-0.11}/src/phasorpy/utils.py +23 -15
  34. {phasorpy-0.9 → phasorpy-0.11}/src/phasorpy.egg-info/PKG-INFO +23 -8
  35. {phasorpy-0.9 → phasorpy-0.11}/src/phasorpy.egg-info/SOURCES.txt +2 -0
  36. phasorpy-0.11/src/phasorpy.egg-info/requires.txt +22 -0
  37. {phasorpy-0.9 → phasorpy-0.11}/tests/io/_conftest.py +2 -2
  38. {phasorpy-0.9 → phasorpy-0.11}/tests/io/test_ometiff.py +26 -1
  39. {phasorpy-0.9 → phasorpy-0.11}/tests/io/test_other.py +29 -0
  40. {phasorpy-0.9 → phasorpy-0.11}/tests/io/test_simfcs.py +4 -4
  41. {phasorpy-0.9 → phasorpy-0.11}/tests/test__phasorpy.py +27 -0
  42. {phasorpy-0.9 → phasorpy-0.11}/tests/test__utils.py +0 -7
  43. {phasorpy-0.9 → phasorpy-0.11}/tests/test_cluster.py +13 -0
  44. {phasorpy-0.9 → phasorpy-0.11}/tests/test_component.py +186 -0
  45. {phasorpy-0.9 → phasorpy-0.11}/tests/test_cursor.py +5 -0
  46. {phasorpy-0.9 → phasorpy-0.11}/tests/test_filter.py +547 -40
  47. {phasorpy-0.9 → phasorpy-0.11}/tests/test_lifetime.py +100 -6
  48. {phasorpy-0.9 → phasorpy-0.11}/tests/test_phasor.py +4 -4
  49. {phasorpy-0.9 → phasorpy-0.11}/tools/sha256.py +3 -3
  50. {phasorpy-0.9 → phasorpy-0.11}/tutorials/api/phasorpy_component.py +8 -8
  51. {phasorpy-0.9 → phasorpy-0.11}/tutorials/api/phasorpy_cursor.py +1 -1
  52. phasorpy-0.11/tutorials/api/phasorpy_filter.py +346 -0
  53. {phasorpy-0.9 → phasorpy-0.11}/tutorials/api/phasorpy_fret.py +3 -3
  54. {phasorpy-0.9 → phasorpy-0.11}/tutorials/api/phasorpy_io.py +72 -34
  55. {phasorpy-0.9 → phasorpy-0.11}/tutorials/api/phasorpy_lifetime_to_signal.py +40 -16
  56. {phasorpy-0.9 → phasorpy-0.11}/tutorials/api/phasorpy_multi_harmonic.py +1 -1
  57. {phasorpy-0.9 → phasorpy-0.11}/tutorials/api/phasorpy_pca.py +1 -1
  58. {phasorpy-0.9 → phasorpy-0.11}/tutorials/api/phasorpy_phasor_from_lifetime.py +2 -2
  59. {phasorpy-0.9 → phasorpy-0.11}/tutorials/api/phasorpy_phasorplot.py +3 -3
  60. {phasorpy-0.9 → phasorpy-0.11}/tutorials/applications/phasorpy_component_fit.py +5 -3
  61. {phasorpy-0.9 → phasorpy-0.11}/tutorials/applications/phasorpy_fret_efficiency.py +2 -2
  62. {phasorpy-0.9 → phasorpy-0.11}/tutorials/applications/phasorpy_multidimensional.py +3 -1
  63. phasorpy-0.11/tutorials/applications/phasorpy_nadh_concentration.py +432 -0
  64. phasorpy-0.11/tutorials/applications/phasorpy_nadh_fraction.py +251 -0
  65. {phasorpy-0.9 → phasorpy-0.11}/tutorials/misc/phasorpy_apps.py +9 -9
  66. {phasorpy-0.9 → phasorpy-0.11}/tutorials/misc/phasorpy_logo.py +8 -9
  67. {phasorpy-0.9 → phasorpy-0.11}/tutorials/misc/phasorpy_phasor_from_signal.py +1 -1
  68. {phasorpy-0.9 → phasorpy-0.11}/tutorials/phasorpy_introduction.py +1 -1
  69. {phasorpy-0.9 → phasorpy-0.11}/tutorials/phasorpy_lfd_workshop.py +8 -3
  70. {phasorpy-0.9 → phasorpy-0.11}/tutorials/phasorpy_lifetime_geometry.py +3 -3
  71. phasorpy-0.9/src/phasorpy.egg-info/requires.txt +0 -18
  72. phasorpy-0.9/tutorials/api/phasorpy_filter.py +0 -217
  73. {phasorpy-0.9 → phasorpy-0.11}/LICENSE.txt +0 -0
  74. {phasorpy-0.9 → phasorpy-0.11}/MANIFEST.in +0 -0
  75. {phasorpy-0.9 → phasorpy-0.11}/docs/_static/categorical.png +0 -0
  76. {phasorpy-0.9 → phasorpy-0.11}/docs/_static/custom-icons.js +0 -0
  77. {phasorpy-0.9 → phasorpy-0.11}/docs/_static/favicon.ico +0 -0
  78. {phasorpy-0.9 → phasorpy-0.11}/docs/_static/phasorpy_logo.png +0 -0
  79. {phasorpy-0.9 → phasorpy-0.11}/docs/_static/phasorpy_logo.svg +0 -0
  80. {phasorpy-0.9 → phasorpy-0.11}/docs/_static/srgb_spectrum.png +0 -0
  81. {phasorpy-0.9 → phasorpy-0.11}/docs/api/_phasorpy.rst +0 -0
  82. {phasorpy-0.9 → phasorpy-0.11}/docs/api/_utils.rst +0 -0
  83. {phasorpy-0.9 → phasorpy-0.11}/docs/api/cli.rst +0 -0
  84. {phasorpy-0.9 → phasorpy-0.11}/docs/api/cluster.rst +0 -0
  85. {phasorpy-0.9 → phasorpy-0.11}/docs/api/color.rst +0 -0
  86. {phasorpy-0.9 → phasorpy-0.11}/docs/api/component.rst +0 -0
  87. {phasorpy-0.9 → phasorpy-0.11}/docs/api/cursor.rst +0 -0
  88. {phasorpy-0.9 → phasorpy-0.11}/docs/api/datasets.rst +0 -0
  89. {phasorpy-0.9 → phasorpy-0.11}/docs/api/experimental.rst +0 -0
  90. {phasorpy-0.9 → phasorpy-0.11}/docs/api/filter.rst +0 -0
  91. {phasorpy-0.9 → phasorpy-0.11}/docs/api/io.rst +0 -0
  92. {phasorpy-0.9 → phasorpy-0.11}/docs/api/lifetime.rst +0 -0
  93. {phasorpy-0.9 → phasorpy-0.11}/docs/api/phasor.rst +0 -0
  94. {phasorpy-0.9 → phasorpy-0.11}/docs/api/phasorpy.rst +0 -0
  95. {phasorpy-0.9 → phasorpy-0.11}/docs/api/plot.rst +0 -0
  96. {phasorpy-0.9 → phasorpy-0.11}/docs/api/utils.rst +0 -0
  97. {phasorpy-0.9 → phasorpy-0.11}/docs/code_of_conduct.rst +0 -0
  98. {phasorpy-0.9 → phasorpy-0.11}/docs/license.rst +0 -0
  99. {phasorpy-0.9 → phasorpy-0.11}/setup.cfg +0 -0
  100. {phasorpy-0.9 → phasorpy-0.11}/setup.py +0 -0
  101. {phasorpy-0.9 → phasorpy-0.11}/src/phasorpy/__main__.py +0 -0
  102. {phasorpy-0.9 → phasorpy-0.11}/src/phasorpy/_typing.py +0 -0
  103. {phasorpy-0.9 → phasorpy-0.11}/src/phasorpy/conftest.py +0 -0
  104. {phasorpy-0.9 → phasorpy-0.11}/src/phasorpy/experimental.py +0 -0
  105. {phasorpy-0.9 → phasorpy-0.11}/src/phasorpy/plot/__init__.py +0 -0
  106. {phasorpy-0.9 → phasorpy-0.11}/src/phasorpy/py.typed +0 -0
  107. {phasorpy-0.9 → phasorpy-0.11}/src/phasorpy.egg-info/dependency_links.txt +0 -0
  108. {phasorpy-0.9 → phasorpy-0.11}/src/phasorpy.egg-info/entry_points.txt +0 -0
  109. {phasorpy-0.9 → phasorpy-0.11}/src/phasorpy.egg-info/not-zip-safe +0 -0
  110. {phasorpy-0.9 → phasorpy-0.11}/src/phasorpy.egg-info/top_level.txt +0 -0
  111. {phasorpy-0.9 → phasorpy-0.11}/tests/conftest.py +0 -0
  112. {phasorpy-0.9 → phasorpy-0.11}/tests/io/test_flimlabs.py +0 -0
  113. {phasorpy-0.9 → phasorpy-0.11}/tests/io/test_leica.py +0 -0
  114. {phasorpy-0.9 → phasorpy-0.11}/tests/plot/test_functions.py +0 -0
  115. {phasorpy-0.9 → phasorpy-0.11}/tests/plot/test_lifetime_plots.py +0 -0
  116. {phasorpy-0.9 → phasorpy-0.11}/tests/plot/test_phasorplot.py +0 -0
  117. {phasorpy-0.9 → phasorpy-0.11}/tests/plot/test_phasorplot_fret.py +0 -0
  118. {phasorpy-0.9 → phasorpy-0.11}/tests/test__typing.py +0 -0
  119. {phasorpy-0.9 → phasorpy-0.11}/tests/test_cli.py +0 -0
  120. {phasorpy-0.9 → phasorpy-0.11}/tests/test_color.py +0 -0
  121. {phasorpy-0.9 → phasorpy-0.11}/tests/test_datasets.py +0 -0
  122. {phasorpy-0.9 → phasorpy-0.11}/tests/test_experimental.py +0 -0
  123. {phasorpy-0.9 → phasorpy-0.11}/tests/test_nan.py +0 -0
  124. {phasorpy-0.9 → phasorpy-0.11}/tests/test_phasorpy.py +0 -0
  125. {phasorpy-0.9 → phasorpy-0.11}/tests/test_utils.py +0 -0
  126. {phasorpy-0.9 → phasorpy-0.11}/tools/build_manylinux.cmd +0 -0
  127. {phasorpy-0.9 → phasorpy-0.11}/tools/build_manylinux.sh +0 -0
  128. {phasorpy-0.9 → phasorpy-0.11}/tutorials/README.rst +0 -0
  129. {phasorpy-0.9 → phasorpy-0.11}/tutorials/api/README.rst +0 -0
  130. {phasorpy-0.9 → phasorpy-0.11}/tutorials/applications/README.rst +0 -0
  131. {phasorpy-0.9 → phasorpy-0.11}/tutorials/misc/README.rst +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: phasorpy
3
- Version: 0.9
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
@@ -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 :: 3 - Alpha
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,30 +24,45 @@ 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.0.0
27
+ Requires-Dist: numpy>=2.1.0
28
28
  Requires-Dist: matplotlib>=3.9.0
29
- Requires-Dist: pandas>=2.2.0
29
+ Requires-Dist: pandas>=2.3.0
30
30
  Requires-Dist: scikit-learn>=1.5.0
31
- Requires-Dist: scipy>=1.13.0
32
- Requires-Dist: tifffile>=2024.8.30
31
+ Requires-Dist: scipy>=1.14.0
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
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
- Requires-Dist: lfdfiles>=2024.5.24; extra == "all"
40
+ Requires-Dist: lfdfiles>=2026.4.30; 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.6.6; (sys_platform == "darwin" and platform_machine == "x86_64") and extra == "all"
44
46
  Dynamic: license-file
45
47
 
46
- # <img src="docs/_static/phasorpy_logo.svg" alt="PhasorPy" width="48" height="48" align="left"> PhasorPy
48
+ # <img src="https://www.phasorpy.org/_static/phasorpy_logo.svg" alt="&#x25CB;" 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.
50
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
+
51
66
  - [Homepage](https://www.phasorpy.org)
52
67
  - [Documentation](https://www.phasorpy.org/docs/stable/)
53
68
  - [Source code](https://github.com/phasorpy/phasorpy)
@@ -1,8 +1,21 @@
1
- # <img src="docs/_static/phasorpy_logo.svg" alt="PhasorPy" width="48" height="48" align="left"> PhasorPy
1
+ # <img src="https://www.phasorpy.org/_static/phasorpy_logo.svg" alt="&#x25CB;" 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.
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,23 +1,23 @@
1
1
  [
2
2
  {
3
3
  "name": "dev",
4
- "version": "0.10",
4
+ "version": "0.12",
5
5
  "url": "https://www.phasorpy.org/docs/dev/"
6
6
  },
7
7
  {
8
- "name": "0.9 (stable)",
9
- "version": "0.9",
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
13
  {
14
- "name": "0.8",
15
- "version": "0.8",
16
- "url": "https://www.phasorpy.org/docs/v0.8/"
14
+ "name": "0.10",
15
+ "version": "0.10",
16
+ "url": "https://www.phasorpy.org/docs/v0.10/"
17
17
  },
18
18
  {
19
- "name": "0.7",
20
- "version": "0.7",
21
- "url": "https://www.phasorpy.org/docs/v0.7/"
19
+ "name": "0.9",
20
+ "version": "0.9",
21
+ "url": "https://www.phasorpy.org/docs/v0.9/"
22
22
  }
23
23
  ]
@@ -8,14 +8,14 @@ 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 · SimFCS <https://www.lfd.uci.edu/globals/>`_ software by
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,8 +64,9 @@ 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
69
+ html_sidebars = {'**': ['sidebar-nav-bs']}
68
70
 
69
71
  html_title = f'PhasorPy {version} documentation'
70
72
  html_logo = '_static/phasorpy_logo.svg'
@@ -129,6 +131,13 @@ sphinx_gallery_conf = {
129
131
  'filename_pattern': 'phasorpy_',
130
132
  'examples_dirs': '../tutorials',
131
133
  'gallery_dirs': 'tutorials',
134
+ 'subsection_order': ExplicitOrder(
135
+ [
136
+ '../tutorials/applications',
137
+ '../tutorials/api',
138
+ '../tutorials/misc',
139
+ ]
140
+ ),
132
141
  'reference_url': {'phasorpy': None},
133
142
  'matplotlib_animations': True,
134
143
  'within_subsection_order': 'conf.TutorialOrder',
@@ -150,21 +159,23 @@ class TutorialOrder:
150
159
  'introduction',
151
160
  'lifetime_geometry',
152
161
  'lfd_workshop',
162
+ # applications
163
+ 'component_fit',
164
+ 'fret_efficiency',
165
+ 'nadh_fraction',
166
+ 'nadh_concentration',
167
+ 'multidimensional',
153
168
  # api
154
169
  'io',
170
+ 'lifetime_to_signal',
155
171
  'phasor_from_lifetime',
156
- 'multi_harmonic',
172
+ 'fret',
157
173
  'filter',
174
+ 'multi_harmonic',
158
175
  'phasorplot',
159
176
  'cursor',
160
177
  'component',
161
- 'fret',
162
- 'lifetime_to_signal',
163
178
  'pca',
164
- # applications
165
- 'component_fit',
166
- 'fret_efficiency',
167
- 'multidimensional',
168
179
  # misc
169
180
  'logo',
170
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,9 +203,8 @@ static type checker::
203
203
 
204
204
  $ python -m mypy
205
205
 
206
-
207
206
  The PhasorPy project follows the Scientific Python
208
- `SPEC 0 Minimum Supported Dependencies
207
+ `SPEC 0 - Minimum Supported Dependencies
209
208
  <https://scientific-python.org/specs/spec-0000/>`_ recommendation
210
209
  for Python, NumPy, and other dependencies.
211
210
 
@@ -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,14 +1,14 @@
1
- Phasor approach
1
+ Phasor approach
2
2
  ===============
3
3
 
4
- The phasor approach to fluorescence lifetime imaging, and more recently
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 spacewhere the
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 anotherhas helped the expansion of this method.
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,
@@ -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,38 +186,38 @@ 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
- * - **ImageJ**
173
- - :ref:`Spectral/Time Gated Phasor PlugIns <phasor_plugins>`
174
- * - **Matlab**
175
- - :ref:`FLIMfit <flimfit>`,
176
- :ref:`PAM <pam>`,
177
- :ref:`Instant-FLIM-Analysis <instant_flim_analysis>`
178
- * - **Library**
179
- - :ref:`FLIMLib <flimlib>`,
180
- :ref:`tttrlib <tttrlib>`,
181
- :ref:`FLIM_tools <flim_tools>`,
182
- :ref:`Cell-analysis-tools <cell_analysis_tools>`
183
- * - **Notebook**
184
- - :ref:`PhasorIdentifier <phasor_identifier>`,
185
- :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.
186
194
 
187
195
  Details:
188
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
+
189
212
  -
190
213
  .. _simfcs:
191
214
 
192
- `Globals for Images · SimFCS <https://www.lfd.uci.edu/globals/>`__
215
+ `Globals for Images - SimFCS <https://www.lfd.uci.edu/globals/>`__
193
216
  is a free, closed-source, Windows desktop application for fluorescence image
194
217
  analysis, visualization, simulation, and acquisition.
195
218
  The software was developed by Enrico Gratton during 1998-2022 at the
196
- Laboratory for Fluorescence Dynamics. It provides the most comprehensive
197
- set of features for phasor analysis of fluorescence lifetime and
198
- hyperspectral images.
219
+ Laboratory for Fluorescence Dynamics. It provides a broad set of features
220
+ for phasor analysis of fluorescence lifetime and hyperspectral images.
199
221
  Many `tutorials <https://www.lfd.uci.edu/globals/tutorials/>`__ are
200
222
  available.
201
223
 
@@ -225,9 +247,17 @@ Details:
225
247
  .. _flopa:
226
248
 
227
249
  `FLOPA <https://github.com/IMCF-Biocev/FLOPA>`__
228
- is a napari plugin for FLIM data opening, processing and analysis.
250
+ is a napari plugin for FLIM data opening, processing, and analysis.
229
251
  The plugin is distributed under the GPLv3 license.
230
252
 
253
+ -
254
+
255
+ .. _flimari:
256
+
257
+ `FLIMari <https://github.com/GuangchenW/FLIMari>`__
258
+ is a napari plugin for FLIM analysis. It provides an interactive,
259
+ phasor-based lifetime visualization and analysis pipeline.
260
+ The plugin is distributed under the MIT license.
231
261
  -
232
262
  .. _hysp:
233
263
 
@@ -248,7 +278,7 @@ Details:
248
278
  .. _flimpa:
249
279
 
250
280
  `FLIMPA <https://github.com/SofiaKapsiani/FLIMPA>`__
251
- 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
252
282
  raw TCSPC-FLIM data. The software is written in Python and distributed
253
283
  under the BSD-3-Clause license.
254
284
 
@@ -275,7 +305,7 @@ Details:
275
305
  is a collection of open-source software for the acquisition, analysis,
276
306
  and simulation of image-scanning microscopy data, including FLIM-phasor
277
307
  analysis of time-resolved images. The software is written in Python/VHDL
278
- 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.
279
309
 
280
310
  -
281
311
  .. _flim_playground:
@@ -292,7 +322,7 @@ Details:
292
322
  `FLIM_tools <https://github.com/jayunruh/FLIM_tools>`__
293
323
  is an open-source Python library for linear unmixing and phasor tools for
294
324
  FLIM analysis developed by Jay Unruh. The library is distributed under
295
- the GPL2 license.
325
+ the GPL v2 license.
296
326
 
297
327
  -
298
328
  .. _tttrlib:
@@ -303,6 +333,14 @@ Details:
303
333
  and correcting phasor coordinates. The library is distributed under the
304
334
  BSD license.
305
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
+
306
344
  -
307
345
  .. _phasor_identifier:
308
346
 
@@ -314,9 +352,9 @@ Details:
314
352
  -
315
353
  .. _phasor_plugins:
316
354
 
317
- `Spectral Phasor PlugIn <http://spechron.com/Spectral%20Phasor-Download.aspx>`__
355
+ `Spectral Phasor PlugIn <https://web.archive.org/web/20250621131318/http://spechron.com/Spectral%20Phasor-Introduction.aspx>`__
318
356
  and
319
- `Time Gated Phasor PlugIn <http://spechron.com/Time%20gated%20Phasor-Download.aspx>`__
357
+ `Time Gated Phasor PlugIn <https://web.archive.org/web/20240910041344/http://spechron.com/Time%20gated%20Phasor%20Introduction.aspx>`__
320
358
  are open-source ImageJ plugins by Farzad Fereidouni, which provide
321
359
  visualization, segmentation, and unmixing of time-resolved and spectral
322
360
  images using the phasor approach. The software is distributed under an
@@ -341,7 +379,7 @@ Details:
341
379
  .. _flimfit:
342
380
 
343
381
  `FLIMfit <https://github.com/flimfit/FLIMfit>`__ is an open-source,
344
- 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
345
383
  measurements including TCSPC and wide-field time-gated imaging.
346
384
  It includes a segmentation tool based on the phasor approach.
347
385
  The affiliated `FlimReader <https://github.com/flimfit/FlimReader>`__
@@ -353,7 +391,7 @@ Details:
353
391
 
354
392
  `PAM <https://pam.readthedocs.io/en/latest/phasor.html>`__
355
393
  is an open-source GUI-based MATLAB package for the analysis of fluorescence
356
- experiments. The phasor analysis includes region of interests, fractions,
394
+ experiments. The phasor analysis includes regions of interest, fractions,
357
395
  triangular mixtures, and FRET estimation. PAM is licensed under the GPL v3.
358
396
 
359
397
  -
@@ -376,7 +414,7 @@ Details:
376
414
  .. _flim_studio:
377
415
 
378
416
  `FLIM Studio <https://www.flimlabs.com/software/>`__
379
- 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
380
418
  fluorescence lifetime imaging and spectroscopy. The software provides
381
419
  real-time FLIM phasor-plot analysis, AI-driven phasor-plot analysis
382
420
  techniques, and an application programming interface. Python modules
@@ -386,7 +424,7 @@ Details:
386
424
  .. _vistavision:
387
425
 
388
426
  `VistaVision <https://iss.com/software/vistavision>`__
389
- is a commercial Windows desktop software by ISS, Inc., for confocal
427
+ is a commercial Windows desktop application by ISS, Inc., for confocal
390
428
  microscopy applications, including instrument control, data acquisition,
391
429
  and data processing. It performs image segmentation of FLIM images via
392
430
  the phasor plot.
@@ -395,7 +433,7 @@ Details:
395
433
  .. _spcimage:
396
434
 
397
435
  `SPCImage <https://www.becker-hickl.com/literature/documents/flim/spcimage-ng/>`__
398
- is a commercial Windows desktop software by Becker & Hickl (tm) for
436
+ is a commercial Windows desktop application by Becker & Hickl (tm) for
399
437
  TCSPC-FLIM data analysis. It performs image segmentation of time-resolved
400
438
  data via the phasor plot.
401
439
 
@@ -403,24 +441,24 @@ Details:
403
441
  .. _lasx:
404
442
 
405
443
  `LAS X <https://www.leica-microsystems.com/science-lab/phasor-analysis-for-flim-fluorescence-lifetime-imaging-microscopy/>`__
406
- is a commercial Windows desktop software by Leica Microsystems.
407
- The software allows, by using phasors, to follow microenvironmental changes,
408
- 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.
409
447
 
410
448
  -
411
449
  .. _luminosa:
412
450
 
413
451
  `Luminosa <https://www.picoquant.com/products/category/fluorescence-microscopes/luminosa-single-photon-counting-confocal-microscope#documents>`__
414
- is a commercial Windows desktop software by PicoQuant GmbH, which includes
452
+ is a commercial Windows desktop application by PicoQuant GmbH, which includes
415
453
  single molecule detection, FCS, and time-resolved imaging methods.
416
- The InstaFLIM module allows simultaneous TCSPC and phasor analysis
417
- options for ROI determination.
454
+ The InstaFLIM module supports simultaneous TCSPC and phasor analysis
455
+ for ROI determination.
418
456
 
419
457
  -
420
458
  .. _eztime:
421
459
 
422
460
  `EzTime <https://www.horiba.com/int/scientific/products/detail/action/show/Product/eztime-software-6283/>`__
423
- is a commercial software by HORIBA Scientific. It allows real-time TCSPC
461
+ is commercial software by HORIBA Scientific. It allows real-time TCSPC
424
462
  image analysis and visualization, including phasor plots, in conjunction
425
463
  with the FLIMera wide-field camera.
426
464
 
@@ -428,14 +466,37 @@ Details:
428
466
  .. _lifa:
429
467
 
430
468
  `LIFA <https://lambertinstruments.com/lifa-software>`__
431
- is a commercial software by Lambert Instruments to record and analyze
469
+ is commercial software by Lambert Instruments to record and analyze
432
470
  fluorescence lifetime images, integrating all Lambert hardware.
433
471
 
434
472
  -
435
473
  .. _flimfast:
436
474
 
437
475
  `FlimFast <https://www.cgohlke.com/flimfast/>`__
438
- was a research-grade Windows desktop software for frequency-domain,
476
+ was a research-grade Windows desktop application for frequency-domain,
439
477
  full-field, fluorescence lifetime imaging at video rate, developed by
440
478
  Christoph Gohlke during 2000-2002 at UIUC. It enabled phasor vs intensity
441
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.