phasorpy 0.3__tar.gz → 0.5__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.3 → phasorpy-0.5}/LICENSE.txt +1 -1
- {phasorpy-0.3 → phasorpy-0.5}/MANIFEST.in +1 -0
- {phasorpy-0.3/src/phasorpy.egg-info → phasorpy-0.5}/PKG-INFO +11 -15
- {phasorpy-0.3 → phasorpy-0.5}/README.md +1 -1
- phasorpy-0.5/docs/_static/switcher.json +23 -0
- {phasorpy-0.3 → phasorpy-0.5}/docs/acknowledgments.rst +1 -0
- phasorpy-0.5/docs/api/cluster.rst +5 -0
- {phasorpy-0.3 → phasorpy-0.5}/docs/api/index.rst +3 -3
- {phasorpy-0.3 → phasorpy-0.5}/docs/conf.py +1 -1
- {phasorpy-0.3 → phasorpy-0.5}/docs/index.rst +3 -7
- {phasorpy-0.3 → phasorpy-0.5}/docs/license.rst +1 -1
- {phasorpy-0.3 → phasorpy-0.5}/docs/release.rst +91 -7
- {phasorpy-0.3 → phasorpy-0.5}/pyproject.toml +18 -26
- phasorpy-0.3/src/phasorpy/io.py → phasorpy-0.5/src/phasorpy/_io.py +1214 -370
- {phasorpy-0.3 → phasorpy-0.5}/src/phasorpy/_phasorpy.pyx +119 -47
- {phasorpy-0.3 → phasorpy-0.5}/src/phasorpy/_utils.py +165 -18
- {phasorpy-0.3 → phasorpy-0.5}/src/phasorpy/cli.py +2 -0
- phasorpy-0.5/src/phasorpy/cluster.py +170 -0
- {phasorpy-0.3 → phasorpy-0.5}/src/phasorpy/color.py +17 -13
- {phasorpy-0.3 → phasorpy-0.5}/src/phasorpy/components.py +18 -18
- {phasorpy-0.3 → phasorpy-0.5}/src/phasorpy/conftest.py +2 -0
- {phasorpy-0.3 → phasorpy-0.5}/src/phasorpy/cursors.py +9 -9
- {phasorpy-0.3 → phasorpy-0.5}/src/phasorpy/datasets.py +169 -10
- phasorpy-0.5/src/phasorpy/io.py +9 -0
- {phasorpy-0.3 → phasorpy-0.5}/src/phasorpy/phasor.py +281 -100
- {phasorpy-0.3 → phasorpy-0.5}/src/phasorpy/plot.py +276 -36
- {phasorpy-0.3 → phasorpy-0.5}/src/phasorpy/utils.py +12 -7
- {phasorpy-0.3 → phasorpy-0.5}/src/phasorpy/version.py +14 -5
- {phasorpy-0.3 → phasorpy-0.5/src/phasorpy.egg-info}/PKG-INFO +11 -15
- {phasorpy-0.3 → phasorpy-0.5}/src/phasorpy.egg-info/SOURCES.txt +6 -0
- {phasorpy-0.3 → phasorpy-0.5}/src/phasorpy.egg-info/requires.txt +5 -9
- {phasorpy-0.3 → phasorpy-0.5}/tests/test__utils.py +53 -0
- phasorpy-0.5/tests/test_cluster.py +94 -0
- phasorpy-0.5/tests/test_io.py +1324 -0
- {phasorpy-0.3 → phasorpy-0.5}/tests/test_phasor.py +835 -102
- {phasorpy-0.3 → phasorpy-0.5}/tests/test_plot.py +110 -4
- {phasorpy-0.3 → phasorpy-0.5}/tests/test_utils.py +4 -4
- {phasorpy-0.3 → phasorpy-0.5}/tutorials/api/phasorpy_components.py +42 -53
- {phasorpy-0.3 → phasorpy-0.5}/tutorials/api/phasorpy_cursors.py +13 -18
- phasorpy-0.5/tutorials/api/phasorpy_filtering.py +214 -0
- {phasorpy-0.3 → phasorpy-0.5}/tutorials/api/phasorpy_fret.py +14 -15
- phasorpy-0.5/tutorials/api/phasorpy_io.py +756 -0
- {phasorpy-0.3 → phasorpy-0.5}/tutorials/api/phasorpy_multi-harmonic.py +5 -5
- {phasorpy-0.3 → phasorpy-0.5}/tutorials/api/phasorpy_phasorplot.py +11 -10
- {phasorpy-0.3 → phasorpy-0.5}/tutorials/phasorpy_introduction.py +86 -57
- {phasorpy-0.3 → phasorpy-0.5}/tutorials/phasorpy_lfd_workshop.py +20 -16
- phasorpy-0.3/docs/_static/switcher.json +0 -18
- phasorpy-0.3/tests/test_io.py +0 -791
- {phasorpy-0.3 → phasorpy-0.5}/docs/_static/categorical.png +0 -0
- {phasorpy-0.3 → phasorpy-0.5}/docs/_static/custom-icons.js +0 -0
- {phasorpy-0.3 → phasorpy-0.5}/docs/_static/logo.png +0 -0
- {phasorpy-0.3 → phasorpy-0.5}/docs/_static/srgb_spectrum.png +0 -0
- {phasorpy-0.3 → phasorpy-0.5}/docs/api/_phasorpy.rst +0 -0
- {phasorpy-0.3 → phasorpy-0.5}/docs/api/_utils.rst +0 -0
- {phasorpy-0.3 → phasorpy-0.5}/docs/api/cli.rst +0 -0
- {phasorpy-0.3 → phasorpy-0.5}/docs/api/color.rst +0 -0
- {phasorpy-0.3 → phasorpy-0.5}/docs/api/components.rst +0 -0
- {phasorpy-0.3 → phasorpy-0.5}/docs/api/cursors.rst +0 -0
- {phasorpy-0.3 → phasorpy-0.5}/docs/api/datasets.rst +0 -0
- {phasorpy-0.3 → phasorpy-0.5}/docs/api/io.rst +0 -0
- {phasorpy-0.3 → phasorpy-0.5}/docs/api/phasor.rst +0 -0
- {phasorpy-0.3 → phasorpy-0.5}/docs/api/phasorpy.rst +0 -0
- {phasorpy-0.3 → phasorpy-0.5}/docs/api/plot.rst +0 -0
- {phasorpy-0.3 → phasorpy-0.5}/docs/api/utils.rst +0 -0
- {phasorpy-0.3 → phasorpy-0.5}/docs/code_of_conduct.rst +0 -0
- {phasorpy-0.3 → phasorpy-0.5}/docs/contributing.rst +0 -0
- {phasorpy-0.3 → phasorpy-0.5}/docs/phasor_approach.rst +0 -0
- {phasorpy-0.3 → phasorpy-0.5}/setup.cfg +0 -0
- {phasorpy-0.3 → phasorpy-0.5}/setup.py +0 -0
- {phasorpy-0.3 → phasorpy-0.5}/src/phasorpy/__init__.py +0 -0
- {phasorpy-0.3 → phasorpy-0.5}/src/phasorpy/__main__.py +0 -0
- {phasorpy-0.3 → phasorpy-0.5}/src/phasorpy/_typing.py +0 -0
- {phasorpy-0.3 → phasorpy-0.5}/src/phasorpy/py.typed +0 -0
- {phasorpy-0.3 → phasorpy-0.5}/src/phasorpy.egg-info/dependency_links.txt +0 -0
- {phasorpy-0.3 → phasorpy-0.5}/src/phasorpy.egg-info/entry_points.txt +0 -0
- {phasorpy-0.3 → phasorpy-0.5}/src/phasorpy.egg-info/not-zip-safe +0 -0
- {phasorpy-0.3 → phasorpy-0.5}/src/phasorpy.egg-info/top_level.txt +0 -0
- {phasorpy-0.3 → phasorpy-0.5}/tests/conftest.py +0 -0
- {phasorpy-0.3 → phasorpy-0.5}/tests/test__phasorpy.py +0 -0
- {phasorpy-0.3 → phasorpy-0.5}/tests/test__typing.py +0 -0
- {phasorpy-0.3 → phasorpy-0.5}/tests/test_cli.py +0 -0
- {phasorpy-0.3 → phasorpy-0.5}/tests/test_color.py +0 -0
- {phasorpy-0.3 → phasorpy-0.5}/tests/test_components.py +0 -0
- {phasorpy-0.3 → phasorpy-0.5}/tests/test_cursors.py +0 -0
- {phasorpy-0.3 → phasorpy-0.5}/tests/test_datasets.py +0 -0
- {phasorpy-0.3 → phasorpy-0.5}/tests/test_nan.py +0 -0
- {phasorpy-0.3 → phasorpy-0.5}/tests/test_phasorpy.py +0 -0
- {phasorpy-0.3 → phasorpy-0.5}/tutorials/README.rst +0 -0
- {phasorpy-0.3 → phasorpy-0.5}/tutorials/api/README.rst +0 -0
- {phasorpy-0.3 → phasorpy-0.5}/tutorials/api/phasorpy_lifetime_to_signal.py +0 -0
- {phasorpy-0.3 → phasorpy-0.5}/tutorials/api/phasorpy_pca.py +0 -0
- {phasorpy-0.3 → phasorpy-0.5}/tutorials/api/phasorpy_phasor_from_lifetime.py +0 -0
- {phasorpy-0.3 → phasorpy-0.5}/tutorials/applications/README.rst +0 -0
- {phasorpy-0.3 → phasorpy-0.5}/tutorials/benchmarks/README.rst +0 -0
- {phasorpy-0.3 → phasorpy-0.5}/tutorials/benchmarks/phasorpy_phasor_from_signal.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
MIT License
|
2
2
|
|
3
|
-
Copyright (c) 2022-
|
3
|
+
Copyright (c) 2022-2025 PhasorPy Contributors
|
4
4
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
@@ -1,9 +1,9 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.4
|
2
2
|
Name: phasorpy
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.5
|
4
4
|
Summary: Analysis of fluorescence lifetime and hyperspectral images using the phasor approach
|
5
5
|
Author: PhasorPy Contributors
|
6
|
-
License: MIT
|
6
|
+
License-Expression: MIT
|
7
7
|
Project-URL: Homepage, https://www.phasorpy.org
|
8
8
|
Project-URL: Documentation, https://www.phasorpy.org/docs/stable/
|
9
9
|
Project-URL: Download, https://pypi.org/project/phasorpy/#files
|
@@ -13,25 +13,24 @@ Project-URL: Release notes, https://www.phasorpy.org/docs/stable/release
|
|
13
13
|
Classifier: Development Status :: 3 - Alpha
|
14
14
|
Classifier: Intended Audience :: Developers
|
15
15
|
Classifier: Intended Audience :: Science/Research
|
16
|
-
Classifier: License :: OSI Approved :: MIT License
|
17
16
|
Classifier: Programming Language :: Python
|
18
17
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
19
18
|
Classifier: Operating System :: OS Independent
|
20
19
|
Classifier: Programming Language :: Python :: 3
|
21
20
|
Classifier: Programming Language :: Python :: 3 :: Only
|
22
|
-
Classifier: Programming Language :: Python :: 3.10
|
23
21
|
Classifier: Programming Language :: Python :: 3.11
|
24
22
|
Classifier: Programming Language :: Python :: 3.12
|
25
23
|
Classifier: Programming Language :: Python :: 3.13
|
26
|
-
Requires-Python: >=3.
|
24
|
+
Requires-Python: >=3.11
|
27
25
|
Description-Content-Type: text/markdown
|
28
26
|
License-File: LICENSE.txt
|
29
|
-
Requires-Dist: numpy>=1.
|
30
|
-
Requires-Dist: matplotlib>=3.
|
27
|
+
Requires-Dist: numpy>=1.25.0
|
28
|
+
Requires-Dist: matplotlib>=3.8.0
|
31
29
|
Requires-Dist: scipy>=1.11.0
|
32
30
|
Requires-Dist: click
|
33
31
|
Requires-Dist: pooch
|
34
32
|
Requires-Dist: tqdm
|
33
|
+
Requires-Dist: scikit-learn>=1.5.0
|
35
34
|
Requires-Dist: xarray>=2023.4.0
|
36
35
|
Requires-Dist: tifffile>=2024.8.30
|
37
36
|
Provides-Extra: docs
|
@@ -42,16 +41,13 @@ Requires-Dist: sphinx-copybutton; extra == "docs"
|
|
42
41
|
Requires-Dist: sphinx_click; extra == "docs"
|
43
42
|
Requires-Dist: pydata-sphinx-theme>=0.16.0; extra == "docs"
|
44
43
|
Requires-Dist: numpydoc; extra == "docs"
|
45
|
-
Provides-Extra: test
|
46
|
-
Requires-Dist: pytest; extra == "test"
|
47
|
-
Requires-Dist: pytest-cov; extra == "test"
|
48
|
-
Requires-Dist: pytest-runner; extra == "test"
|
49
|
-
Requires-Dist: pytest-doctestplus; extra == "test"
|
50
|
-
Requires-Dist: coverage; extra == "test"
|
51
44
|
Provides-Extra: all
|
52
45
|
Requires-Dist: lfdfiles>=2024.5.24; extra == "all"
|
53
46
|
Requires-Dist: sdtfile>=2024.5.24; extra == "all"
|
54
47
|
Requires-Dist: ptufile>=2024.9.14; extra == "all"
|
48
|
+
Requires-Dist: liffile>=2025.2.10; extra == "all"
|
49
|
+
Requires-Dist: pawflim; extra == "all"
|
50
|
+
Dynamic: license-file
|
55
51
|
|
56
52
|
# PhasorPy
|
57
53
|
|
@@ -61,7 +57,7 @@ lifetime and hyperspectral images using the phasor approach.
|
|
61
57
|
- [Homepage](https://www.phasorpy.org)
|
62
58
|
- [Documentation](https://www.phasorpy.org/docs/stable/)
|
63
59
|
- [Source code](https://github.com/phasorpy/phasorpy)
|
64
|
-
- [
|
60
|
+
- [Install with pip](https://pypi.org/project/phasorpy/) or [conda](https://anaconda.org/conda-forge/phasorpy).
|
65
61
|
- [Data files](https://zenodo.org/communities/phasorpy/)
|
66
62
|
- [Issues and questions](https://github.com/phasorpy/phasorpy/issues)
|
67
63
|
|
@@ -6,7 +6,7 @@ lifetime and hyperspectral images using the phasor approach.
|
|
6
6
|
- [Homepage](https://www.phasorpy.org)
|
7
7
|
- [Documentation](https://www.phasorpy.org/docs/stable/)
|
8
8
|
- [Source code](https://github.com/phasorpy/phasorpy)
|
9
|
-
- [
|
9
|
+
- [Install with pip](https://pypi.org/project/phasorpy/) or [conda](https://anaconda.org/conda-forge/phasorpy).
|
10
10
|
- [Data files](https://zenodo.org/communities/phasorpy/)
|
11
11
|
- [Issues and questions](https://github.com/phasorpy/phasorpy/issues)
|
12
12
|
|
@@ -0,0 +1,23 @@
|
|
1
|
+
[
|
2
|
+
{
|
3
|
+
"name": "dev",
|
4
|
+
"version": "0.6",
|
5
|
+
"url": "https://www.phasorpy.org/docs/dev/"
|
6
|
+
},
|
7
|
+
{
|
8
|
+
"name": "0.5 (stable)",
|
9
|
+
"version": "0.5",
|
10
|
+
"url": "https://www.phasorpy.org/docs/stable/",
|
11
|
+
"preferred": true
|
12
|
+
},
|
13
|
+
{
|
14
|
+
"name": "0.4",
|
15
|
+
"version": "0.4",
|
16
|
+
"url": "https://www.phasorpy.org/docs/v0.4/"
|
17
|
+
},
|
18
|
+
{
|
19
|
+
"name": "0.3",
|
20
|
+
"version": "0.3",
|
21
|
+
"url": "https://www.phasorpy.org/docs/v0.3/"
|
22
|
+
}
|
23
|
+
]
|
@@ -25,6 +25,7 @@ The following people (in alphabetical order) have contributed to the
|
|
25
25
|
development of PhasorPy by providing code, documentation, tutorials,
|
26
26
|
bug fixes, or expertise:
|
27
27
|
|
28
|
+
- :user:`Rodrigo Blanco <R-Blanco802>`
|
28
29
|
- :user:`Christoph Gohlke <cgohlke>`
|
29
30
|
- Enrico Gratton
|
30
31
|
- :user:`Leonel Malacrida <lmalacrida>`
|
@@ -5,9 +5,8 @@ This documents the application programming and command line interfaces of the
|
|
5
5
|
PhasorPy library version |version|.
|
6
6
|
|
7
7
|
.. note::
|
8
|
-
The PhasorPy library is
|
9
|
-
|
10
|
-
Large, backwards-incompatible changes may occur between revisions.
|
8
|
+
The PhasorPy library is still under construction. Backwards-incompatible
|
9
|
+
changes may occur between revisions.
|
11
10
|
|
12
11
|
.. toctree::
|
13
12
|
:maxdepth: 3
|
@@ -16,6 +15,7 @@ PhasorPy library version |version|.
|
|
16
15
|
phasor
|
17
16
|
cursors
|
18
17
|
components
|
18
|
+
cluster
|
19
19
|
plot
|
20
20
|
io
|
21
21
|
color
|
@@ -7,15 +7,10 @@ Welcome to the documentation of PhasorPy version |version|.
|
|
7
7
|
PhasorPy is an open-source Python library for the analysis of fluorescence
|
8
8
|
lifetime and hyperspectral images using the :doc:`phasor_approach`.
|
9
9
|
|
10
|
-
.. note::
|
11
|
-
The PhasorPy library is in its early stages of development.
|
12
|
-
It is not nearly feature complete.
|
13
|
-
Large, backwards-incompatible changes may occur between revisions.
|
14
|
-
|
15
10
|
Quickstart
|
16
11
|
==========
|
17
12
|
|
18
|
-
The :doc:`tutorials/index` demonstrate the use the library, from simple
|
13
|
+
The :doc:`tutorials/index` demonstrate the use of the library, from simple
|
19
14
|
examples to advanced applications.
|
20
15
|
|
21
16
|
The :doc:`api/index` contains detailed information about all functions and
|
@@ -40,7 +35,8 @@ The library's source code and documentation are maintained in the
|
|
40
35
|
`PhasorPy repository on GitHub <https://github.com/phasorpy/phasorpy>`_.
|
41
36
|
|
42
37
|
Releases can be downloaded and installed from the
|
43
|
-
`PhasorPy project on PyPI <https://pypi.org/project/phasorpy/>`_
|
38
|
+
`PhasorPy project on PyPI <https://pypi.org/project/phasorpy/>`_
|
39
|
+
or `conda-forge <https://anaconda.org/conda-forge/phasorpy>`_.
|
44
40
|
|
45
41
|
Sample data files used in tutorials and testing are available from the
|
46
42
|
`PhasorPy community on Zenodo <https://zenodo.org/communities/phasorpy>`_.
|
@@ -1,7 +1,7 @@
|
|
1
1
|
MIT License
|
2
2
|
===========
|
3
3
|
|
4
|
-
Copyright © 2022-
|
4
|
+
Copyright © 2022-2025 :ref:`PhasorPy Contributors <contributors>`
|
5
5
|
|
6
6
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
7
7
|
of this software and associated documentation files (the “Software”), to deal
|
@@ -6,18 +6,102 @@ a release. It includes descriptions of bug fixes, feature enhancements,
|
|
6
6
|
documentation and maintenance changes.
|
7
7
|
|
8
8
|
.. note::
|
9
|
-
The PhasorPy library is
|
10
|
-
|
11
|
-
|
9
|
+
The PhasorPy library is still under construction. Backwards-incompatible
|
10
|
+
changes may occur between revisions.
|
11
|
+
|
12
|
+
0.5 (2025.4.11)
|
13
|
+
---------------
|
14
|
+
|
15
|
+
This is the fifth alpha release of the PhasorPy library.
|
16
|
+
It contains several bug fixes and improvements.
|
17
|
+
The new ``phasor_cluster_gmm`` function finds clusters in phasor coordinates
|
18
|
+
using a Gaussian mixture model.
|
19
|
+
The ``phasor_filter_pawflim`` function applies a wavelet filter using the
|
20
|
+
pawFLIM library.
|
21
|
+
This release supports Python 3.11 to 3.13. Python 3.10 is no longer supported.
|
22
|
+
|
23
|
+
What's Changed
|
24
|
+
..............
|
25
|
+
|
26
|
+
* Bump version by @cgohlke in https://github.com/phasorpy/phasorpy/pull/183
|
27
|
+
* Bug Fix for phasor_calibrate when skipping axes with harmonic axis by @bruno-pannunzio in https://github.com/phasorpy/phasorpy/pull/185
|
28
|
+
* Fixes for liffile 2025.2.6 by @cgohlke in https://github.com/phasorpy/phasorpy/pull/184
|
29
|
+
* Fix phasor_normalize with numpy 1.24 by @cgohlke in https://github.com/phasorpy/phasorpy/pull/186
|
30
|
+
* Add pawFLIM wavelet filter for phasor coordinates by @bruno-pannunzio in https://github.com/phasorpy/phasorpy/pull/167
|
31
|
+
* Add dataset from zenodo.org/records/14860228 by @cgohlke in https://github.com/phasorpy/phasorpy/pull/187
|
32
|
+
* Improve support for Leica image files by @cgohlke in https://github.com/phasorpy/phasorpy/pull/188
|
33
|
+
* Remove notes about early stage of development by @cgohlke in https://github.com/phasorpy/phasorpy/pull/189
|
34
|
+
* Add plot_histograms function by @cgohlke in https://github.com/phasorpy/phasorpy/pull/191
|
35
|
+
* Fix NaN padding in phasor_to_simfcs_referenced by @cgohlke in https://github.com/phasorpy/phasorpy/pull/192
|
36
|
+
* Return more metadata from IFLI and FBD readers by @cgohlke in https://github.com/phasorpy/phasorpy/pull/193
|
37
|
+
* Add more formats to file I/O tutorial by @cgohlke in https://github.com/phasorpy/phasorpy/pull/194
|
38
|
+
* Fix module attribute of functions in phasorpy.io by @cgohlke in https://github.com/phasorpy/phasorpy/pull/195
|
39
|
+
* Add plot_image helper function by @cgohlke in https://github.com/phasorpy/phasorpy/pull/196
|
40
|
+
* Add section on other means to IO tutorial by @cgohlke in https://github.com/phasorpy/phasorpy/pull/197
|
41
|
+
* Bump pypa/cibuildwheel from 2.22.0 to 2.23.0 in the github-actions group by @dependabot in https://github.com/phasorpy/phasorpy/pull/198
|
42
|
+
* Improve IO tutorial by @cgohlke in https://github.com/phasorpy/phasorpy/pull/199
|
43
|
+
* Fix minor issues found by GitHub Copilot by @cgohlke in https://github.com/phasorpy/phasorpy/pull/202
|
44
|
+
* Move parse_skip_axis function to _utils module by @cgohlke in https://github.com/phasorpy/phasorpy/pull/203
|
45
|
+
* Fix new mypy errors with numpy 2.2.4 by @cgohlke in https://github.com/phasorpy/phasorpy/pull/204
|
46
|
+
* Raise minimum requirements by @cgohlke in https://github.com/phasorpy/phasorpy/pull/208
|
47
|
+
* Add phasor_cluster_gmm function by @R-Blanco802 in https://github.com/phasorpy/phasorpy/pull/201
|
48
|
+
* Require scikit-learn>=1.5.0 by @cgohlke in https://github.com/phasorpy/phasorpy/pull/209
|
49
|
+
* Support routing channels in signal_from_sdt by @cgohlke in https://github.com/phasorpy/phasorpy/pull/210
|
50
|
+
* Improve tests and documentation of phasor_cluster_gmm by @cgohlke in https://github.com/phasorpy/phasorpy/pull/211
|
51
|
+
* Ignore PhasorPlot.contour cmap if colors is set by @cgohlke in https://github.com/phasorpy/phasorpy/pull/213
|
52
|
+
* Bump pypa/cibuildwheel from 2.23.1 to 2.23.2 in the github-actions group by @dependabot in https://github.com/phasorpy/phasorpy/pull/214
|
53
|
+
* Update Ubuntu version by @cgohlke in https://github.com/phasorpy/phasorpy/pull/219
|
54
|
+
* Require Cython>=3.1.0b1 by @cgohlke in https://github.com/phasorpy/phasorpy/pull/216
|
55
|
+
* Add PTU file exported from FLIM_testdata.lif with photon filter by @cgohlke in https://github.com/phasorpy/phasorpy/pull/217
|
56
|
+
* Fix multi-channel FLIM LABS files containing single-channel phasors by @cgohlke in https://github.com/phasorpy/phasorpy/pull/218
|
57
|
+
* Release v0.5 by @cgohlke in https://github.com/phasorpy/phasorpy/pull/220
|
58
|
+
|
59
|
+
## New Contributors
|
60
|
+
* @R-Blanco802 made their first contribution in https://github.com/phasorpy/phasorpy/pull/201
|
61
|
+
|
62
|
+
**Full Changelog**: https://github.com/phasorpy/phasorpy/compare/v0.4...v0.5
|
63
|
+
|
64
|
+
0.4 (2025.1.30)
|
65
|
+
---------------
|
66
|
+
|
67
|
+
This is the fourth alpha release of the PhasorPy library.
|
68
|
+
It contains several bug fixes and many improvements, mostly to the
|
69
|
+
``phasorpy.io`` module.
|
70
|
+
File reader functions are now named ``signal_from_*`` or ``phasor_from_*``
|
71
|
+
and have a more consistent API.
|
72
|
+
Point mode PTU files, LIF files containing phasor coordinates or hyperspectral
|
73
|
+
signals, and FLIM LABS JSON files are supported.
|
74
|
+
PhasorPy releases are now available on conda-forge.
|
75
|
+
This release supports Python 3.10 to 3.13.
|
76
|
+
|
77
|
+
What's Changed
|
78
|
+
..............
|
79
|
+
|
80
|
+
* Bump version by @cgohlke in https://github.com/phasorpy/phasorpy/pull/163
|
81
|
+
* Support labelled signal axes by @cgohlke in https://github.com/phasorpy/phasorpy/pull/166
|
82
|
+
* Update copyright year by @cgohlke in https://github.com/phasorpy/phasorpy/pull/168
|
83
|
+
* Return array coordinates from files in normal units by @cgohlke in https://github.com/phasorpy/phasorpy/pull/169
|
84
|
+
* Document availability on conda-forge by @cgohlke in https://github.com/phasorpy/phasorpy/pull/170
|
85
|
+
* Fix RST code is two backticks by @cgohlke in https://github.com/phasorpy/phasorpy/pull/171
|
86
|
+
* Support reading point mode PTU files by @cgohlke in https://github.com/phasorpy/phasorpy/pull/172
|
87
|
+
* Fix phasor_calibrate for handling higher harmonics than size of first dimension of reference_real by @bruno-pannunzio in https://github.com/phasorpy/phasorpy/pull/176
|
88
|
+
* Improve io module by @cgohlke in https://github.com/phasorpy/phasorpy/pull/177
|
89
|
+
* Add support for Leica LIF files by @cgohlke in https://github.com/phasorpy/phasorpy/pull/178
|
90
|
+
* Add support for new FLIM LABS JSON format by @cgohlke in https://github.com/phasorpy/phasorpy/pull/179
|
91
|
+
* Reformat with black 25.1 by @cgohlke in https://github.com/phasorpy/phasorpy/pull/180
|
92
|
+
* Release v0.4 by @cgohlke in https://github.com/phasorpy/phasorpy/pull/181
|
93
|
+
* Fixes for liffile 2025.1.30 by @cgohlke in https://github.com/phasorpy/phasorpy/pull/182
|
94
|
+
|
95
|
+
**Full Changelog**: https://github.com/phasorpy/phasorpy/compare/v0.3...v0.4
|
12
96
|
|
13
97
|
0.3 (2024.12.16)
|
14
98
|
----------------
|
15
99
|
|
16
100
|
This is the third alpha release of the PhasorPy library.
|
17
|
-
It fixes the averaging of phasor coordinates in the
|
18
|
-
|
19
|
-
with
|
20
|
-
|
101
|
+
It fixes the averaging of phasor coordinates in the ``phasor_center`` and
|
102
|
+
``phasor_calibrate`` functions, replaces the ``phasor_filter`` function
|
103
|
+
with ``phasor_filter_median``, adds support for multiple harmonics to
|
104
|
+
``phasor_threshold``, and adds the ``read_imspector_tiff`` function to read
|
21
105
|
ImSpector FLIM TIFF files. This release supports Python 3.10 to 3.13.
|
22
106
|
|
23
107
|
What's Changed
|
@@ -2,7 +2,7 @@
|
|
2
2
|
requires = [
|
3
3
|
"setuptools>=68",
|
4
4
|
"numpy",
|
5
|
-
"
|
5
|
+
"cython>=3.1.0b1",
|
6
6
|
]
|
7
7
|
build-backend = "setuptools.build_meta"
|
8
8
|
|
@@ -14,36 +14,35 @@ dynamic = ["version"]
|
|
14
14
|
dependencies = [
|
15
15
|
# sync with requirements_min.txt
|
16
16
|
# https://scientific-python.org/specs/spec-0000/
|
17
|
-
"numpy>=1.
|
18
|
-
"matplotlib>=3.
|
17
|
+
"numpy>=1.25.0",
|
18
|
+
"matplotlib>=3.8.0",
|
19
19
|
"scipy>=1.11.0",
|
20
20
|
"click",
|
21
21
|
"pooch",
|
22
22
|
"tqdm",
|
23
|
-
|
24
|
-
# "scikit-
|
25
|
-
# "pandas>=2.
|
23
|
+
"scikit-learn>=1.5.0",
|
24
|
+
# "scikit-image>=0.21.0",
|
25
|
+
# "pandas>=2.1.0",
|
26
26
|
"xarray>=2023.4.0",
|
27
27
|
"tifffile>=2024.8.30",
|
28
28
|
]
|
29
|
-
requires-python = ">=3.
|
29
|
+
requires-python = ">=3.11"
|
30
30
|
classifiers = [
|
31
31
|
"Development Status :: 3 - Alpha",
|
32
32
|
"Intended Audience :: Developers",
|
33
33
|
"Intended Audience :: Science/Research",
|
34
|
-
"License :: OSI Approved :: MIT License",
|
35
34
|
"Programming Language :: Python",
|
36
35
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
37
36
|
"Operating System :: OS Independent",
|
38
37
|
"Programming Language :: Python :: 3",
|
39
38
|
"Programming Language :: Python :: 3 :: Only",
|
40
|
-
"Programming Language :: Python :: 3.10",
|
41
39
|
"Programming Language :: Python :: 3.11",
|
42
40
|
"Programming Language :: Python :: 3.12",
|
43
41
|
"Programming Language :: Python :: 3.13",
|
44
42
|
]
|
45
43
|
authors = [{ name = "PhasorPy Contributors" }]
|
46
|
-
license =
|
44
|
+
license = "MIT"
|
45
|
+
license-files = ["LICENSE.txt"]
|
47
46
|
|
48
47
|
[project.urls]
|
49
48
|
Homepage = "https://www.phasorpy.org"
|
@@ -66,23 +65,15 @@ docs = [
|
|
66
65
|
"pydata-sphinx-theme>=0.16.0",
|
67
66
|
"numpydoc",
|
68
67
|
]
|
69
|
-
test = [
|
70
|
-
"pytest",
|
71
|
-
"pytest-cov",
|
72
|
-
"pytest-runner",
|
73
|
-
"pytest-doctestplus",
|
74
|
-
"coverage",
|
75
|
-
]
|
76
68
|
all = [
|
77
69
|
"lfdfiles>=2024.5.24",
|
78
70
|
"sdtfile>=2024.5.24",
|
79
71
|
"ptufile>=2024.9.14",
|
72
|
+
"liffile>=2025.2.10",
|
73
|
+
"pawflim",
|
80
74
|
]
|
81
75
|
|
82
76
|
[tool.setuptools]
|
83
|
-
package-dir = { "" = "src" }
|
84
|
-
packages = ["phasorpy"]
|
85
|
-
license-files = ["LICENSE.txt"]
|
86
77
|
zip-safe = false
|
87
78
|
|
88
79
|
[tool.setuptools.dynamic]
|
@@ -122,7 +113,7 @@ disable = [
|
|
122
113
|
|
123
114
|
[tool.black]
|
124
115
|
line-length = 79
|
125
|
-
target-version = ["
|
116
|
+
target-version = ["py311"]
|
126
117
|
skip-string-normalization = true
|
127
118
|
|
128
119
|
[tool.isort]
|
@@ -142,14 +133,15 @@ strict = true
|
|
142
133
|
warn_unreachable = true
|
143
134
|
|
144
135
|
[[tool.mypy.overrides]]
|
145
|
-
module = ["phasorpy._phasorpy", "pooch.*", "scipy.*", "mkl_fft.*"]
|
136
|
+
module = ["phasorpy._phasorpy", "pooch.*", "scipy.*", "mkl_fft.*", "sklearn.*"]
|
146
137
|
ignore_missing_imports = true
|
147
138
|
|
148
139
|
[tool.coverage.run]
|
149
140
|
plugins = ["Cython.Coverage"]
|
141
|
+
omit = ["conftest.py", "__main__.py"]
|
150
142
|
|
151
143
|
[tool.coverage.report]
|
152
|
-
exclude_lines = ["pragma: no cover", "pragma: ${PY_MAJOR_VERSION} no cover"]
|
144
|
+
exclude_lines = ["if TYPE_CHECKING:", "plot.show()", "pragma: no cover", "pragma: ${PY_MAJOR_VERSION} no cover"]
|
153
145
|
|
154
146
|
[tool.coverage.html]
|
155
147
|
directory = "_htmlcov"
|
@@ -159,7 +151,7 @@ minversion = "7"
|
|
159
151
|
log_cli_level = "INFO"
|
160
152
|
# filterwarnings = ["error"] # breaks debugging tests in VSCode (Sept. 2024)
|
161
153
|
xfail_strict = true
|
162
|
-
addopts = "-rfEXs --strict-config --strict-markers --doctest-modules --doctest-glob=*.py --doctest-glob=*.rst"
|
154
|
+
addopts = "-rfEXs --strict-config --strict-markers --doctest-modules --doctest-glob=*.py --doctest-glob=*.rst --ignore=src/phasorpy/_io.py"
|
163
155
|
doctest_optionflags = [
|
164
156
|
"NORMALIZE_WHITESPACE",
|
165
157
|
"ELLIPSIS",
|
@@ -186,6 +178,6 @@ norecursedirs = [
|
|
186
178
|
]
|
187
179
|
|
188
180
|
[tool.cibuildwheel]
|
189
|
-
skip = "pp* cp37* cp38* cp39* *musllinux* *i686 *ppc64le *s390x cp39*win*arm64
|
190
|
-
test-requires = ["lfdfiles", "sdtfile", "ptufile", "pytest", "pytest-cov", "pytest-runner", "pytest-doctestplus", "coverage"]
|
181
|
+
skip = "pp* cp37* cp38* cp39* cp310* *musllinux* *i686 *ppc64le *s390x cp39*win*arm64"
|
182
|
+
test-requires = ["scikit-learn", "lfdfiles", "sdtfile", "ptufile", "liffile", "pawflim", "pytest", "pytest-cov", "pytest-runner", "pytest-doctestplus", "coverage"]
|
191
183
|
test-command = "pytest {project}/tests"
|