Skip to content

strvctvre #1032

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 7 commits into
base: main
Choose a base branch
from
Draft
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
12 changes: 12 additions & 0 deletions .cloudbuild/strvctvre-docker.cloudbuild.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Run locally with:
#
# gcloud builds submit --quiet --config .cloudbuild/strvctvre-docker.cloudbuild.yaml v03_pipeline/deploy
steps:
- name: 'gcr.io/kaniko-project/executor:v1.3.0'
args:
- --destination=gcr.io/seqr-project/strvctvre-docker-image
- --dockerfile=Dockerfile.strvctvre
- --cache=true
- --cache-ttl=168h

timeout: 1800s
32 changes: 32 additions & 0 deletions v03_pipeline/bin/download_strvctvre_reference_data.bash
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#!/usr/bin/env bash

set -eux

REFERENCE_GENOME=$1
STRVCTVRE_REFERENCE_DATASETS_DIR=${STRVCTVRE_REFERENCE_DATASETS_DIR:-/var/seqr/strvctvre-reference-data}

case $REFERENCE_GENOME in
GRCh38)
STRVCTVRE_REFERENCE_DATA_FILES=(
'gs://seqr-reference-data/strvctvre_data/hg38.phyloP100way.bw'
)
;;
*)
echo "Invalid reference genome $REFERENCE_GENOME, should be GRCh38"
exit 1
esac

if [ -f "$STRVCTVRE_REFERENCE_DATASETS_DIR"/"$REFERENCE_GENOME"/_SUCCESS ]; then
echo "Skipping download because already successful"
exit 0;
fi

mkdir -p "$STRVCTVRE_REFERENCE_DATASETS_DIR"/"$REFERENCE_GENOME";
rm -rf "${STRVCTVRE_REFERENCE_DATASETS_DIR:?}"/"${REFERENCE_GENOME:?}"/*;

for reference_data_file in "${STRVCTVRE_REFERENCE_DATA_FILES[@]}"; do
echo "Downloading" "$reference_data_file";
gsutil cp "$reference_data_file" "$STRVCTVRE_REFERENCE_DATASETS_DIR"/"$REFERENCE_GENOME"/ &
done;
wait
touch "$STRVCTVRE_REFERENCE_DATASETS_DIR"/"$REFERENCE_GENOME"/_SUCCESS
7 changes: 7 additions & 0 deletions v03_pipeline/bin/strvctvre
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#!/bin/bash

set -eux

STRVCTVRE_REFERENCE_DATASETS_DIR=${STRVCTVRE_REFERENCE_DATASETS_DIR:-/var/seqr/strvctvre-reference-data}
STRVCTVRE_DOCKER_IMAGE="gcr.io/seqr-project/strvctvre-docker-image"
docker run --platform linux/amd64 -i -v $STRVCTVRE_DOCKER_IMAGE:$STRVCTVRE_DOCKER_IMAGE:ro $STRVCTVRE_DOCKER_IMAGE -p $WORKDIR "$@"
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

docker run -it --platform linux/amd64 -v /dev/shm:/dev/shm:rw gcr.io/seqr-project/strvctvre-docker-image -p /dev/shm/hg38.phyloP100way.bw -i /dev/shm/phase5.annotated.vcf.gz -o /dev/shm/out.vcf

this worked! Verified the StrVCTVRE annotation is present in the VCF in the right format.

18 changes: 18 additions & 0 deletions v03_pipeline/deploy/Dockerfile.strvctvre
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
FROM python:3.11-bullseye as build
LABEL maintainer="Broad TGG"

# Sourced from https://stackoverflow.com/a/58269633
ENV PATH="/root/miniconda3/bin:${PATH}"
RUN apt-get update && \
apt-get install -y wget && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
RUN wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh && \
mkdir -p /root/.conda && \
bash miniconda.sh -b -p /root/miniconda3 && \
rm -f miniconda.sh

RUN git clone --depth 1 https://github.com/andrewSharo/StrVCTVRE
WORKDIR /StrVCTVRE
RUN conda env create -f environment_py3.yml
ENTRYPOINT ["conda", "run", "-n", "StrVCTVRE_py_3", "python3", "StrVCTVRE.py"]
51 changes: 51 additions & 0 deletions v03_pipeline/lib/misc/sv.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
import hail as hl

from v03_pipeline.lib.annotations import sv
from v03_pipeline.lib.misc.pedigree import Family
from v03_pipeline.lib.model import ReferenceGenome, Sex


def overwrite_male_non_par_calls(
mt: hl.MatrixTable,
families: set[Family],
) -> hl.MatrixTable:
male_sample_ids = {
s.sample_id for f in families for s in f.samples.values() if s.sex == Sex.MALE
}
male_sample_ids = (
hl.set(male_sample_ids) if male_sample_ids else hl.empty_set(hl.str)
)
par_intervals = hl.array(
[
i
for i in hl.get_reference(ReferenceGenome.GRCh38).par
if i.start.contig == ReferenceGenome.GRCh38.x_contig
],
)
non_par_interval = hl.interval(
par_intervals[0].end,
par_intervals[1].start,
)
# NB: making use of existing formatting_annotation_fns.
# We choose to annotate & drop here as the sample level
# fields are dropped by the time we format variants.
mt = mt.annotate_rows(
start_locus=sv.start_locus(mt),
end_locus=sv.end_locus(mt),
)
mt = mt.annotate_entries(
GT=hl.if_else(
(
male_sample_ids.contains(mt.s)
& non_par_interval.overlaps(
hl.interval(
mt.start_locus,
mt.end_locus,
),
)
),
hl.Call([1, 1], phased=False),
mt.GT,
),
)
return mt.drop('start_locus', 'end_locus')
61 changes: 61 additions & 0 deletions v03_pipeline/lib/misc/sv_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
import unittest

import hail as hl

from v03_pipeline.lib.misc.io import import_callset, select_relevant_fields
from v03_pipeline.lib.misc.pedigree import Family, Sample
from v03_pipeline.lib.misc.sample_ids import subset_samples
from v03_pipeline.lib.misc.sv import overwrite_male_non_par_calls
from v03_pipeline.lib.model import DatasetType, ReferenceGenome, Sex

TEST_SV_VCF = 'v03_pipeline/var/test/callsets/sv_1.vcf'


class SVTest(unittest.TestCase):
def test_overwrite_male_non_par_calls(self) -> None:
mt = import_callset(TEST_SV_VCF, ReferenceGenome.GRCh38, DatasetType.SV)
mt = select_relevant_fields(
mt,
DatasetType.SV,
)
mt = subset_samples(
mt,
hl.Table.parallelize(
[{'s': sample_id} for sample_id in ['RGP_164_1', 'RGP_164_2']],
hl.tstruct(s=hl.dtype('str')),
key='s',
),
)
mt = overwrite_male_non_par_calls(
mt,
{
Family(
family_guid='family_1',
samples={
'RGP_164_1': Sample(sample_id='RGP_164_1', sex=Sex.FEMALE),
'RGP_164_2': Sample(sample_id='RGP_164_2', sex=Sex.MALE),
},
),
},
)
mt = mt.filter_rows(mt.locus.contig == 'chrX')
self.assertEqual(
[
hl.Locus(contig='chrX', position=3, reference_genome='GRCh38'),
hl.Locus(contig='chrX', position=2781700, reference_genome='GRCh38'),
],
mt.locus.collect(),
)
self.assertEqual(
[
hl.Call(alleles=[0, 0], phased=False),
# END of this variant < start of the non-par region.
hl.Call(alleles=[0, 1], phased=False),
hl.Call(alleles=[0, 0], phased=False),
hl.Call(alleles=[1, 1], phased=False),
],
mt.GT.collect(),
)
self.assertFalse(
hasattr(mt, 'start_locus'),
)
4 changes: 4 additions & 0 deletions v03_pipeline/lib/model/dataset_type.py
Original file line number Diff line number Diff line change
Expand Up @@ -387,3 +387,7 @@ def export_vcf_annotation_fns(self) -> list[Callable[..., hl.Expression]]:
sv.info,
],
}[self]

@property
def overwrite_male_non_par_calls(self) -> None:
return self == DatasetType.SV
4 changes: 4 additions & 0 deletions v03_pipeline/lib/model/definitions.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,10 @@ def mito_contig(self) -> str:
ReferenceGenome.GRCh38: 'chrM',
}[self]

@property
def x_contig(self) -> str:
return 'X' if self == ReferenceGenome.GRCh37 else 'chrX'

def contig_recoding(self, include_mt: bool = False) -> dict[str, str]:
recode = {
ReferenceGenome.GRCh37: {
Expand Down
5 changes: 5 additions & 0 deletions v03_pipeline/lib/model/environment.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@
'REFERENCE_DATASETS_DIR',
'/var/seqr/seqr-reference-data',
)
STRVCTVRE_REFERENCE_DATASETS_DIR = os.environ.get(
'STRVCTVRE_REFERENCE_DATASETS_DIR',
'/var/seqr/strvctvre-reference-data',
)
VEP_REFERENCE_DATASETS_DIR = os.environ.get(
'VEP_REFERENCE_DATASETS_DIR',
'/var/seqr/vep-reference-data',
Expand Down Expand Up @@ -65,4 +69,5 @@ class Env:
REFERENCE_DATASETS_DIR: str = REFERENCE_DATASETS_DIR
SEQR_APP_HAIL_SEARCH_DATA_DIR: str | None = SEQR_APP_HAIL_SEARCH_DATA_DIR
SEQR_APP_REFERENCE_DATASETS_DIR: str | None = SEQR_APP_REFERENCE_DATASETS_DIR
STRVCTVRE_REFERENCE_DATASETS_DIR: str = STRVCTVRE_REFERENCE_DATASETS_DIR
VEP_REFERENCE_DATASETS_DIR: str = VEP_REFERENCE_DATASETS_DIR
4 changes: 4 additions & 0 deletions v03_pipeline/lib/model/feature_flag.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@
INCLUDE_PIPELINE_VERSION_IN_PREFIX = (
os.environ.get('INCLUDE_PIPELINE_VERSION_IN_PREFIX') == '1'
)
OVERWRITE_SV_MALE_NON_PAR_CALLS = (
os.environ.get('OVERWRITE_SV_MALE_NON_PAR_CALLS') == '1'
)
RUN_PIPELINE_ON_DATAPROC = os.environ.get('RUN_PIPELINE_ON_DATAPROC') == '1'
SHOULD_TRIGGER_HAIL_BACKEND_RELOAD = (
os.environ.get('SHOULD_TRIGGER_HAIL_BACKEND_RELOAD') == '1'
Expand All @@ -24,5 +27,6 @@ class FeatureFlag:
EXPECT_TDR_METRICS: bool = EXPECT_TDR_METRICS
EXPECT_WES_FILTERS: bool = EXPECT_WES_FILTERS
INCLUDE_PIPELINE_VERSION_IN_PREFIX: bool = INCLUDE_PIPELINE_VERSION_IN_PREFIX
OVERWRITE_SV_MALE_NON_PAR_CALLS: bool = OVERWRITE_SV_MALE_NON_PAR_CALLS
RUN_PIPELINE_ON_DATAPROC: bool = RUN_PIPELINE_ON_DATAPROC
SHOULD_TRIGGER_HAIL_BACKEND_RELOAD: bool = SHOULD_TRIGGER_HAIL_BACKEND_RELOAD
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
)
from v03_pipeline.lib.misc.pedigree import parse_pedigree_ht_to_families
from v03_pipeline.lib.misc.sample_ids import remap_sample_ids, subset_samples
from v03_pipeline.lib.misc.sv import overwrite_male_non_par_calls
from v03_pipeline.lib.misc.validation import SeqrValidationError
from v03_pipeline.lib.model.feature_flag import FeatureFlag
from v03_pipeline.lib.paths import (
Expand Down Expand Up @@ -174,6 +175,14 @@ def create_table(self) -> hl.MatrixTable:
for field in mt.row_value:
if field not in self.dataset_type.row_fields:
mt = mt.drop(field)
if (
FeatureFlag.OVERWRITE_SV_MALE_NON_PAR_CALLS
and self.dataset_type.overwrite_male_non_par_calls
):
overwrite_male_non_par_calls(
mt,
loadable_families,
)
return mt.select_globals(
remap_pedigree_hash=remap_pedigree_hash(
self.project_remap_paths[self.project_i],
Expand Down
4 changes: 3 additions & 1 deletion v03_pipeline/var/test/callsets/sv_1.vcf
Original file line number Diff line number Diff line change
Expand Up @@ -85,4 +85,6 @@ chr1 16088760 CPX_chr1_41 N <CPX> 684 PASS ALGORITHMS=manta;CHR2=chr1;CPX_INTERV
chr1 17465707 INS_chr1_268 N <INS:ME:SVA> 263 HIGH_SR_BACKGROUND ALGORITHMS=melt;CHR2=chr1;END=17465723;EVIDENCE=SR;PREDICTED_INTERGENIC;PREDICTED_NEAREST_TSS=RCC2;PREDICTED_NONCODING_BREAKPOINT=Tommerup_TADanno;SVLEN=955;SVTYPE=INS;AN=8;AC=1;AF=0.004466;N_BI_GENOS=2911;N_HOMREF=2885;N_HET=26;N_HOMALT=0;FREQ_HOMREF=0.991068;FREQ_HET=0.00893164;FREQ_HOMALT=0;MALE_AN=2894;MALE_AC=14;MALE_AF=0.004838;MALE_N_BI_GENOS=1447;MALE_N_HOMREF=1433;MALE_N_HET=14;MALE_N_HOMALT=0;MALE_FREQ_HOMREF=0.990325;MALE_FREQ_HET=0.00967519;MALE_FREQ_HOMALT=0;FEMALE_AN=2906;FEMALE_AC=11;FEMALE_AF=0.003785;FEMALE_N_BI_GENOS=1453;FEMALE_N_HOMREF=1442;FEMALE_N_HET=11;FEMALE_N_HOMALT=0;FEMALE_FREQ_HOMREF=0.992429;FEMALE_FREQ_HET=0.00757054;FEMALE_FREQ_HOMALT=0 GT:EV:GQ:PE_GQ:PE_GT:SR_GQ:SR_GT 0/0:PE,SR:99:99:0:99:0 0/0:PE,SR:99:99:0:99:0 0/1:SR:0:99:0:0:1 0/0:PE,SR:99:99:0:2:0 0/0:PE,SR:99:99:0:2:0
chr1 21427498 CPX_chr1_54 N <CPX> 733 PASS ALGORITHMS=manta;CHR2=chr1;CPX_INTERVALS=DUP_chr1:21427498-21427959,INV_chr1:21427498-21480073,DEL_chr1:21480073-21480419;CPX_TYPE=dupINVdel;END=21480419;EVIDENCE=PE;PREDICTED_LOF=NBPF3;PREDICTED_NONCODING_BREAKPOINT=DNase,Tommerup_TADanno;PREDICTED_NONCODING_SPAN=DNase;SVLEN=52921;SVTYPE=CPX;AN=8;AC=4;AF=0.499656;N_BI_GENOS=2911;N_HOMREF=51;N_HET=2811;N_HOMALT=49;FREQ_HOMREF=0.0175198;FREQ_HET=0.965648;FREQ_HOMALT=0.0168327;MALE_AN=2894;MALE_AC=1453;MALE_AF=0.502073;MALE_N_BI_GENOS=1447;MALE_N_HOMREF=19;MALE_N_HET=1403;MALE_N_HOMALT=25;MALE_FREQ_HOMREF=0.0131306;MALE_FREQ_HET=0.969592;MALE_FREQ_HOMALT=0.0172771;FEMALE_AN=2906;FEMALE_AC=1445;FEMALE_AF=0.497247;FEMALE_N_BI_GENOS=1453;FEMALE_N_HOMREF=32;FEMALE_N_HET=1397;FEMALE_N_HOMALT=24;FEMALE_FREQ_HOMREF=0.0220234;FEMALE_FREQ_HET=0.961459;FEMALE_FREQ_HOMALT=0.0165175 GT:EV:GQ:PE_GQ:PE_GT:SR_GQ:SR_GT 0/1:PE:93:93:1:99:0 0/1:PE:79:79:1:99:0 0/1:PE:33:33:1:6:0 0/1:PE,SR:39:39:1:99:0 0/1:PE,SR:39:39:1:99:0
chr1 48963084 INS_chr1_688 N <INS:ME:LINE1> 526 HIGH_SR_BACKGROUND ALGORITHMS=melt;CHR2=chr1;END=48963135;EVIDENCE=SR;PREDICTED_INTRONIC=AGBL4;PREDICTED_NONCODING_BREAKPOINT=Tommerup_TADanno;SVLEN=5520;SVTYPE=INS;AN=8;AC=1;AF=0.06338;N_BI_GENOS=2911;N_HOMREF=2544;N_HET=365;N_HOMALT=2;FREQ_HOMREF=0.873926;FREQ_HET=0.125386;FREQ_HOMALT=0.000687049;MALE_AN=2894;MALE_AC=177;MALE_AF=0.061161;MALE_N_BI_GENOS=1447;MALE_N_HOMREF=1271;MALE_N_HET=175;MALE_N_HOMALT=1;MALE_FREQ_HOMREF=0.878369;MALE_FREQ_HET=0.12094;MALE_FREQ_HOMALT=0.000691085;FEMALE_AN=2906;FEMALE_AC=192;FEMALE_AF=0.06607;FEMALE_N_BI_GENOS=1453;FEMALE_N_HOMREF=1262;FEMALE_N_HET=190;FEMALE_N_HOMALT=1;FEMALE_FREQ_HOMREF=0.868548;FEMALE_FREQ_HET=0.130764;FEMALE_FREQ_HOMALT=0.000688231 GT:EV:GQ:PE_GQ:PE_GT:SR_GQ:SR_GT 0/0:PE,SR:99:99:0:99:0 0/0:PE,SR:99:99:0:99:0 0/0:PE,SR:99:99:0:99:0 0/1:SR:0:99:0:0:1 0/1:SR:0:99:0:0:1
chr1 180540234 CPX_chr1_251 N <CPX> 999 UNRESOLVED ALGORITHMS=manta;CHR2=chr1;CPX_INTERVALS=DEL_chr1:180540234-181074767,INV_chr1:181074767-181074938;CPX_TYPE=delINV;END=181074952;EVIDENCE=PE,SR;PREDICTED_LOF=KIAA1614,MR1,STX6,XPR1;PREDICTED_NONCODING_BREAKPOINT=Tommerup_TADanno;PREDICTED_NONCODING_SPAN=DNase,Enhancer;SVLEN=534718;SVTYPE=CPX;UNRESOLVED_TYPE=POSTHOC_RD_GT_REJECTION;AN=8;AC=3;AF=0.251804;N_BI_GENOS=2911;N_HOMREF=1559;N_HET=1238;N_HOMALT=114;FREQ_HOMREF=0.535555;FREQ_HET=0.425283;FREQ_HOMALT=0.0391618;MALE_AN=2894;MALE_AC=724;MALE_AF=0.250173;MALE_N_BI_GENOS=1447;MALE_N_HOMREF=784;MALE_N_HET=602;MALE_N_HOMALT=61;MALE_FREQ_HOMREF=0.541811;MALE_FREQ_HET=0.416033;MALE_FREQ_HOMALT=0.0421562;FEMALE_AN=2906;FEMALE_AC=736;FEMALE_AF=0.253269;FEMALE_N_BI_GENOS=1453;FEMALE_N_HOMREF=770;FEMALE_N_HET=630;FEMALE_N_HOMALT=53;FEMALE_FREQ_HOMREF=0.529938;FEMALE_FREQ_HET=0.433586;FEMALE_FREQ_HOMALT=0.0364763 GT:EV:GQ:PE_GQ:PE_GT:SR_GQ:SR_GT 0/0:PE,SR:99:99:0:99:0 0/1:PE,SR:41:26:1:41:1 1/1:PE,SR:89:33:1:89:2 0/0:PE,SR:99:99:0:99:0 0/0:PE,SR:99:99:0:99:0
chr1 180540234 CPX_chr1_251 N <CPX> 999 UNRESOLVED ALGORITHMS=manta;CHR2=chr1;CPX_INTERVALS=DEL_chr1:180540234-181074767,INV_chr1:181074767-181074938;CPX_TYPE=delINV;END=181074952;EVIDENCE=PE,SR;PREDICTED_LOF=KIAA1614,MR1,STX6,XPR1;PREDICTED_NONCODING_BREAKPOINT=Tommerup_TADanno;PREDICTED_NONCODING_SPAN=DNase,Enhancer;SVLEN=534718;SVTYPE=CPX;UNRESOLVED_TYPE=POSTHOC_RD_GT_REJECTION;AN=8;AC=3;AF=0.251804;N_BI_GENOS=2911;N_HOMREF=1559;N_HET=1238;N_HOMALT=114;FREQ_HOMREF=0.535555;FREQ_HET=0.425283;FREQ_HOMALT=0.0391618;MALE_AN=2894;MALE_AC=724;MALE_AF=0.250173;MALE_N_BI_GENOS=1447;MALE_N_HOMREF=784;MALE_N_HET=602;MALE_N_HOMALT=61;MALE_FREQ_HOMREF=0.541811;MALE_FREQ_HET=0.416033;MALE_FREQ_HOMALT=0.0421562;FEMALE_AN=2906;FEMALE_AC=736;FEMALE_AF=0.253269;FEMALE_N_BI_GENOS=1453;FEMALE_N_HOMREF=770;FEMALE_N_HET=630;FEMALE_N_HOMALT=53;FEMALE_FREQ_HOMREF=0.529938;FEMALE_FREQ_HET=0.433586;FEMALE_FREQ_HOMALT=0.0364763 GT:EV:GQ:PE_GQ:PE_GT:SR_GQ:SR_GT 0/0:PE,SR:99:99:0:99:0 0/1:PE,SR:41:26:1:41:1 1/1:PE,SR:89:33:1:89:2 0/0:PE,SR:99:99:0:99:0 0/0:PE,SR:99:99:0:99:0
chrX 3 CPX_chrX_251 N <CPX> 999 UNRESOLVED ALGORITHMS=manta;CPX_INTERVALS=DEL_chr1:180540234-181074767,INV_chr1:181074767-181074938;CPX_TYPE=delINV;END=2781000;EVIDENCE=PE,SR;PREDICTED_LOF=KIAA1614,MR1,STX6,XPR1;PREDICTED_NONCODING_BREAKPOINT=Tommerup_TADanno;PREDICTED_NONCODING_SPAN=DNase,Enhancer;SVLEN=534718;SVTYPE=CPX;UNRESOLVED_TYPE=POSTHOC_RD_GT_REJECTION;AN=8;AC=3;AF=0.251804;N_BI_GENOS=2911;N_HOMREF=1559;N_HET=1238;N_HOMALT=114;FREQ_HOMREF=0.535555;FREQ_HET=0.425283;FREQ_HOMALT=0.0391618;MALE_AN=2894;MALE_AC=724;MALE_AF=0.250173;MALE_N_BI_GENOS=1447;MALE_N_HOMREF=784;MALE_N_HET=602;MALE_N_HOMALT=61;MALE_FREQ_HOMREF=0.541811;MALE_FREQ_HET=0.416033;MALE_FREQ_HOMALT=0.0421562;FEMALE_AN=2906;FEMALE_AC=736;FEMALE_AF=0.253269;FEMALE_N_BI_GENOS=1453;FEMALE_N_HOMREF=770;FEMALE_N_HET=630;FEMALE_N_HOMALT=53;FEMALE_FREQ_HOMREF=0.529938;FEMALE_FREQ_HET=0.433586;FEMALE_FREQ_HOMALT=0.0364763 GT:EV:GQ:PE_GQ:PE_GT:SR_GQ:SR_GT 0/0:PE,SR:99:99:0:99:0 0/1:PE,SR:41:26:1:41:1 1/1:PE,SR:89:33:1:89:2 0/0:PE,SR:99:99:0:99:0 0/0:PE,SR:99:99:0:99:0
chrX 2781700 CPX_chrX_252 N <CPX> 999 UNRESOLVED ALGORITHMS=manta;CPX_INTERVALS=DEL_chr1:180540234-181074767,INV_chr1:181074767-181074938;CPX_TYPE=delINV;END=2781900;EVIDENCE=PE,SR;PREDICTED_LOF=KIAA1614,MR1,STX6,XPR1;PREDICTED_NONCODING_BREAKPOINT=Tommerup_TADanno;PREDICTED_NONCODING_SPAN=DNase,Enhancer;SVLEN=534718;SVTYPE=CPX;UNRESOLVED_TYPE=POSTHOC_RD_GT_REJECTION;AN=8;AC=3;AF=0.251804;N_BI_GENOS=2911;N_HOMREF=1559;N_HET=1238;N_HOMALT=114;FREQ_HOMREF=0.535555;FREQ_HET=0.425283;FREQ_HOMALT=0.0391618;MALE_AN=2894;MALE_AC=724;MALE_AF=0.250173;MALE_N_BI_GENOS=1447;MALE_N_HOMREF=784;MALE_N_HET=602;MALE_N_HOMALT=61;MALE_FREQ_HOMREF=0.541811;MALE_FREQ_HET=0.416033;MALE_FREQ_HOMALT=0.0421562;FEMALE_AN=2906;FEMALE_AC=736;FEMALE_AF=0.253269;FEMALE_N_BI_GENOS=1453;FEMALE_N_HOMREF=770;FEMALE_N_HET=630;FEMALE_N_HOMALT=53;FEMALE_FREQ_HOMREF=0.529938;FEMALE_FREQ_HET=0.433586;FEMALE_FREQ_HOMALT=0.0364763 GT:EV:GQ:PE_GQ:PE_GT:SR_GQ:SR_GT 0/0:PE,SR:99:99:0:99:0 0/1:PE,SR:41:26:1:41:1 1/1:PE,SR:89:33:1:89:2 0/0:PE,SR:99:99:0:99:0 0/0:PE,SR:99:99:0:99:0