def run_additional(args, context): logging.info("Started metaxcan additional stats") i_genes, i_snps = context.get_data_intersection() results = [] for gene in i_genes: stats_ = AssociationCalculation.additional_stats(gene, context) results.append(stats_) results = AssociationCalculation.dataframe_from_aditional_stats(results) results = MetaxcanUtilities.format_additional_output(results, context, args.remove_ens_version) if args.additional_output: Utilities.ensure_requisite_folders(args.additional_output) results.to_csv(args.additional_output, index=False) return results
def run_metaxcan(args, context): logging.info("Started metaxcan association") model_snps = context.get_model_snps() total_snps = len(model_snps) snps_found = set() reporter = Utilities.PercentReporter(logging.INFO, total_snps) i_genes, i_snps = context.get_data_intersection() results = [] additional = [] for i, gene in enumerate(i_genes): if args.MAX_R and i + 1 > args.MAX_R: logging.log("Early exit condition met") break logging.log(9, "Processing gene %i:%s", i, gene) r, snps = AssociationCalculation.association(gene, context, return_snps=True) results.append(r) snps_found.update(snps) reporter.update( len(snps_found), "%d %% of model's snps found so far in the gwas study") if args.additional_output: stats_ = AssociationCalculation.additional_stats(gene, context) additional.append(stats_) reporter.update(len(snps_found), "%d %% of model's snps used", force=True) results = AssociationCalculation.dataframe_from_results(results) results = MetaxcanUtilities.format_output(results, context, args.remove_ens_version) if args.additional_output: additional = AssociationCalculation.dataframe_from_aditional_stats( additional) results = MetaxcanUtilities.merge_additional_output( results, additional, context, args.remove_ens_version) if args.output_file: Utilities.ensure_requisite_folders(args.output_file) results.to_csv(args.output_file, index=False) return results