flimkit 0.13.3__tar.gz → 0.13.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.
- {flimkit-0.13.3 → flimkit-0.13.5}/PKG-INFO +15 -4
- {flimkit-0.13.3 → flimkit-0.13.5}/README.md +14 -3
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/UI/gui.py +18 -3
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/_version.py +3 -1
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit.egg-info/PKG-INFO +15 -4
- {flimkit-0.13.3 → flimkit-0.13.5}/LICENSE.md +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/FLIM/__init__.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/FLIM/assemble.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/FLIM/batch.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/FLIM/bg_tools.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/FLIM/fit_tools.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/FLIM/fitters.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/FLIM/irf_tools.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/FLIM/models.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/GPU/__init__.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/GPU/_base.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/GPU/cuda.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/GPU/mlx_backend.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/GPU/mps.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/GPU/rocm.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/GPU/torch_backend.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/UI/app_state.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/UI/controller.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/UI/expert_settings.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/UI/fit_help.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/UI/fov_preview.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/UI/icon.icns +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/UI/icon.ico +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/UI/icon.png +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/UI/irf_widget.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/UI/mode_controller.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/UI/modes/__init__.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/UI/modes/base.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/UI/modes/batch_mode.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/UI/modes/fov_mode.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/UI/modes/irf_mode.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/UI/modes/phasor_mode.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/UI/modes/stitch_mode.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/UI/phasor_panel.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/UI/progress_window.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/UI/project_panel.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/UI/results_panel.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/UI/roi_tools.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/UI/utils.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/__init__.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/cli.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/configs.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/dialogs.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/formats/BH/__init__.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/formats/BH/reader.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/formats/BH/writer.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/formats/ISS/__init__.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/formats/ISS/fdflim.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/formats/ISS/image.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/formats/ISS/reader.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/formats/PS/__init__.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/formats/PS/reader.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/formats/PTU/__init__.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/formats/PTU/decode.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/formats/PTU/phu.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/formats/PTU/reader.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/formats/PTU/series.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/formats/PTU/stitch.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/formats/PTU/tools.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/formats/__init__.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/formats/flim_file.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/formats/phasor.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/formats/signal.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/image/tools.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/interactive.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/mpl_backend.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/phasor/__init__.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/phasor/filters.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/phasor/fret.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/phasor/interactive.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/phasor/peaks.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/phasor/signal.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/phasor_launcher.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/plugins/__init__.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/plugins/bindings.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/plugins/builtin/__init__.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/plugins/builtin/core_tools.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/plugins/loader.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/plugins/registry.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/project.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/synth.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/utils/__init__.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/utils/batch_fit.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/utils/config_manager.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/utils/config_snapshot.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/utils/crash_handler.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/utils/display.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/utils/enhanced_outputs.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/utils/fancy.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/utils/lifetime_image.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/utils/misc.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/utils/ome_zarr.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/utils/plotting.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/utils/roi.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/utils/session.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/utils/update_check.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/utils/xlsx_tools.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit/utils/xml_utils.py +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit.egg-info/SOURCES.txt +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit.egg-info/dependency_links.txt +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit.egg-info/entry_points.txt +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit.egg-info/requires.txt +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/flimkit.egg-info/top_level.txt +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/pyproject.toml +0 -0
- {flimkit-0.13.3 → flimkit-0.13.5}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: flimkit
|
|
3
|
-
Version: 0.13.
|
|
3
|
+
Version: 0.13.5
|
|
4
4
|
Summary: Fluorescence lifetime imaging analysis: reading, fitting, phasors and stitching
|
|
5
5
|
Author-email: Alex Hunt <alexander.hunt@ed.ac.uk>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -133,25 +133,36 @@ python install.py --dev
|
|
|
133
133
|
|
|
134
134
|
## Docker / TrueNAS SCALE
|
|
135
135
|
|
|
136
|
-
A pre-built image is available on Docker Hub. It runs the
|
|
136
|
+
A pre-built image is available on Docker Hub. It runs FLIMKit with the [web UI](https://github.com/FLIMKit/flimkit-web-ui), so the whole app is used from a browser with nothing installed on the client.
|
|
137
137
|
|
|
138
138
|
**Pull and run:**
|
|
139
139
|
|
|
140
140
|
```bash
|
|
141
141
|
docker run -d \
|
|
142
142
|
-p 14500:14500 \
|
|
143
|
+
-e FLIMKIT_PASSWORD=choose-a-password \
|
|
143
144
|
-v /path/to/your/data:/data \
|
|
145
|
+
-v /path/to/flimkit-config:/root/.flimkit \
|
|
144
146
|
--name flimkit \
|
|
145
147
|
alex1075/flimkit:latest
|
|
146
148
|
```
|
|
147
149
|
|
|
148
|
-
Then open **http://localhost:14500** in
|
|
150
|
+
Then open **http://localhost:14500** and log in as `flimkit` with that password. Put PTU files and data in the folder you mount to `/data` and use the Browse buttons in the page to navigate there. The config mount keeps expert settings, preferences and recent files when the container is recreated.
|
|
151
|
+
|
|
152
|
+
| Variable | Default | Effect |
|
|
153
|
+
|---|---|---|
|
|
154
|
+
| `FLIMKIT_PASSWORD` | not set | Password for the web UI (user `flimkit`) and for the desktop view. Without it, anyone who can reach the port can use FLIMKit and browse `/data`. |
|
|
155
|
+
| `FLIMKIT_DESKTOP` | `0` | Set to `1` to also serve the full desktop through noVNC on port 14501, for the few windows the web UI does not cover. Publish that port too. |
|
|
156
|
+
| `FLIMKIT_GEOMETRY` | `1440x900` | Size of the virtual screen FLIMKit draws on |
|
|
157
|
+
| `TZ` | `Etc/UTC` | Time zone for log timestamps |
|
|
158
|
+
|
|
159
|
+
The container reports healthy once the web UI answers on `/healthz`.
|
|
149
160
|
|
|
150
161
|
**TrueNAS SCALE (Custom App):**
|
|
151
162
|
|
|
152
163
|
1. Apps → Discover Apps → Custom App
|
|
153
164
|
2. Paste the contents of `docker/docker-compose.yaml` from this repo
|
|
154
|
-
3. Edit the volume paths to match your pool (e.g. `/mnt/tank/microscopy:/data`)
|
|
165
|
+
3. Edit the volume paths to match your pool (e.g. `/mnt/tank/microscopy:/data`) and uncomment `FLIMKIT_PASSWORD` with a password of your own
|
|
155
166
|
4. Deploy - TrueNAS will pull the image automatically
|
|
156
167
|
|
|
157
168
|
**Build from source** (required if you want to push your own changes):
|
|
@@ -71,25 +71,36 @@ python install.py --dev
|
|
|
71
71
|
|
|
72
72
|
## Docker / TrueNAS SCALE
|
|
73
73
|
|
|
74
|
-
A pre-built image is available on Docker Hub. It runs the
|
|
74
|
+
A pre-built image is available on Docker Hub. It runs FLIMKit with the [web UI](https://github.com/FLIMKit/flimkit-web-ui), so the whole app is used from a browser with nothing installed on the client.
|
|
75
75
|
|
|
76
76
|
**Pull and run:**
|
|
77
77
|
|
|
78
78
|
```bash
|
|
79
79
|
docker run -d \
|
|
80
80
|
-p 14500:14500 \
|
|
81
|
+
-e FLIMKIT_PASSWORD=choose-a-password \
|
|
81
82
|
-v /path/to/your/data:/data \
|
|
83
|
+
-v /path/to/flimkit-config:/root/.flimkit \
|
|
82
84
|
--name flimkit \
|
|
83
85
|
alex1075/flimkit:latest
|
|
84
86
|
```
|
|
85
87
|
|
|
86
|
-
Then open **http://localhost:14500** in
|
|
88
|
+
Then open **http://localhost:14500** and log in as `flimkit` with that password. Put PTU files and data in the folder you mount to `/data` and use the Browse buttons in the page to navigate there. The config mount keeps expert settings, preferences and recent files when the container is recreated.
|
|
89
|
+
|
|
90
|
+
| Variable | Default | Effect |
|
|
91
|
+
|---|---|---|
|
|
92
|
+
| `FLIMKIT_PASSWORD` | not set | Password for the web UI (user `flimkit`) and for the desktop view. Without it, anyone who can reach the port can use FLIMKit and browse `/data`. |
|
|
93
|
+
| `FLIMKIT_DESKTOP` | `0` | Set to `1` to also serve the full desktop through noVNC on port 14501, for the few windows the web UI does not cover. Publish that port too. |
|
|
94
|
+
| `FLIMKIT_GEOMETRY` | `1440x900` | Size of the virtual screen FLIMKit draws on |
|
|
95
|
+
| `TZ` | `Etc/UTC` | Time zone for log timestamps |
|
|
96
|
+
|
|
97
|
+
The container reports healthy once the web UI answers on `/healthz`.
|
|
87
98
|
|
|
88
99
|
**TrueNAS SCALE (Custom App):**
|
|
89
100
|
|
|
90
101
|
1. Apps → Discover Apps → Custom App
|
|
91
102
|
2. Paste the contents of `docker/docker-compose.yaml` from this repo
|
|
92
|
-
3. Edit the volume paths to match your pool (e.g. `/mnt/tank/microscopy:/data`)
|
|
103
|
+
3. Edit the volume paths to match your pool (e.g. `/mnt/tank/microscopy:/data`) and uncomment `FLIMKIT_PASSWORD` with a password of your own
|
|
93
104
|
4. Deploy - TrueNAS will pull the image automatically
|
|
94
105
|
|
|
95
106
|
**Build from source** (required if you want to push your own changes):
|
|
@@ -3955,6 +3955,17 @@ def discard_default_root():
|
|
|
3955
3955
|
pass
|
|
3956
3956
|
tk._default_root = None
|
|
3957
3957
|
|
|
3958
|
+
def salvage_root():
|
|
3959
|
+
root = getattr(tk, '_default_root', None)
|
|
3960
|
+
if root is None:
|
|
3961
|
+
return None
|
|
3962
|
+
try:
|
|
3963
|
+
for child in root.winfo_children():
|
|
3964
|
+
child.destroy()
|
|
3965
|
+
except tk.TclError:
|
|
3966
|
+
return None
|
|
3967
|
+
return root
|
|
3968
|
+
|
|
3958
3969
|
def plain_root():
|
|
3959
3970
|
if HAS_DND:
|
|
3960
3971
|
try:
|
|
@@ -3962,7 +3973,9 @@ def plain_root():
|
|
|
3962
3973
|
return Tk()
|
|
3963
3974
|
except Exception as exc:
|
|
3964
3975
|
print(f'Drag and drop is off, the tkdnd library would not load: {exc}')
|
|
3965
|
-
|
|
3976
|
+
salvaged = salvage_root()
|
|
3977
|
+
if salvaged is not None:
|
|
3978
|
+
return salvaged
|
|
3966
3979
|
return tk.Tk()
|
|
3967
3980
|
|
|
3968
3981
|
def apply_fallback_theme(root):
|
|
@@ -3988,17 +4001,19 @@ def launch_gui():
|
|
|
3988
4001
|
from flimkit import plugins
|
|
3989
4002
|
plugins.ensure_loaded()
|
|
3990
4003
|
themed = None
|
|
4004
|
+
root = None
|
|
3991
4005
|
if HAS_TKMT:
|
|
3992
4006
|
try:
|
|
3993
4007
|
themed = FLIMKitGUIThemed(theme='sun-valley', mode='dark')
|
|
3994
4008
|
except tk.TclError as exc:
|
|
3995
|
-
|
|
4009
|
+
root = salvage_root()
|
|
3996
4010
|
print(f'The themed window would not start on this Tk: {exc}')
|
|
3997
4011
|
print('Falling back. Tk 9 needs tkinterdnd2 0.6.2 or newer and sv-ttk.')
|
|
3998
4012
|
if themed is not None:
|
|
3999
4013
|
themed.run(cleanresize=False)
|
|
4000
4014
|
return
|
|
4001
|
-
root
|
|
4015
|
+
if root is None:
|
|
4016
|
+
root = plain_root()
|
|
4002
4017
|
print(f'Theme: {apply_fallback_theme(root)}')
|
|
4003
4018
|
FLIMKitGUIFallback(root)
|
|
4004
4019
|
root.mainloop()
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
__version__ = '0.13.
|
|
1
|
+
__version__ = '0.13.5'
|
|
2
2
|
fitter_version = '20'
|
|
3
3
|
|
|
4
4
|
roadmap = '''Flim program roadmap:
|
|
@@ -42,5 +42,7 @@ Need to add Phasor once added to the codebase, and update version to 1.0. And ad
|
|
|
42
42
|
0.13.1 -> documentation fixes and two things found on a first run against QuPath on a fresh install. Stitching says how big the photon cube is, where it is going and how long the allocation took, and warns when the output drive cannot make sparse files, because exFAT writes the whole 57.2 GB before the first tile is read. flimkit[cellpose] works as well as flimkit[segmentation]. The docs name flimkit-bridge, say which QuPath pipeline writes the photon cube, document FLIMKIT_GPU_BLOCK_BYTES, and drop two claims that were no longer true: that the GPU backends cannot honour a fit window, and that free-tau per-pixel fitting uses batched Adam on the GPU. No fitted number changes, so fitter_version stays at 20.
|
|
43
43
|
0.13.2 -> the desktop GUI starts on a Tk 9 interpreter. The Windows python.org build of Python 3.14 ships Tk 9.0 where the macOS build still ships 8.6, and two GUI dependencies were built for Tcl 8.6 only, so the window died before it opened with either an unloadable tkdnd library or an invalid command name set_theme, depending on what was installed. tkinterdnd2 moves to 0.6.2 or newer and sv-ttk joins the gui extra, both of which load on Tk 8.6 and Tk 9. FLIMKit also falls back to a plain window rather than dying when a theme or a Tcl package fails at run time, which it could not do before because it chose its path from whether the imports had worked and both libraries import cleanly before failing inside Tcl. No fitted number changes.
|
|
44
44
|
0.13.3 -> OME-Zarr joins PNG and OME-TIFF in the image export. One store per export, named after the scan, holding a single (c, y, x) float32 array with every exported map as a named channel, so intensity and lifetime are two channels of one image rather than two files. The pixel size and the summed-fit summary go into the store metadata, and the pixel size also fills the NGFF scale transform, so exported maps carry their calibration and their fit numbers. Chunks are compressed with Blosc/zstd, which puts a 512 square float32 intensity and lifetime pair at about a third of the two uncompressed OME-TIFFs. zarr is a base dependency rather than an extra, so the pip install and the compiled application both carry it. No fitted number changes, so fitter_version stays at 20.
|
|
45
|
+
0.13.4 -> the desktop GUI no longer dies on a Tk 9 interpreter when the Sun Valley theme fails to load. Tk 9 on macOS queues an idle handler when a root window is created and does not cancel it when that root is destroyed, so the fallback path, which threw the themed root away and built a second one, segfaulted inside showRootWindow on the first update_idletasks rather than opening a window. The fallback now reuses the root the themed attempt had already built, clearing its children, because only the theme had failed and the window itself was sound. Tk 8.6 survived the destroy and rebuild, which is why this only showed up on a fresh install. No fitted number changes, so fitter_version stays at 20.
|
|
46
|
+
0.13.5 -> the Docker images serve FLIMKit through flimkit-web-ui instead of streaming the desktop over noVNC. Port 14500 opens the web page, which drives the same Tk window on the virtual display, so a TrueNAS app keeps its address. FLIMKIT_PASSWORD protects the page with HTTP Basic authentication, the noVNC desktop stays available behind FLIMKIT_DESKTOP=1 on port 14501, and the images gain a /healthz health check. docker-compose.yaml mounts the config at /root/.flimkit, where FLIMKit reads it, rather than at /config, which nothing read. No fitted number changes, so fitter_version stays at 20.
|
|
45
47
|
1.0.0 -> release version with all core features implemented and tested
|
|
46
48
|
1.5.0 (or 2.0) -> validation of fitting results with known fluorophores.'''
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: flimkit
|
|
3
|
-
Version: 0.13.
|
|
3
|
+
Version: 0.13.5
|
|
4
4
|
Summary: Fluorescence lifetime imaging analysis: reading, fitting, phasors and stitching
|
|
5
5
|
Author-email: Alex Hunt <alexander.hunt@ed.ac.uk>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -133,25 +133,36 @@ python install.py --dev
|
|
|
133
133
|
|
|
134
134
|
## Docker / TrueNAS SCALE
|
|
135
135
|
|
|
136
|
-
A pre-built image is available on Docker Hub. It runs the
|
|
136
|
+
A pre-built image is available on Docker Hub. It runs FLIMKit with the [web UI](https://github.com/FLIMKit/flimkit-web-ui), so the whole app is used from a browser with nothing installed on the client.
|
|
137
137
|
|
|
138
138
|
**Pull and run:**
|
|
139
139
|
|
|
140
140
|
```bash
|
|
141
141
|
docker run -d \
|
|
142
142
|
-p 14500:14500 \
|
|
143
|
+
-e FLIMKIT_PASSWORD=choose-a-password \
|
|
143
144
|
-v /path/to/your/data:/data \
|
|
145
|
+
-v /path/to/flimkit-config:/root/.flimkit \
|
|
144
146
|
--name flimkit \
|
|
145
147
|
alex1075/flimkit:latest
|
|
146
148
|
```
|
|
147
149
|
|
|
148
|
-
Then open **http://localhost:14500** in
|
|
150
|
+
Then open **http://localhost:14500** and log in as `flimkit` with that password. Put PTU files and data in the folder you mount to `/data` and use the Browse buttons in the page to navigate there. The config mount keeps expert settings, preferences and recent files when the container is recreated.
|
|
151
|
+
|
|
152
|
+
| Variable | Default | Effect |
|
|
153
|
+
|---|---|---|
|
|
154
|
+
| `FLIMKIT_PASSWORD` | not set | Password for the web UI (user `flimkit`) and for the desktop view. Without it, anyone who can reach the port can use FLIMKit and browse `/data`. |
|
|
155
|
+
| `FLIMKIT_DESKTOP` | `0` | Set to `1` to also serve the full desktop through noVNC on port 14501, for the few windows the web UI does not cover. Publish that port too. |
|
|
156
|
+
| `FLIMKIT_GEOMETRY` | `1440x900` | Size of the virtual screen FLIMKit draws on |
|
|
157
|
+
| `TZ` | `Etc/UTC` | Time zone for log timestamps |
|
|
158
|
+
|
|
159
|
+
The container reports healthy once the web UI answers on `/healthz`.
|
|
149
160
|
|
|
150
161
|
**TrueNAS SCALE (Custom App):**
|
|
151
162
|
|
|
152
163
|
1. Apps → Discover Apps → Custom App
|
|
153
164
|
2. Paste the contents of `docker/docker-compose.yaml` from this repo
|
|
154
|
-
3. Edit the volume paths to match your pool (e.g. `/mnt/tank/microscopy:/data`)
|
|
165
|
+
3. Edit the volume paths to match your pool (e.g. `/mnt/tank/microscopy:/data`) and uncomment `FLIMKIT_PASSWORD` with a password of your own
|
|
155
166
|
4. Deploy - TrueNAS will pull the image automatically
|
|
156
167
|
|
|
157
168
|
**Build from source** (required if you want to push your own changes):
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|