Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .github/workflows/e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -637,7 +637,7 @@ jobs:
grep -qx archaic-ancestry-1 "$list" && echo "data_archaic=true" >> "$GITHUB_OUTPUT"
grep -qx bash-step-08-hla "$list" && echo "data_hla=true" >> "$GITHUB_OUTPUT"
grep -qx prs-scores-and-run-options-1-strand-sex "$list" && echo "data_pgs=true" >> "$GITHUB_OUTPUT"
grep -qxE 'callability-1-catalog|cn-intervals-1-catalog' "$list" && echo "data_catalogs=true" >> "$GITHUB_OUTPUT"
grep -qxE 'callability-1-catalog|cn-intervals-1-catalog|followups-ci-3-sv-rule-regions' "$list" && echo "data_catalogs=true" >> "$GITHUB_OUTPUT"
echo "list=${list}" >> "$GITHUB_OUTPUT"

# Before the base outputs: the base leg pulled the same images.
Expand Down Expand Up @@ -693,10 +693,10 @@ jobs:
# of two IPD-IMGT/HLA releases and GENCODE's genes and exons
# (bash-step-08-hla, which then runs with the network blocked), and the
# four real PGS Catalog score files of prs-scores-and-run-options-1.
# A third keyed the same way: the pinned downloads of the two table
# A third keyed the same way: the pinned downloads of the three table
# builders (GENCODE's GTF from EBI among them) that
# callability-1-catalog and cn-intervals-1-catalog rebuild their
# tables from.
# callability-1-catalog, cn-intervals-1-catalog and
# followups-ci-3-sv-rule-regions rebuild their tables from.
- name: Data cache keys
id: data-keys
run: |
Expand Down
2 changes: 1 addition & 1 deletion docs/05-annotsv.md
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ Some class 4 and 5 calls are common or unreliable for a reason AnnotSV does not
- **The MHC** (`mhc`). An SV more than half inside the MHC, GRCh38 chr6:28,510,120-33,480,577. Its haplotypes differ by tens of kilobases between people, and gnomAD-SV marks every SV over half inside IGH or the MHC as low confidence (FILTER `IGH_MHC_OVERLAP`, Collins 2020, PMID 32461652). CYP21A2 lies in the MHC; short reads cannot call it here, and [step 35b](35-paralogs.md) reads it from PacBio HiFi reads.
- **A pseudogene named by a disease gene's symbol** (`gene_alias`). AnnotSV joins its gene annotations by symbol. A few pseudogenes carry a disease gene's symbol as an HGNC alias or previous symbol (for example RHEBP1, whose HGNC alias is RHEB). When `Gene_name` lists that symbol and the SV reaches no transcript of the disease gene in AnnotSV's genes file, the table names the pseudogene instead, and the call moves to class 3 when no other gene is left. This needs the genes file, like the exon-edge check.

The regions are in `assets/sv_rule_regions.tsv`, one row each (`chrom`, `start` 0-based, `end`, `rule`, `action`, `name`, `source`): 2,349 coding tandem repeats, the six IG and TR loci, the MHC and 10 pseudogenes. `scripts/ci/build-sv-rule-regions.sh` writes it from four pinned downloads, each checked against its sha256: TRExplorer v2.1's GRCh38 tandem repeat catalog (every repeat of 50 bp or more on a MANE Select coding exon of GENCODE 50), GENCODE 50's IG and TR genes, the MHC row of the GRCh38 assembly regions report, and HGNC's complete set of 2026-10-06 (each pseudogene whose alias or previous symbol is the approved symbol of a gene with a GenCC curation). The file is about 250 KB and ships with the repository, so the step downloads nothing. Step 05 mounts it into the AnnotSV image and the Nextflow `ANNOTSV` gets it as an input.
The regions are in `assets/sv_rule_regions.tsv`, one row each (`chrom`, `start` 0-based, `end`, `rule`, `action`, `name`, `source`): 2,409 coding tandem repeats, the six IG and TR loci, the MHC and 10 pseudogenes. `scripts/ci/build-sv-rule-regions.sh` writes it from four pinned downloads, each checked against its sha256: TRExplorer v2.1's GRCh38 tandem repeat catalog (the file upstream rebuilt in place on 2026-10-30, sha256 `df9c23c4…`; every repeat of 50 bp or more on a MANE Select coding exon of GENCODE 50), GENCODE 50's IG and TR genes, the MHC row of the GRCh38 assembly regions report, and HGNC's complete set of 2026-10-06 (each pseudogene whose alias or previous symbol is the approved symbol of a gene with a GenCC curation). The file is about 250 KB and ships with the repository, so the step downloads nothing. The e2e case `followups-ci-3-sv-rule-regions` rebuilds it with `scripts/ci/build-sv-rule-regions.sh --check`, which fails when one byte differs, so a hand edit or a drifted pin cannot ship. Step 05 mounts it into the AnnotSV image and the Nextflow `ANNOTSV` gets it as an input.

How many callers saw each SV comes from step 22's consensus (`sv_merged/<sample>_sv_consensus.vcf.gz`), which runs after this step, and beside `ANNOTSV` in Nextflow. So the reports (`bin/collect_summary.py`) join it when they are written: an SV matches the consensus record of the same type whose two breakpoints lie within 1,000 bp of its own, step 22's distance, and its support is that record's `SUPP` with the callers of `SUPP_VEC`. An SV in no consensus record was made by one caller and shows as "single caller". Without the consensus file the support is "not known", never 1. `annotsv_postfilter.py --consensus` adds the same `Support` and `Support_callers` columns to the table.

Expand Down
2 changes: 1 addition & 1 deletion docs/53-locityper.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ Pinned in `versions.env`; [Image versions](versions.md) lists the current tags.

The panel is the HPRC release 2 Minigraph-Cactus pangenome against GRCh38, as a VCF (`LOCITYPER_PANEL_URL`, `LOCITYPER_PANEL_VERSION` in `versions.env`). It holds the two haplotypes of each of its 232 samples. The full VCF is 6.7 GB; `setup.sh` reads only the loci and 250 kb either side, over https, through the VCF's `.tbi`, whose sha256 `LOCITYPER_PANEL_TBI_SHA256` pins. Nothing of it is committed. The pin covers the index, not the records: they are trusted as the HPRC's S3 bucket serves them over https, as for the other data `setup.sh` reads in place. A changed file with the same index would build without an error.

Then it follows Locityper's documentation (https://locityper.vercel.app, "Preparing targets"): jellyfish counts the 25-mers of `REF_FASTA` (its hash table sized to the reference's length from the `.fai`, at least 10 million entries, so a small reference does not reserve the memory all of GRCh38 needs), `locityper target` cuts the panel's haplotypes at each locus, and `locityper augment` aligns them to each other, which the weighted distance needs. A new reference, image, panel or locus list builds again. `LOCITYPER_DATA` puts the database elsewhere and `LOCITYPER_LOCI` replaces the locus list.
Then it follows Locityper's documentation (https://locityper.vercel.app, "Preparing targets"): jellyfish counts the 25-mers of `REF_FASTA` (its hash table sized to the reference's length from the `.fai`, at least 10 million entries, so a small reference does not reserve the memory all of GRCh38 needs: on the 235 Mb reference of the e2e case `ci-e2e-2-locityper` the count took 36 minutes with a table fixed at 3G entries and takes 36 seconds now, and the case went from 2,289 to 142 seconds), `locityper target` cuts the panel's haplotypes at each locus, and `locityper augment` aligns them to each other, which the weighted distance needs. A new reference, image, panel or locus list builds again. `LOCITYPER_DATA` puts the database elsewhere and `LOCITYPER_LOCI` replaces the locus list.

## The loci

Expand Down
Loading
Loading