phasorpy 0.6__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.
- {phasorpy-0.6 → phasorpy-0.7}/MANIFEST.in +4 -0
- {phasorpy-0.6/src/phasorpy.egg-info → phasorpy-0.7}/PKG-INFO +2 -2
- phasorpy-0.7/docs/_static/favicon.ico +0 -0
- phasorpy-0.7/docs/_static/phasorpy_logo.png +0 -0
- phasorpy-0.7/docs/_static/phasorpy_logo.svg +238 -0
- {phasorpy-0.6 → phasorpy-0.7}/docs/_static/switcher.json +8 -8
- phasorpy-0.7/docs/api/component.rst +5 -0
- phasorpy-0.7/docs/api/cursor.rst +5 -0
- {phasorpy-0.6 → phasorpy-0.7}/docs/api/index.rst +3 -2
- phasorpy-0.7/docs/api/lifetime.rst +5 -0
- {phasorpy-0.6 → phasorpy-0.7}/docs/conf.py +9 -7
- {phasorpy-0.6 → phasorpy-0.7}/docs/release.rst +69 -1
- {phasorpy-0.6 → phasorpy-0.7}/pyproject.toml +5 -4
- {phasorpy-0.6 → phasorpy-0.7}/src/phasorpy/__init__.py +1 -1
- {phasorpy-0.6 → phasorpy-0.7}/src/phasorpy/_phasorpy.pyx +281 -9
- {phasorpy-0.6 → phasorpy-0.7}/src/phasorpy/_utils.py +101 -28
- {phasorpy-0.6 → phasorpy-0.7}/src/phasorpy/cli.py +19 -1
- {phasorpy-0.6 → phasorpy-0.7}/src/phasorpy/cluster.py +10 -16
- {phasorpy-0.6 → phasorpy-0.7}/src/phasorpy/color.py +11 -7
- phasorpy-0.6/src/phasorpy/components.py → phasorpy-0.7/src/phasorpy/component.py +255 -32
- phasorpy-0.6/src/phasorpy/cursors.py → phasorpy-0.7/src/phasorpy/cursor.py +31 -33
- {phasorpy-0.6 → phasorpy-0.7}/src/phasorpy/datasets.py +117 -7
- {phasorpy-0.6 → phasorpy-0.7}/src/phasorpy/experimental.py +8 -10
- {phasorpy-0.6 → phasorpy-0.7}/src/phasorpy/io/__init__.py +1 -0
- {phasorpy-0.6 → phasorpy-0.7}/src/phasorpy/io/_flimlabs.py +20 -10
- {phasorpy-0.6 → phasorpy-0.7}/src/phasorpy/io/_leica.py +3 -1
- {phasorpy-0.6 → phasorpy-0.7}/src/phasorpy/io/_ometiff.py +2 -3
- {phasorpy-0.6 → phasorpy-0.7}/src/phasorpy/io/_other.py +115 -7
- {phasorpy-0.6 → phasorpy-0.7}/src/phasorpy/io/_simfcs.py +41 -16
- phasorpy-0.7/src/phasorpy/lifetime.py +2058 -0
- {phasorpy-0.6 → phasorpy-0.7}/src/phasorpy/phasor.py +71 -1947
- {phasorpy-0.6 → phasorpy-0.7}/src/phasorpy/plot/_functions.py +8 -2
- {phasorpy-0.6 → phasorpy-0.7}/src/phasorpy/plot/_lifetime_plots.py +33 -23
- {phasorpy-0.6 → phasorpy-0.7}/src/phasorpy/plot/_phasorplot.py +547 -159
- {phasorpy-0.6 → phasorpy-0.7}/src/phasorpy/plot/_phasorplot_fret.py +11 -9
- {phasorpy-0.6 → phasorpy-0.7}/src/phasorpy/utils.py +21 -10
- {phasorpy-0.6 → phasorpy-0.7/src/phasorpy.egg-info}/PKG-INFO +2 -2
- {phasorpy-0.6 → phasorpy-0.7}/src/phasorpy.egg-info/SOURCES.txt +23 -13
- {phasorpy-0.6 → phasorpy-0.7}/src/phasorpy.egg-info/requires.txt +1 -1
- {phasorpy-0.6 → phasorpy-0.7}/tests/test__phasorpy.py +5 -5
- {phasorpy-0.6 → phasorpy-0.7}/tests/test__utils.py +8 -3
- {phasorpy-0.6 → phasorpy-0.7}/tests/test_cli.py +8 -0
- {phasorpy-0.6 → phasorpy-0.7}/tests/test_cluster.py +11 -11
- phasorpy-0.6/tests/test_components.py → phasorpy-0.7/tests/test_component.py +228 -18
- phasorpy-0.6/tests/test_cursors.py → phasorpy-0.7/tests/test_cursor.py +35 -20
- {phasorpy-0.6 → phasorpy-0.7}/tests/test_datasets.py +3 -0
- {phasorpy-0.6 → phasorpy-0.7}/tests/test_experimental.py +2 -2
- phasorpy-0.7/tests/test_lifetime.py +1781 -0
- {phasorpy-0.6 → phasorpy-0.7}/tests/test_nan.py +45 -43
- {phasorpy-0.6 → phasorpy-0.7}/tests/test_phasor.py +89 -1614
- phasorpy-0.7/tools/build_manylinux.cmd +13 -0
- phasorpy-0.7/tools/build_manylinux.sh +10 -0
- phasorpy-0.7/tools/sha256.py +36 -0
- phasorpy-0.6/tutorials/api/phasorpy_components.py → phasorpy-0.7/tutorials/api/phasorpy_component.py +11 -11
- phasorpy-0.6/tutorials/api/phasorpy_cursors.py → phasorpy-0.7/tutorials/api/phasorpy_cursor.py +29 -32
- phasorpy-0.6/tutorials/api/phasorpy_filtering.py → phasorpy-0.7/tutorials/api/phasorpy_filter.py +3 -3
- {phasorpy-0.6 → phasorpy-0.7}/tutorials/api/phasorpy_fret.py +4 -4
- {phasorpy-0.6 → phasorpy-0.7}/tutorials/api/phasorpy_io.py +42 -42
- {phasorpy-0.6 → phasorpy-0.7}/tutorials/api/phasorpy_lifetime_to_signal.py +3 -3
- phasorpy-0.6/tutorials/api/phasorpy_multi-harmonic.py → phasorpy-0.7/tutorials/api/phasorpy_multi_harmonic.py +1 -1
- {phasorpy-0.6 → phasorpy-0.7}/tutorials/api/phasorpy_pca.py +4 -4
- {phasorpy-0.6 → phasorpy-0.7}/tutorials/api/phasorpy_phasor_from_lifetime.py +8 -7
- {phasorpy-0.6 → phasorpy-0.7}/tutorials/api/phasorpy_phasorplot.py +139 -37
- {phasorpy-0.6 → phasorpy-0.7}/tutorials/applications/phasorpy_component_fit.py +35 -20
- {phasorpy-0.6 → phasorpy-0.7}/tutorials/applications/phasorpy_fret_efficiency.py +19 -11
- phasorpy-0.7/tutorials/applications/phasorpy_multidimensional.py +315 -0
- phasorpy-0.7/tutorials/misc/README.rst +4 -0
- phasorpy-0.7/tutorials/misc/phasorpy_logo.py +141 -0
- {phasorpy-0.6 → phasorpy-0.7}/tutorials/phasorpy_introduction.py +39 -37
- {phasorpy-0.6 → phasorpy-0.7}/tutorials/phasorpy_lfd_workshop.py +16 -14
- {phasorpy-0.6 → phasorpy-0.7}/tutorials/phasorpy_lifetime_geometry.py +94 -80
- phasorpy-0.6/docs/_static/logo.png +0 -0
- phasorpy-0.6/docs/api/components.rst +0 -5
- phasorpy-0.6/docs/api/cursors.rst +0 -5
- phasorpy-0.6/tutorials/benchmarks/README.rst +0 -4
- {phasorpy-0.6 → phasorpy-0.7}/LICENSE.txt +0 -0
- {phasorpy-0.6 → phasorpy-0.7}/README.md +0 -0
- {phasorpy-0.6 → phasorpy-0.7}/docs/_static/categorical.png +0 -0
- {phasorpy-0.6 → phasorpy-0.7}/docs/_static/custom-icons.js +0 -0
- {phasorpy-0.6 → phasorpy-0.7}/docs/_static/srgb_spectrum.png +0 -0
- {phasorpy-0.6 → phasorpy-0.7}/docs/acknowledgments.rst +0 -0
- {phasorpy-0.6 → phasorpy-0.7}/docs/api/_phasorpy.rst +0 -0
- {phasorpy-0.6 → phasorpy-0.7}/docs/api/_utils.rst +0 -0
- {phasorpy-0.6 → phasorpy-0.7}/docs/api/cli.rst +0 -0
- {phasorpy-0.6 → phasorpy-0.7}/docs/api/cluster.rst +0 -0
- {phasorpy-0.6 → phasorpy-0.7}/docs/api/color.rst +0 -0
- {phasorpy-0.6 → phasorpy-0.7}/docs/api/datasets.rst +0 -0
- {phasorpy-0.6 → phasorpy-0.7}/docs/api/experimental.rst +0 -0
- {phasorpy-0.6 → phasorpy-0.7}/docs/api/io.rst +0 -0
- {phasorpy-0.6 → phasorpy-0.7}/docs/api/phasor.rst +0 -0
- {phasorpy-0.6 → phasorpy-0.7}/docs/api/phasorpy.rst +0 -0
- {phasorpy-0.6 → phasorpy-0.7}/docs/api/plot.rst +0 -0
- {phasorpy-0.6 → phasorpy-0.7}/docs/api/utils.rst +0 -0
- {phasorpy-0.6 → phasorpy-0.7}/docs/code_of_conduct.rst +0 -0
- {phasorpy-0.6 → phasorpy-0.7}/docs/contributing.rst +0 -0
- {phasorpy-0.6 → phasorpy-0.7}/docs/index.rst +0 -0
- {phasorpy-0.6 → phasorpy-0.7}/docs/license.rst +0 -0
- {phasorpy-0.6 → phasorpy-0.7}/docs/phasor_approach.rst +0 -0
- {phasorpy-0.6 → phasorpy-0.7}/setup.cfg +0 -0
- {phasorpy-0.6 → phasorpy-0.7}/setup.py +0 -0
- {phasorpy-0.6 → phasorpy-0.7}/src/phasorpy/__main__.py +0 -0
- {phasorpy-0.6 → phasorpy-0.7}/src/phasorpy/_typing.py +0 -0
- {phasorpy-0.6 → phasorpy-0.7}/src/phasorpy/conftest.py +0 -0
- {phasorpy-0.6 → phasorpy-0.7}/src/phasorpy/plot/__init__.py +0 -0
- {phasorpy-0.6 → phasorpy-0.7}/src/phasorpy/py.typed +0 -0
- {phasorpy-0.6 → phasorpy-0.7}/src/phasorpy.egg-info/dependency_links.txt +0 -0
- {phasorpy-0.6 → phasorpy-0.7}/src/phasorpy.egg-info/entry_points.txt +0 -0
- {phasorpy-0.6 → phasorpy-0.7}/src/phasorpy.egg-info/not-zip-safe +0 -0
- {phasorpy-0.6 → phasorpy-0.7}/src/phasorpy.egg-info/top_level.txt +0 -0
- {phasorpy-0.6 → phasorpy-0.7}/tests/conftest.py +0 -0
- {phasorpy-0.6 → phasorpy-0.7}/tests/test__typing.py +0 -0
- {phasorpy-0.6 → phasorpy-0.7}/tests/test_color.py +0 -0
- {phasorpy-0.6 → phasorpy-0.7}/tests/test_phasorpy.py +0 -0
- {phasorpy-0.6 → phasorpy-0.7}/tests/test_utils.py +0 -0
- {phasorpy-0.6 → phasorpy-0.7}/tutorials/README.rst +0 -0
- {phasorpy-0.6 → phasorpy-0.7}/tutorials/api/README.rst +0 -0
- {phasorpy-0.6 → phasorpy-0.7}/tutorials/applications/README.rst +0 -0
- {phasorpy-0.6/tutorials/benchmarks → phasorpy-0.7/tutorials/misc}/phasorpy_phasor_from_signal.py +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.
|
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.
|
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
|
Binary file
|
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.
|
4
|
+
"version": "0.8",
|
5
5
|
"url": "https://www.phasorpy.org/docs/dev/"
|
6
6
|
},
|
7
7
|
{
|
8
|
-
"name": "0.
|
9
|
-
"version": "0.
|
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
|
+
{
|
14
|
+
"name": "0.6",
|
15
|
+
"version": "0.6",
|
16
|
+
"url": "https://www.phasorpy.org/docs/v0.6/"
|
17
|
+
},
|
13
18
|
{
|
14
19
|
"name": "0.5",
|
15
20
|
"version": "0.5",
|
16
21
|
"url": "https://www.phasorpy.org/docs/v0.5/"
|
17
|
-
},
|
18
|
-
{
|
19
|
-
"name": "0.4",
|
20
|
-
"version": "0.4",
|
21
|
-
"url": "https://www.phasorpy.org/docs/v0.4/"
|
22
22
|
}
|
23
23
|
]
|
@@ -60,8 +60,8 @@ html_static_path = ['_static']
|
|
60
60
|
html_js_files = ['custom-icons.js']
|
61
61
|
html_show_sourcelink = False
|
62
62
|
|
63
|
-
html_logo = '_static/
|
64
|
-
|
63
|
+
html_logo = '_static/phasorpy_logo.svg'
|
64
|
+
html_favicon = '_static/favicon.ico'
|
65
65
|
|
66
66
|
pygments_style = 'sphinx'
|
67
67
|
|
@@ -138,19 +138,21 @@ class TutorialOrder:
|
|
138
138
|
# api
|
139
139
|
'io',
|
140
140
|
'phasor_from_lifetime',
|
141
|
-
'
|
142
|
-
'
|
141
|
+
'multi_harmonic',
|
142
|
+
'filter',
|
143
143
|
'phasorplot',
|
144
|
-
'
|
145
|
-
'
|
144
|
+
'cursor',
|
145
|
+
'component',
|
146
146
|
'fret',
|
147
147
|
'lifetime_to_signal',
|
148
148
|
'pca',
|
149
149
|
# applications
|
150
150
|
'component_fit',
|
151
151
|
'fret_efficiency',
|
152
|
-
|
152
|
+
'multidimensional',
|
153
|
+
# misc
|
153
154
|
'phasor_from_signal',
|
155
|
+
'logo',
|
154
156
|
]
|
155
157
|
|
156
158
|
def __init__(self, srcdir: str): ...
|
@@ -9,6 +9,74 @@ documentation and maintenance changes.
|
|
9
9
|
The PhasorPy library is still under construction. Backwards-incompatible
|
10
10
|
changes may occur between revisions.
|
11
11
|
|
12
|
+
0.7 (2025.8.22)
|
13
|
+
---------------
|
14
|
+
|
15
|
+
This is the seventh alpha release of the PhasorPy library.
|
16
|
+
It contains several bug fixes, improvements, and breaking changes.
|
17
|
+
|
18
|
+
Lifetime-related functions have moved from the ``phasor`` module to the new
|
19
|
+
``lifetime`` module.
|
20
|
+
The ``cursors`` and ``components`` modules have been renamed to ``cursor``
|
21
|
+
and ``component`` respectively.
|
22
|
+
|
23
|
+
The new ``phasor_from_component`` function calculates phasor coordinates from
|
24
|
+
component fractions.
|
25
|
+
The ``phasor_component_mvc`` function calculates mean value coordinates
|
26
|
+
from phasor components.
|
27
|
+
The ``phasor_to_lifetime_search`` function finds two lifetime components
|
28
|
+
in multi-harmonic phasor coordinates.
|
29
|
+
The ``signal_from_pqbin`` function reads TCSPC histograms from PicoQuant BIN
|
30
|
+
files.
|
31
|
+
|
32
|
+
New tutorials demonstrate the multidimensional phasor approach and the
|
33
|
+
programmatic generation of the PhasorPy logo.
|
34
|
+
|
35
|
+
This release supports Python 3.11 to 3.13. Wheels for Python 3.14, including
|
36
|
+
free-threaded, are available for testing.
|
37
|
+
|
38
|
+
What's Changed
|
39
|
+
..............
|
40
|
+
|
41
|
+
* Bump version by @cgohlke in https://github.com/phasorpy/phasorpy/pull/250
|
42
|
+
* Bump pypa/cibuildwheel from 2.23.3 to 3.0.0 in the github-actions group by @dependabot[bot] in https://github.com/phasorpy/phasorpy/pull/252
|
43
|
+
* Support reading variants of SimFCS referenced files by @cgohlke in https://github.com/phasorpy/phasorpy/pull/253
|
44
|
+
* Add GSLab dataset by @cgohlke in https://github.com/phasorpy/phasorpy/pull/254
|
45
|
+
* Fix tests failing with numpy 2.3 by @cgohlke in https://github.com/phasorpy/phasorpy/pull/255
|
46
|
+
* Remove numpy pin for static code analysis by @cgohlke in https://github.com/phasorpy/phasorpy/pull/256
|
47
|
+
* Add phasor_from_component function by @cgohlke in https://github.com/phasorpy/phasorpy/pull/257
|
48
|
+
* Return component fractions as single array by @cgohlke in https://github.com/phasorpy/phasorpy/pull/258
|
49
|
+
* Use only latest GitHub Actions runners by @cgohlke in https://github.com/phasorpy/phasorpy/pull/259
|
50
|
+
* Add phasor_component_mvc function by @cgohlke in https://github.com/phasorpy/phasorpy/pull/260
|
51
|
+
* Move lifetime related functions out of phasor module by @cgohlke in https://github.com/phasorpy/phasorpy/pull/261
|
52
|
+
* Add option to specify number of lifetimes in lifetime app by @cgohlke in https://github.com/phasorpy/phasorpy/pull/263
|
53
|
+
* Rename cursors and components modules by @cgohlke in https://github.com/phasorpy/phasorpy/pull/262
|
54
|
+
* Skip more tests if SKIP_FETCH environment variable is set by @cgohlke in https://github.com/phasorpy/phasorpy/pull/264
|
55
|
+
* Improve docstrings and tests by @cgohlke in https://github.com/phasorpy/phasorpy/pull/265
|
56
|
+
* Drop support for numpy 1.25 by @cgohlke in https://github.com/phasorpy/phasorpy/pull/267
|
57
|
+
* Update Python versions used in workflows by @cgohlke in https://github.com/phasorpy/phasorpy/pull/268
|
58
|
+
* Add phasor_to_lifetime_search function for two components by @cgohlke in https://github.com/phasorpy/phasorpy/pull/266
|
59
|
+
* Fix io tutorial by @cgohlke in https://github.com/phasorpy/phasorpy/pull/269
|
60
|
+
* Fix multi-component fit tutorial by @cgohlke in https://github.com/phasorpy/phasorpy/pull/270
|
61
|
+
* Build wheels for Python 3.14 by @cgohlke in https://github.com/phasorpy/phasorpy/pull/271
|
62
|
+
* Improve PhasorPlot.polar_grid method by @cgohlke in https://github.com/phasorpy/phasorpy/pull/272
|
63
|
+
* Fix PhasorPlot.polar_cursor at origin by @cgohlke in https://github.com/phasorpy/phasorpy/pull/273
|
64
|
+
* Pass kwargs from signal_from_ptu to PtuFile.decode_image by @cgohlke in https://github.com/phasorpy/phasorpy/pull/274
|
65
|
+
* Add signal_from_pqbin function by @cgohlke in https://github.com/phasorpy/phasorpy/pull/275
|
66
|
+
* Build wheels for free-threaded Python by @cgohlke in https://github.com/phasorpy/phasorpy/pull/276
|
67
|
+
* Fix signal_from_ptu function kwargs handling by @cgohlke in https://github.com/phasorpy/phasorpy/pull/277
|
68
|
+
* Bump pypa/cibuildwheel from 3.1.2 to 3.1.3 in the github-actions group by @dependabot[bot] in https://github.com/phasorpy/phasorpy/pull/278
|
69
|
+
* Rename build_manylinux scripts by @cgohlke in https://github.com/phasorpy/phasorpy/pull/279
|
70
|
+
* Add tutorial to create PhasorPy logo by @cgohlke in https://github.com/phasorpy/phasorpy/pull/280
|
71
|
+
* Make PhasorPy logo square shaped by @cgohlke in https://github.com/phasorpy/phasorpy/pull/281
|
72
|
+
* Update pre-commit-hooks by @cgohlke in https://github.com/phasorpy/phasorpy/pull/282
|
73
|
+
* Improve PhasorPlot class and its cursor methods by @cgohlke in https://github.com/phasorpy/phasorpy/pull/284
|
74
|
+
* Document that LIF files contain Fast FLIM lifetimes by @cgohlke in https://github.com/phasorpy/phasorpy/pull/286
|
75
|
+
* Add multidimensional phasor tutorial and dataset by @bruno-pannunzio in https://github.com/phasorpy/phasorpy/pull/283
|
76
|
+
* Release v0.7 by @cgohlke in https://github.com/phasorpy/phasorpy/pull/285
|
77
|
+
|
78
|
+
**Full Changelog**: https://github.com/phasorpy/phasorpy/compare/v0.6...v0.7
|
79
|
+
|
12
80
|
0.6 (2025.6.22)
|
13
81
|
---------------
|
14
82
|
|
@@ -69,7 +137,7 @@ What's Changed
|
|
69
137
|
* Add interactive LifetimePlots class by @cgohlke in https://github.com/phasorpy/phasorpy/pull/247
|
70
138
|
* Reorganize version, utils, and experimental modules by @cgohlke in https://github.com/phasorpy/phasorpy/pull/248
|
71
139
|
* Add phasor_nearest_neighbor function by @bruno-pannunzio in https://github.com/phasorpy/phasorpy/pull/243
|
72
|
-
* Release v0.6 by @cgohlke in https://github.com/phasorpy/phasorpy/pull/
|
140
|
+
* Release v0.6 by @cgohlke in https://github.com/phasorpy/phasorpy/pull/249
|
73
141
|
|
74
142
|
**Full Changelog**: https://github.com/phasorpy/phasorpy/compare/v0.5...v0.6
|
75
143
|
|
@@ -14,7 +14,7 @@ dynamic = ["version"]
|
|
14
14
|
dependencies = [
|
15
15
|
# sync with requirements_min.txt
|
16
16
|
# https://scientific-python.org/specs/spec-0000/
|
17
|
-
"numpy>=1.
|
17
|
+
"numpy>=1.26.0",
|
18
18
|
"matplotlib>=3.8.0",
|
19
19
|
"scipy>=1.11.0",
|
20
20
|
"click",
|
@@ -113,7 +113,7 @@ disable = [
|
|
113
113
|
|
114
114
|
[tool.black]
|
115
115
|
line-length = 79
|
116
|
-
target-version = ["py311"]
|
116
|
+
target-version = ["py311", "py312", "py313"]
|
117
117
|
skip-string-normalization = true
|
118
118
|
|
119
119
|
[tool.isort]
|
@@ -127,7 +127,7 @@ ignore-words-list = "ba,compiletime,hist,nd,unparseable,HSI"
|
|
127
127
|
[tool.mypy]
|
128
128
|
packages = ["phasorpy"]
|
129
129
|
mypy_path = "$MYPY_CONFIG_FILE_DIR/src"
|
130
|
-
plugins = [
|
130
|
+
plugins = []
|
131
131
|
enable_error_code = ["ignore-without-code", "redundant-expr", "truthy-bool"]
|
132
132
|
strict = true
|
133
133
|
warn_unreachable = true
|
@@ -178,6 +178,7 @@ norecursedirs = [
|
|
178
178
|
]
|
179
179
|
|
180
180
|
[tool.cibuildwheel]
|
181
|
-
skip = "
|
181
|
+
skip = "cp38* cp39* cp310* *musllinux* *i686 *ppc64le *s390x"
|
182
182
|
test-requires = ["scikit-learn", "lfdfiles", "sdtfile", "ptufile", "liffile", "pawflim", "pytest", "pytest-cov", "pytest-runner", "pytest-doctestplus", "coverage"]
|
183
183
|
test-command = "pytest {project}/tests"
|
184
|
+
test-environment = "SKIP_FETCH=1"
|