Пример #1
0
def get_variants_with_inheritance_mode(mall,
                                       family,
                                       inheritance_mode,
                                       variant_filter=None,
                                       quality_filter=None,
                                       user=None):
    """
    Get variants in a family with inheritance_mode, using the functions in VARIANT_INHERITANCE_FUNCTIONS
    """

    if inheritance_modes.INHERITANCE_DEFAULTS_MAP[inheritance_mode][
            'datatype'] == 'variants':
        for variant in INHERITANCE_FUNCTIONS[inheritance_mode](
                mall.variant_store,
                mall.reference,
                family,
                variant_filter=variant_filter,
                quality_filter=quality_filter,
                user=user):
            yield variant
    else:
        for variant in stream_utils.gene_stream_to_variant_stream(
                INHERITANCE_FUNCTIONS[inheritance_mode](
                    mall.variant_store,
                    mall.reference,
                    family,
                    variant_filter=variant_filter,
                    quality_filter=quality_filter,
                    user=user), mall.reference):
            yield variant
Пример #2
0
def calculate_mendelian_variant_search(search_spec, xfamily):

    variants = None

    if search_spec.search_mode == 'standard_inheritance':

        variants = list(get_variants_with_inheritance_mode(
            get_mall(),
            xfamily,
            search_spec.inheritance_mode,
            variant_filter=search_spec.variant_filter,
            quality_filter=search_spec.genotype_quality_filter,
        ))

    elif search_spec.search_mode == 'custom_inheritance':

        variants = list(get_variants_family(
            get_datastore(),
            xfamily,
            genotype_filter=search_spec.genotype_inheritance_filter,
            variant_filter=search_spec.variant_filter,
            quality_filter=search_spec.genotype_quality_filter,
        ))

    elif search_spec.search_mode == 'gene_burden':

        gene_stream = get_genes_family(
            get_datastore(),
            get_reference(),
            xfamily,
            burden_filter=search_spec.gene_burden_filter,
            variant_filter=search_spec.variant_filter,
            quality_filter=search_spec.genotype_quality_filter,
        )

        variants = list(stream_utils.gene_stream_to_variant_stream(gene_stream, get_reference()))

    elif search_spec.search_mode == 'allele_count':

        variants = list(get_variants_allele_count(
            get_datastore(),
            xfamily,
            search_spec.allele_count_filter,
            variant_filter=search_spec.variant_filter,
            quality_filter=search_spec.genotype_quality_filter,
        ))

    elif search_spec.search_mode == 'all_variants':
        variants = list(get_variants_family(
            get_datastore(),
            xfamily,
            variant_filter=search_spec.variant_filter,
            quality_filter=search_spec.genotype_quality_filter,
        ))

    return variants
Пример #3
0
def get_variants_with_inheritance_mode(mall, family, inheritance_mode, variant_filter=None, quality_filter=None):
    """
    Get variants in a family with inheritance_mode, using the functions in VARIANT_INHERITANCE_FUNCTIONS
    """
    if inheritance_modes.INHERITANCE_DEFAULTS_MAP[inheritance_mode]['datatype'] == 'variants': 
        for variant in INHERITANCE_FUNCTIONS[inheritance_mode](mall.variant_store, mall.reference, family, variant_filter, quality_filter):
            yield variant
    else: 
        for variant in stream_utils.gene_stream_to_variant_stream(INHERITANCE_FUNCTIONS[inheritance_mode](mall.variant_store, mall.reference, family, variant_filter, quality_filter), mall.reference):
            yield variant
Пример #4
0
def calculate_mendelian_variant_search(search_spec, xfamily):
    sys.stderr.write("     mendelian_variant_search for %s - search mode: %s  %s\n" % (xfamily.project_id, search_spec.search_mode, search_spec.__dict__))

    variants = None
    if search_spec.search_mode == 'standard_inheritance':
        variants = list(get_variants_with_inheritance_mode(
            get_mall(xfamily.project_id),
            xfamily,
            search_spec.inheritance_mode,
            variant_filter=search_spec.variant_filter,
            quality_filter=search_spec.quality_filter,
        ))

    elif search_spec.search_mode == 'custom_inheritance':
        variants = list(get_variants_family(
            get_datastore(xfamily.project_id),
            xfamily,
            genotype_filter=search_spec.genotype_inheritance_filter,
            variant_filter=search_spec.variant_filter,
            quality_filter=search_spec.quality_filter,
        ))

    elif search_spec.search_mode == 'gene_burden':
        gene_stream = get_genes_family(
            get_datastore(xfamily.project_id),
            get_reference(),
            xfamily,
            burden_filter=search_spec.gene_burden_filter,
            variant_filter=search_spec.variant_filter,
            quality_filter=search_spec.quality_filter,
        )

        variants = list(stream_utils.gene_stream_to_variant_stream(gene_stream, get_reference()))

    elif search_spec.search_mode == 'allele_count':
        variants = list(get_variants_allele_count(
            get_datastore(xfamily.project_id),
            xfamily,
            search_spec.allele_count_filter,
            variant_filter=search_spec.variant_filter,
            quality_filter=search_spec.quality_filter,
        ))

    elif search_spec.search_mode == 'all_variants':
        variants = list(get_variants_family(
            get_datastore(xfamily.project_id),
            xfamily,
            variant_filter=search_spec.variant_filter,
            quality_filter=search_spec.quality_filter,
            indivs_to_consider=xfamily.indiv_id_list(),
        ))

    return variants
Пример #5
0
def calculate_mendelian_variant_search(search_spec, family, user=None):
    xfamily = family.xfamily()
    project = family.project
    variants = None
    if search_spec.search_mode == 'standard_inheritance':
        variants = list(get_variants_with_inheritance_mode(
            get_mall(project),
            xfamily,
            search_spec.inheritance_mode,
            variant_filter=search_spec.variant_filter,
            quality_filter=search_spec.quality_filter,
            user=user,
        ))

    elif search_spec.search_mode == 'custom_inheritance':
        variants = list(get_variants_family(
            get_datastore(project),
            xfamily,
            genotype_filter=search_spec.genotype_inheritance_filter,
            variant_filter=search_spec.variant_filter,
            quality_filter=search_spec.quality_filter,
            user=user,
        ))

    elif search_spec.search_mode == 'gene_burden':
        gene_stream = get_genes_family(
            get_datastore(project),
            get_reference(),
            xfamily,
            burden_filter=search_spec.gene_burden_filter,
            variant_filter=search_spec.variant_filter,
            quality_filter=search_spec.quality_filter,
            user=user,
        )

        variants = list(stream_utils.gene_stream_to_variant_stream(gene_stream, get_reference()))

    elif search_spec.search_mode == 'allele_count':
        variants = list(get_variants_allele_count(
            get_datastore(project),
            xfamily,
            search_spec.allele_count_filter,
            variant_filter=search_spec.variant_filter,
            quality_filter=search_spec.quality_filter,
            user=user,
        ))

    elif search_spec.search_mode == 'all_variants':
        variants = list(get_variants_family(
            get_datastore(project),
            xfamily,
            variant_filter=search_spec.variant_filter,
            quality_filter=search_spec.quality_filter,
            indivs_to_consider=xfamily.indiv_id_list(),
            user=user,
        ))

    for variant in variants:
        variant.set_extra('family_id', family.family_id)

    return variants
Пример #6
0
def calculate_mendelian_variant_search(search_spec, xfamily):
    sys.stderr.write("     cohort_variant_search - inheritance_mode: %s" %
                     search_spec.inheritance_mode)

    variants = None
    if search_spec.search_mode == 'standard_inheritance':

        variants = list(
            get_variants_with_inheritance_mode(
                get_mall(xfamily.project_id),
                xfamily,
                search_spec.inheritance_mode,
                variant_filter=search_spec.variant_filter,
                quality_filter=search_spec.genotype_quality_filter,
            ))

    elif search_spec.search_mode == 'custom_inheritance':

        variants = list(
            get_variants_family(
                get_datastore(xfamily.project_id),
                xfamily,
                genotype_filter=search_spec.genotype_inheritance_filter,
                variant_filter=search_spec.variant_filter,
                quality_filter=search_spec.genotype_quality_filter,
            ))

    elif search_spec.search_mode == 'gene_burden':

        gene_stream = get_genes_family(
            get_datastore(xfamily.project_id),
            get_reference(),
            xfamily,
            burden_filter=search_spec.gene_burden_filter,
            variant_filter=search_spec.variant_filter,
            quality_filter=search_spec.genotype_quality_filter,
        )

        variants = list(
            stream_utils.gene_stream_to_variant_stream(gene_stream,
                                                       get_reference()))

    elif search_spec.search_mode == 'allele_count':

        variants = list(
            get_variants_allele_count(
                get_datastore(xfamily.project_id),
                xfamily,
                search_spec.allele_count_filter,
                variant_filter=search_spec.variant_filter,
                quality_filter=search_spec.genotype_quality_filter,
            ))

    elif search_spec.search_mode == 'all_variants':
        variants = list(
            get_variants_family(
                get_datastore(xfamily.project_id),
                xfamily,
                variant_filter=search_spec.variant_filter,
                quality_filter=search_spec.genotype_quality_filter,
            ))

    return variants
Пример #7
0
def calculate_mendelian_variant_search(search_spec, family, user=None):
    xfamily = family.xfamily()
    project = family.project
    variants = None
    if search_spec.search_mode == 'standard_inheritance':
        variants = list(
            get_variants_with_inheritance_mode(
                get_mall(project),
                xfamily,
                search_spec.inheritance_mode,
                variant_filter=search_spec.variant_filter,
                quality_filter=search_spec.quality_filter,
                user=user,
            ))

    elif search_spec.search_mode == 'custom_inheritance':
        variants = list(
            get_variants_family(
                get_datastore(project),
                xfamily,
                genotype_filter=search_spec.genotype_inheritance_filter,
                variant_filter=search_spec.variant_filter,
                quality_filter=search_spec.quality_filter,
                user=user,
            ))

    elif search_spec.search_mode == 'gene_burden':
        gene_stream = get_genes_family(
            get_datastore(project),
            get_reference(),
            xfamily,
            burden_filter=search_spec.gene_burden_filter,
            variant_filter=search_spec.variant_filter,
            quality_filter=search_spec.quality_filter,
            user=user,
        )

        variants = list(
            stream_utils.gene_stream_to_variant_stream(gene_stream,
                                                       get_reference()))

    elif search_spec.search_mode == 'allele_count':
        variants = list(
            get_variants_allele_count(
                get_datastore(project),
                xfamily,
                search_spec.allele_count_filter,
                variant_filter=search_spec.variant_filter,
                quality_filter=search_spec.quality_filter,
                user=user,
            ))

    elif search_spec.search_mode == 'all_variants':
        variants = list(
            get_variants_family(
                get_datastore(project),
                xfamily,
                variant_filter=search_spec.variant_filter,
                quality_filter=search_spec.quality_filter,
                indivs_to_consider=xfamily.indiv_id_list(),
                user=user,
            ))

    for variant in variants:
        variant.set_extra('family_id', family.family_id)

    return variants
Пример #8
0
def calculate_mendelian_variant_search(search_spec, xfamily):
    sys.stderr.write((
        "mendelian_variant_search for %s - search mode: %s \n"
        "variant_filter: %s \ninheritance_mode: %s \nallele_count_filter: %s \nquality_filter: %s \ngenotype_inheritance_filter: %s \n"
    ) % (xfamily.project_id, search_spec.search_mode,
         search_spec.variant_filter.toJSON() if search_spec.variant_filter else
         '', search_spec.inheritance_mode, search_spec.allele_count_filter,
         search_spec.quality_filter, search_spec.genotype_inheritance_filter))

    variants = None
    if search_spec.search_mode == 'standard_inheritance':
        variants = list(
            get_variants_with_inheritance_mode(
                get_mall(xfamily.project_id),
                xfamily,
                search_spec.inheritance_mode,
                variant_filter=search_spec.variant_filter,
                quality_filter=search_spec.quality_filter,
            ))

    elif search_spec.search_mode == 'custom_inheritance':
        variants = list(
            get_variants_family(
                get_datastore(xfamily.project_id),
                xfamily,
                genotype_filter=search_spec.genotype_inheritance_filter,
                variant_filter=search_spec.variant_filter,
                quality_filter=search_spec.quality_filter,
            ))

    elif search_spec.search_mode == 'gene_burden':
        gene_stream = get_genes_family(
            get_datastore(xfamily.project_id),
            get_reference(),
            xfamily,
            burden_filter=search_spec.gene_burden_filter,
            variant_filter=search_spec.variant_filter,
            quality_filter=search_spec.quality_filter,
        )

        variants = list(
            stream_utils.gene_stream_to_variant_stream(gene_stream,
                                                       get_reference()))

    elif search_spec.search_mode == 'allele_count':
        variants = list(
            get_variants_allele_count(
                get_datastore(xfamily.project_id),
                xfamily,
                search_spec.allele_count_filter,
                variant_filter=search_spec.variant_filter,
                quality_filter=search_spec.quality_filter,
            ))

    elif search_spec.search_mode == 'all_variants':
        variants = list(
            get_variants_family(
                get_datastore(xfamily.project_id),
                xfamily,
                variant_filter=search_spec.variant_filter,
                quality_filter=search_spec.quality_filter,
                indivs_to_consider=xfamily.indiv_id_list(),
            ))

    return variants