`make published-case` reads a GA4GH phenopacket from Monarch's Phenopacket Store and takes two things from it verbatim: the HPO terms the authors reported and the variant they called causal. The default is the TGFBR2 proband from Loeys et al., Nat Genet 2005 (doi:10.1038/ng1511), the paper that first defined Loeys-Dietz syndrome -- 30 reported terms and NM_003242.6:c.1069G>T p.(Gly357Trp). The rest of that patient's genome is not public, so background variants come from GIAB HG002 around the locus. They are drawn from coding exons where possible, via Ensembl's REST API: of ~4,000 HG002 variants in the window only 9 are coding, so a random sample is entirely intronic, the consequence filter discards all of it, and the causal variant is left as the only candidate -- a funnel that proves nothing. The real run ranks TGFBR2 first at 0.897 against an OSBPL10 missense at 0.547. Both are rare missense variants the model scores identically (0.887); only the phenotype separates them, which is the argument for phenotype-driven triage in one table. Documented with three caveats rather than left implicit: the phenotype match is partly circular because HPO's gene annotations are themselves curated from published cases; rarity contributes nothing without the VEP cache (--af_gnomade is rejected with --database, and plain --af returns nothing even for rs429358 at ~15% global frequency); and one healthy genome is not a diagnostic exome.
46 lines
2.0 KiB
Markdown
46 lines
2.0 KiB
Markdown
# Test data
|
|
|
|
`make data` fetches the demo slice, `make demo-case` builds the simulated proband, and
|
|
`make published-case` builds a case from a published patient (their reported phenotype and
|
|
causal variant, read from a GA4GH phenopacket, inside a GIAB background genome). Provenance,
|
|
licences, citations and the evaluation plan live in [../docs/data.md](../docs/data.md).
|
|
|
|
No patient data. Use public sources only:
|
|
|
|
- ClinVar VCF (GRCh38): https://ftp.ncbi.nlm.nih.gov/pub/clinvar/vcf_GRCh38/
|
|
- gnomAD exomes subset for allele frequencies
|
|
- A small HG002 (GIAB) chr22 slice for a realistic germline sample
|
|
|
|
```bash
|
|
# Example: 2,000 ClinVar variants on chr22 as a smoke-test VCF
|
|
wget -O clinvar.vcf.gz https://ftp.ncbi.nlm.nih.gov/pub/clinvar/vcf_GRCh38/clinvar.vcf.gz
|
|
tabix -p vcf clinvar.vcf.gz
|
|
bcftools view -r 22 clinvar.vcf.gz | bcftools view -H | head -2000 > body.vcf
|
|
(bcftools view -h clinvar.vcf.gz; cat body.vcf) | bgzip > example.vcf.gz
|
|
tabix -p vcf example.vcf.gz
|
|
```
|
|
|
|
Samples added in the UI must point at a `gs://bucket/object` or at a file under `/data`
|
|
(`LOCAL_DATA_ROOT`), ending in `.vcf`, `.vcf.gz`, `.vcf.bgz` or `.bcf`.
|
|
|
|
## VEP cache and plugins
|
|
|
|
The pipeline runs VEP offline. Install the cache once (about 25 GB for GRCh38):
|
|
|
|
```bash
|
|
docker run --rm -v $PWD/pipeline/cache/vep:/cache ensemblorg/ensembl-vep:release_113.0 \
|
|
INSTALL.pl -a cf -s homo_sapiens -y GRCh38 -c /cache
|
|
```
|
|
|
|
CADD and AlphaMissense are optional; the model treats their scores as missing without them. To
|
|
enable them, put the plugin modules and data files in one directory and pass `--vep_plugin_data`:
|
|
|
|
```bash
|
|
docker run --rm -v $PWD/pipeline/cache/plugins:/plugins ensemblorg/ensembl-vep:release_113.0 \
|
|
INSTALL.pl -a p -g CADD,AlphaMissense -r /plugins
|
|
# then add whole_genome_SNVs.tsv.gz, gnomad.genomes.r4.0.indel.tsv.gz (CADD) and
|
|
# AlphaMissense_hg38.tsv.gz, each with its .tbi index, to pipeline/cache/plugins
|
|
```
|
|
|
|
`pipeline/tests/data/tiny.vcf` is a synthetic three-record fixture used by CI's stub run.
|