phasorpy 0.6__tar.gz → 0.8__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.8}/MANIFEST.in +5 -2
- {phasorpy-0.6/src/phasorpy.egg-info → phasorpy-0.8}/PKG-INFO +8 -7
- phasorpy-0.8/docs/_static/favicon.ico +0 -0
- phasorpy-0.8/docs/_static/phasorpy_logo.png +0 -0
- phasorpy-0.8/docs/_static/phasorpy_logo.svg +238 -0
- {phasorpy-0.6 → phasorpy-0.8}/docs/_static/switcher.json +9 -9
- phasorpy-0.8/docs/api/_phasorpy.rst +8 -0
- phasorpy-0.8/docs/api/_utils.rst +5 -0
- phasorpy-0.8/docs/api/component.rst +5 -0
- phasorpy-0.8/docs/api/cursor.rst +5 -0
- phasorpy-0.8/docs/api/filter.rst +5 -0
- {phasorpy-0.6 → phasorpy-0.8}/docs/api/index.rst +4 -2
- phasorpy-0.8/docs/api/lifetime.rst +5 -0
- {phasorpy-0.6 → phasorpy-0.8}/docs/conf.py +81 -10
- {phasorpy-0.6 → phasorpy-0.8}/docs/phasor_approach.rst +15 -0
- {phasorpy-0.6 → phasorpy-0.8}/docs/release.rst +118 -11
- {phasorpy-0.6 → phasorpy-0.8}/pyproject.toml +15 -13
- {phasorpy-0.6 → phasorpy-0.8}/src/phasorpy/__init__.py +1 -1
- {phasorpy-0.6 → phasorpy-0.8}/src/phasorpy/_phasorpy.pyx +320 -10
- {phasorpy-0.6 → phasorpy-0.8}/src/phasorpy/_utils.py +114 -33
- {phasorpy-0.6 → phasorpy-0.8}/src/phasorpy/cli.py +19 -1
- {phasorpy-0.6 → phasorpy-0.8}/src/phasorpy/cluster.py +12 -18
- {phasorpy-0.6 → phasorpy-0.8}/src/phasorpy/color.py +11 -7
- phasorpy-0.6/src/phasorpy/components.py → phasorpy-0.8/src/phasorpy/component.py +263 -36
- phasorpy-0.6/src/phasorpy/cursors.py → phasorpy-0.8/src/phasorpy/cursor.py +31 -33
- {phasorpy-0.6 → phasorpy-0.8}/src/phasorpy/datasets.py +118 -8
- phasorpy-0.8/src/phasorpy/experimental.py +148 -0
- phasorpy-0.8/src/phasorpy/filter.py +966 -0
- {phasorpy-0.6 → phasorpy-0.8}/src/phasorpy/io/__init__.py +3 -1
- {phasorpy-0.6 → phasorpy-0.8}/src/phasorpy/io/_flimlabs.py +26 -16
- {phasorpy-0.6 → phasorpy-0.8}/src/phasorpy/io/_leica.py +38 -34
- {phasorpy-0.6 → phasorpy-0.8}/src/phasorpy/io/_ometiff.py +10 -9
- {phasorpy-0.6 → phasorpy-0.8}/src/phasorpy/io/_other.py +116 -8
- {phasorpy-0.6 → phasorpy-0.8}/src/phasorpy/io/_simfcs.py +52 -24
- phasorpy-0.8/src/phasorpy/lifetime.py +2058 -0
- phasorpy-0.8/src/phasorpy/phasor.py +1498 -0
- {phasorpy-0.6 → phasorpy-0.8}/src/phasorpy/plot/_functions.py +13 -7
- {phasorpy-0.6 → phasorpy-0.8}/src/phasorpy/plot/_lifetime_plots.py +34 -24
- {phasorpy-0.6 → phasorpy-0.8}/src/phasorpy/plot/_phasorplot.py +561 -176
- {phasorpy-0.6 → phasorpy-0.8}/src/phasorpy/plot/_phasorplot_fret.py +12 -10
- {phasorpy-0.6 → phasorpy-0.8}/src/phasorpy/utils.py +22 -10
- {phasorpy-0.6 → phasorpy-0.8/src/phasorpy.egg-info}/PKG-INFO +8 -7
- {phasorpy-0.6 → phasorpy-0.8}/src/phasorpy.egg-info/SOURCES.txt +36 -13
- {phasorpy-0.6 → phasorpy-0.8}/src/phasorpy.egg-info/requires.txt +5 -4
- phasorpy-0.8/tests/io/_conftest.py +67 -0
- phasorpy-0.8/tests/io/test_flimlabs.py +239 -0
- phasorpy-0.8/tests/io/test_leica.py +137 -0
- phasorpy-0.8/tests/io/test_ometiff.py +305 -0
- phasorpy-0.8/tests/io/test_other.py +333 -0
- phasorpy-0.8/tests/io/test_simfcs.py +421 -0
- phasorpy-0.8/tests/plot/test_functions.py +304 -0
- phasorpy-0.8/tests/plot/test_lifetime_plots.py +105 -0
- phasorpy-0.8/tests/plot/test_phasorplot.py +494 -0
- phasorpy-0.8/tests/plot/test_phasorplot_fret.py +53 -0
- {phasorpy-0.6 → phasorpy-0.8}/tests/test__phasorpy.py +5 -5
- {phasorpy-0.6 → phasorpy-0.8}/tests/test__utils.py +9 -4
- {phasorpy-0.6 → phasorpy-0.8}/tests/test_cli.py +8 -0
- {phasorpy-0.6 → phasorpy-0.8}/tests/test_cluster.py +11 -11
- phasorpy-0.6/tests/test_components.py → phasorpy-0.8/tests/test_component.py +228 -18
- phasorpy-0.6/tests/test_cursors.py → phasorpy-0.8/tests/test_cursor.py +35 -20
- {phasorpy-0.6 → phasorpy-0.8}/tests/test_datasets.py +3 -0
- phasorpy-0.8/tests/test_experimental.py +37 -0
- phasorpy-0.8/tests/test_filter.py +1333 -0
- phasorpy-0.8/tests/test_lifetime.py +1781 -0
- {phasorpy-0.6 → phasorpy-0.8}/tests/test_nan.py +46 -45
- phasorpy-0.8/tests/test_phasor.py +1283 -0
- phasorpy-0.8/tools/build_manylinux.cmd +13 -0
- phasorpy-0.8/tools/build_manylinux.sh +10 -0
- phasorpy-0.8/tools/sha256.py +36 -0
- phasorpy-0.6/tutorials/api/phasorpy_components.py → phasorpy-0.8/tutorials/api/phasorpy_component.py +11 -11
- phasorpy-0.6/tutorials/api/phasorpy_cursors.py → phasorpy-0.8/tutorials/api/phasorpy_cursor.py +31 -33
- phasorpy-0.6/tutorials/api/phasorpy_filtering.py → phasorpy-0.8/tutorials/api/phasorpy_filter.py +6 -6
- {phasorpy-0.6 → phasorpy-0.8}/tutorials/api/phasorpy_fret.py +4 -4
- {phasorpy-0.6 → phasorpy-0.8}/tutorials/api/phasorpy_io.py +52 -53
- {phasorpy-0.6 → phasorpy-0.8}/tutorials/api/phasorpy_lifetime_to_signal.py +3 -3
- phasorpy-0.6/tutorials/api/phasorpy_multi-harmonic.py → phasorpy-0.8/tutorials/api/phasorpy_multi_harmonic.py +3 -6
- {phasorpy-0.6 → phasorpy-0.8}/tutorials/api/phasorpy_pca.py +4 -4
- {phasorpy-0.6 → phasorpy-0.8}/tutorials/api/phasorpy_phasor_from_lifetime.py +8 -7
- {phasorpy-0.6 → phasorpy-0.8}/tutorials/api/phasorpy_phasorplot.py +139 -37
- {phasorpy-0.6 → phasorpy-0.8}/tutorials/applications/phasorpy_component_fit.py +37 -26
- {phasorpy-0.6 → phasorpy-0.8}/tutorials/applications/phasorpy_fret_efficiency.py +18 -16
- phasorpy-0.8/tutorials/applications/phasorpy_multidimensional.py +312 -0
- phasorpy-0.8/tutorials/misc/README.rst +4 -0
- phasorpy-0.8/tutorials/misc/phasorpy_logo.py +141 -0
- {phasorpy-0.6/tutorials/benchmarks → phasorpy-0.8/tutorials/misc}/phasorpy_phasor_from_signal.py +2 -2
- {phasorpy-0.6 → phasorpy-0.8}/tutorials/phasorpy_introduction.py +45 -40
- {phasorpy-0.6 → phasorpy-0.8}/tutorials/phasorpy_lfd_workshop.py +14 -15
- {phasorpy-0.6 → phasorpy-0.8}/tutorials/phasorpy_lifetime_geometry.py +94 -80
- phasorpy-0.6/docs/_static/logo.png +0 -0
- phasorpy-0.6/docs/api/_phasorpy.rst +0 -12
- phasorpy-0.6/docs/api/_utils.rst +0 -9
- phasorpy-0.6/docs/api/components.rst +0 -5
- phasorpy-0.6/docs/api/cursors.rst +0 -5
- phasorpy-0.6/src/phasorpy/experimental.py +0 -312
- phasorpy-0.6/src/phasorpy/phasor.py +0 -3894
- phasorpy-0.6/tests/test_experimental.py +0 -117
- phasorpy-0.6/tests/test_phasor.py +0 -3916
- phasorpy-0.6/tutorials/benchmarks/README.rst +0 -4
- {phasorpy-0.6 → phasorpy-0.8}/LICENSE.txt +0 -0
- {phasorpy-0.6 → phasorpy-0.8}/README.md +0 -0
- {phasorpy-0.6 → phasorpy-0.8}/docs/_static/categorical.png +0 -0
- {phasorpy-0.6 → phasorpy-0.8}/docs/_static/custom-icons.js +0 -0
- {phasorpy-0.6 → phasorpy-0.8}/docs/_static/srgb_spectrum.png +0 -0
- {phasorpy-0.6 → phasorpy-0.8}/docs/acknowledgments.rst +0 -0
- {phasorpy-0.6 → phasorpy-0.8}/docs/api/cli.rst +0 -0
- {phasorpy-0.6 → phasorpy-0.8}/docs/api/cluster.rst +0 -0
- {phasorpy-0.6 → phasorpy-0.8}/docs/api/color.rst +0 -0
- {phasorpy-0.6 → phasorpy-0.8}/docs/api/datasets.rst +0 -0
- {phasorpy-0.6 → phasorpy-0.8}/docs/api/experimental.rst +0 -0
- {phasorpy-0.6 → phasorpy-0.8}/docs/api/io.rst +0 -0
- {phasorpy-0.6 → phasorpy-0.8}/docs/api/phasor.rst +0 -0
- {phasorpy-0.6 → phasorpy-0.8}/docs/api/phasorpy.rst +0 -0
- {phasorpy-0.6 → phasorpy-0.8}/docs/api/plot.rst +0 -0
- {phasorpy-0.6 → phasorpy-0.8}/docs/api/utils.rst +0 -0
- {phasorpy-0.6 → phasorpy-0.8}/docs/code_of_conduct.rst +0 -0
- {phasorpy-0.6 → phasorpy-0.8}/docs/contributing.rst +0 -0
- {phasorpy-0.6 → phasorpy-0.8}/docs/index.rst +0 -0
- {phasorpy-0.6 → phasorpy-0.8}/docs/license.rst +0 -0
- {phasorpy-0.6 → phasorpy-0.8}/setup.cfg +0 -0
- {phasorpy-0.6 → phasorpy-0.8}/setup.py +0 -0
- {phasorpy-0.6 → phasorpy-0.8}/src/phasorpy/__main__.py +0 -0
- {phasorpy-0.6 → phasorpy-0.8}/src/phasorpy/_typing.py +0 -0
- {phasorpy-0.6 → phasorpy-0.8}/src/phasorpy/conftest.py +0 -0
- {phasorpy-0.6 → phasorpy-0.8}/src/phasorpy/plot/__init__.py +0 -0
- {phasorpy-0.6 → phasorpy-0.8}/src/phasorpy/py.typed +0 -0
- {phasorpy-0.6 → phasorpy-0.8}/src/phasorpy.egg-info/dependency_links.txt +0 -0
- {phasorpy-0.6 → phasorpy-0.8}/src/phasorpy.egg-info/entry_points.txt +0 -0
- {phasorpy-0.6 → phasorpy-0.8}/src/phasorpy.egg-info/not-zip-safe +0 -0
- {phasorpy-0.6 → phasorpy-0.8}/src/phasorpy.egg-info/top_level.txt +0 -0
- {phasorpy-0.6 → phasorpy-0.8}/tests/conftest.py +0 -0
- {phasorpy-0.6 → phasorpy-0.8}/tests/test__typing.py +0 -0
- {phasorpy-0.6 → phasorpy-0.8}/tests/test_color.py +0 -0
- {phasorpy-0.6 → phasorpy-0.8}/tests/test_phasorpy.py +0 -0
- {phasorpy-0.6 → phasorpy-0.8}/tests/test_utils.py +0 -0
- {phasorpy-0.6 → phasorpy-0.8}/tutorials/README.rst +0 -0
- {phasorpy-0.6 → phasorpy-0.8}/tutorials/api/README.rst +0 -0
- {phasorpy-0.6 → phasorpy-0.8}/tutorials/applications/README.rst +0 -0
@@ -1,19 +1,22 @@
|
|
1
1
|
include LICENSE.txt
|
2
2
|
include README.md
|
3
3
|
|
4
|
-
include tests/*.py
|
5
|
-
|
6
4
|
include docs/*.py
|
7
5
|
include docs/*.rst
|
8
6
|
include docs/api/*.rst
|
9
7
|
include docs/_static/*.*
|
10
8
|
|
9
|
+
recursive-include tests *.py
|
11
10
|
recursive-include tutorials *.py
|
12
11
|
recursive-include tutorials *.rst
|
13
12
|
|
14
13
|
exclude *.cmd
|
15
14
|
exclude docs/sg_execution_times.rst
|
16
15
|
|
16
|
+
include tools/*.py
|
17
|
+
include tools/*.sh
|
18
|
+
include tools/*.cmd
|
19
|
+
|
17
20
|
recursive-exclude * __pycache__
|
18
21
|
recursive-exclude * *.py[co]
|
19
22
|
recursive-exclude * *Copy*
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: phasorpy
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.8
|
4
4
|
Summary: Analysis of fluorescence lifetime and hyperspectral images using the phasor approach
|
5
5
|
Author: PhasorPy Contributors
|
6
6
|
License-Expression: MIT
|
@@ -18,20 +18,20 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
18
18
|
Classifier: Operating System :: OS Independent
|
19
19
|
Classifier: Programming Language :: Python :: 3
|
20
20
|
Classifier: Programming Language :: Python :: 3 :: Only
|
21
|
-
Classifier: Programming Language :: Python :: 3.11
|
22
21
|
Classifier: Programming Language :: Python :: 3.12
|
23
22
|
Classifier: Programming Language :: Python :: 3.13
|
24
|
-
|
23
|
+
Classifier: Programming Language :: Python :: 3.14
|
24
|
+
Requires-Python: >=3.12
|
25
25
|
Description-Content-Type: text/markdown
|
26
26
|
License-File: LICENSE.txt
|
27
|
-
Requires-Dist: numpy>=
|
28
|
-
Requires-Dist: matplotlib>=3.
|
29
|
-
Requires-Dist: scipy>=1.
|
27
|
+
Requires-Dist: numpy>=2.0.0
|
28
|
+
Requires-Dist: matplotlib>=3.9.0
|
29
|
+
Requires-Dist: scipy>=1.13.0
|
30
30
|
Requires-Dist: click
|
31
31
|
Requires-Dist: pooch
|
32
32
|
Requires-Dist: tqdm
|
33
33
|
Requires-Dist: scikit-learn>=1.5.0
|
34
|
-
Requires-Dist: xarray>=
|
34
|
+
Requires-Dist: xarray>=2024.6.0
|
35
35
|
Requires-Dist: tifffile>=2024.8.30
|
36
36
|
Provides-Extra: docs
|
37
37
|
Requires-Dist: sphinx; extra == "docs"
|
@@ -46,6 +46,7 @@ Requires-Dist: lfdfiles>=2024.5.24; extra == "all"
|
|
46
46
|
Requires-Dist: sdtfile>=2024.5.24; extra == "all"
|
47
47
|
Requires-Dist: ptufile>=2024.9.14; extra == "all"
|
48
48
|
Requires-Dist: liffile>=2025.2.10; extra == "all"
|
49
|
+
Requires-Dist: fbdfile>=2025.9.18; extra == "all"
|
49
50
|
Requires-Dist: pawflim; extra == "all"
|
50
51
|
Dynamic: license-file
|
51
52
|
|
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.9",
|
5
5
|
"url": "https://www.phasorpy.org/docs/dev/"
|
6
6
|
},
|
7
7
|
{
|
8
|
-
"name": "0.
|
9
|
-
"version": "0.
|
8
|
+
"name": "0.8 (stable)",
|
9
|
+
"version": "0.8",
|
10
10
|
"url": "https://www.phasorpy.org/docs/stable/",
|
11
11
|
"preferred": true
|
12
12
|
},
|
13
13
|
{
|
14
|
-
"name": "0.
|
15
|
-
"version": "0.
|
16
|
-
"url": "https://www.phasorpy.org/docs/v0.
|
14
|
+
"name": "0.7",
|
15
|
+
"version": "0.7",
|
16
|
+
"url": "https://www.phasorpy.org/docs/v0.7/"
|
17
17
|
},
|
18
18
|
{
|
19
|
-
"name": "0.
|
20
|
-
"version": "0.
|
21
|
-
"url": "https://www.phasorpy.org/docs/v0.
|
19
|
+
"name": "0.6",
|
20
|
+
"version": "0.6",
|
21
|
+
"url": "https://www.phasorpy.org/docs/v0.6/"
|
22
22
|
}
|
23
23
|
]
|
@@ -26,7 +26,7 @@ import phasorpy
|
|
26
26
|
|
27
27
|
version = phasorpy.__version__
|
28
28
|
release = phasorpy.__version__
|
29
|
-
version_match = version.
|
29
|
+
version_match = version.split('.dev')[0].split('.rc')[0]
|
30
30
|
|
31
31
|
# general configuration
|
32
32
|
|
@@ -35,7 +35,8 @@ extensions = [
|
|
35
35
|
'sphinx.ext.autodoc',
|
36
36
|
'sphinx.ext.autosummary',
|
37
37
|
'sphinx.ext.doctest',
|
38
|
-
'sphinx.ext.viewcode',
|
38
|
+
# 'sphinx.ext.viewcode', # include source code in documentation
|
39
|
+
'sphinx.ext.linkcode', # link to source code on GitHub
|
39
40
|
'sphinx.ext.todo',
|
40
41
|
# don't enable intersphinx since tutorials are getting littered with links
|
41
42
|
# 'sphinx.ext.intersphinx',
|
@@ -60,8 +61,9 @@ html_static_path = ['_static']
|
|
60
61
|
html_js_files = ['custom-icons.js']
|
61
62
|
html_show_sourcelink = False
|
62
63
|
|
63
|
-
|
64
|
-
|
64
|
+
html_title = f'PhasorPy {version} documentation'
|
65
|
+
html_logo = '_static/phasorpy_logo.svg'
|
66
|
+
html_favicon = '_static/favicon.ico'
|
65
67
|
|
66
68
|
pygments_style = 'sphinx'
|
67
69
|
|
@@ -125,6 +127,11 @@ sphinx_gallery_conf = {
|
|
125
127
|
'reference_url': {'phasorpy': None},
|
126
128
|
'matplotlib_animations': True,
|
127
129
|
'within_subsection_order': 'conf.TutorialOrder',
|
130
|
+
'show_memory': False,
|
131
|
+
'show_api_usage': False,
|
132
|
+
'remove_config_comments': True,
|
133
|
+
# 'min_reported_time': 0.5,
|
134
|
+
# 'backreferences_dir': None,
|
128
135
|
}
|
129
136
|
|
130
137
|
|
@@ -138,19 +145,21 @@ class TutorialOrder:
|
|
138
145
|
# api
|
139
146
|
'io',
|
140
147
|
'phasor_from_lifetime',
|
141
|
-
'
|
142
|
-
'
|
148
|
+
'multi_harmonic',
|
149
|
+
'filter',
|
143
150
|
'phasorplot',
|
144
|
-
'
|
145
|
-
'
|
151
|
+
'cursor',
|
152
|
+
'component',
|
146
153
|
'fret',
|
147
154
|
'lifetime_to_signal',
|
148
155
|
'pca',
|
149
156
|
# applications
|
150
157
|
'component_fit',
|
151
158
|
'fret_efficiency',
|
152
|
-
|
159
|
+
'multidimensional',
|
160
|
+
# misc
|
153
161
|
'phasor_from_signal',
|
162
|
+
'logo',
|
154
163
|
]
|
155
164
|
|
156
165
|
def __init__(self, srcdir: str): ...
|
@@ -174,7 +183,69 @@ intersphinx_mapping = {
|
|
174
183
|
'skimage': ('https://scikit-image.org/docs/stable/', None),
|
175
184
|
}
|
176
185
|
|
177
|
-
|
186
|
+
# limit intersphinx linking to avoid "littering" tutorials
|
187
|
+
# disable doc links but allow function links
|
188
|
+
# intersphinx_disabled_reftypes = ['std:doc']
|
178
189
|
|
179
190
|
# do not show typehints
|
180
191
|
autodoc_typehints = 'none'
|
192
|
+
|
193
|
+
|
194
|
+
def linkcode_resolve(domain: str, info: dict[str, str]) -> str | None:
|
195
|
+
"""Return GitHub URL for Python object."""
|
196
|
+
# adapted from
|
197
|
+
# https://github.com/matplotlib/matplotlib/blob/main/doc/conf.py
|
198
|
+
import inspect
|
199
|
+
from pathlib import Path
|
200
|
+
|
201
|
+
if domain != 'py':
|
202
|
+
return None
|
203
|
+
|
204
|
+
modname = info['module']
|
205
|
+
fullname = info['fullname']
|
206
|
+
|
207
|
+
submod = sys.modules.get(modname)
|
208
|
+
if submod is None:
|
209
|
+
return None
|
210
|
+
|
211
|
+
obj = submod
|
212
|
+
for part in fullname.split('.'):
|
213
|
+
try:
|
214
|
+
obj = getattr(obj, part)
|
215
|
+
except AttributeError:
|
216
|
+
return None
|
217
|
+
|
218
|
+
if inspect.isfunction(obj):
|
219
|
+
obj = inspect.unwrap(obj)
|
220
|
+
try:
|
221
|
+
fn = inspect.getsourcefile(obj)
|
222
|
+
except TypeError:
|
223
|
+
fn = None
|
224
|
+
if not fn or fn.endswith('__init__.py'):
|
225
|
+
try:
|
226
|
+
fn = inspect.getsourcefile(sys.modules[obj.__module__])
|
227
|
+
except (TypeError, AttributeError, KeyError):
|
228
|
+
fn = None
|
229
|
+
if not fn:
|
230
|
+
return None
|
231
|
+
|
232
|
+
try:
|
233
|
+
source, lineno = inspect.getsourcelines(obj)
|
234
|
+
except (OSError, TypeError):
|
235
|
+
lineno = None
|
236
|
+
|
237
|
+
linespec = f"#L{lineno:d}-L{lineno + len(source) - 1:d}" if lineno else ''
|
238
|
+
|
239
|
+
startdir = Path(phasorpy.__file__).parent.parent
|
240
|
+
try:
|
241
|
+
fn = os.path.relpath(fn, start=startdir).replace(os.path.sep, '/')
|
242
|
+
except ValueError:
|
243
|
+
return None
|
244
|
+
|
245
|
+
if '.dev' in version or '.rc' in version:
|
246
|
+
tag = 'main'
|
247
|
+
else:
|
248
|
+
tag = f'v{version}'
|
249
|
+
return (
|
250
|
+
f'https://github.com/phasorpy/phasorpy/blob/{tag}/src/{fn}{linespec}'
|
251
|
+
)
|
@@ -166,12 +166,20 @@ approach to analyze fluorescence time-resolved or spectral images:
|
|
166
166
|
images using the phasor approach. The software is distributed under an
|
167
167
|
unknown license and was last updated in 2013.
|
168
168
|
|
169
|
+
-
|
170
|
+
.. _napari_phasors:
|
171
|
+
|
172
|
+
`Napari-phasors <https://github.com/napari-phasors/napari-phasors>`_
|
173
|
+
is a napari plugin for phasor analysis based on PhasorPy.
|
174
|
+
The plugin is distributed under the BSD-3-Clause license.
|
175
|
+
|
169
176
|
-
|
170
177
|
.. _napari_flim_phasor_plotter:
|
171
178
|
|
172
179
|
`Napari-flim-phasor-plotter <https://github.com/zoccoler/napari-flim-phasor-plotter>`_
|
173
180
|
is a napari plugin to interactively load and show raw FLIM single images
|
174
181
|
and series and generate phasor plots.
|
182
|
+
The plugin is distributed under the BSD-3-Clause license.
|
175
183
|
|
176
184
|
-
|
177
185
|
.. _napari_live_flim:
|
@@ -263,6 +271,13 @@ approach to analyze fluorescence time-resolved or spectral images:
|
|
263
271
|
"instant FLIM" system. It supports image segmentation based on phasor plot
|
264
272
|
regions of interest and K-means clustering.
|
265
273
|
|
274
|
+
.. _cell_analysis_tools:
|
275
|
+
|
276
|
+
- `Cell-analysis-tools <https://github.com/skalalab/cell-analysis-tools>`_
|
277
|
+
is an open-source Python library for the analysis of single cell imaging
|
278
|
+
data, including phasor analysis of FLIM data.
|
279
|
+
The library is distributed under the GPL v3.
|
280
|
+
|
266
281
|
-
|
267
282
|
.. _flim_studio:
|
268
283
|
|