def action(args): controls, sample_groups = get_input(args.infile, split_description=args.split_desc) qadata = qa_from_csv(qafile) matrix = read_matrix(matrix_file) style = "screen" if args.outfile == sys.stdout else "file" outfile = get_outfile(args, label="qa", ext="csv") if args.calculate_ion_ratios: qadata = add_ion_ratios(qadata, controls) # if a single compound is specified, define lambda cond to use as # a filter if args.compound_id: cond = lambda c: c["COMPOUND_id"] == args.compound_id else: cond = lambda c: True # controls compounds = [Compound(c, matrix, **qadata[c["COMPOUND_id"]]) for c in flatten(controls.values()) if cond(c)] display_controls(compounds, outfile=outfile, show_all=args.show_all, message=not args.outcomes_only, style=style) compounds = [Compound(c, matrix, **qadata[c["COMPOUND_id"]]) for c in flatten(sample_groups.values()) if cond(c)] display_specimens(compounds, outfile=outfile, show_all=args.show_all, message=not args.outcomes_only, style=style) if args.outfile is None: outfile.close()
def test01(self): with open('testfiles/oct24.json') as f: controls, sample_groups = json.load(f) qadata = qa_from_csv(qafile) qd = add_ion_ratios(qadata, controls) for d in qd.values(): self.assertTrue('ion_ratio_avg_calc' in d)
def action(args): controls, sample_groups = get_input(args.infile, split_description = args.split_desc) qadata = qa_from_csv(qafile) matrix = read_matrix(matrix_file) style = 'screen' if args.outfile == sys.stdout else 'file' outfile = get_outfile(args, label = 'results', ext = 'csv') if args.calculate_ion_ratios: qadata = add_ion_ratios(qadata, controls) samples = get_samples(controls, sample_groups, qadata, matrix) display_results(samples, outfile, style = style, grouped = args.grouped) if args.outfile is None: outfile.close()
def action(args): controls, sample_groups = get_input(args.infile, split_description=args.split_desc) qadata = qa_from_csv(qafile) matrix = read_matrix(matrix_file) style = 'screen' if args.outfile == sys.stdout else 'file' outfile = get_outfile(args, label='qa', ext='csv') if args.calculate_ion_ratios: qadata = add_ion_ratios(qadata, controls) # if a single compound is specified, define lambda cond to use as # a filter if args.compound_id: cond = lambda c: c['COMPOUND_id'] == args.compound_id else: cond = lambda c: True # controls compounds = [ Compound(c, matrix, **qadata[c['COMPOUND_id']]) for c in flatten(controls.values()) if cond(c) ] display_controls(compounds, outfile=outfile, show_all=args.show_all, message=not args.outcomes_only, style=style) compounds = [ Compound(c, matrix, **qadata[c['COMPOUND_id']]) for c in flatten(sample_groups.values()) if cond(c) ] display_specimens(compounds, outfile=outfile, show_all=args.show_all, message=not args.outcomes_only, style=style) if args.outfile is None: outfile.close()
def action(args): matrix = read_matrix(matrix_file) qadata = qa_from_csv(qafile) compound_ids, compound_codes = map(list, zip(*COMPOUND_CODES)) writer = csv.DictWriter( args.outfile if hasattr(args.outfile, 'write') else open(args.outfile, 'w'), fieldnames = ['infile','label'] + compound_ids, extrasaction = 'ignore') # create headers for the first row d = dict(label = 'label', infile = 'infile') d.update(dict(COMPOUND_CODES)) writer.writerow(d) counter = count(1) seen = defaultdict(list) # keep only the first instance of each accession for infile in args.infiles: d = dict(infile = infile) controls, sample_groups = get_input(infile, split_description = args.split_desc) if args.calculate_ion_ratios: qadata = add_ion_ratios(qadata.copy(), controls) patient_samples = get_samples(controls, sample_groups, qadata, matrix, quantitative = True) for samples in patient_samples: samples = list(samples) # exclude any malformed samples if any(any(c.malformed for c in sample.compounds.values()) for sample in samples): log.warning('malformed samples in %s' % infile) continue # keep only the first instance of each sample if samples[0].row_label() not in seen: d['label'] = samples[0].row_label() if args.keep_phi else counter.next() d.update(dict((s.COMPOUND_id, s.result) for s in samples)) writer.writerow(sanitize(d)) seen[samples[0].row_label()].append(infile)
def test01(self): _qadata = add_ion_ratios(qadata, controls) rows = get_samples(controls, sample_groups, _qadata, matrix) rows.next()