Status: Phase 1 scaffold complete. The repository contains a working project skeleton (FastAPI backend, Vue 3 + TypeScript frontend, Docker Compose, test foundation) but no pipeline logic yet. Analysis modules, data processing, and visualization pages described below are planned — not implemented.
An open-source, Dockerized oncology analysis pipeline and portal that accepts raw or processed patient datasets, produces versioned analysis artifacts, and serves osteosarc-style visualization pages from those artifacts.
Research grade output only. Not for clinical use.
The documented target is no longer just a two-track ranking app. The repo is planned as a case-based analysis platform with:
- Dockerized analysis modules
- case and run management
- artifact registration and provenance
- derived visualization datasets
- a multi-page portal for longitudinal, omics, structure, genome-browser, and imaging outputs
The design is anchored to the output classes documented in docs/osteosarc_webpage_analysis.md. The goal is functional equivalence to those output surfaces using open-source, containerized tooling, not a pixel-identical clone of osteosarc.com.
- Case-based data organization
- Checkpointed analysis runs with resumable steps
- Versioned artifacts with provenance
- Derived frontend datasets for page rendering
- Downloadable catalog of generated outputs
- Clinical timeline and longitudinal lab module
- Neoantigen and vaccine overlap module
- Drug-target ranking module
- Bulk RNA expression module
- scRNA module
- GSEA module
- CNV and genome track module
- BAM browser module
- Imaging and spatial module
- Overview / case home
- Timeline
- Bulk RNA
- scRNA
- GSEA
- CNV
- BAM browser
- Vaccine overlap
- Imaging
- Spatial
- Data catalog
- Track 1 neoantigen ranking
- Track 2 drug-target ranking
- FASTQ / BAM / CRAM for genomics and transcriptomics
- clinical event tables
- lab and MRD time-series
- flow cytometry series
- slide images and spatial outputs
- VCF
- TPM or count matrices
- AnnData / Zarr
- Parquet result tables
- SEG / BigWig
- BAM / BAI
- Xenium-compatible bundles
- JSON exports and static manifests
Processed import is the preferred first delivery path for the heaviest modules.
Browser (Vue 3 + TypeScript)
|
v
FastAPI API container
|
+---> Case / Run / Artifact APIs
+---> Visualization dataset APIs
+---> WebSocket run events
|
+---> Worker containers
| +-- worker-core
| +-- worker-pvactools
| +-- worker-rnaseq
| +-- worker-scrna
| +-- worker-r
| +-- worker-cnv
| +-- worker-imaging
|
+---> SQLite metadata DB
+---> Artifact volume on disk
+---> Reference-data volume on disk
Track 1 and Track 2 remain in scope, but they are now modules within a broader analysis and visualization system.
- JSON for longitudinal and page-ready datasets
- Parquet for tabular analytical outputs
- Zarr for large matrix-style expression datasets
- BAM / BAI or CRAM / CRAI for genome browsing
- SEG and BigWig for copy-number and track visualization
- tiled image bundles for pathology viewing
- manifest files for CNV, BAM, imaging, and spatial pages
| Method | Endpoint | Description |
|---|---|---|
| POST | /cases |
Create a case |
| GET | /cases/{case_id} |
Get case summary and module availability |
| POST | /cases/{case_id}/inputs |
Upload or register inputs |
| POST | /cases/{case_id}/runs |
Start an analysis run |
| GET | /cases/{case_id}/runs/{run_id} |
Get run summary |
| GET | /cases/{case_id}/runs/{run_id}/steps |
Step-by-step execution state |
| GET | /cases/{case_id}/artifacts |
List artifacts for a case |
| GET | /artifacts/{artifact_id}/download |
Download one artifact |
| GET | /visualizations/{case_id}/{page} |
Return page-ready dataset payload |
| GET | /tracks/{case_id}/igv-manifest |
Genome-browser manifest for CNV/BAM pages |
| GET | /catalog/{case_id} |
Data catalog view model |
| GET | /health |
Service and dependency health |
| WS | /runs/{run_id}/events |
Real-time run events |
/--- Case list/cases/:caseId--- Case overview/cases/:caseId/timeline--- Clinical timeline/cases/:caseId/track1--- Neoantigen pipeline/cases/:caseId/track2--- Drug target pipeline/cases/:caseId/bulk-rna--- Bulk RNA expression/cases/:caseId/scrna--- Single-cell RNA/cases/:caseId/gsea--- Pathway enrichment/cases/:caseId/cnv--- Copy number variation/cases/:caseId/bam--- BAM browser/cases/:caseId/vaccines--- Vaccine overlap/cases/:caseId/imaging--- Pathology imaging/cases/:caseId/spatial--- Spatial transcriptomics/cases/:caseId/catalog--- Data catalog
CaseAnalysisRunStepRunArtifactVisualizationDatasetExternalCall
data/
cases/{case_id}/inputs/
cases/{case_id}/runs/{run_id}/artifacts/
cases/{case_id}/runs/{run_id}/derived/frontend/
reference/
SQLite is planned for metadata and provenance. Large files remain on disk as registered artifacts.
- Architecture Assessment - Canonical architecture direction
- Architecture Diagrams - Runtime, workflow, and page-dependency diagrams
- Implementation Task List - Parallel workstream plan and milestone checklist
- Workflow Manager Decision - Decision record selecting Nextflow
- Data Contracts - Planning baseline for entities, manifests, artifacts, and visualization datasets
- Dependency Setup Guide - Planned container and dependency design
- Task List - Granular implementation checklist
- Osteosarc Webpage Analysis - Output/visualization anchor document
- Project Plan v1 - Historical baseline
This project is licensed under the GNU Affero General Public License v3.0. See LICENSE for details.
Third-party tools may impose separate license terms. Users are responsible for complying with those terms independently.
This repository is intended for research, engineering, and reproducibility work only. It is not a medical device, not a clinical decision support system, and not a source of treatment recommendations.