Spaces:
Running
Download IMPLEMENTATION_LOG.md from Samad14/bio-nexus-api: direct link, hf CLI and curl.
- Browser
- Download file 11.8 kB
-
https://huggingface.co/spaces/Samad14/bio-nexus-api/resolve/main/IMPLEMENTATION_LOG.md
- Command line
-
hf download hf://spaces/Samad14/bio-nexus-api/IMPLEMENTATION_LOG.md
-
curl -L -o IMPLEMENTATION_LOG.md https://huggingface.co/spaces/Samad14/bio-nexus-api/resolve/main/IMPLEMENTATION_LOG.md
Bio Nexus β Implementation Log
Sprint-by-sprint build history. This file answers "what shipped and when." For why Bio Nexus exists and how it's architected, see
MASTER_PLAN.md. For coding conventions, seeRULES.md. For the job worker, seedurable-worker-design.md. For the DB, seeschema.md.
Last Updated: August 2026
Track A β Prototype Sprint (18 days) β
Goal: one golden path β sequence in β BLAST β AI-interpreted report. Everything else deferred to Track B.
- Day 0: repo/infra pre-flight (Supabase project, storage bucket, API keys, NCBI access confirmed)
- Days 1β2: job CRUD spine (FastAPI + Next.js scaffolds, dummy data)
- Days 3β4: NCBI BLAST integration, demo-mode fallback for slow/queued searches
- Day 5: sequence input + validation, wizard shell
- Days 6β7: wizard β job creation β live processing screen (first end-to-end run)
- Days 8β9: raw results rendering (hits table, alignment view, no AI yet)
- Days 10β11: AI interpretation layer (Gemini), hedged-language prompt template
- Day 12: guest β account upgrade flow
- Day 13: dashboard (job list)
- Day 14: landing page polish
- Day 15: error states (invalid input, NCBI timeout, zero hits, rate-limit queueing)
- Day 16: deploy (Vercel + Railway/Render)
- Day 17: demo prep, cached demo sequences as backup
- Day 18: demo day
Track B β Full Build (post-prototype)
| Sprint | Scope | Status |
|---|---|---|
| 1β2 | Pairwise alignment, parent_job_id pipeline chaining |
β |
| 3β4 | UniProt annotation, PDB structure fetch + 3Dmol.js viewer | β |
| 5β6 | Multi-method MSA (ClustalOmega/MUSCLE/Kalign/MAFFT/T-Coffee), phylogenetic tree (NJ/UPGMA/ML) | β |
| 7 | Pathway lookup (Reactome/WikiPathways) + diagram viewer | β |
| 8 | Onboarding tutorial + /learn docs (10+ pages, glossary, inline help) |
β |
| 9β10 | PDF/JSON export, cache-hit tracking, Sentry monitoring | β |
| 11 | Pipeline v2 engine (8-step BLASTβUniProtβMSAβPhyloβDomainsβPathwayβAlphaFoldβAI), pairwise/domain/structure depth | β |
| 12 | Drug discovery compute: AutoDock Vina docking, MD simulation, ADMET, function prediction, protein interactions | β |
| 13 | Sequencing MVP: FASTQ QC β trimming β assembly/consensus β variant calling β annotation (SARS-CoV-2 reference) | β |
| 14 | Reliability: AI fallback chain (GroqβGeminiβOllama), share links for all job types, wizard job persistence | β |
| 15 | Design system v4.0: dark-only OLED theme, semantic tokens, Geist/Phosphor, landing rebuild | β |
Platform Hardening (ongoing, not tied to a single sprint)
- API key system (
sk_bio_prefix, SHA-256 hashed) - Share links (token-based, all job types)
- Guest β account upgrade via
linkIdentity - Enhanced dashboard/jobs/settings UI
- Durable job worker (see
durable-worker-design.md) β replaced in-request job execution for docking/MD/function-predict/sequencing/pipeline
Tool Verification Audit (Aug 2026)
Live audit of the four π΄ tools from FEATURE_VERIFICATION_CHECKLIST.md; every fix is a fix(...) commit.
fix(pathways)bde6aeaβ Pathway enrichment no longer depends on the Reactome/token/{token}/pathwaysendpoint (which 404s on the URL-encoded token). Reads thepathwaysarray directly from the projection response, parses species, and surfacesgeneRatio+ per-pathway p-value to the UI and TSV export. Live-verified: 20 pathways for the TP53 gene set.fix(interactions)d2ea003β STRING-DB viewer upgraded: evidence-type filter (experimental / database / co-expression / text-mining, threshold 0.3), JSON export alongside PNG/TSV, and LearnPopover tooltips on the combined + evidence score headers linking tolearn/interactions. Backend endpoint live-verified (TP53 β 5 partners).
Structure Prep Hardening (Aug 2026) β pre-work for techspec.md Β§1βΒ§3
All seven audit findings from techspec.md fixed; manifest rows added to FEATURE_VERIFICATION_CHECKLIST.md (Structure Prep / De Novo / Export / Page Capture sections).
- A1
fix(structure-prep)β PyMOL cleanup now uses the importable open-source wheel (pymol-open-source-whl, provides thepymol2module β no binary, no X server) with a loudly-logged Biopython fallback. fpocket built from source (Discngine/fpocketv4.0.0, needslibnetcdf-dev) in both API Dockerfiles β it is not packaged in Debian repos (pool dir 404s). Note: spec's "pymol2 on PyPI" assumption corrected during implementation. - A2+A6 β new
backend/migrations/008_structure_prep_jobs.sql: durable job table withuser_idownership + RLS (pattern-matched to ngs_jobs). Router persists state per step and scopes status reads to the owning user (require_user_id, matching every other job router). - A3 β broken chains that can't be repaired (no accession or no >80% template) proceed but are tagged
chain_integrity="broken_unrepaired"; repaired runs get"repaired"; clean runs"intact". ESMFold window-splicing deferred with reason in manifest. - A4 β PDB ID / UniProt accession (reuses
UNIPROT_REfrom identifier_resolution) / SMR template IDs validated by regex before any network call; sequence alphabet + 10β768 length checked at request time. - A5 β
swissmodel.expasy.org,cfold.bme.uic.edu,api-inference.huggingface.coadded to SSRF allowlist; every outbound call instructure_prep.pynow routes throughvalidate_url(). - A7 β CASTp polling timeout now sets explicit
castp_status: "timed_out"(plusskipped/running/complete/error); fpocket gets a symmetricfpocket_statusincl.unavailable. - Tests:
test_structure_prep_validation.py(25 cases) + existing identifier-resolution suite pass.
De Novo Pipeline Branch β tier 6 (Aug 2026) β techspec.md Β§1
Unknown sequences that fail tiers 1β5 (no BLAST hit / resolution exhausted) now complete the pipeline as a first-class "de novo" run instead of erroring. Confidence tiers threaded through the whole context: identified (direct/xref/name) β homolog (sequence/idmapping similarity) β de_novo.
- Backend
feat(pipeline)βidentifier_resolution.resolve_to_uniprotreturns an enriched result (status/confidence) and neverNone;pipeline_v2._executebranches at the BLAST step: zero-hit proteins setdenovo_mode, mark blast complete with an explanatory note, and run_run_denovo_steps()instead of failing. Resolution-exhausted runs (hits exist, no accession) fall through to homolog-confidence gating:_run_domains_or_denovo()swaps InterProScan5 sequence-search for accession lookup;_run_alphafold_or_esmfold()swaps ESMFold HF API for the AlphaFold repository. - New service
app/services/de_novo.pyβinterpro_sequence_search()(EBI iprscan5 submit/poll/JSON β normalized domain shape),esmfold_structure()(predict + mean pLDDT from CA B-factors, alphafold-shaped card with inlinepdb_text),composition_stats()+function_hints()(honest heuristic labeling). MSA/phylo/pathway steps are marked failed with "Unavailable for de novo sequences β no identified homolog" rather than silently empty. - Frontend β new
ConfidenceBadge(three states: cyan identified / amber homolog / dashed-purple de_novo), newDeNovoPanel(dashed-border composition + function-hints card replacing UniProt panel when the bundle carries_de_novo); job page renders de novo results where it previously showed a dead-end "No significant similarity found" card;AlphaFoldViewergains apdbDataprop so inline ESMFold models render without a fetch (title: "Predicted structure (ESMFold)"); pathway card shows an explicit unavailable notice in de novo runs; docking button hidden when no receptor PDB URL exists. - Tests:
test_de_novo_branch.py(8 cases incl. pipeline-level zero-hit acceptance test with mocked EBI/ESMFold) β 63 backend tests green across the three touched suites; frontendtsc --noEmit+next lintclean. - Pending live verification: real ESMFold/InterProScan E2E run; migration
008application (pre-work Β§A2).
Structure Export β techspec.md Β§2 (Aug 2026)
- New router
app/routers/structure_export.py(/api/structure-export) β authenticated downloads keyed by UniProt accession (AlphaFold DB file pattern) or 4-char PDB ID (RCSB). Formats:.pdb,.cif, and a genuine PyMOL session.psebuilt server-side with the pymol-open-source wheel (cartoon +spectrum bpLDDT rainbow + transparent background pre-applied β no manual coloring, acceptance Β§2.5). Missing upstream models map to clean 404s; pymol2-less deployments get an explicit 503 instead of a broken file. - Honest-scoping rule honored (Β§2.3b) β ChimeraX/VMD ship as the preferred coordinate format plus a client-generated command script (
.cxc/.tcl), never fake session files..cxs/VMD state exports remain documented exclusions. - Docking exports β worker now persists
result_sdf(docked poses) andreceptor_pdb; new endpointsGET /api/docking/result/{id}/complex.pdb(receptor + docked ligand merged) and/ligand.sdf. Legacy rows pre-dating persistence return an actionable "re-run" message rather than junk. - Frontend β new
StructureExportMenu.tsxdropdown: PDB/mmCIF/PyMOL-session items onAlphaFoldViewer's toolbar (hidden without an accession β de novo models export via the existing PDB button); Complex-PDB/Ligand-SDF items on the docking results page. Downloads go through the authed axios instance as blobs. - Tests:
test_structure_export.py(12 cases β routing, URL patterns, format gate, 404 mapping, empty-pymol-output guard).
Page Capture + Final Synthesis β techspec.md Β§3 (Aug 2026)
- New table
migrations/009_page_captures.sqlβ one row per external source queried during a run, keyed(job_id, source)with RLS; stores the human-facing page URL, title, extracted text sections, figure image URLs, and an honestfetch_status(captured/failed/skipped). Must be applied in Supabase SQL Editor. - New service
app/services/page_capture.pyβ stdlib-only HTML extraction (no new deps), per-host rate limiter (1.5 s minimum interval), every fetch throughssrf.validate_url()(Β§3.2: no new SSRF surface). Captures are strictly best-effort fire-and-forget; failures still record a row withfetch_status="failed"so coverage is auditable. - Wiring β
pipeline_v2._finalize_context()queues captures for NCBI top hit, UniProt entry, RCSB structure, InterPro entry, AlphaFold DB page, and Reactome pathway browser β derived from actual run results; de novo runs correctly record no annotation-source pages. - New service
app/services/final_synthesis.pyβ deterministic findings assembly from real step results, each tagged with the run's confidence tier (identified/homolog/de_novo) and source-tool page link, plus tier-appropriate caveats. An optional LLM pass polishes wording only (_mode: llm_polished|deterministic); it can never invent findings or block the pipeline. - Frontend β new
FinalReport.tsxpanel rendered above the AI interpretation card on the job page: headline, summary, per-finding rows with confidence badges and source-page links, caveats footer. - Tests:
test_page_capture_synthesis.py(9 cases β extraction, failure-honesty, rate limiting, tier threading, de novo caveats, deterministic fallback). Suite total: 84 tests green across the five touched files.
Open / Next
- Phase 3 depth: RNA-seq differential expression, larger file storage and compute
- Phase 4 (not started): lab workspaces, custom pipeline builder, institution licensing, public API access
When a sprint or phase ships, add one row here β do not restate the shipped-feature list in MASTER_PLAN.md.