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
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()
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()
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)