Releases: AdamEddahmouni/nosograph
Release list
v0.2.1
NosoGraph v0.2.1 — Stabilization
Backward-compatible stabilization patch for the v0.2.0 Compare V2 milestone. No new features, no public API changes, and no changes to Compare V2 biomedical semantics, fingerprints, exports, or replay behavior.
Fixed
- Timezone-aware UTC timestamps in the asynchronous job queue, target hypothesis agent, and dossier web flow; machine-facing serialized timestamps carry an explicit UTC offset while filename-safe tokens retain their exact
YYYYMMDDTHHMMSSZshape. - Open Targets ingestion normalizes optional phase data at an explicit boundary (integer/numeric-string phases become integers; missing, null, boolean, malformed, or unsupported values become no phase instead of crashing import) and types snapshot identifiers as UUID values with deterministic import behavior preserved.
- Compare V2 validates persisted status at the storage boundary:
comparableandinsufficient_dataround-trip unchanged; unknown stored statuses are invalid persisted data following the existing persistence-error path rather than a raw validation error or silent coercion toinsufficient_data. - Disease discovery excludes the transient
zz_scaffold_testtest fixture so parallel test execution no longer leaks it into registry sampling.
Changed
- The informational mypy ratchet (
make typecheck) now covers the recently shipped stabilization surfaces (Open Targets import adapter,biomed/nosograph_compare/, dossier API/router/service); those files type-check cleanly. - Removed obsolete dossier-service type-suppression comments after confirming the optional WeasyPrint/ReportLab imports are typed correctly; PDF fallback behavior is unchanged.
- Technical-debt ledger refreshed with a prioritized active backlog separating current open work from the completed historical audit.
- Public package, runtime, citation, CodeMeta, roadmap, and documentation metadata advance to v0.2.1. v0.2.1 has no Zenodo archive record yet, so citation metadata uses the all-versions concept DOI; the v0.2.0 version DOI remains historical metadata for v0.2.0 only.
Known limitations
- Third-party warnings remain visible and documented: FastAPI/Starlette TestClient's future
httpx2migration and SHAP/Matplotlib color-map deprecations (dependency-family work deferred to the ledger). - The mypy ratchet across remaining legacy runtime boundaries (59 known errors in 45 previously checked files) continues as incremental debt work.
Verification
python -m ruff check src tests
python -m ruff format --check src tests
python scripts/lock_verify.py
python scripts/check_imports.py
python scripts/check_public_metadata.py
python scripts/check_public_fonts.py
python -m pytest tests/ -m "unit and not network and not slow" -q --tb=short -n auto --dist=loadscope --ignore=tests/test_evidence_workspace_browser.py
python -m pytest tests/ -m "integration and not slow" -q --tb=short
python -m mkdocs build --strict
python -m med_research.cli disease validate sle|ra|ibd|ms|ss|ssc|t1d|ad --strictNosoGraph v2.4.0 — Evidence Explorer (Legacy prototype)
NosoGraph v2.4.0 — Evidence Explorer
NosoGraph v2.4.0 makes evidence traceability a first-class research experience: open any claim, inspect supporting and contradictory evidence, read provenance, and reach original sources — without treating associations as causation.
Maturity: Public Alpha — research use only; not production clinical software.
What changed
Evidence Explorer
- First-class dashboard navigation (
#evidence-explorer) with deep links (?claim_id={uuid}). - Claim summary (subject · predicate · object), evidence groups, quality badges, provenance timeline, filters, related claims.
- Condition Explorer bridge: Open in Evidence Explorer on claim rows.
Evidence quality
- ADR-001 structured dimensions on each evidence row (
species_context,study_design,origin_class, etc.). - Missing metadata remains
unknown— absence is not low quality.
Provenance & sources
- Machine-readable provenance chains and per-evidence source metadata with validated HTTPS links when available.
Condition integration
- Discover claims via
GET /api/v1/conditions/{curie}/claimsand drill into Explorer from the dashboard.
Reliability
- Playwright fixes for modal overlays and structure API mocks.
- Hosted slow-test workflow green including browser subset (workspace 11/11, explorer 4/4 locally and on Actions).
API changes
GET /api/v1/claims/{id}/evidencereturns a paginatedPagedResponse(not a bare array).- New:
GET /api/v1/claims/{id}/related. - Claim detail adds summary counts and
qualityon evidence rows.
Validation
| Check | Result |
|---|---|
| lint | PASS — PR #22 run 32547396870 |
| security | PASS |
| test (3.11 / 3.12) | PASS |
| integration-tests | PASS |
| docs build | PASS |
| hosted slow-tests (browser) | PASS — run 32547140215 |
| Offline unit suite | 2391 collected |
| Workspace Playwright | 11/11 |
| Explorer Playwright | 4/4 |
Upgrade notes
If you called GET /api/v1/claims/{id}/evidence and parsed a JSON array directly, read response.items instead. Claim detail (GET /api/v1/claims/{id}) still embeds inline evidence arrays.
Known limitations
- Heuristic evidence-quality inference; sparse rows stay
unknown. - Compare V2, public demo, and contradiction engine remain future work (Wave 2+).
- No public hosted demo deployment.
NosoGraph v0.2.0 — Compare V2
NosoGraph v0.2.0 ships Compare V2 as a usable public-alpha research workflow. Researchers can select two through five imported diseases, choose one or more evidence dimensions, inspect shared and distinguishing entities, identify missing curation, follow supporting assertions into Evidence Explorer, and export the same deterministic result for review or automation.
Highlights
- Deterministic cohorts of two through five unique, resolved condition CURIEs.
- Phenotype, gene, pathway, treatment, and evidence-coverage dimensions in a fixed canonical order.
- Shared-by-all, shared-by-subset, disease-distinct,
KNOWN_ABSENT, andNOT_RECORDEDviews. - Structured missing-curation, asymmetric-curation, and conflicting-assertion warnings.
- Evidence Explorer links for the exact positive and negated claims behind each recorded state.
- Canonical JSON and timestamp-free Markdown exports with stable ordering and filenames.
- Accepted Compare V2 semantics ADR, result-schema versioning, golden fixtures, API tests, and Playwright coverage through both deterministic mocks and the live FastAPI seam.
API and compatibility
The canonical endpoint is POST /api/v1/nosograph/comparisons. It accepts condition_curies and optional dimensions, validates a cohort of two through five unique conditions, and returns HTTP 200 for both comparable and valid insufficient_data results. Persisted results can be retrieved or exported by run ID.
The deprecated POST /api/v1/nosograph/compare endpoint remains as a two-condition projection. Its legacy mechanism dimension maps to pathway. The separate scored comparison API is unchanged.
Compare semantics use algorithm nosograph-compare-v2 version 2.0.0. The persisted response contract is independently versioned as schema 2.0, preventing older incomplete payloads from being replayed for new requests after contract evolution.
Interpretation
KNOWN_ABSENT requires an explicit current negated assertion. NOT_RECORDED means neither a positive nor a negated assertion is present in the active imported snapshots. Empty data is not evidence of absence. When positive and negated assertions coexist, PRESENT takes precedence, both claim directions remain available for inspection, and a conflict warning is emitted.
NosoGraph Compare does not produce a universal similarity score. Coverage and overlap reflect imported snapshots and curation depth, not clinical truth.
Verification
The release passed the complete offline suite, Ruff lint and format checks, dependency locks, import boundaries, public metadata and fonts, strict documentation build, deterministic export fixtures, API tests, Playwright product flows, and fresh post-merge master checks across Python 3.11 and 3.12.
Maturity
Public Alpha — research use only. NosoGraph is not medical advice, a diagnostic system, or clinical decision support. No public hosted demo is deployed.
NosoGraph v0.1.0 — Public Alpha
NosoGraph v0.1.0 establishes the public-alpha baseline for Disease Intelligence. Connected.
Highlights: disease-general core, Evidence Explorer, NosoGraph Compare, provenance APIs, responsive public documentation, canonical metadata, and strengthened CI/community settings.
Creator: Adam Eddahmouni
Contributors: NosoGraph contributors
Research software only; not clinical decision support.
NosoGraph v2.3.0 — Disease-General Core & Computational Comparison (Legacy prototype)
NosoGraph v2.3.0 — Disease-General Core & Computational Comparison
NosoGraph v2.3.0 expands the public alpha into a more disease-general, validated, evidence-traceable computational research platform.
Maturity: Public Alpha — research use only; not production clinical software.
Highlights
Disease-general core
- Centralized disease identifier resolution and explicit disease selection where semantically required.
- Removal of inappropriate SLE/RA platform defaults in P1 scope.
- Multi-disease CLI/API behavior with preserved legacy compatibility.
Strict curated validation
- Batch validation:
nosograph disease validate-batch --tier L2 --strict - 88/88 current L2 modules pass strict validation (recomputed at release).
- CI reference-tier gate on pull requests; weekly full L2 run in slow-test workflow.
NosoGraph Compare (experimental initial slice)
- Multidimensional comparison across phenotype, gene, mechanism, treatment, and evidence_coverage.
- Explicit missingness semantics:
NOT_RECORDED≠KNOWN_ABSENT. - Engine + API (
POST /api/v1/nosograph/compare) + dashboard panel — not a finished standalone Compare product.
Evidence & provenance
- Claim, evidence, and provenance APIs connected with end-to-end traceability.
- Golden trace verified from condition → claim → evidence → provenance → source snapshot.
- Polished Evidence Explorer UX remains incomplete.
Biomedical source synchronization
- Nine-stage sync lifecycle with Open Targets vertical slice.
nosograph biomed sync open_targets --dry-runCLI.- Hosted dry-run workflow proven on GitHub Actions (publish skipped in dry-run mode).
CLI
- Canonical:
nosograph - Legacy alias:
med-research(same implementation) - Python import:
med_research - PyPI package:
med-research(unchanged)
Validation
| Check | Result |
|---|---|
| Offline unit suite | 2351 passed |
| L2 strict | 88/88 |
| Compare tests | 19/19 |
| Provenance API | 3/3 |
| Hosted CI (required) | lint, security, test 3.12, integration — PASS |
Current corpus
| Tier | Count | Notes |
|---|---|---|
| Registry modules | 10,407 | Mostly scaffolds |
| L2 strict-validated | 88 | Pipeline-ready |
| Reference | 6 | Deep reference set |
| CI-validated | 8 | Original eight diseases |
| L3 | 2 | In sampled status report |
Registry size ≠ curation depth. Scaffold modules are starting points, not validated clinical models.
Experimental / partial capabilities
- NosoGraph Compare (initial slice)
- Source sync (Open Targets only)
- Evidence/provenance APIs (backend complete; UX partial)
- Optional LLM enrichment
Not implemented
- Polished Evidence Explorer
- Full Compare standalone workflow
- Public hosted demo
- FHIR / OMOP / Phenopackets export
- PyPI package rename to
nosograph
Compatibility
v2.2.0tag and release unchanged.- Breaking package rename deferred to a future major release.
Research scope
Outputs are computational prioritization hypotheses for research use only — not medical advice.
NosoGraph v2.2.0 — Public Alpha (Legacy prototype)
NosoGraph v2.2.0 — Public Alpha
NosoGraph is an open-source, evidence-native computational map of human disease designed to connect diseases and conditions to phenotypes, mechanisms, genes, variants, pathways, cells, anatomy, biomarkers, treatments, drugs, trials, literature, datasets, and computational models.
This release marks the project's public transition to NosoGraph.
Compatibility: The Python package still installs as
med-researchwith import pathmed_researchand CLI commandmed-research.
Current maturity
Public Alpha
What works today
STABLE
- Unified CLI (
med-research) - Disease validation and coverage tooling
- JSON knowledge-graph schema
- Provenance fingerprints
- Optional API-key authentication
BETA
- FastAPI web API + vanilla JavaScript dashboard
- Celery-based background jobs
- Evidence Workspace
- Universal Biomedical Store
- 40+ analysis pipelines
- Live external connectors (Open Targets, GTEx, ChEMBL, UniProt, bioRxiv)
- DuckDB-accelerated biomedical graph analytics
Disease coverage
| Tier | Count | Meaning |
|---|---|---|
| Registry modules | 10,407 | MONDO-aligned slugs — mostly Open Targets auto-generated scaffolds |
| L2 pipeline-ready | ~45 | Pass strict validation (symptoms, queries, CAR-T, safety, etc.) |
| L3 expression-curated | 23 | L2 plus hand-curated GEO consensus gene lists |
| CI-validated (original eight) | 8 | sle, ra, ibd, ms, ss, ssc, t1d, ad |
Important: Registry size does not equal curation depth. The 10,000+ scaffold modules are starting points for contributor curation — not validated clinical models.
Experimental
- 10,000+ Open Targets scaffolds
- Optional LLM enrichment (requires
OPENAI_API_KEY) - DuckDB graph analytics at scale
Not yet implemented
- FHIR, OMOP, Phenopackets export
- Hosted SaaS, enterprise SSO, billing
- Clinical decision support or PHI/EHR ingestion
- PyPI publish workflow
Open-source license
Apache License 2.0 for original NosoGraph software. Third-party biomedical data retains its applicable upstream licensing and attribution requirements. See docs/legal/data-licenses.md.
Next priorities
- Expand CI strict validation into the L2 disease corpus
- Reduce disease-specific CLI assumptions
- Establish canonical
nosographCLI/package compatibility - Deepen evidence/provenance UX
- Begin the NosoGraph Compare vertical slice
- Strengthen curated disease depth
- Automate upstream biomedical-source synchronization
Important scope note
NosoGraph is a biomedical research platform. Computational outputs and research information are not a substitute for professional clinical judgment or medical diagnosis.
Full changelog: CHANGELOG.md