phasorpy 0.5__tar.gz → 0.7__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.5 → phasorpy-0.7}/MANIFEST.in +4 -0
  2. {phasorpy-0.5/src/phasorpy.egg-info → phasorpy-0.7}/PKG-INFO +3 -3
  3. {phasorpy-0.5 → phasorpy-0.7}/README.md +1 -1
  4. phasorpy-0.7/docs/_static/favicon.ico +0 -0
  5. phasorpy-0.7/docs/_static/phasorpy_logo.png +0 -0
  6. phasorpy-0.7/docs/_static/phasorpy_logo.svg +238 -0
  7. {phasorpy-0.5 → phasorpy-0.7}/docs/_static/switcher.json +9 -9
  8. phasorpy-0.7/docs/acknowledgments.rst +42 -0
  9. phasorpy-0.7/docs/api/component.rst +5 -0
  10. phasorpy-0.7/docs/api/cursor.rst +5 -0
  11. phasorpy-0.7/docs/api/experimental.rst +5 -0
  12. {phasorpy-0.5 → phasorpy-0.7}/docs/api/index.rst +4 -2
  13. phasorpy-0.7/docs/api/lifetime.rst +5 -0
  14. {phasorpy-0.5 → phasorpy-0.7}/docs/code_of_conduct.rst +4 -3
  15. {phasorpy-0.5 → phasorpy-0.7}/docs/conf.py +41 -5
  16. {phasorpy-0.5 → phasorpy-0.7}/docs/contributing.rst +6 -4
  17. {phasorpy-0.5 → phasorpy-0.7}/docs/index.rst +0 -1
  18. {phasorpy-0.5 → phasorpy-0.7}/docs/phasor_approach.rst +2 -2
  19. {phasorpy-0.5 → phasorpy-0.7}/docs/release.rst +132 -0
  20. {phasorpy-0.5 → phasorpy-0.7}/pyproject.toml +8 -7
  21. phasorpy-0.7/src/phasorpy/__init__.py +9 -0
  22. {phasorpy-0.5 → phasorpy-0.7}/src/phasorpy/_phasorpy.pyx +466 -11
  23. {phasorpy-0.5 → phasorpy-0.7}/src/phasorpy/_utils.py +222 -37
  24. {phasorpy-0.5 → phasorpy-0.7}/src/phasorpy/cli.py +74 -3
  25. {phasorpy-0.5 → phasorpy-0.7}/src/phasorpy/cluster.py +51 -21
  26. {phasorpy-0.5 → phasorpy-0.7}/src/phasorpy/color.py +11 -7
  27. phasorpy-0.7/src/phasorpy/component.py +707 -0
  28. phasorpy-0.5/src/phasorpy/cursors.py → phasorpy-0.7/src/phasorpy/cursor.py +31 -33
  29. {phasorpy-0.5 → phasorpy-0.7}/src/phasorpy/datasets.py +117 -7
  30. phasorpy-0.5/src/phasorpy/utils.py → phasorpy-0.7/src/phasorpy/experimental.py +135 -198
  31. phasorpy-0.7/src/phasorpy/io/__init__.py +138 -0
  32. phasorpy-0.7/src/phasorpy/io/_flimlabs.py +360 -0
  33. phasorpy-0.7/src/phasorpy/io/_leica.py +331 -0
  34. phasorpy-0.7/src/phasorpy/io/_ometiff.py +444 -0
  35. phasorpy-0.7/src/phasorpy/io/_other.py +890 -0
  36. phasorpy-0.7/src/phasorpy/io/_simfcs.py +652 -0
  37. phasorpy-0.7/src/phasorpy/lifetime.py +2058 -0
  38. {phasorpy-0.5 → phasorpy-0.7}/src/phasorpy/phasor.py +184 -1754
  39. phasorpy-0.7/src/phasorpy/plot/__init__.py +27 -0
  40. phasorpy-0.7/src/phasorpy/plot/_functions.py +723 -0
  41. phasorpy-0.7/src/phasorpy/plot/_lifetime_plots.py +563 -0
  42. phasorpy-0.7/src/phasorpy/plot/_phasorplot.py +1507 -0
  43. phasorpy-0.7/src/phasorpy/plot/_phasorplot_fret.py +561 -0
  44. phasorpy-0.7/src/phasorpy/utils.py +172 -0
  45. {phasorpy-0.5 → phasorpy-0.7/src/phasorpy.egg-info}/PKG-INFO +3 -3
  46. {phasorpy-0.5 → phasorpy-0.7}/src/phasorpy.egg-info/SOURCES.txt +40 -19
  47. {phasorpy-0.5 → phasorpy-0.7}/src/phasorpy.egg-info/requires.txt +1 -1
  48. {phasorpy-0.5 → phasorpy-0.7}/tests/conftest.py +1 -2
  49. {phasorpy-0.5 → phasorpy-0.7}/tests/test__phasorpy.py +79 -19
  50. {phasorpy-0.5 → phasorpy-0.7}/tests/test__utils.py +11 -6
  51. {phasorpy-0.5 → phasorpy-0.7}/tests/test_cli.py +23 -1
  52. {phasorpy-0.5 → phasorpy-0.7}/tests/test_cluster.py +22 -18
  53. phasorpy-0.7/tests/test_component.py +592 -0
  54. phasorpy-0.5/tests/test_cursors.py → phasorpy-0.7/tests/test_cursor.py +35 -20
  55. {phasorpy-0.5 → phasorpy-0.7}/tests/test_datasets.py +3 -0
  56. phasorpy-0.5/tests/test_utils.py → phasorpy-0.7/tests/test_experimental.py +13 -36
  57. phasorpy-0.7/tests/test_lifetime.py +1781 -0
  58. {phasorpy-0.5 → phasorpy-0.7}/tests/test_nan.py +60 -49
  59. {phasorpy-0.5 → phasorpy-0.7}/tests/test_phasor.py +199 -1501
  60. phasorpy-0.7/tests/test_phasorpy.py +12 -0
  61. phasorpy-0.7/tests/test_utils.py +52 -0
  62. phasorpy-0.7/tools/build_manylinux.cmd +13 -0
  63. phasorpy-0.7/tools/build_manylinux.sh +10 -0
  64. phasorpy-0.7/tools/sha256.py +36 -0
  65. phasorpy-0.5/tutorials/api/phasorpy_components.py → phasorpy-0.7/tutorials/api/phasorpy_component.py +74 -37
  66. phasorpy-0.5/tutorials/api/phasorpy_cursors.py → phasorpy-0.7/tutorials/api/phasorpy_cursor.py +29 -32
  67. phasorpy-0.5/tutorials/api/phasorpy_filtering.py → phasorpy-0.7/tutorials/api/phasorpy_filter.py +3 -3
  68. {phasorpy-0.5 → phasorpy-0.7}/tutorials/api/phasorpy_fret.py +4 -4
  69. {phasorpy-0.5 → phasorpy-0.7}/tutorials/api/phasorpy_io.py +44 -46
  70. {phasorpy-0.5 → phasorpy-0.7}/tutorials/api/phasorpy_lifetime_to_signal.py +3 -3
  71. phasorpy-0.5/tutorials/api/phasorpy_multi-harmonic.py → phasorpy-0.7/tutorials/api/phasorpy_multi_harmonic.py +1 -1
  72. {phasorpy-0.5 → phasorpy-0.7}/tutorials/api/phasorpy_pca.py +4 -4
  73. {phasorpy-0.5 → phasorpy-0.7}/tutorials/api/phasorpy_phasor_from_lifetime.py +8 -7
  74. {phasorpy-0.5 → phasorpy-0.7}/tutorials/api/phasorpy_phasorplot.py +139 -37
  75. phasorpy-0.7/tutorials/applications/phasorpy_component_fit.py +206 -0
  76. phasorpy-0.7/tutorials/applications/phasorpy_fret_efficiency.py +158 -0
  77. phasorpy-0.7/tutorials/applications/phasorpy_multidimensional.py +315 -0
  78. phasorpy-0.7/tutorials/misc/README.rst +4 -0
  79. phasorpy-0.7/tutorials/misc/phasorpy_logo.py +141 -0
  80. {phasorpy-0.5/tutorials/benchmarks → phasorpy-0.7/tutorials/misc}/phasorpy_phasor_from_signal.py +31 -30
  81. {phasorpy-0.5 → phasorpy-0.7}/tutorials/phasorpy_introduction.py +42 -38
  82. {phasorpy-0.5 → phasorpy-0.7}/tutorials/phasorpy_lfd_workshop.py +16 -14
  83. phasorpy-0.7/tutorials/phasorpy_lifetime_geometry.py +320 -0
  84. phasorpy-0.5/docs/_static/logo.png +0 -0
  85. phasorpy-0.5/docs/acknowledgments.rst +0 -36
  86. phasorpy-0.5/docs/api/components.rst +0 -5
  87. phasorpy-0.5/docs/api/cursors.rst +0 -5
  88. phasorpy-0.5/src/phasorpy/__init__.py +0 -10
  89. phasorpy-0.5/src/phasorpy/_io.py +0 -2655
  90. phasorpy-0.5/src/phasorpy/components.py +0 -313
  91. phasorpy-0.5/src/phasorpy/io.py +0 -9
  92. phasorpy-0.5/src/phasorpy/plot.py +0 -2318
  93. phasorpy-0.5/src/phasorpy/version.py +0 -80
  94. phasorpy-0.5/tests/test_components.py +0 -261
  95. phasorpy-0.5/tests/test_io.py +0 -1324
  96. phasorpy-0.5/tests/test_phasorpy.py +0 -18
  97. phasorpy-0.5/tests/test_plot.py +0 -633
  98. phasorpy-0.5/tutorials/benchmarks/README.rst +0 -4
  99. {phasorpy-0.5 → phasorpy-0.7}/LICENSE.txt +0 -0
  100. {phasorpy-0.5 → phasorpy-0.7}/docs/_static/categorical.png +0 -0
  101. {phasorpy-0.5 → phasorpy-0.7}/docs/_static/custom-icons.js +0 -0
  102. {phasorpy-0.5 → phasorpy-0.7}/docs/_static/srgb_spectrum.png +0 -0
  103. {phasorpy-0.5 → phasorpy-0.7}/docs/api/_phasorpy.rst +0 -0
  104. {phasorpy-0.5 → phasorpy-0.7}/docs/api/_utils.rst +0 -0
  105. {phasorpy-0.5 → phasorpy-0.7}/docs/api/cli.rst +0 -0
  106. {phasorpy-0.5 → phasorpy-0.7}/docs/api/cluster.rst +0 -0
  107. {phasorpy-0.5 → phasorpy-0.7}/docs/api/color.rst +0 -0
  108. {phasorpy-0.5 → phasorpy-0.7}/docs/api/datasets.rst +0 -0
  109. {phasorpy-0.5 → phasorpy-0.7}/docs/api/io.rst +0 -0
  110. {phasorpy-0.5 → phasorpy-0.7}/docs/api/phasor.rst +0 -0
  111. {phasorpy-0.5 → phasorpy-0.7}/docs/api/phasorpy.rst +0 -0
  112. {phasorpy-0.5 → phasorpy-0.7}/docs/api/plot.rst +0 -0
  113. {phasorpy-0.5 → phasorpy-0.7}/docs/api/utils.rst +0 -0
  114. {phasorpy-0.5 → phasorpy-0.7}/docs/license.rst +0 -0
  115. {phasorpy-0.5 → phasorpy-0.7}/setup.cfg +0 -0
  116. {phasorpy-0.5 → phasorpy-0.7}/setup.py +0 -0
  117. {phasorpy-0.5 → phasorpy-0.7}/src/phasorpy/__main__.py +0 -0
  118. {phasorpy-0.5 → phasorpy-0.7}/src/phasorpy/_typing.py +0 -0
  119. {phasorpy-0.5 → phasorpy-0.7}/src/phasorpy/conftest.py +0 -0
  120. {phasorpy-0.5 → phasorpy-0.7}/src/phasorpy/py.typed +0 -0
  121. {phasorpy-0.5 → phasorpy-0.7}/src/phasorpy.egg-info/dependency_links.txt +0 -0
  122. {phasorpy-0.5 → phasorpy-0.7}/src/phasorpy.egg-info/entry_points.txt +0 -0
  123. {phasorpy-0.5 → phasorpy-0.7}/src/phasorpy.egg-info/not-zip-safe +0 -0
  124. {phasorpy-0.5 → phasorpy-0.7}/src/phasorpy.egg-info/top_level.txt +0 -0
  125. {phasorpy-0.5 → phasorpy-0.7}/tests/test__typing.py +0 -0
  126. {phasorpy-0.5 → phasorpy-0.7}/tests/test_color.py +0 -0
  127. {phasorpy-0.5 → phasorpy-0.7}/tutorials/README.rst +0 -0
  128. {phasorpy-0.5 → phasorpy-0.7}/tutorials/api/README.rst +0 -0
  129. {phasorpy-0.5 → phasorpy-0.7}/tutorials/applications/README.rst +0 -0
@@ -14,6 +14,10 @@ recursive-include tutorials *.rst
14
14
  exclude *.cmd
15
15
  exclude docs/sg_execution_times.rst
16
16
 
17
+ include tools/*.py
18
+ include tools/*.sh
19
+ include tools/*.cmd
20
+
17
21
  recursive-exclude * __pycache__
18
22
  recursive-exclude * *.py[co]
19
23
  recursive-exclude * *Copy*
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: phasorpy
3
- Version: 0.5
3
+ Version: 0.7
4
4
  Summary: Analysis of fluorescence lifetime and hyperspectral images using the phasor approach
5
5
  Author: PhasorPy Contributors
6
6
  License-Expression: MIT
@@ -24,7 +24,7 @@ Classifier: Programming Language :: Python :: 3.13
24
24
  Requires-Python: >=3.11
25
25
  Description-Content-Type: text/markdown
26
26
  License-File: LICENSE.txt
27
- Requires-Dist: numpy>=1.25.0
27
+ Requires-Dist: numpy>=1.26.0
28
28
  Requires-Dist: matplotlib>=3.8.0
29
29
  Requires-Dist: scipy>=1.11.0
30
30
  Requires-Dist: click
@@ -66,7 +66,7 @@ PhasorPy is a community-maintained project.
66
66
  in the form of bug reports, bug fixes, feature implementations, documentation,
67
67
  datasets, and enhancement proposals are welcome.
68
68
 
69
- This software project is supported in part by the
69
+ This software project was supported in part by the
70
70
  [Essential Open Source Software for Science (EOSS)](https://chanzuckerberg.com/eoss/)
71
71
  program at
72
72
  [Chan Zuckerberg Initiative](https://chanzuckerberg.com/).
@@ -15,7 +15,7 @@ PhasorPy is a community-maintained project.
15
15
  in the form of bug reports, bug fixes, feature implementations, documentation,
16
16
  datasets, and enhancement proposals are welcome.
17
17
 
18
- This software project is supported in part by the
18
+ This software project was supported in part by the
19
19
  [Essential Open Source Software for Science (EOSS)](https://chanzuckerberg.com/eoss/)
20
20
  program at
21
21
  [Chan Zuckerberg Initiative](https://chanzuckerberg.com/).
Binary file
@@ -0,0 +1,238 @@
1
+ <?xml version="1.0" encoding="utf-8" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
3
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <svg xmlns:xlink="http://www.w3.org/1999/xlink" width="466.821818pt" height="475.2pt" viewBox="0 0 466.821818 475.2" xmlns="http://www.w3.org/2000/svg" version="1.1">
5
+ <metadata>
6
+ <rdf:RDF xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
7
+ <cc:Work>
8
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
9
+ <dc:date>2025-08-16T13:06:26.207012</dc:date>
10
+ <dc:format>image/svg+xml</dc:format>
11
+ <dc:creator>
12
+ <cc:Agent>
13
+ <dc:title>Matplotlib v3.10.3, https://matplotlib.org/</dc:title>
14
+ </cc:Agent>
15
+ </dc:creator>
16
+ </cc:Work>
17
+ </rdf:RDF>
18
+ </metadata>
19
+ <defs>
20
+ <style type="text/css">*{stroke-linejoin: round; stroke-linecap: butt}</style>
21
+ </defs>
22
+ <g id="figure_1">
23
+ <g id="patch_1">
24
+ <path d="M 0 475.2
25
+ L 466.821818 475.2
26
+ L 466.821818 0
27
+ L 0 0
28
+ L 0 475.2
29
+ z
30
+ " style="fill: none"/>
31
+ </g>
32
+ <g id="axes_1">
33
+ <g id="patch_2">
34
+ <path d="M 442.865455 237.6
35
+ C 442.865455 182.070506 420.782921 128.758553 381.517639 89.493271
36
+ C 342.252357 50.227989 288.940403 28.145455 233.410909 28.145455
37
+ C 177.881415 28.145455 124.569462 50.227989 85.30418 89.493271
38
+ C 46.038898 128.758553 23.956364 182.070506 23.956364 237.6
39
+ " clip-path="url(#peaa5e65bc5)" style="fill: none; stroke: #808080; stroke-linejoin: miter"/>
40
+ </g>
41
+ <g id="patch_3">
42
+ <path d="M 442.865455 237.6
43
+ C 442.865455 182.070506 420.782921 128.758553 381.517639 89.493271
44
+ C 342.252357 50.227989 288.940403 28.145455 233.410909 28.145455
45
+ C 177.881415 28.145455 124.569462 50.227989 85.30418 89.493271
46
+ C 46.038898 128.758553 23.956364 182.070506 23.956364 237.6
47
+ " clip-path="url(#peaa5e65bc5)" style="fill: none; stroke: #1f77b4; stroke-width: 25; stroke-linejoin: miter; stroke-linecap: round"/>
48
+ </g>
49
+ <g id="line2d_1"/>
50
+ <g id="patch_4">
51
+ <path d="M 298.117675 163.206254
52
+ C 307.005354 163.206254 315.530214 159.675142 321.814752 153.390604
53
+ C 328.09929 147.106065 331.630402 138.581206 331.630402 129.693527
54
+ C 331.630402 120.805848 328.09929 112.280988 321.814752 105.99645
55
+ C 315.530214 99.711912 307.005354 96.1808 298.117675 96.1808
56
+ C 289.229996 96.1808 280.705137 99.711912 274.420598 105.99645
57
+ C 268.13606 112.280988 264.604948 120.805848 264.604948 129.693527
58
+ C 264.604948 138.581206 268.13606 147.106065 274.420598 153.390604
59
+ C 280.705137 159.675142 289.229996 163.206254 298.117675 163.206254
60
+ L 298.117675 163.206254
61
+ z
62
+ " clip-path="url(#peaa5e65bc5)" style="fill: none; stroke: #1f77b4; stroke-width: 25; stroke-linejoin: miter"/>
63
+ </g>
64
+ <g id="axes_2">
65
+ <g id="line2d_2">
66
+ <path d="M 33.934017 302.312103
67
+ L 52.708312 303.145145
68
+ L 60.530936 303.285992
69
+ L 65.224509 303.115831
70
+ L 68.353559 302.767921
71
+ L 71.482608 302.104113
72
+ L 73.047133 301.605824
73
+ L 74.611657 300.964941
74
+ L 76.176182 300.153793
75
+ L 77.740707 299.141708
76
+ L 79.305231 297.895328
77
+ L 80.869756 296.379095
78
+ L 82.434281 294.55597
79
+ L 83.998805 292.388356
80
+ L 85.56333 289.839242
81
+ L 87.127855 286.873547
82
+ L 88.692379 283.459621
83
+ L 90.256904 279.570861
84
+ L 91.821428 275.187373
85
+ L 93.385953 270.2976
86
+ L 94.950478 264.899823
87
+ L 96.515002 259.003446
88
+ L 99.644052 245.813598
89
+ L 102.773101 231.05248
90
+ L 107.466675 207.143939
91
+ L 112.160249 183.246069
92
+ L 115.289298 168.602365
93
+ L 116.853823 161.934547
94
+ L 118.418347 155.802157
95
+ L 119.982872 150.265116
96
+ L 121.547397 145.369973
97
+ L 123.111921 141.149153
98
+ L 124.676446 137.620767
99
+ L 126.240971 134.788968
100
+ L 127.805495 132.644787
101
+ L 129.37002 131.167393
102
+ L 130.934545 130.325665
103
+ L 132.499069 130.08
104
+ L 134.063594 130.384228
105
+ L 135.628119 131.187554
106
+ L 137.192643 132.436435
107
+ L 138.757168 134.076305
108
+ L 140.321693 136.053113
109
+ L 141.886217 138.314617
110
+ L 145.015267 143.497746
111
+ L 148.144316 149.276877
112
+ L 154.402414 161.575759
113
+ L 160.660513 173.769381
114
+ L 165.354087 182.443472
115
+ L 170.047661 190.601851
116
+ L 174.741235 198.227271
117
+ L 179.434809 205.335712
118
+ L 184.128383 211.955743
119
+ L 188.821957 218.119189
120
+ L 193.515531 223.85745
121
+ L 198.209105 229.200278
122
+ L 202.902678 234.175488
123
+ L 207.596252 238.808971
124
+ L 212.289826 243.1248
125
+ L 216.9834 247.145351
126
+ L 221.676974 250.891419
127
+ L 226.370548 254.382332
128
+ L 231.064122 257.636052
129
+ L 235.757696 260.669275
130
+ L 240.45127 263.497516
131
+ L 246.709369 266.97442
132
+ L 252.967467 270.14383
133
+ L 259.225566 273.034227
134
+ L 265.483664 275.671441
135
+ L 271.741763 278.0789
136
+ L 277.999862 280.277854
137
+ L 285.822485 282.762525
138
+ L 293.645108 284.985144
139
+ L 301.467731 286.975585
140
+ L 309.290354 288.760295
141
+ L 318.677502 290.663147
142
+ L 328.06465 292.338714
143
+ L 339.016323 294.046839
144
+ L 349.967995 295.528544
145
+ L 362.484193 296.989279
146
+ L 376.564914 298.387397
147
+ L 392.210161 299.694814
148
+ L 409.419932 300.896578
149
+ L 429.758752 302.071605
150
+ L 432.887802 302.233093
151
+ L 432.887802 302.233093
152
+ " clip-path="url(#p717529631e)" style="fill: none; stroke: #ff7f0e; stroke-width: 25; stroke-linecap: round"/>
153
+ </g>
154
+ </g>
155
+ <g id="axes_3">
156
+ <g id="line2d_3">
157
+ <path d="M 79.176198 378.045938
158
+ L 85.224618 372.974192
159
+ L 92.482722 366.605631
160
+ L 108.208614 352.38659
161
+ L 116.676403 344.890774
162
+ L 123.934507 338.774217
163
+ L 129.982927 333.996198
164
+ L 134.821663 330.434753
165
+ L 139.660399 327.142595
166
+ L 144.499135 324.151431
167
+ L 149.337871 321.490065
168
+ L 152.966923 319.726017
169
+ L 156.595975 318.171527
170
+ L 160.225027 316.835021
171
+ L 163.854079 315.72374
172
+ L 167.483131 314.843707
173
+ L 171.112183 314.19969
174
+ L 174.741235 313.79518
175
+ L 178.370287 313.632369
176
+ L 181.999339 313.712139
177
+ L 185.628391 314.034058
178
+ L 189.257443 314.596381
179
+ L 192.886495 315.396061
180
+ L 196.515547 316.428764
181
+ L 200.144599 317.688894
182
+ L 203.773651 319.169623
183
+ L 207.402703 320.862926
184
+ L 211.031755 322.759627
185
+ L 215.870491 325.587041
186
+ L 220.709227 328.73043
187
+ L 225.547963 332.159519
188
+ L 230.386699 335.841285
189
+ L 236.435119 340.744598
190
+ L 243.693223 346.972253
191
+ L 253.370695 355.636354
192
+ L 270.306271 370.850811
193
+ L 277.564375 377.025496
194
+ L 283.612795 381.868451
195
+ L 288.451531 385.491953
196
+ L 293.290267 388.854511
197
+ L 298.129003 391.923743
198
+ L 302.967739 394.67009
199
+ L 306.596791 396.501922
200
+ L 310.225843 398.127257
201
+ L 313.854895 399.537289
202
+ L 317.483947 400.724375
203
+ L 321.113 401.682083
204
+ L 324.742052 402.405223
205
+ L 328.371104 402.889876
206
+ L 332.000156 403.133417
207
+ L 335.629208 403.134524
208
+ L 339.25826 402.893192
209
+ L 342.887312 402.41073
210
+ L 346.516364 401.68975
211
+ L 350.145416 400.734162
212
+ L 353.774468 399.549142
213
+ L 357.40352 398.141112
214
+ L 361.032572 396.517704
215
+ L 364.661624 394.687713
216
+ L 368.290676 392.661058
217
+ L 373.129412 389.672056
218
+ L 377.968148 386.381855
219
+ L 382.806884 382.822139
220
+ L 387.64562 379.027192
221
+ L 387.64562 379.027192
222
+ " clip-path="url(#p1db590b24e)" style="fill: none; stroke: #2ca02c; stroke-width: 25; stroke-linecap: round"/>
223
+ </g>
224
+ </g>
225
+ </g>
226
+ </g>
227
+ <defs>
228
+ <clipPath id="peaa5e65bc5">
229
+ <rect x="7.2" y="7.2" width="452.421818" height="460.8"/>
230
+ </clipPath>
231
+ <clipPath id="p717529631e">
232
+ <rect x="13.986327" y="110.88" width="438.849164" height="207.36"/>
233
+ </clipPath>
234
+ <clipPath id="p1db590b24e">
235
+ <rect x="63.752727" y="300.7296" width="339.316364" height="115.2"/>
236
+ </clipPath>
237
+ </defs>
238
+ </svg>
@@ -1,23 +1,23 @@
1
1
  [
2
2
  {
3
3
  "name": "dev",
4
- "version": "0.6",
4
+ "version": "0.8",
5
5
  "url": "https://www.phasorpy.org/docs/dev/"
6
6
  },
7
7
  {
8
- "name": "0.5 (stable)",
9
- "version": "0.5",
8
+ "name": "0.7 (stable)",
9
+ "version": "0.7",
10
10
  "url": "https://www.phasorpy.org/docs/stable/",
11
11
  "preferred": true
12
12
  },
13
13
  {
14
- "name": "0.4",
15
- "version": "0.4",
16
- "url": "https://www.phasorpy.org/docs/v0.4/"
14
+ "name": "0.6",
15
+ "version": "0.6",
16
+ "url": "https://www.phasorpy.org/docs/v0.6/"
17
17
  },
18
18
  {
19
- "name": "0.3",
20
- "version": "0.3",
21
- "url": "https://www.phasorpy.org/docs/v0.3/"
19
+ "name": "0.5",
20
+ "version": "0.5",
21
+ "url": "https://www.phasorpy.org/docs/v0.5/"
22
22
  }
23
23
  ]
@@ -0,0 +1,42 @@
1
+ Acknowledgments
2
+ ===============
3
+
4
+ The PhasorPy project was established by the
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
7
+ `Laboratory for Fluorescence Dynamics <https://www.lfd.uci.edu>`_
8
+ at the University of California, Irvine.
9
+
10
+ PhasorPy was inspired by the
11
+ `Globals for Images · SimFCS <https://www.lfd.uci.edu/globals/>`_ software by
12
+ Enrico Gratton.
13
+
14
+ This software project was supported in part by the
15
+ `Essential Open Source Software for Science (EOSS)
16
+ <https://chanzuckerberg.com/eoss/>`_ program at
17
+ `Chan Zuckerberg Initiative <https://chanzuckerberg.com/>`_
18
+ (grant number 2022-252604, 2022-2024).
19
+
20
+ .. _contributors:
21
+
22
+ Contributors
23
+ ------------
24
+
25
+ PhasorPy is developed by `contributors to the PhasorPy repository
26
+ <https://github.com/phasorpy/phasorpy/graphs/contributors>`_
27
+ and
28
+ `members of the PhasorPy organization
29
+ <https://github.com/orgs/phasorpy/people>`_.
30
+
31
+ User Community
32
+ --------------
33
+
34
+ Many thanks to the PhasorPy user community for their feedback, bug reports,
35
+ feature suggestions, and data files that have helped improve the library.
36
+
37
+ Citation
38
+ --------
39
+
40
+ If PhasorPy contributes to a project that leads to a publication,
41
+ please cite
42
+ `doi: 10.5281/zenodo.13862586 <https://doi.org/10.5281/zenodo.13862586>`_.
@@ -0,0 +1,5 @@
1
+ phasorpy.component
2
+ ------------------
3
+
4
+ .. automodule:: phasorpy.component
5
+ :members:
@@ -0,0 +1,5 @@
1
+ phasorpy.cursor
2
+ ---------------
3
+
4
+ .. automodule:: phasorpy.cursor
5
+ :members:
@@ -0,0 +1,5 @@
1
+ phasorpy.experimental
2
+ ---------------------
3
+
4
+ .. automodule:: phasorpy.experimental
5
+ :members:
@@ -13,12 +13,14 @@ PhasorPy library version |version|.
13
13
 
14
14
  phasorpy
15
15
  phasor
16
- cursors
17
- components
16
+ lifetime
17
+ component
18
18
  cluster
19
+ cursor
19
20
  plot
20
21
  io
21
22
  color
23
+ experimental
22
24
  datasets
23
25
  utils
24
26
  _utils
@@ -0,0 +1,5 @@
1
+ phasorpy.lifetime
2
+ -----------------
3
+
4
+ .. automodule:: phasorpy.lifetime
5
+ :members:
@@ -1,3 +1,5 @@
1
+ :orphan:
2
+
1
3
  Code of conduct
2
4
  ===============
3
5
 
@@ -68,9 +70,8 @@ Enforcement
68
70
  -----------
69
71
 
70
72
  Instances of abusive, harassing, or otherwise unacceptable behavior may be
71
- reported to the community leader responsible for enforcement:
72
-
73
- - `Leonel Malacrida <conduct@phasorpy.org>`_
73
+ reported to `<conduct@phasorpy.org>`_ and `PhasorPy organization members
74
+ <https://github.com/orgs/phasorpy/people>`_.
74
75
 
75
76
  All complaints will be reviewed and investigated promptly and fairly.
76
77
 
@@ -2,9 +2,10 @@
2
2
  # https://www.sphinx-doc.org/en/master/usage/configuration.html
3
3
  # pylint: skip-file
4
4
 
5
- # import os
6
- # import sys
7
- # sys.path.insert(0, os.path.abspath('../src/'))
5
+ import os
6
+ import sys
7
+
8
+ sys.path.insert(0, os.path.dirname(__file__))
8
9
 
9
10
  # remove the examples header from HTML tutorials
10
11
  import sphinx_gallery.gen_rst
@@ -59,8 +60,8 @@ html_static_path = ['_static']
59
60
  html_js_files = ['custom-icons.js']
60
61
  html_show_sourcelink = False
61
62
 
62
- html_logo = '_static/logo.png'
63
- # html_favicon = ''
63
+ html_logo = '_static/phasorpy_logo.svg'
64
+ html_favicon = '_static/favicon.ico'
64
65
 
65
66
  pygments_style = 'sphinx'
66
67
 
@@ -123,8 +124,43 @@ sphinx_gallery_conf = {
123
124
  'gallery_dirs': 'tutorials',
124
125
  'reference_url': {'phasorpy': None},
125
126
  'matplotlib_animations': True,
127
+ 'within_subsection_order': 'conf.TutorialOrder',
126
128
  }
127
129
 
130
+
131
+ class TutorialOrder:
132
+ """Order tutorials in gallery subsections."""
133
+
134
+ tutorials = [
135
+ 'introduction',
136
+ 'lifetime_geometry',
137
+ 'lfd_workshop',
138
+ # api
139
+ 'io',
140
+ 'phasor_from_lifetime',
141
+ 'multi_harmonic',
142
+ 'filter',
143
+ 'phasorplot',
144
+ 'cursor',
145
+ 'component',
146
+ 'fret',
147
+ 'lifetime_to_signal',
148
+ 'pca',
149
+ # applications
150
+ 'component_fit',
151
+ 'fret_efficiency',
152
+ 'multidimensional',
153
+ # misc
154
+ 'phasor_from_signal',
155
+ 'logo',
156
+ ]
157
+
158
+ def __init__(self, srcdir: str): ...
159
+
160
+ def __call__(self, filename: str) -> int:
161
+ return self.tutorials.index(filename[9:-3])
162
+
163
+
128
164
  copybutton_prompt_text = (
129
165
  r'>>> |\.\.\. |\$ |In \[\d*\]: | {2,5}\.\.\.: | {5,8}: '
130
166
  )
@@ -61,9 +61,9 @@ and include the following items in the bug report:
61
61
  of::
62
62
 
63
63
  $ python -m phasorpy versions
64
- Python 3.11.4 ...
65
- phasorpy 0.1.dev ...
66
- numpy 1.25.2
64
+ Python-3.13.3
65
+ phasorpy-0.5
66
+ numpy-2.2.6
67
67
  ...
68
68
 
69
69
  Contribute code or documentation
@@ -289,4 +289,6 @@ and must pass before code or documentation can be accepted.
289
289
  Other PhasorPy developers will review the pull request to check and help
290
290
  to improve its implementation, documentation, and style.
291
291
 
292
- Pull requests must be approved by a core team member before merging.
292
+ Pull requests must be approved by a
293
+ `PhasorPy organization member <https://github.com/orgs/phasorpy/people>`_
294
+ before merging.
@@ -62,7 +62,6 @@ Contents
62
62
  api/index
63
63
  release
64
64
  contributing
65
- code_of_conduct
66
65
  acknowledgments
67
66
  license
68
67
 
@@ -200,8 +200,8 @@ approach to analyze fluorescence time-resolved or spectral images:
200
200
  microscopy written in MATLAB by Alexander Vallmitjana, released under
201
201
  the CC BY 4.0 license.
202
202
 
203
- - `AlliGator <https://alligator-distribution.readthedocs.io>`_
204
- is a free, closed-source software for fluorescence lifetime image data
203
+ - `AlliGator <https://github.com/smXplorer/AlliGator>`_
204
+ is an open-source software for fluorescence lifetime image data
205
205
  analysis using the phasor approach and standard nonlinear fitting.
206
206
  The software is written in LabVIEW for Windows by Xavier Michalet.
207
207