Genome Search
An integrated system for genomic sequence search, dependency-aware concurrent scheduling and relational data management, with a reproducible benchmarking framework.
System overview
Genome Search indexes, searches, stores and processes DNA and protein sequences. Algorithmic search, a workflow scheduler, a concurrent execution engine and a PostgreSQL store share one job model, so any component can be benchmarked in isolation or end to end.
K-mer index & alignment
K-mer indexing, hash-table retrieval, trie prefix search and dynamic-programming alignment, each analysed for time and space complexity.
Dependency graph
Jobs form a dependency graph. Topological sorting and a priority queue release independent tasks as soon as their inputs are ready.
Concurrent workers
Multi-process and multi-threaded workers with synchronization primitives, inter-process communication and controlled resource allocation.
PostgreSQL schema
A normalized PostgreSQL schema for sequences, samples, jobs, execution metadata and results, with keys, constraints, transactions and indexes.
Sequence search
A k-mer index moves the cost of searching from every query to a single build step. Lookup time stays flat as the reference grows, while a scan grows with it.
Dynamic-programming alignment
Smith-Waterman local alignment fills an m by n matrix, so time grows with the product of the lengths. Keeping only two rows when the score alone is needed removes almost all of the memory cost.
Traceback alignment
Score along the path
Dependency-aware scheduling
Each workflow is a directed acyclic graph. The scheduler keeps ready tasks in a priority queue and starts the longest first, which shortens the finishing time on limited workers.
Relational storage and indexing
Metadata queries filter on sample and sequence properties. Indexes turn those scans into lookups, and the gap widens with every row added.
samples(sample_id PK, name) sequences(seq_id PK, sample_id FK, length, gc) jobs(job_id PK, seq_id FK, task, priority, status) executions(exec_id PK, job_id FK, started, finished, cpu_s, peak_mb) results(result_id PK, job_id FK, seq_id FK, position, score)
Real example datasets
The workbench ships with real public-domain sequences in app/data (catalogued in datasets.json), selectable from the Data tab via “Real example”. Public-domain NCBI RefSeq records via the Biopython test suite; see bench_real.py for provenance.
| Dataset | Accession | Sequences | Bases | GC |
|---|---|---|---|---|
| Arabidopsis thaliana chloroplast (full) | NC_000932.1 | 1 | 154,478 | 0.363 |
| Chloroplast coding sequences (85 genes) | NC_000932.1-CDS | 85 | 79,482 | ~0.37 |
| Chloroplast 10 kb demo subset | NC_000932.1-demo | 1 | 10,000 | 0.302 |
| Yersinia pestis plasmid pPCP1 (full) | NC_005816.1 | 1 | 9,609 | 0.453 |
Run it yourself: workbench, notebooks and source
The charts above show measurements. The Streamlit workbench and the notebooks are the system itself: load your own FASTA, search it, align pairs, run a dependency graph on real workers, query the relational store and benchmark all of it on your own machine.
Data and search
Upload or generate sequences, build a k-mer index, and run exact, mismatch-tolerant or trie prefix searches with a hit map across every sequence.
Alignment
Local and global alignment with editable scores, a scoring-matrix heatmap with traceback, and a dot plot.
Workflow engine
Edit the task graph, break it with a cycle, then run it on threads or processes and see a real execution timeline with the critical path.
Database and benchmarks
Run SQL against the schema, read query plans, toggle indexes, and time every method live.
How the numbers were made
Every figure above comes from one small benchmark program that ran in a sandbox. Step through the program, inspect the sandbox, then see which results were measured directly and which were not.
To publish your own measurements, run python3 bench/bench.py > results.json, then python3 bench_extra.py and python3 bench_more.py from inside bench/, and paste the output into the <script id="data"> block of index.html. Every chart, caption and headline figure recomputes from that data.
Contact
Questions, data requests or feedback: harshinisuresha7@gmail.com