Esempio n. 1
0
def vcf_results(taboo_store, input_path, rsnumber_stream, force=False):
    """Load genotypes from a VCF."""
    logger.info('loading genotypes')
    try:
        gt_samples = load_vcf(taboo_store, input_path, rsnumber_stream,
                              experiment='sequencing')
    except IntegrityError:
        logger.warn('sample genotypes already loaded')
        taboo_store.session.rollback()
        return None
    return gt_samples
Esempio n. 2
0
def genotype(context, force):
    """Upload results from sequencing to the genotype platform."""
    mip_case = context.obj["case"]
    store = TabooDatabase(context.obj["taboo_db"])

    with codecs.open(context.obj["rsnumber_ref"]) as rs_stream:
        if mip_case.bcf_path and mip_case.bcf_path.exists():
            analyses = load_bcf(store, mip_case.bcf_path, rs_stream, force=force)
        else:
            analyses = load_vcf(store, mip_case.ready_vcf, rs_stream, force=force)
        for analysis in analyses:
            logger.info("added analysis: %s", analysis.sample.sample_id)
            sample_id = analysis.sample.sample_id
            ped_sex = mip_case.ped.individuals[sample_id].sex
            analysis.sample.expected_sex = SEX[ped_sex]
        store.save()
Esempio n. 3
0
def parse_payload(db, payload, config, force=False):
    """Process an action to upload genotypes."""
    taboo_db = TabooDatabase(config['TABOO_URI'])
    mip_analysis = load_analysis(payload['family_dir'])

    with open(config['TABOO_RSNUMBERS']) as rs_stream:
        if mip_analysis.bcf_path and mip_analysis.bcf_path.exists():
            analyses = load_bcf(taboo_db, mip_analysis.bcf_path, rs_stream,
                                force=force)
        else:
            analyses = load_vcf(taboo_db, mip_analysis.ready_vcf, rs_stream,
                                force=force)

        for analysis in analyses:
            logger.info("added analysis: %s", analysis.sample.sample_id)
            sample_id = analysis.sample.sample_id
            ped_sex = mip_analysis.ped.individuals[sample_id].sex
            analysis.sample.expected_sex = SEX[ped_sex]
        taboo_db.save()
Esempio n. 4
0
def post_samples(input_type, input_path, rs_stream, prepend=None,
                 include_key=None, force=False):
    """Add samples from VCF or Excel sheet."""
    if input_type == 'vcf':
        logger.info("loading genotypes from VCF: {}".format(input_path))
        gt_samples = load_vcf(db, input_path, rs_stream,
                              experiment='sequencing', force=force)
        source_id = input_path
    elif input_type == 'excel':
        logger.info("loading genotypes from Excel: {}".format(input_path))
        file_name = path(input_path).normpath().basename()
        source_data = parse_filname(file_name)
        source_id = source_data['id']
        sample_prepend = prepend or "{}-{}".format(source_id, include_key or '')
        gt_samples = maf_results(db, input_path, prepend=sample_prepend,
                                 include_key=include_key)
    else:
        raise ValueError("'input_type' must be either 'vcf' or 'excel'")

    return dict(samples=gt_samples, source_id=source_id)