phasorpy 0.1.dev0__tar.gz → 0.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. {phasorpy-0.1.dev0 → phasorpy-0.2}/.codecov.yml +11 -11
  2. {phasorpy-0.1.dev0 → phasorpy-0.2}/.github/dependabot.yml +11 -11
  3. phasorpy-0.2/.github/pull_request_template.md +15 -0
  4. phasorpy-0.2/.github/workflows/build_sdist.yml +77 -0
  5. {phasorpy-0.1.dev0 → phasorpy-0.2}/.github/workflows/build_wheels.yml +11 -5
  6. {phasorpy-0.1.dev0 → phasorpy-0.2}/.github/workflows/run-tests.yml +31 -3
  7. {phasorpy-0.1.dev0 → phasorpy-0.2}/PKG-INFO +10 -10
  8. {phasorpy-0.1.dev0 → phasorpy-0.2}/README.md +2 -2
  9. phasorpy-0.2/docs/_static/custom-icons.js +16 -0
  10. phasorpy-0.2/docs/_static/switcher.json +13 -0
  11. {phasorpy-0.1.dev0 → phasorpy-0.2}/docs/acknowledgments.rst +3 -0
  12. {phasorpy-0.1.dev0 → phasorpy-0.2}/docs/conf.py +30 -5
  13. {phasorpy-0.1.dev0 → phasorpy-0.2}/docs/contributing.rst +2 -2
  14. {phasorpy-0.1.dev0 → phasorpy-0.2}/docs/index.rst +17 -16
  15. {phasorpy-0.1.dev0 → phasorpy-0.2}/docs/phasor_approach.rst +17 -1
  16. phasorpy-0.2/docs/release.rst +176 -0
  17. {phasorpy-0.1.dev0 → phasorpy-0.2}/docs/sg_execution_times.rst +15 -15
  18. {phasorpy-0.1.dev0 → phasorpy-0.2}/pyproject.toml +7 -7
  19. {phasorpy-0.1.dev0 → phasorpy-0.2}/requirements_dev.txt +3 -2
  20. {phasorpy-0.1.dev0 → phasorpy-0.2}/src/phasorpy/_phasorpy.pyx +333 -1
  21. {phasorpy-0.1.dev0 → phasorpy-0.2}/src/phasorpy/_utils.py +27 -14
  22. {phasorpy-0.1.dev0 → phasorpy-0.2}/src/phasorpy/datasets.py +20 -0
  23. {phasorpy-0.1.dev0 → phasorpy-0.2}/src/phasorpy/io.py +7 -9
  24. {phasorpy-0.1.dev0 → phasorpy-0.2}/src/phasorpy/phasor.py +227 -51
  25. phasorpy-0.2/src/phasorpy/utils.py +368 -0
  26. {phasorpy-0.1.dev0 → phasorpy-0.2}/src/phasorpy/version.py +1 -1
  27. {phasorpy-0.1.dev0 → phasorpy-0.2}/src/phasorpy.egg-info/PKG-INFO +10 -10
  28. {phasorpy-0.1.dev0 → phasorpy-0.2}/src/phasorpy.egg-info/SOURCES.txt +8 -4
  29. {phasorpy-0.1.dev0 → phasorpy-0.2}/src/phasorpy.egg-info/requires.txt +1 -1
  30. {phasorpy-0.1.dev0 → phasorpy-0.2}/tests/test__utils.py +23 -18
  31. {phasorpy-0.1.dev0 → phasorpy-0.2}/tests/test_io.py +2 -2
  32. {phasorpy-0.1.dev0 → phasorpy-0.2}/tests/test_nan.py +16 -5
  33. {phasorpy-0.1.dev0 → phasorpy-0.2}/tests/test_phasor.py +384 -20
  34. phasorpy-0.2/tests/test_utils.py +140 -0
  35. phasorpy-0.2/tools/build_manylinux2014.cmd +13 -0
  36. phasorpy-0.2/tools/build_manylinux2014.sh +10 -0
  37. phasorpy-0.2/tools/sha256.py +36 -0
  38. phasorpy-0.2/tutorials/api/phasorpy_multi-harmonic.py +209 -0
  39. {phasorpy-0.1.dev0 → phasorpy-0.2}/tutorials/phasorpy_introduction.py +46 -12
  40. phasorpy-0.1.dev0/.github/pull_request_template.md +0 -24
  41. phasorpy-0.1.dev0/.github/workflows/release-pypi.yml +0 -75
  42. phasorpy-0.1.dev0/docs/release.rst +0 -11
  43. phasorpy-0.1.dev0/src/phasorpy/utils.py +0 -68
  44. phasorpy-0.1.dev0/tests/test_utils.py +0 -29
  45. phasorpy-0.1.dev0/tutorials/misc/README.rst +0 -2
  46. phasorpy-0.1.dev0/tutorials/misc/phasorpy_logo.py +0 -23
  47. {phasorpy-0.1.dev0 → phasorpy-0.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  48. {phasorpy-0.1.dev0 → phasorpy-0.2}/.github/workflows/coverage.yml +0 -0
  49. {phasorpy-0.1.dev0 → phasorpy-0.2}/.github/workflows/deploy-docs.yml +0 -0
  50. {phasorpy-0.1.dev0 → phasorpy-0.2}/.gitignore +0 -0
  51. {phasorpy-0.1.dev0 → phasorpy-0.2}/.pre-commit-config.yaml +0 -0
  52. {phasorpy-0.1.dev0 → phasorpy-0.2}/CHANGELOG.md +0 -0
  53. {phasorpy-0.1.dev0 → phasorpy-0.2}/CODE_OF_CONDUCT.md +0 -0
  54. {phasorpy-0.1.dev0 → phasorpy-0.2}/CONTRIBUTING.md +0 -0
  55. {phasorpy-0.1.dev0 → phasorpy-0.2}/LICENSE.txt +0 -0
  56. {phasorpy-0.1.dev0 → phasorpy-0.2}/MANIFEST.in +0 -0
  57. {phasorpy-0.1.dev0 → phasorpy-0.2}/docs/Makefile +0 -0
  58. {phasorpy-0.1.dev0 → phasorpy-0.2}/docs/_static/categorical.png +0 -0
  59. {phasorpy-0.1.dev0 → phasorpy-0.2}/docs/_static/logo.png +0 -0
  60. {phasorpy-0.1.dev0 → phasorpy-0.2}/docs/_static/srgb_spectrum.png +0 -0
  61. {phasorpy-0.1.dev0 → phasorpy-0.2}/docs/api/_phasorpy.rst +0 -0
  62. {phasorpy-0.1.dev0 → phasorpy-0.2}/docs/api/_utils.rst +0 -0
  63. {phasorpy-0.1.dev0 → phasorpy-0.2}/docs/api/cli.rst +0 -0
  64. {phasorpy-0.1.dev0 → phasorpy-0.2}/docs/api/color.rst +0 -0
  65. {phasorpy-0.1.dev0 → phasorpy-0.2}/docs/api/components.rst +0 -0
  66. {phasorpy-0.1.dev0 → phasorpy-0.2}/docs/api/cursors.rst +0 -0
  67. {phasorpy-0.1.dev0 → phasorpy-0.2}/docs/api/datasets.rst +0 -0
  68. {phasorpy-0.1.dev0 → phasorpy-0.2}/docs/api/index.rst +0 -0
  69. {phasorpy-0.1.dev0 → phasorpy-0.2}/docs/api/io.rst +0 -0
  70. {phasorpy-0.1.dev0 → phasorpy-0.2}/docs/api/phasor.rst +0 -0
  71. {phasorpy-0.1.dev0 → phasorpy-0.2}/docs/api/phasorpy.rst +0 -0
  72. {phasorpy-0.1.dev0 → phasorpy-0.2}/docs/api/plot.rst +0 -0
  73. {phasorpy-0.1.dev0 → phasorpy-0.2}/docs/api/utils.rst +0 -0
  74. {phasorpy-0.1.dev0 → phasorpy-0.2}/docs/code_of_conduct.rst +0 -0
  75. {phasorpy-0.1.dev0 → phasorpy-0.2}/docs/license.rst +0 -0
  76. {phasorpy-0.1.dev0 → phasorpy-0.2}/docs/make.bat +0 -0
  77. {phasorpy-0.1.dev0 → phasorpy-0.2}/requirements_min.txt +0 -0
  78. {phasorpy-0.1.dev0 → phasorpy-0.2}/setup.cfg +0 -0
  79. {phasorpy-0.1.dev0 → phasorpy-0.2}/setup.py +0 -0
  80. {phasorpy-0.1.dev0 → phasorpy-0.2}/src/phasorpy/__init__.py +0 -0
  81. {phasorpy-0.1.dev0 → phasorpy-0.2}/src/phasorpy/__main__.py +0 -0
  82. {phasorpy-0.1.dev0 → phasorpy-0.2}/src/phasorpy/_typing.py +0 -0
  83. {phasorpy-0.1.dev0 → phasorpy-0.2}/src/phasorpy/cli.py +0 -0
  84. {phasorpy-0.1.dev0 → phasorpy-0.2}/src/phasorpy/color.py +0 -0
  85. {phasorpy-0.1.dev0 → phasorpy-0.2}/src/phasorpy/components.py +0 -0
  86. {phasorpy-0.1.dev0 → phasorpy-0.2}/src/phasorpy/conftest.py +0 -0
  87. {phasorpy-0.1.dev0 → phasorpy-0.2}/src/phasorpy/cursors.py +0 -0
  88. {phasorpy-0.1.dev0 → phasorpy-0.2}/src/phasorpy/plot.py +0 -0
  89. {phasorpy-0.1.dev0 → phasorpy-0.2}/src/phasorpy/py.typed +0 -0
  90. {phasorpy-0.1.dev0 → phasorpy-0.2}/src/phasorpy.egg-info/dependency_links.txt +0 -0
  91. {phasorpy-0.1.dev0 → phasorpy-0.2}/src/phasorpy.egg-info/entry_points.txt +0 -0
  92. {phasorpy-0.1.dev0 → phasorpy-0.2}/src/phasorpy.egg-info/not-zip-safe +0 -0
  93. {phasorpy-0.1.dev0 → phasorpy-0.2}/src/phasorpy.egg-info/top_level.txt +0 -0
  94. {phasorpy-0.1.dev0 → phasorpy-0.2}/tests/conftest.py +0 -0
  95. {phasorpy-0.1.dev0 → phasorpy-0.2}/tests/test__phasorpy.py +0 -0
  96. {phasorpy-0.1.dev0 → phasorpy-0.2}/tests/test__typing.py +0 -0
  97. {phasorpy-0.1.dev0 → phasorpy-0.2}/tests/test_cli.py +0 -0
  98. {phasorpy-0.1.dev0 → phasorpy-0.2}/tests/test_color.py +0 -0
  99. {phasorpy-0.1.dev0 → phasorpy-0.2}/tests/test_components.py +0 -0
  100. {phasorpy-0.1.dev0 → phasorpy-0.2}/tests/test_cursors.py +0 -0
  101. {phasorpy-0.1.dev0 → phasorpy-0.2}/tests/test_datasets.py +0 -0
  102. {phasorpy-0.1.dev0 → phasorpy-0.2}/tests/test_phasorpy.py +0 -0
  103. {phasorpy-0.1.dev0 → phasorpy-0.2}/tests/test_plot.py +0 -0
  104. {phasorpy-0.1.dev0 → phasorpy-0.2}/tutorials/README.rst +0 -0
  105. {phasorpy-0.1.dev0 → phasorpy-0.2}/tutorials/api/README.rst +0 -0
  106. {phasorpy-0.1.dev0 → phasorpy-0.2}/tutorials/api/phasorpy_components.py +0 -0
  107. {phasorpy-0.1.dev0 → phasorpy-0.2}/tutorials/api/phasorpy_cursors.py +0 -0
  108. {phasorpy-0.1.dev0 → phasorpy-0.2}/tutorials/api/phasorpy_fret.py +0 -0
  109. {phasorpy-0.1.dev0 → phasorpy-0.2}/tutorials/api/phasorpy_lifetime_to_signal.py +0 -0
  110. {phasorpy-0.1.dev0 → phasorpy-0.2}/tutorials/api/phasorpy_pca.py +0 -0
  111. {phasorpy-0.1.dev0 → phasorpy-0.2}/tutorials/api/phasorpy_phasor_from_lifetime.py +0 -0
  112. {phasorpy-0.1.dev0 → phasorpy-0.2}/tutorials/api/phasorpy_phasorplot.py +0 -0
  113. {phasorpy-0.1.dev0 → phasorpy-0.2}/tutorials/applications/README.rst +0 -0
  114. {phasorpy-0.1.dev0 → phasorpy-0.2}/tutorials/benchmarks/README.rst +0 -0
  115. {phasorpy-0.1.dev0 → phasorpy-0.2}/tutorials/benchmarks/phasorpy_phasor_from_signal.py +0 -0
  116. {phasorpy-0.1.dev0 → phasorpy-0.2}/tutorials/phasorpy_lfd_workshop.py +0 -0
@@ -1,11 +1,11 @@
1
- codecov:
2
- notify:
3
- require_ci_to_pass: false
4
- after_n_builds: 1
5
- coverage:
6
- status:
7
- project:
8
- default:
9
- threshold: 0.1%
10
- informational: true
11
- comment: off
1
+ codecov:
2
+ notify:
3
+ require_ci_to_pass: false
4
+ after_n_builds: 1
5
+ coverage:
6
+ status:
7
+ project:
8
+ default:
9
+ threshold: 0.1%
10
+ informational: true
11
+ comment: off
@@ -1,11 +1,11 @@
1
- version: 2
2
-
3
- updates:
4
- - package-ecosystem: "github-actions"
5
- directory: "/"
6
- schedule:
7
- interval: "monthly"
8
- groups:
9
- github-actions:
10
- patterns:
11
- - "*"
1
+ version: 2
2
+
3
+ updates:
4
+ - package-ecosystem: "github-actions"
5
+ directory: "/"
6
+ schedule:
7
+ interval: "monthly"
8
+ groups:
9
+ github-actions:
10
+ patterns:
11
+ - "*"
@@ -0,0 +1,15 @@
1
+ ## Description
2
+
3
+ ...
4
+
5
+ ## Checklist
6
+
7
+ - [ ] The pull request title and description are concise.
8
+ - [ ] Related issues are linked in the description.
9
+ - [ ] New dependencies are explained.
10
+ - [ ] The source code and documentation can be distributed under the [MIT license](https://www.phasorpy.org/docs/stable/license/).
11
+ - [ ] The source code adheres to [code standards](https://www.phasorpy.org/docs/stable/contributing/#code-standards).
12
+ - [ ] New classes, functions, and features are thoroughly [tested](https://www.phasorpy.org/docs/stable/contributing/#tests).
13
+ - [ ] New, user-facing classes, functions, and features are [documented](https://www.phasorpy.org/docs/stable/contributing/#documentation).
14
+ - [ ] New features are covered in tutorials.
15
+ - [ ] No files other than source code, documentation, and project settings are added to the repository.
@@ -0,0 +1,77 @@
1
+ name: Build sdist
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "*"
7
+ branches:
8
+ - main
9
+ pull_request:
10
+ branches:
11
+ - main
12
+ workflow_dispatch:
13
+
14
+ jobs:
15
+ build_artifacts:
16
+ name: Build sdist
17
+ runs-on: ubuntu-latest
18
+ strategy:
19
+ fail-fast: false
20
+
21
+ steps:
22
+ - uses: actions/checkout@v4
23
+ with:
24
+ submodules: true
25
+ fetch-depth: 0
26
+ - uses: actions/setup-python@v5
27
+ with:
28
+ python-version: "3.12"
29
+ - name: Install PyBuild
30
+ run: |
31
+ python -m pip install -U build
32
+ - name: Build sdist
33
+ run: |
34
+ python -m build --sdist .
35
+ - uses: actions/upload-artifact@v4
36
+ with:
37
+ name: sdist
38
+ path: dist
39
+
40
+ test_artifacts:
41
+ name: Test sdist
42
+ needs: [build_artifacts]
43
+ runs-on: ubuntu-latest
44
+ steps:
45
+ - uses: actions/download-artifact@v4
46
+ with:
47
+ name: sdist
48
+ path: dist
49
+ - uses: actions/setup-python@v5
50
+ with:
51
+ python-version: "3.12"
52
+ - run: |
53
+ ls
54
+ ls dist
55
+ python -m pip install -U twine setuptools build wheel numpy Cython
56
+ python -m twine check dist/*
57
+ python -m pip install --upgrade --no-build-isolation --no-cache-dir --no-deps --pre --no-index --find-links=dist phasorpy
58
+ python -c"from phasorpy import __version__;print(__version__)"
59
+
60
+ # Upload sdist and wheels manually for now
61
+ #
62
+ # upload_artifacts:
63
+ # name: Upload release to PyPI
64
+ # needs: [test_artifacts]
65
+ # runs-on: ubuntu-latest
66
+ # environment:
67
+ # name: pypi
68
+ # url: https://pypi.org/p/phasorpy
69
+ # permissions:
70
+ # id-token: write
71
+ # if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/v')
72
+ # steps:
73
+ # - uses: actions/download-artifact@v4
74
+ # with:
75
+ # name: releases
76
+ # path: dist
77
+ # - uses: pypa/gh-action-pypi-publish@release/v1
@@ -12,7 +12,6 @@ on:
12
12
  workflow_dispatch:
13
13
 
14
14
  env:
15
- CIBW_TEST_SKIP: "cp313*"
16
15
  MPLBACKEND: agg
17
16
 
18
17
  jobs:
@@ -21,16 +20,23 @@ jobs:
21
20
  runs-on: ${{ matrix.os }}
22
21
  strategy:
23
22
  matrix:
24
- os: [ubuntu-22.04, macos-12, windows-2019]
23
+ os: [ubuntu-22.04, macos-13, windows-2019]
25
24
  steps:
26
25
  - uses: actions/checkout@v4
27
- - uses: pypa/cibuildwheel@v2.20.0
26
+ # - name: Set up QEMU
27
+ # if: runner.os == 'Linux'
28
+ # uses: docker/setup-qemu-action@v3
29
+ # with:
30
+ # platforms: all
31
+ - uses: pypa/cibuildwheel@v2.21.3
28
32
  env:
29
- # CIBW_ENVIRONMENT: "PIP_PRE=1"
30
- CIBW_BUILD_VERBOSITY: 2
33
+ # Building and testing manylinux2014_aarch64 too is slow.
34
+ # See https://github.com/phasorpy/phasorpy/pull/135
35
+ # CIBW_ARCHS_LINUX: x86_64 aarch64
31
36
  CIBW_ARCHS_LINUX: auto
32
37
  CIBW_ARCHS_MACOS: x86_64 arm64
33
38
  CIBW_ARCHS_WINDOWS: AMD64 ARM64
39
+ CIBW_BUILD_VERBOSITY: 2
34
40
  - uses: actions/upload-artifact@v4
35
41
  with:
36
42
  path: ./wheelhouse/*.whl
@@ -55,7 +55,7 @@ jobs:
55
55
  strategy:
56
56
  fail-fast: false
57
57
  matrix:
58
- os: ["windows-2019", "macos-12"]
58
+ os: ["windows-2019", "macos-13"]
59
59
  python-version: ["3.10"]
60
60
  # 3.12 tested with cibuildwheel
61
61
  steps:
@@ -84,10 +84,10 @@ jobs:
84
84
  strategy:
85
85
  fail-fast: false
86
86
  matrix:
87
- os: ["ubuntu-22.04", "windows-2019", "macos-12"]
87
+ os: ["ubuntu-22.04", "windows-2019", "macos-13"]
88
88
  steps:
89
89
  - uses: actions/checkout@v4
90
- - uses: pypa/cibuildwheel@v2.20.0
90
+ - uses: pypa/cibuildwheel@v2.21.3
91
91
  env:
92
92
  # CIBW_ENVIRONMENT: "PIP_PRE=1"
93
93
  CIBW_BUILD_VERBOSITY: 3
@@ -98,6 +98,34 @@ jobs:
98
98
  path: ./wheelhouse/*.whl
99
99
  name: wheels-${{ matrix.os }}
100
100
 
101
+ # Building and testing manylinux2014_aarch64 too is slow.
102
+ # See https://github.com/phasorpy/phasorpy/pull/135
103
+ #
104
+ # build_wheels_arm64:
105
+ # name: Test Linux on AArch64
106
+ # runs-on: ${{ matrix.os }}
107
+ # strategy:
108
+ # fail-fast: false
109
+ # matrix:
110
+ # os: ["ubuntu-latest"]
111
+ # steps:
112
+ # - uses: actions/checkout@v4
113
+ # - name: Set up QEMU
114
+ # if: runner.os == 'Linux'
115
+ # uses: docker/setup-qemu-action@v3
116
+ # with:
117
+ # platforms: all
118
+ # - uses: pypa/cibuildwheel@v2.21.3
119
+ # env:
120
+ # CIBW_ARCHS_LINUX: aarch64
121
+ # CIBW_BUILD_VERBOSITY: 2
122
+ # CIBW_BUILD: "cp311*"
123
+ # CIBW_SKIP: "*musllinux*"
124
+ # - uses: actions/upload-artifact@v4
125
+ # with:
126
+ # path: ./wheelhouse/*.whl
127
+ # name: wheels-aarch64
128
+
101
129
  static_analysis:
102
130
  name: Static code analysis
103
131
  runs-on: "ubuntu-latest"
@@ -1,15 +1,15 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: phasorpy
3
- Version: 0.1.dev0
3
+ Version: 0.2
4
4
  Summary: Analysis of fluorescence lifetime and hyperspectral images using the phasor approach
5
5
  Author: PhasorPy Contributors
6
6
  License: MIT
7
- Project-URL: homepage, https://www.phasorpy.org
8
- Project-URL: documentation, https://www.phasorpy.org/docs/stable/
9
- Project-URL: download, https://pypi.org/project/phasorpy/#files
10
- Project-URL: source, https://github.com/phasorpy/phasorpy
11
- Project-URL: tracker, https://github.com/phasorpy/phasorpy/issues
12
- Project-URL: release notes, https://www.phasorpy.org/docs/stable/release
7
+ Project-URL: Homepage, https://www.phasorpy.org
8
+ Project-URL: Documentation, https://www.phasorpy.org/docs/stable/
9
+ Project-URL: Download, https://pypi.org/project/phasorpy/#files
10
+ Project-URL: Source code, https://github.com/phasorpy/phasorpy
11
+ Project-URL: Issue tracker, https://github.com/phasorpy/phasorpy/issues
12
+ 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
@@ -40,7 +40,7 @@ Requires-Dist: sphinx-issues; extra == "docs"
40
40
  Requires-Dist: sphinx_gallery; extra == "docs"
41
41
  Requires-Dist: sphinx-copybutton; extra == "docs"
42
42
  Requires-Dist: sphinx_click; extra == "docs"
43
- Requires-Dist: pydata-sphinx-theme; extra == "docs"
43
+ Requires-Dist: pydata-sphinx-theme>=0.16.0; extra == "docs"
44
44
  Requires-Dist: numpydoc; extra == "docs"
45
45
  Provides-Extra: test
46
46
  Requires-Dist: pytest; extra == "test"
@@ -61,9 +61,9 @@ lifetime and hyperspectral images using the phasor approach.
61
61
  - [Homepage](https://www.phasorpy.org)
62
62
  - [Documentation](https://www.phasorpy.org/docs/stable/)
63
63
  - [Source code](https://github.com/phasorpy/phasorpy)
64
- - [Issues and questions](https://github.com/phasorpy/phasorpy/issues)
65
- - [Python package](https://pypi.org/project/phasorpy/)
64
+ - [Download releases](https://pypi.org/project/phasorpy/#files)
66
65
  - [Data files](https://zenodo.org/communities/phasorpy/)
66
+ - [Issues and questions](https://github.com/phasorpy/phasorpy/issues)
67
67
 
68
68
  PhasorPy is a community-maintained project.
69
69
  [Contributions](https://www.phasorpy.org/docs/stable/contributing/)
@@ -6,9 +6,9 @@ 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
- - [Issues and questions](https://github.com/phasorpy/phasorpy/issues)
10
- - [Python package](https://pypi.org/project/phasorpy/)
9
+ - [Download releases](https://pypi.org/project/phasorpy/#files)
11
10
  - [Data files](https://zenodo.org/communities/phasorpy/)
11
+ - [Issues and questions](https://github.com/phasorpy/phasorpy/issues)
12
12
 
13
13
  PhasorPy is a community-maintained project.
14
14
  [Contributions](https://www.phasorpy.org/docs/stable/contributing/)
@@ -0,0 +1,16 @@
1
+ /*******************************************************************************
2
+ * Set a custom icon for pypi as it's not available in the fa built-in brands
3
+ */
4
+ FontAwesome.library.add(
5
+ (faListOldStyle = {
6
+ prefix: "fa-custom",
7
+ iconName: "pypi",
8
+ icon: [
9
+ 17.313, // viewBox width
10
+ 19.807, // viewBox height
11
+ [], // ligature
12
+ "e001", // unicode codepoint - private use area
13
+ "m10.383 0.2-3.239 1.1769 3.1883 1.1614 3.239-1.1798zm-3.4152 1.2411-3.2362 1.1769 3.1855 1.1614 3.2369-1.1769zm6.7177 0.00281-3.2947 1.2009v3.8254l3.2947-1.1988zm-3.4145 1.2439-3.2926 1.1981v3.8254l0.17548-0.064132 3.1171-1.1347zm-6.6564 0.018325v3.8247l3.244 1.1805v-3.8254zm10.191 0.20931v2.3137l3.1777-1.1558zm3.2947 1.2425-3.2947 1.1988v3.8254l3.2947-1.1988zm-8.7058 0.45739c0.00929-1.931e-4 0.018327-2.977e-4 0.027485 0 0.25633 0.00851 0.4263 0.20713 0.42638 0.49826 1.953e-4 0.38532-0.29327 0.80469-0.65542 0.93662-0.36226 0.13215-0.65608-0.073306-0.65613-0.4588-6.28e-5 -0.38556 0.2938-0.80504 0.65613-0.93662 0.068422-0.024919 0.13655-0.038114 0.20156-0.039466zm5.2913 0.78369-3.2947 1.1988v3.8247l3.2947-1.1981zm-10.132 1.239-3.2362 1.1769 3.1883 1.1614 3.2362-1.1769zm6.7177 0.00213-3.2926 1.2016v3.8247l3.2926-1.2009zm-3.4124 1.2439-3.2947 1.1988v3.8254l3.2947-1.1988zm-6.6585 0.016195v3.8275l3.244 1.1805v-3.8254zm16.9 0.21143-3.2947 1.1988v3.8247l3.2947-1.1981zm-3.4145 1.2411-3.2926 1.2016v3.8247l3.2926-1.2009zm-3.4145 1.2411-3.2926 1.2016v3.8247l3.2926-1.2009zm-3.4124 1.2432-3.2947 1.1988v3.8254l3.2947-1.1988zm-6.6585 0.019027v3.8247l3.244 1.1805v-3.8254zm13.485 1.4497-3.2947 1.1988v3.8247l3.2947-1.1981zm-3.4145 1.2411-3.2926 1.2016v3.8247l3.2926-1.2009zm2.4018 0.38127c0.0093-1.83e-4 0.01833-3.16e-4 0.02749 0 0.25633 0.0085 0.4263 0.20713 0.42638 0.49826 1.97e-4 0.38532-0.29327 0.80469-0.65542 0.93662-0.36188 0.1316-0.65525-0.07375-0.65542-0.4588-1.95e-4 -0.38532 0.29328-0.80469 0.65542-0.93662 0.06842-0.02494 0.13655-0.03819 0.20156-0.03947zm-5.8142 0.86403-3.244 1.1805v1.4201l3.244 1.1805z", // svg path (https://simpleicons.org/icons/pypi.svg)
14
+ ],
15
+ }),
16
+ );
@@ -0,0 +1,13 @@
1
+ [
2
+ {
3
+ "name": "dev",
4
+ "version": "0.3",
5
+ "url": "https://www.phasorpy.org/docs/dev/"
6
+ },
7
+ {
8
+ "name": "0.2 (stable)",
9
+ "version": "0.2",
10
+ "url": "https://www.phasorpy.org/docs/stable/",
11
+ "preferred": true
12
+ }
13
+ ]
@@ -30,3 +30,6 @@ bug fixes, or expertise:
30
30
  - :user:`Leonel Malacrida <lmalacrida>`
31
31
  - :user:`Bruno Pannunzio <bruno-pannunzio>`
32
32
  - :user:`Bruno Schüty <schutyb>`
33
+
34
+ See also `GitHub contributors
35
+ <https://github.com/phasorpy/phasorpy/graphs/contributors>`_.
@@ -25,6 +25,7 @@ import phasorpy
25
25
 
26
26
  version = phasorpy.__version__
27
27
  release = phasorpy.__version__
28
+ version_match = version.replace('.dev', '').replace('.rc', '')
28
29
 
29
30
  # general configuration
30
31
 
@@ -55,6 +56,7 @@ exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
55
56
  # html_theme = 'sphinx_rtd_theme'
56
57
  html_theme = 'pydata_sphinx_theme'
57
58
  html_static_path = ['_static']
59
+ html_js_files = ['custom-icons.js']
58
60
  html_show_sourcelink = False
59
61
 
60
62
  html_logo = '_static/logo.png'
@@ -71,6 +73,7 @@ napoleon_use_param = True
71
73
 
72
74
  html_theme_options = {
73
75
  'logo': {
76
+ # 'text': f'PhasorPy {version}',
74
77
  'text': 'PhasorPy',
75
78
  'alt_text': 'PhasorPy',
76
79
  # 'image_dark': '_static/logo-dark.svg',
@@ -78,17 +81,39 @@ html_theme_options = {
78
81
  'header_links_before_dropdown': 4,
79
82
  'show_nav_level': 2,
80
83
  'navigation_with_keys': False,
84
+ # 'collapse_navigation': True,
85
+ 'navbar_align': 'content', # [left, content, right]
86
+ 'navbar_persistent': [],
87
+ # 'navbar_center': [], # , 'version-switcher', 'navbar-nav'
88
+ 'navbar_end': [
89
+ 'search-button',
90
+ 'version-switcher',
91
+ 'theme-switcher',
92
+ 'navbar-icon-links',
93
+ ],
94
+ 'switcher': {
95
+ 'version_match': version_match,
96
+ 'json_url': 'https://www.phasorpy.org/docs/dev/_static/switcher.json',
97
+ },
98
+ # 'check_switcher': False,
99
+ 'show_version_warning_banner': True,
81
100
  'icon_links': [
101
+ {
102
+ 'name': 'Home',
103
+ 'url': 'https://www.phasorpy.org',
104
+ 'icon': 'fa fa-home',
105
+ },
106
+ {
107
+ 'name': 'PyPI',
108
+ 'url': 'https://pypi.org/project/phasorpy/',
109
+ 'icon': 'fa-custom fa-pypi',
110
+ 'type': 'fontawesome',
111
+ },
82
112
  {
83
113
  'name': 'GitHub',
84
114
  'url': 'https://github.com/phasorpy/phasorpy',
85
115
  'icon': 'fa-brands fa-github',
86
116
  },
87
- # {
88
- # 'name': 'PyPI',
89
- # 'url': 'https://pypi.org/project/phasorpy/',
90
- # 'icon': 'fa-custom fa-pypi',
91
- # },
92
117
  ],
93
118
  }
94
119
 
@@ -1,5 +1,5 @@
1
- Contributing
2
- ============
1
+ Contributing guide
2
+ ==================
3
3
 
4
4
  As a community-maintained project, PhasorPy welcomes contributions in the form
5
5
  of bug reports, bug fixes, feature implementations, documentation, datasets,
@@ -15,9 +15,6 @@ lifetime and hyperspectral images using the :doc:`phasor_approach`.
15
15
  Quickstart
16
16
  ==========
17
17
 
18
- The PhasorPy library and documentation are released under the permissive
19
- :doc:`license`.
20
-
21
18
  The :doc:`tutorials/index` demonstrate the use the library, from simple
22
19
  examples to advanced applications.
23
20
 
@@ -27,46 +24,50 @@ classes of the library.
27
24
  The :doc:`release` list recent bug fixes, feature enhancements, documentation
28
25
  and maintenance changes.
29
26
 
30
- The :doc:`contributing` guidelines explain how to get support, report bugs,
27
+ The :doc:`contributing` explains how to get support, report bugs,
31
28
  submit bug fixes, or improve documentation.
32
29
 
33
30
  The :doc:`code_of_conduct` should be honored by everyone participating in
34
31
  the PhasorPy community.
35
32
 
33
+ The :doc:`acknowledgments` list individuals and organizations that
34
+ contributed to the development of PhasorPy.
35
+
36
+ The PhasorPy library and documentation are released under the permissive
37
+ :doc:`license`.
38
+
36
39
  The library's source code and documentation are maintained in the
37
40
  `PhasorPy repository on GitHub <https://github.com/phasorpy/phasorpy>`_.
38
41
 
42
+ Releases can be downloaded and installed from the
43
+ `PhasorPy project on PyPI <https://pypi.org/project/phasorpy/>`_.
44
+
39
45
  Sample data files used in tutorials and testing are available from the
40
46
  `PhasorPy community on Zenodo <https://zenodo.org/communities/phasorpy>`_.
41
47
 
42
- Please report issues with the code or documentation on the
48
+ Report issues with the code or documentation on the
43
49
  `issue tracker on GitHub <https://github.com/phasorpy/phasorpy/issues>`_.
44
50
 
45
51
  Questions about the usage of the PhasorPy library are answered on the
46
52
  `issue tracker on GitHub <https://github.com/phasorpy/phasorpy/issues>`_.
47
53
 
48
- The :doc:`acknowledgments` list individuals and organizations that
49
- contributed to the development of PhasorPy.
50
-
51
- Please cite the PhasorPy library as:
52
-
53
- .. todo::
54
-
55
- Create DOI at zenodo.org.
54
+ Please cite
55
+ `doi: 10.5281/zenodo.13862587 <https://doi.org/10.5281/zenodo.13862587>`_
56
+ if PhasorPy contributes to a project that leads to a publication.
56
57
 
57
58
  Contents
58
59
  ========
59
60
 
60
61
  .. toctree::
61
- :maxdepth: 1
62
+ :maxdepth: 2
62
63
 
63
64
  phasor_approach
64
65
  tutorials/index
65
66
  api/index
66
- contributing
67
67
  release
68
- acknowledgments
68
+ contributing
69
69
  code_of_conduct
70
+ acknowledgments
70
71
  license
71
72
 
72
73
  Indices and tables
@@ -188,13 +188,18 @@ approach to analyze fluorescence time-resolved or spectral images:
188
188
  - `FLUTE <https://github.com/LaboratoryOpticsBiosciences/FLUTE>`_,
189
189
  the Fluorescence Lifetime Ultimate Explorer, is an open-source Python GUI
190
190
  for interactive phasor analysis of FLIM data developed by Chiara Stringari
191
- and others. The software is distributed under the GPL license.
191
+ and others. The software is distributed under the BSD-3-Clause license.
192
192
 
193
193
  - `FLIMPA <https://github.com/SofiaKapsiani/FLIMPA>`_
194
194
  is an open-source GUI software designed for the phasor plot analysis of
195
195
  raw TCSPC-FLIM data. The software is written in Python and distributed
196
196
  under the BSD-3-Clause license.
197
197
 
198
+ - `AlliGator <https://alligator-distribution.readthedocs.io>`_
199
+ is a free, closed-source software for fluorescence lifetime image data
200
+ analysis using the phasor approach and standard nonlinear fitting.
201
+ The software is written in LabVIEW for Windows by Xavier Michalet.
202
+
198
203
  - `FLIM_tools <https://github.com/jayunruh/FLIM_tools>`_
199
204
  is an open-source Python library for linear unmixing and phasor tools for
200
205
  FLIM analysis developed by Jay Unruh. The library is distributed under
@@ -214,6 +219,13 @@ approach to analyze fluorescence time-resolved or spectral images:
214
219
  segmentation, pH correlation, nanoscale effects, and precise quantification.
215
220
  The notebook is distributed under CC BY-NC 4.0.
216
221
 
222
+ -
223
+ .. _phasorplots_for_dummies:
224
+
225
+ `PhasorPlots for dummies <https://github.com/Jalink-lab/phasor-plots>`_
226
+ is a Jupyter notebook to teach the analysis of FLIM/FRET by phasor plots.
227
+ The notebook is implemented in R and licensed under the GPL v3.
228
+
217
229
  - `FLIMLib <https://flimlib.github.io>`_ is an exponential curve fitting
218
230
  library used for Fluorescent Lifetime Imaging (FLIM). It includes a function
219
231
  to calculate phasor coordinates from time-resolved signals.
@@ -280,6 +292,10 @@ approach to analyze fluorescence time-resolved or spectral images:
280
292
  image analysis and visualization, including phasor plots, in conjunction
281
293
  with the FLIMera wide-field camera.
282
294
 
295
+ - `LIFA <https://lambertinstruments.com/lifa-software>`_
296
+ is a commercial software by Lambert Instruments to record and analyze
297
+ fluorescence lifetime images, integrating all Lambert hardware.
298
+
283
299
  - `FlimFast <https://www.cgohlke.com/flimfast/>`_
284
300
  was a research-grade Windows desktop software for frequency-domain,
285
301
  full-field, fluorescence lifetime imaging at video rate, developed by