Skip to main content

Demultiplex and cluster RNA barcodes from 96-well-plate sequencing reads.

Project description

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.

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

autobarcoder-1.0.2.tar.gz (18.9 kB view details)

Uploaded Source

Built Distribution

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

autobarcoder-1.0.2-py3-none-any.whl (20.8 kB view details)

Uploaded Python 3

File details

Details for the file autobarcoder-1.0.2.tar.gz.

File metadata

  • Download URL: autobarcoder-1.0.2.tar.gz
  • Upload date:
  • Size: 18.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for autobarcoder-1.0.2.tar.gz
Algorithm Hash digest
SHA256 ecd5c4aa10746cddf2c374ba2f6fc6846893d80e7db5ca935925245d180b52b8
MD5 de32f0a4157545f78bb2adcfea86390b
BLAKE2b-256 6e1d48c2614200ec006744f923ac0c9e2e284d74cb43dd233d67d99c1ccaeb05

See more details on using hashes here.

File details

Details for the file autobarcoder-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: autobarcoder-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 20.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for autobarcoder-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 3567dcbc250caa9ba8828b24279f9dd42908efa63582c5d9e3825604562142c5
MD5 a88c7637053ad42a538180d21d4219de
BLAKE2b-256 c57b9097de3bece53de32efa2ac0ca59ac59d56dde4add35a470275190045e5a

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