Exemplo n.º 1
0
def insert_sv_variants(adapter: MongoAdapter, case_obj: Case) -> None:
    """Build sv_variant documents and insert them into database on the fly, one at a time"""

    for variant in VCF(case_obj.vcf_sv_path, threads=settings.cyvcf_threads):
        variant_id = get_variant_id(variant=variant)
        ref = variant.REF
        alt = variant.ALT[0]
        coordinates = get_coords(variant)
        chrom = coordinates["chrom"]
        pos = coordinates["pos"]

        variant_obj = Variant(
            variant_id=variant_id,
            chrom=chrom,
            pos=pos,
            end=coordinates["end"],
            ref=ref,
            alt=alt,
            end_chrom=coordinates["end_chrom"],
            sv_type=coordinates["sv_type"],
            sv_len=coordinates["sv_length"],
            case_id=case_obj.case_id,
            homozygote=0,
            hemizygote=0,
            is_sv=True,
            id_column=variant.ID,
        )
        adapter.add_structural_variant(variant=variant_obj, max_window=settings.load_sv_window)
Exemplo n.º 2
0
def insert_snv_variants(adapter: MongoAdapter, case_obj: Case) -> None:
    """Build variant documents and bulk insert them into database"""
    variants = []
    for variant in VCF(case_obj.vcf_path, threads=settings.cyvcf_threads):
        variant_id = get_variant_id(variant=variant)
        ref = variant.REF
        alt = variant.ALT[0]

        coordinates = get_coords(variant)
        chrom = coordinates["chrom"]
        pos = coordinates["pos"]
        found_homozygote = 0
        found_hemizygote = 0

        for ind_obj in case_obj.individuals:
            ind_pos = ind_obj["ind_index"]
            if int(variant.gt_quals[ind_pos]) < settings.load_gq_threshold:
                continue

            genotype = GENOTYPE_MAP[variant.gt_types[ind_pos]]
            if genotype not in ["het", "hom_alt"]:
                continue

            if genotype == "hom_alt":
                found_homozygote = 1

            if (
                chrom in ["X", "Y"]
                and ind_obj["sex"] == 1
                and not check_par(chrom, pos, genome_build=settings.genome_build)
            ):
                found_hemizygote = 1

            variant_obj = Variant(
                variant_id=variant_id,
                chrom=chrom,
                pos=pos,
                end=coordinates["end"],
                ref=ref,
                alt=alt,
                end_chrom=coordinates["end_chrom"],
                sv_type=coordinates["sv_type"],
                sv_len=coordinates["sv_length"],
                case_id=case_obj.case_id,
                homozygote=found_homozygote,
                hemizygote=found_hemizygote,
                is_sv=False,
                id_column=variant.ID,
            )
            variants.append(variant_obj)
    adapter.add_variants(variants=variants)
Exemplo n.º 3
0
def annotate_svs(adapter, vcf_obj):
    """Annotate all SV variants in a VCF

    Args:
        adapter(loqusdb.plugin.adapter)
        vcf_obj(cyvcf2.VCF)

    Yields:
        variant(cyvcf2.Variant)
    """
    for nr_variants, variant in enumerate(vcf_obj, 1):
        variant_info = get_coords(variant)
        match = adapter.get_structural_variant(variant_info)
        if match:
            annotate_variant(variant, match)
        yield variant
Exemplo n.º 4
0
def test_get_coords_for_BND(bnd_variant):
    coords = get_coords(bnd_variant)
    assert coords["pos"] == coords["end"]
    assert coords["sv_length"] == float("inf")
    assert coords["sv_type"] == "BND"
Exemplo n.º 5
0
def test_get_coords_for_BND(bnd_variant):
    coords = get_coords(bnd_variant)
    assert coords['pos'] == coords['end']
    assert coords['sv_length'] == float('inf')
    assert coords['sv_type'] == 'BND'