phasorpy 0.8__tar.gz → 0.9__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.8 → phasorpy-0.9}/LICENSE.txt +3 -3
  2. {phasorpy-0.8/src/phasorpy.egg-info → phasorpy-0.9}/PKG-INFO +15 -19
  3. {phasorpy-0.8 → phasorpy-0.9}/README.md +5 -2
  4. {phasorpy-0.8 → phasorpy-0.9}/docs/_static/switcher.json +8 -8
  5. {phasorpy-0.8 → phasorpy-0.9}/docs/acknowledgments.rst +4 -4
  6. {phasorpy-0.8 → phasorpy-0.9}/docs/api/cli.rst +1 -1
  7. {phasorpy-0.8 → phasorpy-0.9}/docs/api/index.rst +2 -2
  8. {phasorpy-0.8 → phasorpy-0.9}/docs/conf.py +15 -9
  9. {phasorpy-0.8 → phasorpy-0.9}/docs/contributing.rst +35 -32
  10. {phasorpy-0.8 → phasorpy-0.9}/docs/index.rst +9 -9
  11. phasorpy-0.9/docs/license.rst +5 -0
  12. {phasorpy-0.8 → phasorpy-0.9}/docs/phasor_approach.rst +174 -62
  13. phasorpy-0.9/pyproject.toml +427 -0
  14. {phasorpy-0.8 → phasorpy-0.9}/setup.py +17 -6
  15. {phasorpy-0.8 → phasorpy-0.9}/src/phasorpy/__init__.py +1 -1
  16. {phasorpy-0.8 → phasorpy-0.9}/src/phasorpy/__main__.py +1 -1
  17. {phasorpy-0.8 → phasorpy-0.9}/src/phasorpy/_phasorpy.pyx +37 -41
  18. {phasorpy-0.8 → phasorpy-0.9}/src/phasorpy/_typing.py +1 -5
  19. {phasorpy-0.8 → phasorpy-0.9}/src/phasorpy/_utils.py +106 -81
  20. {phasorpy-0.8 → phasorpy-0.9}/src/phasorpy/cli.py +16 -17
  21. {phasorpy-0.8 → phasorpy-0.9}/src/phasorpy/cluster.py +46 -36
  22. {phasorpy-0.8 → phasorpy-0.9}/src/phasorpy/color.py +21 -17
  23. {phasorpy-0.8 → phasorpy-0.9}/src/phasorpy/component.py +117 -95
  24. {phasorpy-0.8 → phasorpy-0.9}/src/phasorpy/cursor.py +62 -51
  25. {phasorpy-0.8 → phasorpy-0.9}/src/phasorpy/datasets.py +14 -8
  26. {phasorpy-0.8 → phasorpy-0.9}/src/phasorpy/experimental.py +7 -9
  27. {phasorpy-0.8 → phasorpy-0.9}/src/phasorpy/filter.py +93 -87
  28. {phasorpy-0.8 → phasorpy-0.9}/src/phasorpy/io/__init__.py +20 -22
  29. {phasorpy-0.8 → phasorpy-0.9}/src/phasorpy/io/_flimlabs.py +47 -31
  30. {phasorpy-0.8 → phasorpy-0.9}/src/phasorpy/io/_leica.py +31 -31
  31. {phasorpy-0.8 → phasorpy-0.9}/src/phasorpy/io/_ometiff.py +46 -43
  32. {phasorpy-0.8 → phasorpy-0.9}/src/phasorpy/io/_other.py +99 -98
  33. {phasorpy-0.8 → phasorpy-0.9}/src/phasorpy/io/_simfcs.py +70 -65
  34. {phasorpy-0.8 → phasorpy-0.9}/src/phasorpy/lifetime.py +239 -212
  35. {phasorpy-0.8 → phasorpy-0.9}/src/phasorpy/phasor.py +172 -150
  36. {phasorpy-0.8 → phasorpy-0.9}/src/phasorpy/plot/__init__.py +0 -2
  37. {phasorpy-0.8 → phasorpy-0.9}/src/phasorpy/plot/_functions.py +77 -66
  38. {phasorpy-0.8 → phasorpy-0.9}/src/phasorpy/plot/_lifetime_plots.py +46 -28
  39. {phasorpy-0.8 → phasorpy-0.9}/src/phasorpy/plot/_phasorplot.py +99 -86
  40. {phasorpy-0.8 → phasorpy-0.9}/src/phasorpy/plot/_phasorplot_fret.py +40 -38
  41. {phasorpy-0.8 → phasorpy-0.9}/src/phasorpy/utils.py +29 -24
  42. {phasorpy-0.8 → phasorpy-0.9/src/phasorpy.egg-info}/PKG-INFO +15 -19
  43. {phasorpy-0.8 → phasorpy-0.9}/src/phasorpy.egg-info/SOURCES.txt +1 -1
  44. {phasorpy-0.8 → phasorpy-0.9}/src/phasorpy.egg-info/requires.txt +8 -16
  45. {phasorpy-0.8 → phasorpy-0.9}/tests/io/_conftest.py +21 -15
  46. {phasorpy-0.8 → phasorpy-0.9}/tests/io/test_flimlabs.py +1 -1
  47. {phasorpy-0.8 → phasorpy-0.9}/tests/io/test_leica.py +8 -8
  48. {phasorpy-0.8 → phasorpy-0.9}/tests/io/test_ometiff.py +15 -13
  49. {phasorpy-0.8 → phasorpy-0.9}/tests/io/test_other.py +1 -1
  50. {phasorpy-0.8 → phasorpy-0.9}/tests/io/test_simfcs.py +11 -7
  51. {phasorpy-0.8 → phasorpy-0.9}/tests/plot/test_functions.py +16 -14
  52. {phasorpy-0.8 → phasorpy-0.9}/tests/plot/test_phasorplot.py +9 -7
  53. {phasorpy-0.8 → phasorpy-0.9}/tests/test__phasorpy.py +9 -9
  54. {phasorpy-0.8 → phasorpy-0.9}/tests/test__typing.py +1 -1
  55. {phasorpy-0.8 → phasorpy-0.9}/tests/test__utils.py +4 -2
  56. {phasorpy-0.8 → phasorpy-0.9}/tests/test_cli.py +2 -2
  57. {phasorpy-0.8 → phasorpy-0.9}/tests/test_cluster.py +14 -15
  58. {phasorpy-0.8 → phasorpy-0.9}/tests/test_color.py +6 -6
  59. {phasorpy-0.8 → phasorpy-0.9}/tests/test_component.py +31 -25
  60. {phasorpy-0.8 → phasorpy-0.9}/tests/test_cursor.py +24 -13
  61. {phasorpy-0.8 → phasorpy-0.9}/tests/test_datasets.py +3 -3
  62. {phasorpy-0.8 → phasorpy-0.9}/tests/test_experimental.py +2 -2
  63. {phasorpy-0.8 → phasorpy-0.9}/tests/test_filter.py +138 -163
  64. {phasorpy-0.8 → phasorpy-0.9}/tests/test_lifetime.py +71 -62
  65. {phasorpy-0.8 → phasorpy-0.9}/tests/test_nan.py +35 -35
  66. {phasorpy-0.8 → phasorpy-0.9}/tests/test_phasor.py +80 -87
  67. {phasorpy-0.8 → phasorpy-0.9}/tests/test_phasorpy.py +1 -1
  68. {phasorpy-0.8 → phasorpy-0.9}/tests/test_utils.py +1 -5
  69. {phasorpy-0.8 → phasorpy-0.9}/tools/build_manylinux.cmd +3 -3
  70. phasorpy-0.9/tools/build_manylinux.sh +10 -0
  71. {phasorpy-0.8 → phasorpy-0.9}/tools/sha256.py +4 -2
  72. {phasorpy-0.8 → phasorpy-0.9}/tutorials/README.rst +2 -2
  73. {phasorpy-0.8 → phasorpy-0.9}/tutorials/api/phasorpy_component.py +26 -26
  74. {phasorpy-0.8 → phasorpy-0.9}/tutorials/api/phasorpy_cursor.py +26 -16
  75. {phasorpy-0.8 → phasorpy-0.9}/tutorials/api/phasorpy_filter.py +14 -11
  76. {phasorpy-0.8 → phasorpy-0.9}/tutorials/api/phasorpy_fret.py +32 -59
  77. {phasorpy-0.8 → phasorpy-0.9}/tutorials/api/phasorpy_io.py +51 -49
  78. {phasorpy-0.8 → phasorpy-0.9}/tutorials/api/phasorpy_lifetime_to_signal.py +24 -18
  79. {phasorpy-0.8 → phasorpy-0.9}/tutorials/api/phasorpy_multi_harmonic.py +34 -29
  80. {phasorpy-0.8 → phasorpy-0.9}/tutorials/api/phasorpy_pca.py +19 -15
  81. {phasorpy-0.8 → phasorpy-0.9}/tutorials/api/phasorpy_phasor_from_lifetime.py +21 -18
  82. {phasorpy-0.8 → phasorpy-0.9}/tutorials/api/phasorpy_phasorplot.py +12 -11
  83. {phasorpy-0.8 → phasorpy-0.9}/tutorials/applications/phasorpy_component_fit.py +22 -17
  84. {phasorpy-0.8 → phasorpy-0.9}/tutorials/applications/phasorpy_fret_efficiency.py +28 -7
  85. {phasorpy-0.8 → phasorpy-0.9}/tutorials/applications/phasorpy_multidimensional.py +19 -17
  86. phasorpy-0.9/tutorials/misc/phasorpy_apps.py +77 -0
  87. {phasorpy-0.8 → phasorpy-0.9}/tutorials/misc/phasorpy_logo.py +16 -14
  88. {phasorpy-0.8 → phasorpy-0.9}/tutorials/misc/phasorpy_phasor_from_signal.py +47 -43
  89. {phasorpy-0.8 → phasorpy-0.9}/tutorials/phasorpy_introduction.py +35 -27
  90. {phasorpy-0.8 → phasorpy-0.9}/tutorials/phasorpy_lfd_workshop.py +45 -31
  91. {phasorpy-0.8 → phasorpy-0.9}/tutorials/phasorpy_lifetime_geometry.py +19 -18
  92. phasorpy-0.8/docs/license.rst +0 -22
  93. phasorpy-0.8/docs/release.rst +0 -456
  94. phasorpy-0.8/pyproject.toml +0 -185
  95. phasorpy-0.8/tools/build_manylinux.sh +0 -10
  96. {phasorpy-0.8 → phasorpy-0.9}/MANIFEST.in +0 -0
  97. {phasorpy-0.8 → phasorpy-0.9}/docs/_static/categorical.png +0 -0
  98. {phasorpy-0.8 → phasorpy-0.9}/docs/_static/custom-icons.js +0 -0
  99. {phasorpy-0.8 → phasorpy-0.9}/docs/_static/favicon.ico +0 -0
  100. {phasorpy-0.8 → phasorpy-0.9}/docs/_static/phasorpy_logo.png +0 -0
  101. {phasorpy-0.8 → phasorpy-0.9}/docs/_static/phasorpy_logo.svg +0 -0
  102. {phasorpy-0.8 → phasorpy-0.9}/docs/_static/srgb_spectrum.png +0 -0
  103. {phasorpy-0.8 → phasorpy-0.9}/docs/api/_phasorpy.rst +0 -0
  104. {phasorpy-0.8 → phasorpy-0.9}/docs/api/_utils.rst +0 -0
  105. {phasorpy-0.8 → phasorpy-0.9}/docs/api/cluster.rst +0 -0
  106. {phasorpy-0.8 → phasorpy-0.9}/docs/api/color.rst +0 -0
  107. {phasorpy-0.8 → phasorpy-0.9}/docs/api/component.rst +0 -0
  108. {phasorpy-0.8 → phasorpy-0.9}/docs/api/cursor.rst +0 -0
  109. {phasorpy-0.8 → phasorpy-0.9}/docs/api/datasets.rst +0 -0
  110. {phasorpy-0.8 → phasorpy-0.9}/docs/api/experimental.rst +0 -0
  111. {phasorpy-0.8 → phasorpy-0.9}/docs/api/filter.rst +0 -0
  112. {phasorpy-0.8 → phasorpy-0.9}/docs/api/io.rst +0 -0
  113. {phasorpy-0.8 → phasorpy-0.9}/docs/api/lifetime.rst +0 -0
  114. {phasorpy-0.8 → phasorpy-0.9}/docs/api/phasor.rst +0 -0
  115. {phasorpy-0.8 → phasorpy-0.9}/docs/api/phasorpy.rst +0 -0
  116. {phasorpy-0.8 → phasorpy-0.9}/docs/api/plot.rst +0 -0
  117. {phasorpy-0.8 → phasorpy-0.9}/docs/api/utils.rst +0 -0
  118. {phasorpy-0.8 → phasorpy-0.9}/docs/code_of_conduct.rst +0 -0
  119. {phasorpy-0.8 → phasorpy-0.9}/setup.cfg +0 -0
  120. {phasorpy-0.8 → phasorpy-0.9}/src/phasorpy/conftest.py +0 -0
  121. {phasorpy-0.8 → phasorpy-0.9}/src/phasorpy/py.typed +0 -0
  122. {phasorpy-0.8 → phasorpy-0.9}/src/phasorpy.egg-info/dependency_links.txt +0 -0
  123. {phasorpy-0.8 → phasorpy-0.9}/src/phasorpy.egg-info/entry_points.txt +0 -0
  124. {phasorpy-0.8 → phasorpy-0.9}/src/phasorpy.egg-info/not-zip-safe +0 -0
  125. {phasorpy-0.8 → phasorpy-0.9}/src/phasorpy.egg-info/top_level.txt +0 -0
  126. {phasorpy-0.8 → phasorpy-0.9}/tests/conftest.py +0 -0
  127. {phasorpy-0.8 → phasorpy-0.9}/tests/plot/test_lifetime_plots.py +0 -0
  128. {phasorpy-0.8 → phasorpy-0.9}/tests/plot/test_phasorplot_fret.py +0 -0
  129. {phasorpy-0.8 → phasorpy-0.9}/tutorials/api/README.rst +0 -0
  130. {phasorpy-0.8 → phasorpy-0.9}/tutorials/applications/README.rst +0 -0
  131. {phasorpy-0.8 → phasorpy-0.9}/tutorials/misc/README.rst +0 -0
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2022-2025 PhasorPy Contributors
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 all
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.8
4
- Summary: Analysis of fluorescence lifetime and hyperspectral images using the phasor approach
3
+ Version: 0.9
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
@@ -26,33 +26,26 @@ Description-Content-Type: text/markdown
26
26
  License-File: LICENSE.txt
27
27
  Requires-Dist: numpy>=2.0.0
28
28
  Requires-Dist: matplotlib>=3.9.0
29
+ Requires-Dist: pandas>=2.2.0
30
+ Requires-Dist: scikit-learn>=1.5.0
29
31
  Requires-Dist: scipy>=1.13.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: fbdfile>=2025.9.18; extra == "all"
45
39
  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
40
  Requires-Dist: liffile>=2025.2.10; extra == "all"
49
- Requires-Dist: fbdfile>=2025.9.18; extra == "all"
50
- Requires-Dist: pawflim; extra == "all"
41
+ Requires-Dist: ptufile>=2024.9.14; extra == "all"
42
+ Requires-Dist: sdtfile>=2024.5.24; extra == "all"
43
+ Requires-Dist: pawflim>=1.0.4; extra == "all"
51
44
  Dynamic: license-file
52
45
 
53
- # PhasorPy
46
+ # <img src="docs/_static/phasorpy_logo.svg" alt="PhasorPy" width="48" height="48" align="left"> PhasorPy
54
47
 
55
- PhasorPy is an open-source Python library for the analysis of fluorescence
48
+ PhasorPy is an open-source Python library for the analysis of luminescence
56
49
  lifetime and hyperspectral images using the phasor approach.
57
50
 
58
51
  - [Homepage](https://www.phasorpy.org)
@@ -62,6 +55,9 @@ lifetime and hyperspectral images using the phasor approach.
62
55
  - [Data files](https://zenodo.org/communities/phasorpy/)
63
56
  - [Issues and questions](https://github.com/phasorpy/phasorpy/issues)
64
57
 
58
+ Please cite [doi: 10.5281/zenodo.13862586](https://doi.org/10.5281/zenodo.13862586)
59
+ if PhasorPy contributes to research that leads to a publication.
60
+
65
61
  PhasorPy is a community-maintained project.
66
62
  [Contributions](https://www.phasorpy.org/docs/stable/contributing/)
67
63
  in the form of bug reports, bug fixes, feature implementations, documentation,
@@ -1,6 +1,6 @@
1
- # PhasorPy
1
+ # <img src="docs/_static/phasorpy_logo.svg" alt="PhasorPy" width="48" height="48" align="left"> PhasorPy
2
2
 
3
- PhasorPy is an open-source Python library for the analysis of fluorescence
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,
@@ -1,23 +1,23 @@
1
1
  [
2
2
  {
3
3
  "name": "dev",
4
- "version": "0.9",
4
+ "version": "0.10",
5
5
  "url": "https://www.phasorpy.org/docs/dev/"
6
6
  },
7
7
  {
8
- "name": "0.8 (stable)",
9
- "version": "0.8",
8
+ "name": "0.9 (stable)",
9
+ "version": "0.9",
10
10
  "url": "https://www.phasorpy.org/docs/stable/",
11
11
  "preferred": true
12
12
  },
13
+ {
14
+ "name": "0.8",
15
+ "version": "0.8",
16
+ "url": "https://www.phasorpy.org/docs/v0.8/"
17
+ },
13
18
  {
14
19
  "name": "0.7",
15
20
  "version": "0.7",
16
21
  "url": "https://www.phasorpy.org/docs/v0.7/"
17
- },
18
- {
19
- "name": "0.6",
20
- "version": "0.6",
21
- "url": "https://www.phasorpy.org/docs/v0.6/"
22
22
  }
23
23
  ]
@@ -3,7 +3,7 @@ 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
 
@@ -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 `contributors to the PhasorPy repository
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 a project that leads to a publication,
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,4 +1,4 @@
1
- Command line interface
1
+ Command-line interface
2
2
  ----------------------
3
3
 
4
4
  .. click:: phasorpy.cli:main
@@ -1,8 +1,8 @@
1
1
  API reference
2
2
  =============
3
3
 
4
- This documents the application programming and command line interfaces of the
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
- # Configuration file for the Sphinx documentation builder.
2
- # https://www.sphinx-doc.org/en/master/usage/configuration.html
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-2025 PhasorPy Contributors'
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',
@@ -134,6 +139,9 @@ sphinx_gallery_conf = {
134
139
  # 'backreferences_dir': None,
135
140
  }
136
141
 
142
+ # TODO: remove MathJax 3 link once scroll bar issue is resolved
143
+ mathjax_path = 'https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js'
144
+
137
145
 
138
146
  class TutorialOrder:
139
147
  """Order tutorials in gallery subsections."""
@@ -158,8 +166,9 @@ class TutorialOrder:
158
166
  'fret_efficiency',
159
167
  'multidimensional',
160
168
  # misc
161
- 'phasor_from_signal',
162
169
  'logo',
170
+ 'apps',
171
+ 'phasor_from_signal',
163
172
  ]
164
173
 
165
174
  def __init__(self, srcdir: str): ...
@@ -234,7 +243,7 @@ def linkcode_resolve(domain: str, info: dict[str, str]) -> str | None:
234
243
  except (OSError, TypeError):
235
244
  lineno = None
236
245
 
237
- linespec = f"#L{lineno:d}-L{lineno + len(source) - 1:d}" if lineno else ''
246
+ linespec = f'#L{lineno:d}-L{lineno + len(source) - 1:d}' if lineno else ''
238
247
 
239
248
  startdir = Path(phasorpy.__file__).parent.parent
240
249
  try:
@@ -242,10 +251,7 @@ def linkcode_resolve(domain: str, info: dict[str, str]) -> str | None:
242
251
  except ValueError:
243
252
  return None
244
253
 
245
- if '.dev' in version or '.rc' in version:
246
- tag = 'main'
247
- else:
248
- tag = f'v{version}'
254
+ tag = 'main' if '.dev' in version or '.rc' in version else f'v{version}'
249
255
  return (
250
256
  f'https://github.com/phasorpy/phasorpy/blob/{tag}/src/{fn}{linespec}'
251
257
  )
@@ -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` should be honored by everyone participating in the
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 image and metadata from many
28
- time-resolved and hyperspectral file formats used in bio-imaging.
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 code reproducing the problem.
40
- Format the code using markdown, for example::
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 output
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.13.3
65
- phasorpy-0.5
66
- numpy-2.2.6
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 who are collaboratively developing.
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 on the PhasorPy source code, fork the repository by pressing the
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 line application, you may find
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 Python compatible C compiler is required for developing the PhasorPy
115
- library. For example, `Visual Studio <https://visualstudio.microsoft.com/>`_,
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 -r requirements_dev.txt
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 at the "new-feature-branch" branch on top
166
+ This replays local commits on the "new-feature-branch" branch on top
165
167
  of the latest PhasorPy upstream main branch.
166
- Merge-conflicts need to be resolved before submitting a pull request.
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 must be tested
173
- thorougly.
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
@@ -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 mere usage, not to
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 (``docs/release.rst``).
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
- $ open _build/html/index.html
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
- Open the personal fork on GitHub::
278
-
279
- $ open https://github.com/your-user-name/phasorpy.git
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
- to improve its implementation, documentation, and style.
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 fluorescence
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 the use of the library, from simple
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 bug fixes, or improve documentation.
23
+ submit fixes, and improve the documentation.
24
24
 
25
- The :doc:`code_of_conduct` should be honored by everyone participating in
26
- the PhasorPy community.
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.13862587 <https://doi.org/10.5281/zenodo.13862587>`_
52
- if PhasorPy contributes to a project that leads to a publication.
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
@@ -0,0 +1,5 @@
1
+ MIT License
2
+ ===========
3
+
4
+ .. literalinclude:: ../LICENSE.txt
5
+ :language: text