Skip to main content

Western blot panel builder with hierarchical lane annotations (GPLv3).

Project description

Pystern Blot

Assemble publication-ready Western blot figures — with scientific integrity built in.

License: GPL v3 Python Platform


What it is

Western blot figures typically go through Photoshop for levels adjustments, then Illustrator for layout and annotation — a multi-step process with no record of what was changed or when. Pystern Blot replaces that pipeline with a single desktop application that handles everything from raw image import to final figure export. Both ECL and NIR fluorescence modalities are supported.

All processing stays in 16-bit throughout, so no dynamic range is lost when you adjust contrast. Every crop, rotation, and levels change is logged with SHA256 checksums of the original files, giving you a complete provenance record you can attach to a submission.


Key features

  • True 16-bit pipeline — images never get silently downsampled to 8-bit at any step
  • ECL and NIR fluorescence western blot support — Typhoon dual-channel (685 nm / 785 nm), per-channel display settings, levels, invert, flip, rotation
  • Per-channel greyscale rendering in final figure — each NIR channel appears as an independent row
  • Per-band wavelength routing for NIR ladders — Show 685 / Show 785 per band in ladder presets
  • Shared crop template with per-channel independent crop for NIR — resize once and all blots follow; per-channel override available for NIR
  • Levels, gamma, invert, 90° rotation, horizontal/vertical flip — all non-destructive, per channel for NIR
  • Overlay protein ladder with per-band wavelength assignment — Show 685 / Show 785 checkboxes per preset band; ticks and labels appear automatically in the final figure
  • Include / exclude per blot and per NIR channel — import multiple exposures or channels and choose which appear in the final figure without deleting the others
  • Library archive — export and import .pbarchive files for lab handover and long-term storage, with SHA256 integrity verification of every asset
  • Antibody name field per blot — persisted in project file and audit log
  • Integrity report — one-click export of a JSON or HTML report with SHA256 hashes, operation log, and crop/rotation metadata for every blot
  • Export to SVG, PDF, PNG, and 16-bit TIFF — SVG and PDF preserve text as editable objects for final tweaks in Illustrator or Affinity Designer

Screenshots


Requirements

  • Python ≥ 3.10
  • PySide6 ≥ 6.6
  • Pydantic ≥ 2.0
  • NumPy
  • Pillow
  • scikit-image

Note: requirements only apply to the source/PyPI install methods. Standalone ports bundle everything.


Installation

Option 1 — PyPI

pip install pysternblot
python -m pysternblot

Option 2 — From source (all platforms)

git clone https://github.com/TheBrickalista/PysternBlot.git
cd PysternBlot
python -m venv .venv
source .venv/bin/activate        # macOS / Linux
# .venv\Scripts\activate         # Windows
pip install -e .
python -m pysternblot

Option 3 — Standalone app (macOS and Windows)

No Python required. Download the latest build for your platform directly from the Releases page.

  • macOS: download PysternBlot-vX.X.X-macOS.zip, unzip and open PysternBlot.app
  • Windows: download PysternBlot-vX.X.X-Windows.exe and run it

Workspace location:

  • macOS: ~/.pysternblot/
  • Windows: C:\Users\<username>\.pysternblot\

Project structure

pysternblot/
├── models.py               — Pydantic data model (Project, Panel, Blot, BlotChannel, …)
├── storage.py              — Workspace I/O, asset import, archive export/import, Typhoon NIR import
├── render.py               — QGraphicsScene builders for final figure and provenance view
├── image_utils.py          — 16-bit image pipeline; multichannel TIFF loading and encoding detection
├── integrity.py            — SHA256 provenance and integrity report generation
└── ui/
    ├── main_window.py          — Main window, tab layout, display controls
    ├── project_io_mixin.py     — Project create/open/import, library archive export/import
    ├── marker_set_mixin.py     — Protein ladder preset editor (Show 685/785 per band)
    ├── overlay_ladder_mixin.py — Ladder assignment and kDa annotation
    ├── export_mixin.py         — PNG/PDF/SVG/TIFF/integrity report export
    ├── nir_import_dialog.py    — NIR blot import dialog (1 or 2 channel Typhoon)
    ├── legend_tab.py           — Legend editor tab
    ├── widgets.py              — Shared UI widgets
    ├── zoomable_graphics_view.py — Zoomable/pannable graphics view
    └── crop_rect_item.py       — Interactive crop rectangle (move + resize)
tests/                      — pytest test suite (130+ tests)

Supported instruments

Instrument Type Import
Any ECL imager (ChemiDoc, ImageQuant, etc.) Single-channel 16-bit TIFF Import Blot…
Cytiva Typhoon NIR fluorescence, dual-channel Import NIR Blot…
LI-COR Odyssey NIR fluorescence, dual-channel Planned

Roadmap

Pystern Blot is under active development. Completed phases include the full export system, protein ladder system, NIR fluorescence support, and library archive. Upcoming work includes extended experimental metadata fields, structured figure composition, LI-COR Odyssey support, and repository/ELN integration. See pysternblot/Roadmap.md for the full plan.


License

Pystern Blot is released under the GNU General Public License v3.0.

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

pysternblot-1.0.0.tar.gz (84.4 kB view details)

Uploaded Source

Built Distribution

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

pysternblot-1.0.0-py3-none-any.whl (73.4 kB view details)

Uploaded Python 3

File details

Details for the file pysternblot-1.0.0.tar.gz.

File metadata

  • Download URL: pysternblot-1.0.0.tar.gz
  • Upload date:
  • Size: 84.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pysternblot-1.0.0.tar.gz
Algorithm Hash digest
SHA256 4df8864810497d21786db580921293317425b88efa5b20b2052b5c57e6a9317d
MD5 bf387b9e76f201b2d4e4c4a37bb3bb98
BLAKE2b-256 9724ac9ffbf853be7ab2138a074241f1ee4641e0507b9c80dcb7e93b83fc6dd0

See more details on using hashes here.

Provenance

The following attestation bundles were made for pysternblot-1.0.0.tar.gz:

Publisher: publish.yml on TheBrickalista/PysternBlot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pysternblot-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: pysternblot-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 73.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pysternblot-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e44e02dd661c4adc16c0a01596f0bf48bc4f18a85ed8f274589cd5af41b559d6
MD5 5819bc89f835323a8466b37f69ad425b
BLAKE2b-256 63ff74329fe0a18c43c165f321b6f058e9bee86be197d7dcc775e74d570cf210

See more details on using hashes here.

Provenance

The following attestation bundles were made for pysternblot-1.0.0-py3-none-any.whl:

Publisher: publish.yml on TheBrickalista/PysternBlot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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