phasorpy 0.6__cp313-cp313-win_amd64.whl → 0.8__cp313-cp313-win_amd64.whl

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.
@@ -17,15 +17,17 @@ from matplotlib.lines import Line2D
17
17
  from matplotlib.widgets import Slider
18
18
 
19
19
  from .._utils import update_kwargs
20
- from ..phasor import (
20
+ from ..lifetime import (
21
21
  phasor_from_fret_acceptor,
22
22
  phasor_from_fret_donor,
23
23
  phasor_from_lifetime,
24
24
  phasor_semicircle,
25
+ )
26
+ from ..phasor import (
25
27
  phasor_to_polar,
26
28
  phasor_transform,
27
29
  )
28
- from ._phasorplot import PhasorPlot, SemicircleTicks, _semicircle_ticks
30
+ from ._phasorplot import CircleTicks, PhasorPlot, _semicircle_ticks
29
31
 
30
32
 
31
33
  class PhasorPlotFret(PhasorPlot):
@@ -80,7 +82,7 @@ class PhasorPlotFret(PhasorPlot):
80
82
  interactive : bool, optional, default: False
81
83
  Use matplotlib slider widgets to interactively control parameters.
82
84
  **kwargs
83
- Additional parameters passed to :py:class:`phasorpy.plot.PhasorPlot`.
85
+ Optional arguments passed to :py:class:`phasorpy.plot.PhasorPlot`.
84
86
 
85
87
  See Also
86
88
  --------
@@ -118,7 +120,7 @@ class PhasorPlotFret(PhasorPlot):
118
120
  _acceptor_background_line: Line2D
119
121
  _background_line: Line2D
120
122
 
121
- _donor_semicircle_ticks: SemicircleTicks | None
123
+ _donor_semicircle_ticks: CircleTicks | None
122
124
 
123
125
  def __init__(
124
126
  self,
@@ -141,8 +143,8 @@ class PhasorPlotFret(PhasorPlot):
141
143
  update_kwargs(
142
144
  kwargs,
143
145
  title='PhasorPy FRET phasor plot',
144
- xlim=[-0.2, 1.1],
145
- ylim=[-0.1, 0.8],
146
+ xlim=(-0.2, 1.1),
147
+ ylim=(-0.1, 0.8),
146
148
  )
147
149
  kwargs['allquadrants'] = False
148
150
  kwargs['grid'] = False
@@ -211,8 +213,7 @@ class PhasorPlotFret(PhasorPlot):
211
213
 
212
214
  if donor_fretting < 1.0 and donor_background == 0.0:
213
215
  lines = self.line(
214
- [donor_real, donor_fret_real],
215
- [donor_imag, donor_fret_imag],
216
+ [donor_real, donor_fret_real], [donor_imag, donor_fret_imag]
216
217
  )
217
218
  else:
218
219
  lines = self.line([0.0, 0.0], [0.0, 0.0])
@@ -304,6 +305,7 @@ class PhasorPlotFret(PhasorPlot):
304
305
  self._background_line = lines[0]
305
306
 
306
307
  if not interactive:
308
+ ax.legend()
307
309
  return
308
310
 
309
311
  # add sliders
@@ -444,6 +446,7 @@ class PhasorPlotFret(PhasorPlot):
444
446
  valstep=0.01,
445
447
  valinit=background_imag,
446
448
  )
449
+ ax.legend()
447
450
  self._background_imag_slider.on_changed(self._on_changed)
448
451
 
449
452
  def _on_semicircle_changed(self, value: Any) -> None:
@@ -525,8 +528,7 @@ class PhasorPlotFret(PhasorPlot):
525
528
 
526
529
  if donor_fretting < 1.0 and donor_background == 0.0:
527
530
  self._donor_donor_line.set_data(
528
- [donor_real, donor_fret_real],
529
- [donor_imag, donor_fret_imag],
531
+ [donor_real, donor_fret_real], [donor_imag, donor_fret_imag]
530
532
  )
531
533
  else:
532
534
  self._donor_donor_line.set_data([0.0, 0.0], [0.0, 0.0])
phasorpy/utils.py CHANGED
@@ -1,7 +1,7 @@
1
1
  """Utility functions.
2
2
 
3
3
  The ``phasorpy.utils`` module provides auxiliary and convenience functions
4
- that do not naturally fit into other modules.
4
+ that do not fit naturally into other modules.
5
5
 
6
6
  """
7
7
 
@@ -18,7 +18,18 @@ import os
18
18
 
19
19
 
20
20
  def logger() -> logging.Logger:
21
- """Return ``logging.getLogger('phasorpy')``."""
21
+ """Return PhasorPy logger instance.
22
+
23
+ Returns
24
+ -------
25
+ logging.Logger
26
+ Logger instance for 'phasorpy' namespace.
27
+
28
+ Examples
29
+ --------
30
+ >>> logger().info('This is a log message')
31
+
32
+ """
22
33
  return logging.getLogger('phasorpy')
23
34
 
24
35
 
@@ -52,7 +63,7 @@ def number_threads(
52
63
  >>> number_threads()
53
64
  1
54
65
  >>> number_threads(0) # doctest: +SKIP
55
- 8
66
+ 8 # actual value depends on system
56
67
 
57
68
  """
58
69
  if num_threads is None or num_threads < 0:
@@ -101,14 +112,14 @@ def versions(
101
112
  -------
102
113
  str
103
114
  Formatted string containing version information.
104
- Format: "<package><dash><version>[<space>(<path>)]<sep>"
115
+ Format: ``"<package><dash><version>[<space>(<path>)]<sep>"``
105
116
 
106
- Example
107
- -------
108
- >>> print(versions())
109
- Python-3...
110
- phasorpy-0...
111
- numpy-...
117
+ Examples
118
+ --------
119
+ >>> print(versions()) # doctest: +SKIP
120
+ Python-3.13.5
121
+ phasorpy-0.6
122
+ numpy-2.3.1
112
123
  ...
113
124
 
114
125
  """
@@ -127,6 +138,7 @@ def versions(
127
138
  'tifffile',
128
139
  'imagecodecs',
129
140
  'lfdfiles',
141
+ 'fbdfile',
130
142
  'sdtfile',
131
143
  'ptufile',
132
144
  'liffile',
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: phasorpy
3
- Version: 0.6
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
- Requires-Python: >=3.11
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>=1.25.0
28
- Requires-Dist: matplotlib>=3.8.0
29
- Requires-Dist: scipy>=1.11.0
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>=2023.4.0
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
 
@@ -0,0 +1,36 @@
1
+ phasorpy/__init__.py,sha256=G6kNL7LU0WgL4QNCc6c8whQdJRO9Mz2H5OdL1tvqpGA,149
2
+ phasorpy/__main__.py,sha256=0u6C98HYfajV1RoUww8kAc0CxdsON0ijgEyTYExCSLM,149
3
+ phasorpy/_phasorpy.cp313-win_amd64.pyd,sha256=9yd-A21qOVwODQ-Gwl9dW4RSPjCmaboHUFqZ9iIHkqo,1061376
4
+ phasorpy/_phasorpy.pyx,sha256=aCQPi0zk1LfrfgsBAW630F2GRz5R_VmBqUEMlp_6P28,79500
5
+ phasorpy/_typing.py,sha256=ii-5-8KTs2BZq0Ytu3yJl8ejSQj1V06c1_Jcwa_2Snk,1324
6
+ phasorpy/_utils.py,sha256=3adejMREVlu1nOc9A1nYCrAi827v8gZt_CI4nJTHh6c,23349
7
+ phasorpy/cli.py,sha256=WpmVkKbf9gtWmeip8PuewA2wLJZW4qvmCanAZRSdkXY,3692
8
+ phasorpy/cluster.py,sha256=m2pT5sebv2wrN29ZlWgQCyFf989hJSYBeJk7TqATAkg,6133
9
+ phasorpy/color.py,sha256=CGrV0qnZH_Oy2qGrWgkBvq8Bl99BDi9J9oYj-e3tp5I,17659
10
+ phasorpy/component.py,sha256=t1rjtWr6tEs9lGrJL1cqG2xHhxQZGVEA3A1mlHEc3Yg,25397
11
+ phasorpy/conftest.py,sha256=0dCO8UZtEnhZv-JW1_vGvPZOmaihRLOo_Wc857socWI,976
12
+ phasorpy/cursor.py,sha256=NR-Lq57g4v-70zU3rETa03Vg7Jk1y8SLj-UzR__G8yU,15665
13
+ phasorpy/datasets.py,sha256=9OM4IdYbkPbrqNQnvL7AH5bYrZ5CjHtxeH5G9eBHSNE,24975
14
+ phasorpy/experimental.py,sha256=NGORi9__rp01vRqzegoTb0K7qZmliStTC4pfE2wDhto,3916
15
+ phasorpy/filter.py,sha256=ZaV0OkK3RcYXNV8_8RHDv916k0gLtayigemlXDq0ZiY,33601
16
+ phasorpy/lifetime.py,sha256=Pgzt_GNfxrlhVv-CkQg-pLy-A5J5dI7c3ArJJ6cuTCM,69245
17
+ phasorpy/phasor.py,sha256=C_KwfsSJEv7OHaQS_6lH5uEZCknL06I9HRQDI348RPA,48942
18
+ phasorpy/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
+ phasorpy/utils.py,sha256=bIXRRdTJ8Mknm6sBBZsiLnIFYiIK1P-n_LguRUSWAlA,4727
20
+ phasorpy/io/__init__.py,sha256=ssKqgyzGzixSWM-t2GzN4AWQjzNYNcLhctAqDE6GiSw,4970
21
+ phasorpy/io/_flimlabs.py,sha256=js363VUmc3KqaW5PRfJYxn1561wuQlM5nR_07t9X6Bc,11120
22
+ phasorpy/io/_leica.py,sha256=vobi6blhsnx51H0HtFYsyFNxiI1lJwxX5pZBNZatAt8,10784
23
+ phasorpy/io/_ometiff.py,sha256=ujbAGxfhUOP1AC3KpjZcbaIGLvVNx5iHA4VqoNKV0Bs,15897
24
+ phasorpy/io/_other.py,sha256=1orANk8pdJsiN21DWLfVfAww4NMKk7-5mAbD1l_sKUY,28085
25
+ phasorpy/io/_simfcs.py,sha256=35UT2gMBshOWo4iZD9GJpe78d7Zx5-Ch11Fjn0S-KWE,20270
26
+ phasorpy/plot/__init__.py,sha256=fUMe18wCkopcvWiNXSwd49bqt8EltfsxcnrBpBauK8M,793
27
+ phasorpy/plot/_functions.py,sha256=Pqw6oC91tvcL2ud7LYlbp0FrMjM8fli-_pgHdw6rCeU,22029
28
+ phasorpy/plot/_lifetime_plots.py,sha256=Va_ldRd183J69cV07x0prFHpoKeEbb7-CB35qV_WNsE,19311
29
+ phasorpy/plot/_phasorplot.py,sha256=V0ubHBcZFZVXI_s-1qiIfsDJGnmhom95Qr2xVNzKJqo,53370
30
+ phasorpy/plot/_phasorplot_fret.py,sha256=758RqKzXgU41MGbXZff6O0rj-YzLm5AeLYuXcmQ_J40,19719
31
+ phasorpy-0.8.dist-info/licenses/LICENSE.txt,sha256=KVzeDa0MBRSUYPFFNuo7Atn6v62TiJTgGzHigltEX0o,1104
32
+ phasorpy-0.8.dist-info/METADATA,sha256=uPo_br4auk2NyLmkSJDjaHEvNK9tIjEvPaPTx5akzW4,3373
33
+ phasorpy-0.8.dist-info/WHEEL,sha256=qV0EIPljj1XC_vuSatRWjn02nZIz3N1t8jsZz7HBr2U,101
34
+ phasorpy-0.8.dist-info/entry_points.txt,sha256=VRhsl3qGiIKwtMraKapmduchTMbdReUi1AoVTe9f3ss,47
35
+ phasorpy-0.8.dist-info/top_level.txt,sha256=4Y0uYzya5R2loleAxZ6s2n53_FysUbgFTfFaU0i9rbo,9
36
+ phasorpy-0.8.dist-info/RECORD,,
@@ -1,34 +0,0 @@
1
- phasorpy/__init__.py,sha256=ojBobmhDI2NwrlfKLxINCSF7dMnsJQdjvrTOJoD9Bd8,149
2
- phasorpy/__main__.py,sha256=0u6C98HYfajV1RoUww8kAc0CxdsON0ijgEyTYExCSLM,149
3
- phasorpy/_phasorpy.cp313-win_amd64.pyd,sha256=p6J87itDPJcwdDcl6zo9vXcbslHlgJR7HT_WEHupW3M,1017344
4
- phasorpy/_phasorpy.pyx,sha256=DHSi_R5TWht2DFev51oULSI2uMRW6xCato_CMUE_eMI,69128
5
- phasorpy/_typing.py,sha256=ii-5-8KTs2BZq0Ytu3yJl8ejSQj1V06c1_Jcwa_2Snk,1324
6
- phasorpy/_utils.py,sha256=Zr33fJMBpLZg9wpWbSC-X8ci39PuVdjbqO62Aelfi7E,20763
7
- phasorpy/cli.py,sha256=MDLAdXZvsKlNP5l7KnlTfp9OKQ4_7y4x_LEQqrbaj78,3082
8
- phasorpy/cluster.py,sha256=_H9pzz_-8BeIgZlN0mv1tNEAtr-Z0xe6Mt-tKOSzS3M,6294
9
- phasorpy/color.py,sha256=Y0XINGWDI5DxTUO9FnwYbf3oZq9IB2XagoJOdXhEsvQ,17378
10
- phasorpy/components.py,sha256=jPC52Vs79drDp7GwSmSZemhz0RSz_OYkFn_Qg9JnT7A,17255
11
- phasorpy/conftest.py,sha256=0dCO8UZtEnhZv-JW1_vGvPZOmaihRLOo_Wc857socWI,976
12
- phasorpy/cursors.py,sha256=1KzsfZBD-kKLdjiMUC3ZIKjSnVtnUwggVlt883EmcRo,15571
13
- phasorpy/datasets.py,sha256=EggCWJnpHIHuobRV7aEBNM44B79hMzInNA_lEnMZum8,20870
14
- phasorpy/experimental.py,sha256=bXp1bWpzO2p2JpJw-SiQX6XFSdGyqRu2qq_XXZz1P7Y,9821
15
- phasorpy/phasor.py,sha256=hY8pW6KgMZV-ik0kxEpdQR8M5u7d0LJ45t8U6vdPsko,130260
16
- phasorpy/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
- phasorpy/utils.py,sha256=RipcdjEeu8UnZE-iJZR7zaQQQ_5QxiU3223VT4VGupw,4470
18
- phasorpy/io/__init__.py,sha256=JmMpGnJERf0CjkcB2SmxAKZ9Z2W-3BhOefj8ADbkLQc,4870
19
- phasorpy/io/_flimlabs.py,sha256=2tNOHZfziATIBZaPE1_D8r1dDGn_e5h3hRZQzuhk9DU,10694
20
- phasorpy/io/_leica.py,sha256=66Z9dAP1P9Y7hwqOKC80iNT-xm-yW-uGTxStPi543FQ,10922
21
- phasorpy/io/_ometiff.py,sha256=ii5rf0bFV2EWD50Rt2Tm6MQ1Knwu1_AgyxA3s_or_Z4,15855
22
- phasorpy/io/_other.py,sha256=nE40crsf7qbswoswr2pLBcHJoYzWjRRz2VAlr018C8k,24695
23
- phasorpy/io/_simfcs.py,sha256=3kwEgeGfMrwF7IcVoa0Z1J7V0RWaEg-vbI5e6KVxHBo,18970
24
- phasorpy/plot/__init__.py,sha256=fUMe18wCkopcvWiNXSwd49bqt8EltfsxcnrBpBauK8M,793
25
- phasorpy/plot/_functions.py,sha256=iIlbnu4DB97sO8zT2v0rO-GqVED99XeCXC24y_Tk43c,21918
26
- phasorpy/plot/_lifetime_plots.py,sha256=v0ZuSkwNlE6zSFPqjxPwHv_0woGllSG-ZJ45DX2SkDU,19125
27
- phasorpy/plot/_phasorplot.py,sha256=aAWKOjrGahWcu0t3-B3uTbGSp6vKek3uq5yn5m4etRg,38004
28
- phasorpy/plot/_phasorplot_fret.py,sha256=CFJNvFyZYxS9vPTe22F_l0Wigd3WGeN_gmDLP3TGWRU,19691
29
- phasorpy-0.6.dist-info/licenses/LICENSE.txt,sha256=KVzeDa0MBRSUYPFFNuo7Atn6v62TiJTgGzHigltEX0o,1104
30
- phasorpy-0.6.dist-info/METADATA,sha256=LRZ4kDprfLlHaZgtL6jyu3dBSKlJpLrM4jX_P-hkcF0,3323
31
- phasorpy-0.6.dist-info/WHEEL,sha256=qV0EIPljj1XC_vuSatRWjn02nZIz3N1t8jsZz7HBr2U,101
32
- phasorpy-0.6.dist-info/entry_points.txt,sha256=VRhsl3qGiIKwtMraKapmduchTMbdReUi1AoVTe9f3ss,47
33
- phasorpy-0.6.dist-info/top_level.txt,sha256=4Y0uYzya5R2loleAxZ6s2n53_FysUbgFTfFaU0i9rbo,9
34
- phasorpy-0.6.dist-info/RECORD,,
File without changes