Skip to main content

AutoBarcoder

Demultiplex and cluster RNA barcodes from 96-well-plate sequencing reads — in your browser or terminal.

AutoBarcoder takes a pile of sequencing reads, sorts them back into 96 wells using your row/column barcodes, clusters the variable RNA barcode between two flanking sequences, and produces a per-well summary (TXT + PDF) of the top barcode variants. It handles single plates and multi-plate runs.

status: ready python: 3.9+ license: MIT DOI CI


What it does

┌──────────────────┐   ┌──────────────────┐   ┌──────────────────┐   ┌──────────────────┐
│ Sequencing reads │ → │  Row+Column tag  │ → │  Extract between │ → │  Per-well TXT +  │
│  (FASTQ / TXT)   │   │   demultiplex    │   │  flanks; cluster │   │   PDF + JSON     │
└──────────────────┘   └──────────────────┘   │   by Levenshtein │   └──────────────────┘
                                              └──────────────────┘

Inputs you provide:

  • Sequencing data (FASTQ or plain-text — every line containing both row & column tags is scanned).
  • Row barcodes + column barcodes (one per line).
  • 5′ and 3′ flanking sequences that bracket the variable RNA barcode.
  • Expected barcode length and a Levenshtein edit-distance tolerance for clustering.

Outputs you get:

  • summary.txt — per-well top-3 barcodes and percentages.
  • results.pdf — one bar chart per well.
  • JSON results via the web API (programmatic access).
  • Optional GraphPad-Prism-friendly CSVs for selected wells.

Quick start (web UI — recommended)

The fastest way to try AutoBarcoder is the new browser UI.

git clone https://github.com/abachu2005/AutoBarcoder-OS-.git
cd AutoBarcoder-OS-
python3 bin/autobarcoder-setup       # interactive wizard: venv + deps + smoke test
bash webapp/run.sh                   # serve at http://127.0.0.1:8000

Then open http://127.0.0.1:8000 and click “Try with sample data” to see a working analysis on a synthetic 4×4 plate.

Quick start (desktop GUI)

pip install -r requirements.txt
python main.py

The Tkinter app provides the same controls as the web UI in a single window, useful when you can't run a local server.

Quick start (Python API)

from barcodes.processing import process_single_plate_for_reads

with open("reads.fastq") as f:
    results = process_single_plate_for_reads(
        "summary.txt", "results.pdf", f.readlines(),
        start_text="CAGCTG", end_text="GGATCC",
        length_threshold=25, distance_threshold=2,
        rows=["AAACGT", "AATTGG"], columns=["CCGTAA", "CCGGTT"],
        expected_len=20,
    )

Repository layout

.
├── barcodes/             # core analysis library (reading, clustering, analysis, processing)
├── gui/                  # Tkinter desktop GUI
├── webapp/               # FastAPI + HTML/JS web UI
│   ├── backend/main.py
│   └── frontend/index.html
├── bin/autobarcoder-setup# interactive setup wizard
├── sample_data/          # tiny synthetic dataset for the demo button
├── viz.py                # publication-style clustering web renderer (standalone)
├── diagnostics.py        # diagnostic motif-counting GUI
├── main.py               # Tkinter launcher
└── requirements.txt

Configuration reference

Field Meaning
Sequencing data FASTQ or text file. Every line is scanned independently.
Row / Column barcodes One per line. A read must contain both a row and a column tag to be assigned to a well.
5′ / 3′ flank The constant sequences bracketing the variable barcode.
Expected barcode length Used internally as length+5 to allow short insertions during clustering.
Edit tolerance Levenshtein distance threshold for grouping similar barcodes into one cluster.
20-nt offset If your library has filler between the 5′ flank and the real barcode, enable this to take the last N nt between the flanks.
Plate IDs Multi-plate mode. Each provided string is treated as a plate-identifier substring; reads are split per plate.

Output catalogue

  • summary.txt — one line per well: R{row}C{col}: G<seq> (xx.xx%), G<seq> (xx.xx%), … or CONTAMINATED (no barcodes).
  • results.pdf — bar chart per well, top 3 clusters.
  • prism_ready/ (if prism_export_wells is set in the API) — Wide- and long-format CSVs.
  • Web jobs additionally expose JSON at /api/jobs/{id}/results and downloadable artifacts.

License

MIT — see LICENSE.

Metadata

Release files for autobarcoder 1.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for autobarcoder 1.0.2
File Size Uploaded
autobarcoder-1.0.2.tar.gz 18.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for autobarcoder 1.0.2
File Interpreter ABI Platform
autobarcoder-1.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 39.7 kB

Release files / autobarcoder-1.0.2.tar.gz

Download URL autobarcoder-1.0.2.tar.gz
Size 18.9 kB
Tags Source
SHA-256 checksum
How to use checksums
ecd5c4aa10746cddf2c374ba2f6fc6846893d80e7db5ca935925245d180b52b8
BLAKE2b-256 checksum
How to use checksums
6e1d48c2614200ec006744f923ac0c9e2e284d74cb43dd233d67d99c1ccaeb05
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.4

Release files / autobarcoder-1.0.2-py3-none-any.whl

Download URL autobarcoder-1.0.2-py3-none-any.whl
Size 20.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3567dcbc250caa9ba8828b24279f9dd42908efa63582c5d9e3825604562142c5
BLAKE2b-256 checksum
How to use checksums
c57b9097de3bece53de32efa2ac0ca59ac59d56dde4add35a470275190045e5a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.4

Release history Release notifications | RSS feed

This release

1.0.2 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page