pyfli-lib 0.1.0__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.
- pyfli_lib-0.1.0/LICENSE +43 -0
- pyfli_lib-0.1.0/MANIFEST.in +14 -0
- pyfli_lib-0.1.0/PKG-INFO +118 -0
- pyfli_lib-0.1.0/README.md +73 -0
- pyfli_lib-0.1.0/pyproject.toml +76 -0
- pyfli_lib-0.1.0/setup.cfg +4 -0
- pyfli_lib-0.1.0/src/pyfli/__init__.py +39 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/__init__.py +34 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/analytical_methods/__init__.py +5 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/analytical_methods/am_utils.py +15 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/analytical_methods/laguerre_deconvolution.py +508 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/analytical_methods/nlsf.py +1476 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/analytical_methods/phasor_simple.py +869 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/dataCC/IRF_process.py +98 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/dataCC/__init__.py +6 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/dataCC/dataCC_utils.py +73 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/dataCC/norm.py +121 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/dataCC/subsetdataset.py +46 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/dataIO/__init__.py +6 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/dataIO/dataIO_utils.py +46 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/dataIO/dataoperations.py +218 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/dataIO/dataops_static.py +144 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/dataIO/detectorImport.py +318 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/dataIO/flim_decay_cube.py +913 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/dataIO/processed_DataOperation.py +235 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/dataVnP/__init__.py +4 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/dataVnP/colorProcess.py +13 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/dataVnP/dv_multiPlotter.py +355 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/dataVnP/mdataViz.py +275 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/data_saving.py +78 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/data_text/__init__.py +2 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/data_text/msg_display.py +98 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/phasor/__init__.py +51 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/phasor/config.py +172 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/phasor/lifetimes.py +228 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/phasor/locus.py +186 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/phasor/main.py +167 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/phasor/phasors.py +377 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/phasor/plot.py +289 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/phasor/test_phasor_flim.py +320 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/roiMaker/__init__.py +4 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/roiMaker/roi_maker.py +210 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/simulator/__init__.py +13 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/simulator/batch_sim.py +81 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/simulator/calibration_engine.py +179 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/simulator/distributions.py +44 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/simulator/main_factory.py +146 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/simulator/noise_models.py +41 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/simulator/sim_helper.py +30 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/simulator/sim_image_generator.py +114 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/simulator/sim_stat_test.py +122 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/simulator/simulator_engine.py +91 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/simulatorPhysics.py +581 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/singleshot/singleshot.py +92 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/solver/__init__.py +11 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/solver/base_fitter.py +159 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/solver/base_static.py +159 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/solver/binned_fliFitter.py +114 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/solver/comparison.py +121 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/solver/flicpuFitter.py +228 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/solver/fligpuFitter.py +265 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/solver/globalFitter.py +217 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/solver/mleFitter.py +143 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/solver/solver_utils.py +34 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/ss_helpers.py +42 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/stat_tests.py +273 -0
- pyfli_lib-0.1.0/src/pyfli/scripts/utils_common.py +402 -0
- pyfli_lib-0.1.0/src/pyfli/spAnalysis/__init__.py +12 -0
- pyfli_lib-0.1.0/src/pyfli/spAnalysis/base_reconstructor.py +109 -0
- pyfli_lib-0.1.0/src/pyfli/spAnalysis/basis.py +41 -0
- pyfli_lib-0.1.0/src/pyfli/spAnalysis/main.py +43 -0
- pyfli_lib-0.1.0/src/pyfli/spAnalysis/simulator/__init__.py +3 -0
- pyfli_lib-0.1.0/src/pyfli/spAnalysis/simulator/measurement_sim.py +74 -0
- pyfli_lib-0.1.0/src/pyfli/spAnalysis/simulator/pattern_gen.py +75 -0
- pyfli_lib-0.1.0/src/pyfli/spAnalysis/simulator/reconstructor.py +104 -0
- pyfli_lib-0.1.0/src/pyfli/spAnalysis/solvers.py +73 -0
- pyfli_lib-0.1.0/src/pyfli/spAnalysis/spad_solvers.py +77 -0
- pyfli_lib-0.1.0/src/pyfli_lib.egg-info/PKG-INFO +118 -0
- pyfli_lib-0.1.0/src/pyfli_lib.egg-info/SOURCES.txt +80 -0
- pyfli_lib-0.1.0/src/pyfli_lib.egg-info/dependency_links.txt +1 -0
- pyfli_lib-0.1.0/src/pyfli_lib.egg-info/requires.txt +23 -0
- pyfli_lib-0.1.0/src/pyfli_lib.egg-info/top_level.txt +1 -0
pyfli_lib-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Vikas Pandey
|
|
4
|
+
|
|
5
|
+
This work is licensed under the Creative Commons
|
|
6
|
+
Attribution-NonCommercial-NoDerivatives 4.0 International License.
|
|
7
|
+
|
|
8
|
+
You are free to:
|
|
9
|
+
Share — copy and redistribute the material in any medium or format.
|
|
10
|
+
|
|
11
|
+
Under the following terms:
|
|
12
|
+
Attribution — You must give appropriate credit, provide a link to the
|
|
13
|
+
license, and indicate if changes were made. You may do so in any
|
|
14
|
+
reasonable manner, but not in any way that suggests the licensor
|
|
15
|
+
endorses you or your use.
|
|
16
|
+
|
|
17
|
+
NonCommercial — You may not use the material for commercial purposes.
|
|
18
|
+
|
|
19
|
+
NoDerivatives — If you remix, transform, or build upon the material,
|
|
20
|
+
you may not distribute the modified material.
|
|
21
|
+
|
|
22
|
+
No additional restrictions — You may not apply legal terms or
|
|
23
|
+
technological measures that legally restrict others from doing
|
|
24
|
+
anything the license permits.
|
|
25
|
+
|
|
26
|
+
Notices:
|
|
27
|
+
You do not have to comply with the license for elements of the material
|
|
28
|
+
in the public domain or where your use is permitted by an applicable
|
|
29
|
+
exception or limitation.
|
|
30
|
+
|
|
31
|
+
No warranties are given. The license may not give you all of the
|
|
32
|
+
permissions necessary for your intended use. For example, other rights
|
|
33
|
+
such as publicity, privacy, or moral rights may limit how you use the
|
|
34
|
+
material.
|
|
35
|
+
|
|
36
|
+
To view a full copy of this license, visit:
|
|
37
|
+
https://creativecommons.org/licenses/by-nc-nd/4.0/
|
|
38
|
+
|
|
39
|
+
Or send a letter to:
|
|
40
|
+
Creative Commons
|
|
41
|
+
PO Box 1866
|
|
42
|
+
Mountain View, CA 94042
|
|
43
|
+
USA
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
include LICENSE
|
|
2
|
+
include README.md
|
|
3
|
+
include pyproject.toml
|
|
4
|
+
|
|
5
|
+
recursive-exclude data *
|
|
6
|
+
recursive-exclude notebooks *
|
|
7
|
+
recursive-exclude dist *
|
|
8
|
+
recursive-exclude .vscode *
|
|
9
|
+
recursive-exclude tests *
|
|
10
|
+
global-exclude __pycache__
|
|
11
|
+
global-exclude *.py[cod]
|
|
12
|
+
global-exclude *.h5
|
|
13
|
+
global-exclude *.sdt
|
|
14
|
+
global-exclude *.tif
|
pyfli_lib-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: pyfli-lib
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Unified Fluorescence Lifetime Imaging (FLI) data processing platform using analytical and deep learning methods.
|
|
5
|
+
Author: Vikas Pandey
|
|
6
|
+
License: CC BY-NC-ND 4.0
|
|
7
|
+
Project-URL: Homepage, https://github.com/vkp217/pyfli-pkg
|
|
8
|
+
Project-URL: Repository, https://github.com/vkp217/pyfli-pkg.git
|
|
9
|
+
Project-URL: Issues, https://github.com/vkp217/pyfli-pkg/issues
|
|
10
|
+
Keywords: fluorescence,lifetime,FLIM,FLI,TCSPC,phasor,microscopy,bioimaging,ICCD,SPAD,laguerre,deconvolution
|
|
11
|
+
Classifier: Development Status :: 4 - Beta
|
|
12
|
+
Classifier: Intended Audience :: Science/Research
|
|
13
|
+
Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
|
|
14
|
+
Classifier: Topic :: Scientific/Engineering :: Image Processing
|
|
15
|
+
Classifier: License :: Other/Proprietary License
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Operating System :: OS Independent
|
|
20
|
+
Requires-Python: >=3.11
|
|
21
|
+
Description-Content-Type: text/markdown
|
|
22
|
+
License-File: LICENSE
|
|
23
|
+
Requires-Dist: h5py>=3.10.0
|
|
24
|
+
Requires-Dist: sdtfile>=2025.0.0
|
|
25
|
+
Requires-Dist: tifffile>=2025.0.0
|
|
26
|
+
Requires-Dist: imagecodecs
|
|
27
|
+
Requires-Dist: joblib>=1.3.0
|
|
28
|
+
Requires-Dist: scikit-image>=0.22.0
|
|
29
|
+
Requires-Dist: opencv-python>=4.8.0
|
|
30
|
+
Requires-Dist: numpy>=1.24.0
|
|
31
|
+
Requires-Dist: matplotlib>=3.7.0
|
|
32
|
+
Requires-Dist: scipy
|
|
33
|
+
Requires-Dist: tqdm
|
|
34
|
+
Requires-Dist: seaborn
|
|
35
|
+
Requires-Dist: pillow
|
|
36
|
+
Requires-Dist: tabulate>=0.10.0
|
|
37
|
+
Requires-Dist: torch>=2.0.0
|
|
38
|
+
Provides-Extra: gpu
|
|
39
|
+
Requires-Dist: tensorflow>=2.15.0; extra == "gpu"
|
|
40
|
+
Provides-Extra: dev
|
|
41
|
+
Requires-Dist: pytest; extra == "dev"
|
|
42
|
+
Requires-Dist: black; extra == "dev"
|
|
43
|
+
Requires-Dist: ipykernel>=6.0.0; extra == "dev"
|
|
44
|
+
Dynamic: license-file
|
|
45
|
+
|
|
46
|
+
# pyfli: A Unified Platform for FLI Data Processing
|
|
47
|
+
|
|
48
|
+
[](https://creativecommons.org/licenses/by-nc-nd/4.0/)
|
|
49
|
+
[](https://www.python.org/downloads/)
|
|
50
|
+
[](https://pypi.org/project/pyfli-lib/)
|
|
51
|
+
|
|
52
|
+
`pyfli` is a comprehensive library designed for **Fluorescence Lifetime Imaging (FLI)** data processing. It streamlines the workflow for handling diverse file formats from various hardware manufacturers and provides a standardized pipeline for both traditional analytical and deep-learning-based inference.
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Key Features
|
|
57
|
+
|
|
58
|
+
* **Universal Processing Pipeline:** Simplifies the handling of multiple FLI file types (ICCD, SPAD, TCSPC).
|
|
59
|
+
* **Enhanced FLI Simulator:** A robust simulation engine adaptable to specific camera hardware parameters and noise models.
|
|
60
|
+
* **Standardized Inference:** Unified interface for time-resolved microscopy and macroscopic FLI data (MFLI).
|
|
61
|
+
|
|
62
|
+
## Supported Data Acquisition Methods
|
|
63
|
+
|
|
64
|
+
The platform provides native support for several high-end imaging systems:
|
|
65
|
+
|
|
66
|
+
1. **ICCD:** Intensified Charge-Coupled Device cameras for fast-gated, wide-field imaging.
|
|
67
|
+
2. **SwissSPAD2 & SwissSPAD3:** High-speed SPAD (Single-Photon Avalanche Diode) architectures for high-resolution photon counting.
|
|
68
|
+
3. **SPCImage/TCSPC:** Standardized processing for Time-Correlated Single Photon Counting microscopy data.
|
|
69
|
+
|
|
70
|
+
## Data Processing & Analysis
|
|
71
|
+
|
|
72
|
+
`pyfli` implements industry-standard analytical methods to extract lifetime information:
|
|
73
|
+
|
|
74
|
+
* **Non-linear Least Squares Fitting (NLSF):** Robust mathematical approach for exponential decay modeling.
|
|
75
|
+
* **Phasor Plot Analysis:** Graphical, model-free transformation of fluorescence decay into a 2D polar plot for easy species separation.
|
|
76
|
+
* **Maximum Likelihood Estimation (MLE):** Statistical estimator optimized for low-photon regimes.
|
|
77
|
+
* **Rapid Lifetime Determination (RLD):** Computationally efficient method for real-time applications and high-frame-rate data.
|
|
78
|
+
* **Laguerre Method (LET):** Laguerre Expansion Technique for model-free IRF deconvolution followed by multi-exponential lifetime extraction on a per-pixel basis.
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Installation
|
|
83
|
+
|
|
84
|
+
Install the stable version directly from PyPI:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
pip install pyfli-lib
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
For users requiring GPU-based processing, install the optional tensor/AI dependencies:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
pip install "pyfli-lib[gpu]"
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Quick Start
|
|
97
|
+
|
|
98
|
+
Even though the package is installed as `pyfli-lib`, you import it as `pyfli` in your scripts:
|
|
99
|
+
|
|
100
|
+
```python
|
|
101
|
+
from pyfli import DataOperations
|
|
102
|
+
|
|
103
|
+
loader = DataOperations(
|
|
104
|
+
data_path = "experimental_data.sdt",
|
|
105
|
+
irf_path = "instrument_data.txt",
|
|
106
|
+
bg_path = "background_data.tif",
|
|
107
|
+
mask_path="background_data.png",
|
|
108
|
+
)
|
|
109
|
+
decay_data = loader.load_data()
|
|
110
|
+
irf_data = loader.load_irf()
|
|
111
|
+
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## Repository & Issues
|
|
115
|
+
|
|
116
|
+
The source code is hosted on GitHub. Please report any bugs or feature requests via the issues tracker.
|
|
117
|
+
* **GitHub:** [https://github.com/vkp217/pyfli-pkg](https://github.com/vkp217/pyfli-pkg)
|
|
118
|
+
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# pyfli: A Unified Platform for FLI Data Processing
|
|
2
|
+
|
|
3
|
+
[](https://creativecommons.org/licenses/by-nc-nd/4.0/)
|
|
4
|
+
[](https://www.python.org/downloads/)
|
|
5
|
+
[](https://pypi.org/project/pyfli-lib/)
|
|
6
|
+
|
|
7
|
+
`pyfli` is a comprehensive library designed for **Fluorescence Lifetime Imaging (FLI)** data processing. It streamlines the workflow for handling diverse file formats from various hardware manufacturers and provides a standardized pipeline for both traditional analytical and deep-learning-based inference.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Key Features
|
|
12
|
+
|
|
13
|
+
* **Universal Processing Pipeline:** Simplifies the handling of multiple FLI file types (ICCD, SPAD, TCSPC).
|
|
14
|
+
* **Enhanced FLI Simulator:** A robust simulation engine adaptable to specific camera hardware parameters and noise models.
|
|
15
|
+
* **Standardized Inference:** Unified interface for time-resolved microscopy and macroscopic FLI data (MFLI).
|
|
16
|
+
|
|
17
|
+
## Supported Data Acquisition Methods
|
|
18
|
+
|
|
19
|
+
The platform provides native support for several high-end imaging systems:
|
|
20
|
+
|
|
21
|
+
1. **ICCD:** Intensified Charge-Coupled Device cameras for fast-gated, wide-field imaging.
|
|
22
|
+
2. **SwissSPAD2 & SwissSPAD3:** High-speed SPAD (Single-Photon Avalanche Diode) architectures for high-resolution photon counting.
|
|
23
|
+
3. **SPCImage/TCSPC:** Standardized processing for Time-Correlated Single Photon Counting microscopy data.
|
|
24
|
+
|
|
25
|
+
## Data Processing & Analysis
|
|
26
|
+
|
|
27
|
+
`pyfli` implements industry-standard analytical methods to extract lifetime information:
|
|
28
|
+
|
|
29
|
+
* **Non-linear Least Squares Fitting (NLSF):** Robust mathematical approach for exponential decay modeling.
|
|
30
|
+
* **Phasor Plot Analysis:** Graphical, model-free transformation of fluorescence decay into a 2D polar plot for easy species separation.
|
|
31
|
+
* **Maximum Likelihood Estimation (MLE):** Statistical estimator optimized for low-photon regimes.
|
|
32
|
+
* **Rapid Lifetime Determination (RLD):** Computationally efficient method for real-time applications and high-frame-rate data.
|
|
33
|
+
* **Laguerre Method (LET):** Laguerre Expansion Technique for model-free IRF deconvolution followed by multi-exponential lifetime extraction on a per-pixel basis.
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Installation
|
|
38
|
+
|
|
39
|
+
Install the stable version directly from PyPI:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
pip install pyfli-lib
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
For users requiring GPU-based processing, install the optional tensor/AI dependencies:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
pip install "pyfli-lib[gpu]"
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Quick Start
|
|
52
|
+
|
|
53
|
+
Even though the package is installed as `pyfli-lib`, you import it as `pyfli` in your scripts:
|
|
54
|
+
|
|
55
|
+
```python
|
|
56
|
+
from pyfli import DataOperations
|
|
57
|
+
|
|
58
|
+
loader = DataOperations(
|
|
59
|
+
data_path = "experimental_data.sdt",
|
|
60
|
+
irf_path = "instrument_data.txt",
|
|
61
|
+
bg_path = "background_data.tif",
|
|
62
|
+
mask_path="background_data.png",
|
|
63
|
+
)
|
|
64
|
+
decay_data = loader.load_data()
|
|
65
|
+
irf_data = loader.load_irf()
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Repository & Issues
|
|
70
|
+
|
|
71
|
+
The source code is hosted on GitHub. Please report any bugs or feature requests via the issues tracker.
|
|
72
|
+
* **GitHub:** [https://github.com/vkp217/pyfli-pkg](https://github.com/vkp217/pyfli-pkg)
|
|
73
|
+
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=61.0", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "pyfli-lib"
|
|
7
|
+
version = "0.1.0"
|
|
8
|
+
description = "Unified Fluorescence Lifetime Imaging (FLI) data processing platform using analytical and deep learning methods."
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.11"
|
|
11
|
+
license = {text = "CC BY-NC-ND 4.0"}
|
|
12
|
+
authors = [
|
|
13
|
+
{name = "Vikas Pandey"}
|
|
14
|
+
]
|
|
15
|
+
keywords = [
|
|
16
|
+
"fluorescence", "lifetime", "FLIM", "FLI", "TCSPC", "phasor",
|
|
17
|
+
"microscopy", "bioimaging", "ICCD", "SPAD", "laguerre", "deconvolution"
|
|
18
|
+
]
|
|
19
|
+
classifiers = [
|
|
20
|
+
"Development Status :: 4 - Beta",
|
|
21
|
+
"Intended Audience :: Science/Research",
|
|
22
|
+
"Topic :: Scientific/Engineering :: Bio-Informatics",
|
|
23
|
+
"Topic :: Scientific/Engineering :: Image Processing",
|
|
24
|
+
"License :: Other/Proprietary License",
|
|
25
|
+
"Programming Language :: Python :: 3",
|
|
26
|
+
"Programming Language :: Python :: 3.11",
|
|
27
|
+
"Programming Language :: Python :: 3.12",
|
|
28
|
+
"Operating System :: OS Independent",
|
|
29
|
+
]
|
|
30
|
+
# Core dependencies for the analytical methods
|
|
31
|
+
dependencies = [
|
|
32
|
+
"h5py>=3.10.0",
|
|
33
|
+
"sdtfile>=2025.0.0",
|
|
34
|
+
"tifffile>=2025.0.0",
|
|
35
|
+
"imagecodecs",
|
|
36
|
+
"joblib>=1.3.0",
|
|
37
|
+
"scikit-image>=0.22.0",
|
|
38
|
+
"opencv-python>=4.8.0",
|
|
39
|
+
"numpy>=1.24.0",
|
|
40
|
+
"matplotlib>=3.7.0",
|
|
41
|
+
"scipy",
|
|
42
|
+
"tqdm",
|
|
43
|
+
"seaborn",
|
|
44
|
+
"pillow",
|
|
45
|
+
"tabulate>=0.10.0",
|
|
46
|
+
"torch>=2.0.0"
|
|
47
|
+
]
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
[project.optional-dependencies]
|
|
51
|
+
gpu = [
|
|
52
|
+
"tensorflow>=2.15.0",
|
|
53
|
+
]
|
|
54
|
+
dev = [
|
|
55
|
+
"pytest",
|
|
56
|
+
"black",
|
|
57
|
+
"ipykernel>=6.0.0",
|
|
58
|
+
]
|
|
59
|
+
|
|
60
|
+
[tool.setuptools.packages.find]
|
|
61
|
+
where = ["src"]
|
|
62
|
+
include = ["pyfli*"]
|
|
63
|
+
exclude = ["notebooks*", "config*", "data*"]
|
|
64
|
+
|
|
65
|
+
[project.urls]
|
|
66
|
+
Homepage = "https://github.com/vkp217/pyfli-pkg"
|
|
67
|
+
Repository = "https://github.com/vkp217/pyfli-pkg.git"
|
|
68
|
+
Issues = "https://github.com/vkp217/pyfli-pkg/issues"
|
|
69
|
+
|
|
70
|
+
[tool.pytest.ini_options]
|
|
71
|
+
testpaths = ["tests"]
|
|
72
|
+
addopts = "-v --tb=short"
|
|
73
|
+
filterwarnings = [
|
|
74
|
+
"ignore::DeprecationWarning",
|
|
75
|
+
"ignore::RuntimeWarning",
|
|
76
|
+
]
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
#### inside "pyfli.__init__.py"
|
|
2
|
+
__version__ = "0.1.17"
|
|
3
|
+
|
|
4
|
+
# Pulling everything from the scripts gatekeeper
|
|
5
|
+
from .scripts import (DataOperations, IRFAligner, DataViewer,
|
|
6
|
+
AlliGprocessedImport, BHprocessedImport, PyFliprocessedImport,
|
|
7
|
+
HardSimulator, HardestSimulator, DatasetPlotter,
|
|
8
|
+
PhasorAnalyzer, FLIFitter, PoissonLikelihoodFitter, FLIAnalysisSuite,
|
|
9
|
+
Plotter, DLModelComparator, DataPreprocessing,
|
|
10
|
+
BaseFLIFitter, Fli_CPUProcessor, Fli_GPUProcessor, MLEFLIFitter,
|
|
11
|
+
GlobalFLIFitter, ROIMaker, AnalyticalHelpers, DataIO_utils, Colorprocess,
|
|
12
|
+
Macro_sim, TCSPC_sim, FLIImageGenerator, FLICalibrator, FLIValidator,Normalization,
|
|
13
|
+
recovery_plot, random_true_pixel, data_masking, save_plot,
|
|
14
|
+
Msg_display, FittingComparator, Detector,
|
|
15
|
+
BinnedFliFitter, FliBinner, ROIoperations, Batch_sim, DataSaver,
|
|
16
|
+
load_flim_data, collapse_to_xyt, plot_xyt,
|
|
17
|
+
LaguerreFLI)
|
|
18
|
+
|
|
19
|
+
from .spAnalysis import (BasisPatterns, MeasurementSimulator, Reconstructor)
|
|
20
|
+
|
|
21
|
+
__all__ = ['DataOperations', 'IRFAligner', 'DataViewer',
|
|
22
|
+
'AlliGprocessedImport', 'BHprocessedImport', 'PyFliprocessedImport',
|
|
23
|
+
'HardSimulator', 'HardestSimulator', 'DatasetPlotter',
|
|
24
|
+
'PhasorAnalyzer', 'FLIFitter', 'PoissonLikelihoodFitter', 'FLIAnalysisSuite',
|
|
25
|
+
'Plotter', 'DLModelComparator', 'DataPreprocessing',
|
|
26
|
+
'BaseFLIFitter', 'Fli_CPUProcessor', 'Fli_GPUProcessor',
|
|
27
|
+
'MLEFLIFitter', 'GlobalFLIFitter', 'ROIMaker',
|
|
28
|
+
'AnalyticalHelpers', 'DataIO_utils',
|
|
29
|
+
'Colorprocess', 'Macro_sim', 'TCSPC_sim', 'FLIImageGenerator',
|
|
30
|
+
'recovery_plot', 'random_true_pixel', 'save_plot',
|
|
31
|
+
'FLICalibrator', 'FLIValidator', 'Normalization',
|
|
32
|
+
'Msg_display', 'FittingComparator',
|
|
33
|
+
'data_masking', 'Detector', 'BinnedFliFitter', 'FliBinner',
|
|
34
|
+
'ROIoperations', 'Batch_sim', 'DataSaver', 'LaguerreFLI',
|
|
35
|
+
# this is for SPAnalysis
|
|
36
|
+
'BasisPatterns', 'MeasurementSimulator', 'Reconstructor',
|
|
37
|
+
'load_flim_data', 'collapse_to_xyt', 'plot_xyt'
|
|
38
|
+
]
|
|
39
|
+
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
#### inside "scripts.__init__.py"
|
|
2
|
+
from .dataIO import (DataOperations, AlliGprocessedImport,
|
|
3
|
+
BHprocessedImport, PyFliprocessedImport, DatasetPlotter, DataIO_utils,
|
|
4
|
+
Detector, load_flim_data, collapse_to_xyt, plot_xyt )
|
|
5
|
+
from .analytical_methods import (PhasorAnalyzer, FLIFitter, PoissonLikelihoodFitter,
|
|
6
|
+
FLIAnalysisSuite, AnalyticalHelpers,
|
|
7
|
+
LaguerreFLI)
|
|
8
|
+
from .dataCC import IRFAligner, DataPreprocessing, Normalization, ROIoperations
|
|
9
|
+
from .dataVnP import DataViewer, Plotter, DLModelComparator, Colorprocess
|
|
10
|
+
from .roiMaker import ROIMaker
|
|
11
|
+
from .solver import (BaseFLIFitter, Fli_CPUProcessor, Fli_GPUProcessor,
|
|
12
|
+
MLEFLIFitter, GlobalFLIFitter, FittingComparator,
|
|
13
|
+
BinnedFliFitter, FliBinner)
|
|
14
|
+
from .simulator import (Macro_sim, TCSPC_sim, FLIImageGenerator, FLICalibrator, FLIValidator, Batch_sim)
|
|
15
|
+
from .data_text import Msg_display
|
|
16
|
+
|
|
17
|
+
from .simulatorPhysics import HardSimulator, HardestSimulator
|
|
18
|
+
from .utils_common import recovery_plot, random_true_pixel, data_masking, save_plot
|
|
19
|
+
from .data_saving import DataSaver
|
|
20
|
+
|
|
21
|
+
# This allows: from pyfli.scripts import DataViewer
|
|
22
|
+
__all__ = ["DataOperations", "IRFAligner", "DataViewer", "AlliGprocessedImport",
|
|
23
|
+
"BHprocessedImport", "PyFliprocessedImport", "DatasetPlotter", "HardSimulator",
|
|
24
|
+
"HardestSimulator", "FLIFitter", "PoissonLikelihoodFitter", "FLIAnalysisSuite",
|
|
25
|
+
"PhasorAnalyzer", "Plotter", "DLModelComparator", "DataPreprocessing",
|
|
26
|
+
"BaseFLIFitter", "Fli_CPUProcessor", "Fli_GPUProcessor", "MLEFLIFitter", "GlobalFLIFitter",
|
|
27
|
+
"ROIMaker", "AnalyticalHelpers", "DataIO_utils", "Colorprocess",
|
|
28
|
+
"Macro_sim", "TCSPC_sim", "FLIImageGenerator", "recovery_plot", "random_true_pixel", "save_plot",
|
|
29
|
+
"FLICalibrator", "FLIValidator", "Normalization", "Msg_display", "FittingComparator",
|
|
30
|
+
"data_masking", "Detector", "BinnedFliFitter", "FliBinner", "ROIoperations",
|
|
31
|
+
"Batch_sim", "DataSaver", "load_flim_data", "collapse_to_xyt", "plot_xyt",
|
|
32
|
+
"LaguerreFLI"
|
|
33
|
+
]
|
|
34
|
+
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import numpy as np
|
|
2
|
+
|
|
3
|
+
class AnalyticalHelpers:
|
|
4
|
+
def __init__(self, laser_period = 12.5, gate_delay=None, num_gate = None):
|
|
5
|
+
self.laser_period = laser_period
|
|
6
|
+
self.gate_delay = gate_delay
|
|
7
|
+
self.num_gate = num_gate
|
|
8
|
+
|
|
9
|
+
def freq_computation(self):
|
|
10
|
+
freq = 1000.0/self.laser_period # laser_period in ns; freq in Hz
|
|
11
|
+
if self.gate_delay is None or self.num_gate is None:
|
|
12
|
+
effective_freq = freq
|
|
13
|
+
else:
|
|
14
|
+
effective_freq = 1000.0/(self.num_gate*self.gate_delay) # frequency is computed in the MHz if the gate delays are in ns
|
|
15
|
+
return [freq, effective_freq]
|