def possible_lims(): concs = '/Users/berriz/Work/attachments/MF/JWGray_drug_conc_v1.csv' with open(concs) as fh: allrows = tuple(csv.reader(fh)) record = co.namedtuple('Record', allrows[0]) table = (record(*(row[:3] + list(convert_conc_row(row[3:-1])) + row[-1:])) for row in allrows[1:]) possible_lims = dict() for row in mu.unique( tuple((row.drug, row.c1, row.c9, row.units) for row in table)): possible_lims.setdefault(row[0], []).append(tuple(row[1:3])) return possible_lims
def possible_lims(): concs = '/Users/berriz/Work/attachments/MF/JWGray_drug_conc_v1.csv' with open(concs) as fh: allrows = tuple(csv.reader(fh)) record = co.namedtuple('Record', allrows[0]) table = (record(*(row[:3] + list(convert_conc_row(row[3:-1])) + row[-1:])) for row in allrows[1:]) possible_lims = dict() for row in mu.unique(tuple((row.drug, row.c1, row.c9, row.units) for row in table)): possible_lims.setdefault(row[0], []).append(tuple(row[1:3])) return possible_lims
def main(): allrows = tuple(csv.reader(open(DATASRC), delimiter=FIELDDELIMITER)) allcols = zip(*allrows) colheaders = tuple(allrows[COLHEADERSROW][FIRSTDATACOL:]) colsubheaders = tuple(allrows[COLSUBHEADERSROW][FIRSTDATACOL:]) rowheaders = tuple(allcols[ROWHEADERSCOL][FIRSTDATAROW:]) alldrugs = mu.unique(colheaders) drugs = tuple((dr for dr in alldrugs if not dr.startswith('private_company_drug_'))) drugset = set(drugs) metrics = 'lc50 tgi gi50'.split() assert set(colsubheaders) == set(metrics) nmetrics = len(metrics) assert len(colheaders) == len(alldrugs) * nmetrics cell_lines = rowheaders alldata = [list(col[FIRSTDATAROW:]) for col in allcols[FIRSTDATACOL:]] col_lookup = dict() for drug, subheader, data in zip(colheaders, colsubheaders, alldata): if drug not in drugset: continue d = col_lookup.setdefault(subheader, ncd.NoClobberDict()) d[drug] = data nrows = len(allrows[FIRSTDATAROW:]) assert nrows == len(cell_lines) maxvals = read_maxvals(MAXVALSFILE) for metric, drug in it.product(metrics, drugs): col = col_lookup[metric][drug] mv = maxvals[drug] for j, v in enumerate(col): assert isna(v) or float(v) <= float(mv) if v == mv: col[j] = MAXVALMARKER for metric, lkp in col_lookup.items(): table0 = zip(*(lkp[dr] for dr in drugs)) drug_scores = score_cols(table0) cols = zip(*table0) sorted_cols = sort_by_score(cols, drug_scores) table1 = zip(*sorted_cols) cell_line_scores = score_rows(table1) table2 = sort_by_score(table1, cell_line_scores) sorted_cell_lines = sort_by_score(cell_lines, cell_line_scores) sorted_drugs = sort_by_score(drugs, drug_scores) print_table(table2, sorted_cell_lines, sorted_drugs, metric)