Skip to main content

Python CLI and Tkinter GUI for downloading Incucyte live-cell imaging TIFFs.

Project description

py_incucyte_gui - Incucyte GUI Downloader

Automatically download TIF images from the Incucyte live-cell imaging system via its SOAP API. Replaces the manual click-to-download workflow with a script that polls for new scans and saves them to a folder.

Requirements

  • Python 3.10+
  • Must be on the Imperial College London network (the Incucyte device is not internet-accessible)
  • Windows with the Incucyte desktop client installed is required for first-time password encryption/login

Install

From PyPI:

pip install py_incucyte_gui

From this source checkout:

pip install -e .

Quick Start (GUI)

py-incucyte-gui
  1. Enter the Incucyte host IP and your credentials, click Login
  2. Select one or more vessels from the list
  3. (Optional) Click Select Wells to choose specific wells
  4. Choose channel filters (Phase, Green/Color 1, Red/Color 2)
  5. Set the output folder
  6. Set Start from: "First scan" to get all historical images, "Today" for new ones only, or a custom date
  7. Click Download Now to review the export dialog, or Start Watching to poll automatically

Quick Start (CLI)

# Test connectivity
py-incucyte probe --host 129.31.116.189

# Login (saves credentials)
py-incucyte login --host 129.31.116.189

# List experiments and vessels
py-incucyte vessels

# Download all images from a vessel, starting from its very first scan
py-incucyte download -v 38 -o ./images --start-from first

# Download from a specific date
py-incucyte download -v 38 -o ./images --start-from 2026-03-01

# Download Phase + green + red fluorescence channels as ImageJ hyperstacks
py-incucyte download -v 38 -o ./images --channels phase,green,red --hyperstack

# Download each selected well/channel as a time stack across scans
py-incucyte download -v 38 -o ./images --wells D2-D5 --channels phase,green --time-stack

# Download one channel+time hyperstack per selected well
py-incucyte download -v 38 -o ./images --channels phase,green,red --time-stack --hyperstack

# Watch mode: poll every 10 minutes for new scans
py-incucyte watch -v 38 -o ./images -i 10 --start-from first

The original script entry points still work from a source checkout:

python incucyte_gui.py
python incucyte_downloader.py vessels
python -m py_incucyte_gui vessels

Compatibility aliases are also installed: incucyteai, incucyteai-gui, and incucyte-downloader.

Features

  • Parallel scan-time checks - the export-list building step also uses the worker count

  • Parallel downloads — configurable number of worker threads (default 4)

  • Optional green LUT for Phase — Phase contrast images are kept as returned by the API by default; use --green-lut to save green-channel RGB TIFs

  • Named fluorescence channels — Incucyte Color 1 is shown as Green and Color 2 as Red; CLI aliases color1 and color2 still work

  • ImageJ hyperstack export — optional one-file-per-well/time TIFF stacks containing all selected channels

  • ImageJ time stack export — optional one-file-per-well/channel stacks across selected scans; combine with --hyperstack for channel+time stacks

  • Pre-flight export dialog — one-shot downloads show source/calibration details, stack axes, channels, wells, output folder, and filename examples before starting

  • Start from any date — download from the vessel's first scan, today, or any custom date

  • Progress dialog (GUI) — file count, progress bar, speed estimate, ETA, cancel button

  • Source-image progress for stacks — time-stack exports show inner source-image progress plus output-file completion

  • Window title updates — shows download progress and next-poll countdown when minimized

  • Retry with backoff — transient network failures retry up to 3 times

  • State tracking — already-downloaded images are skipped on subsequent runs

  • Well & channel filters — download only specific wells and/or image channels

  • Elapsed-time filenames — files named with elapsed time from experiment start (e.g., VID38_A1_1_024h30m.tif)

  • Graceful shutdown — closing the window during watch mode stops cleanly

CLI Options

download

Flag Description
-v, --vessel Vessel ID to download
-o, --output Output directory
-s, --start-from first (all history), YYYY-MM-DD, or omit for today
-d, --date Single date to download (YYYY-MM-DD)
-w, --wells Well filter (e.g., A1, A1,B3, A1-D4)
-c, --channels Channel filter (phase, green/color1, red/color2, all)
--hyperstack Save selected channels as one ImageJ hyperstack TIFF per well/site/time
--time-stack Save individual wells as ImageJ time stacks across selected scans
--workers Parallel download threads (default: 4)
--green-lut Apply green LUT to Phase images
--no-green-lut Keep Phase images as returned by the API (default)

watch

Same as download, plus:

Flag Description
-i, --interval Poll interval in minutes (default: 10)

File Structure

py_incucyte_gui/
  pyproject.toml           pip/build metadata and command entry points
  LICENSE                  BSD-3-Clause license
  py_incucyte_gui/         package namespace for python -m py_incucyte_gui
  incucyte_downloader.py   CLI tool and core download logic
  incucyte_gui.py          Tkinter GUI
  CLAUDE.md                Agent context (for Claude Code)
  SETUP_PLAN.md            On-site deployment guide
  README.md                This file
  .gitignore               Excludes state files and WSDL
  .tmp/                    Config, state, captures (gitignored)

Runtime config is saved outside the package when installed with pip:

  • Windows: %APPDATA%\IncucyteAI
  • macOS/Linux: $XDG_CONFIG_HOME/incucyteai or ~/.config/incucyteai
  • Override: set INCUCYTEAI_HOME to a folder path

Existing source checkouts keep using .tmp/ if local state already exists there.

License

py_incucyte_gui is distributed under the BSD 3-Clause License.

Copyright (c) 2026, Jamie Malcolm. Ownership is personal rather than lab or institute owned.

Build and Publish

python -m pip install --upgrade build twine
python -m build
python -m twine check dist/*
python -m twine upload dist/*

Setup at Imperial

See SETUP_PLAN.md for step-by-step instructions.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

py_incucyte_gui-0.1.0.tar.gz (37.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

py_incucyte_gui-0.1.0-py3-none-any.whl (35.7 kB view details)

Uploaded Python 3

File details

Details for the file py_incucyte_gui-0.1.0.tar.gz.

File metadata

  • Download URL: py_incucyte_gui-0.1.0.tar.gz
  • Upload date:
  • Size: 37.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for py_incucyte_gui-0.1.0.tar.gz
Algorithm Hash digest
SHA256 4a208cfadcca4f6654f0e368d00016cb187e8d36c3810672d04fed52fcc29a2f
MD5 795933b53ec2f56bca655fe6c42abd48
BLAKE2b-256 0ed12a279d7bc693a000356021106c173edb2e012aca1a17421bf1744baddc13

See more details on using hashes here.

File details

Details for the file py_incucyte_gui-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for py_incucyte_gui-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 26a89965df92903158c41853b83fd5da44064286399a357d8f16eb24c673478a
MD5 db13c71ccaae39cbb7bda847c48982a9
BLAKE2b-256 2336b27f9fa5c4133fe2fe4c31f7ef59c8d133c93db0dc049ac7fd98c6f0da63

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page