Skip to content

About

Open-source desktop application for Sanger chromatogram visualization, editing, and NCBI BLAST identification

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

ChromaView — Sanger Sequencing Chromatogram Analyzer

DOI: https://doi.org/10.5281/zenodo.20740237

ChromaView is a modern, open-source desktop application for visualizing, editing, and analyzing Sanger DNA sequencing chromatogram files. It provides functionality comparable to Chromas, FinchTV, and SnapGene's trace viewer, built with a clean Python stack.


Features

  • File Support: Import .ab1 and .scf chromatogram files
  • Chromatogram Visualization: Interactive fluorescence traces (A/T/G/C) with zoom, pan, and scroll
  • Base Calling Display: Called bases aligned to peaks with quality-score coloring
  • Manual Editing: Click-to-edit base calls with undo/redo
  • Quality Analysis: Phred score bar chart, signal-to-noise ratio, ambiguous base detection
  • Trimming: Automatic and manual trimming of low-quality ends (modified Mott algorithm)
  • Sequence Operations: Reverse complement, search by position or motif
  • Reference Comparison: Align chromatogram against a reference sequence, highlight mismatches/SNPs
  • Batch Processing: Process multiple files for quality reports
  • Export: FASTA, CSV, publication-quality PNG/SVG chromatogram images
  • Modern UI: Dark/light themes, dockable panels, synchronized sequence viewer
  • NCBI BLAST: In-application blastn search against selectable nucleotide database (core_nt), running on a background thread so the UI stays responsive. Results are displayed in a sortable table (accession, description, query coverage, identity, E-value, bit score) with a pairwise alignment view and direct links to NCBI records. A contact email for NCBI can be saved in application settings.
  • Forward + Reverse Consensus: Quality-weighted consensus from a forward/reverse read pair. The reverse read is automatically reverse-complemented; the overlap is found by local alignment. Each consensus position is called from the higher-quality base, or an IUPAC ambiguity code when quality is equal. Assembly is gated on a minimum overlap identity threshold, and a clear diagnostic message is shown when the reads do not overlap.

Architecture

chromaview/
├── core/           # Data models and file parsers
│   ├── ab1_parser.py       # AB1/ABIF file parser
│   ├── scf_parser.py       # SCF file parser
│   ├── models.py           # Chromatogram data model
│   └── sequence_ops.py     # Reverse complement, alignment, search
├── gui/            # PyQt6 user interface
│   ├── main_window.py      # Main application window
│   ├── trace_widget.py     # Chromatogram trace canvas
│   ├── sequence_bar.py     # Synchronized sequence viewer
│   ├── quality_widget.py   # Phred score bar chart
│   ├── file_browser.py     # Sidebar file explorer
│   ├── dialogs.py          # Trim, compare, batch dialogs
│   ├── blast_dialog.py     # NCBI BLAST search dialog
│   ├── consensus_dialog.py # Forward+reverse consensus dialog
│   └── theme.py            # Dark/light theme manager
├── analysis/       # Analysis algorithms
│   ├── quality.py          # Quality filtering, trimming
│   ├── peaks.py            # Peak detection and metrics
│   ├── mutation.py         # SNP detection, mismatch calling
│   ├── blast.py            # NCBI BLAST integration (background thread)
│   └── consensus.py        # Forward+reverse quality-weighted consensus
├── export/         # Output generators
│   ├── fasta.py            # FASTA export
│   ├── csv_export.py       # CSV export
│   └── image.py            # Publication-quality image export
├── utils/          # Shared utilities
├── tests/          # Unit tests
│   ├── test_ab1_parser.py
│   ├── test_models.py
│   ├── test_quality.py
│   ├── test_sequence_ops.py
│   ├── test_blast.py
│   └── test_consensus.py
└── app.py          # Application entry point

Installation

Windows users: download ChromaView-windows.zip from Releases, unzip it, and double-click ChromaView.exe. No Python installation required.

Requirements

  • Python 3.10+
  • System: Windows, macOS, or Linux

Install from source

git clone https://github.com/ifthikharzaman-eng/chromaview.git
cd chromaview
pip install -e .

Run

chromaview
# or
python -m chromaview

Install dependencies only

pip install -r requirements.txt

Standalone Windows executable

A self-contained Windows .exe can be built with PyInstaller using the provided helper script:

build_windows.bat

The script regenerates the application icon, runs PyInstaller against ChromaView.spec, and writes the output to dist\ChromaView\ChromaView.exe.

Usage

  1. Open a file: File → Open or drag-and-drop an .ab1 file
  2. Navigate: Scroll/zoom the chromatogram; click a base to select it
  3. Edit: Double-click a base to change its call
  4. Trim: Analysis → Trim Low-Quality Ends
  5. Compare: Analysis → Compare to Reference
  6. Export: File → Export as FASTA / CSV / Image

Development

# Run tests
pytest chromaview/tests/ -v

# Run with debug logging
chromaview --debug

Tech Stack

Component Library
GUI Framework PyQt6
Chromatogram PyQtGraph
AB1 Parsing Biopython
Data handling NumPy
Testing pytest

License

MIT License. See LICENSE.

Changelog

See CHANGELOG.md.

Table S1. Mapping of study sample identifiers to AB1 file names and embedded ABI instrument sample names. The embedded (internal) names reflect original run-sheet labels and were remapped to sequential study identifiers; raw AB1 files are deposited unmodified. Sample AB1 file name (forward / reverse) Embedded ABI sample name (forward / reverse) 1 Sample_1_27F.ab1 / Sample_1_1492R.ab1 1F_ID_12012017011 / 1R_ID_12012017011 2 Sample_2_27F.ab1 / Sample_2_1492R.ab1 2F_ID_3010002244 / 2R_ID_3010002244 3 Sample_3_27F.ab1 / Sample_3_1492R.ab1 S4F / S4R 4 Sample_4_27F.ab1 / Sample_4_1492R.ab1 S5F / S5R 5 Sample_5_27F.ab1 / Sample_5_1492R.ab1 3F_ID_12010030131 / 3R_12010030131 6 Sample_6_27F.ab1 / Sample_6_1492R.ab1 4F_ID_12010030271 / 4R_12010030271 7 Sample_7_27F.ab1 / Sample_7_1492R.ab1 7F_ID_12205037721 / 7R_ID_12205037721 8 Sample_8_27F.ab1 / Sample_8_1492R.ab1 7701F / 7701R 9 Sample_9_27F.ab1 / Sample_9_1492R.ab1 0821F / 0821R 10 Sample_10_27F.ab1 / Sample_10_1492R.ab1 S3F / S3R 11 Sample 11_F.ab1 / Sample 11_R.ab1 16s_NCL4_F / 16s_NCL4_R 12 Sample 12 F.ab1 / Sample 12 R.ab1 SAMPLE_2_F / SAMPLE_2_R 13 Sample 13 F.ab1 / Sample 13 R.ab1 g-p_BF_F / g-p_BF_R (leading unrendered glyph in file) 14 Sample 14 F.ab1 / Sample 14 R.ab1 12_16S_F / 12_16S_R (leading unrendered glyph in file) 15 Sample 15 F.ab1 / Sample 15 R.ab1 SHIG_F / SHIG_R (leading unrendered glyph in file)

Sample file in Zenodo

ZAMAN, I. (2026). Sanger 16S rRNA chromatograms (AB1) for ChromaView validation, Samples 1–15 [Dataset]. Zenodo. https://doi.org/10.5281/zenodo.21641194

About

Open-source desktop application for Sanger chromatogram visualization, editing, and NCBI BLAST identification

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages