def test_sort_objs_by_group(self): group2avr = lcommon.get_group_avr(self.name2obj, self.group2names) sorted_objs = lcommon.sort_objs_by_group(self.name2obj, self.group2names, True, group2avr) self.assertEqual(len(sorted_objs), 5) names = ['sam1', 'sam2', 'g1_Avr', 'sam3', 'g2_Avr'] self.assertEqual(names, [o[0] for o in sorted_objs]) n2o = self.name2obj objs = [n2o['sam1'], n2o['sam2'], group2avr['g1'][1], n2o['sam3'], group2avr['g2'][1]] self.assertEqual(objs, [o[1] for o in sorted_objs]) #Without adding average group sorted_objs = lcommon.sort_objs_by_group(self.name2obj, self.group2names, False, group2avr) self.assertEqual(len(sorted_objs), 3) names = ['sam1', 'sam2', 'sam3'] self.assertEqual(names, [o[0] for o in sorted_objs]) n2o = self.name2obj objs = [n2o['sam1'], n2o['sam2'], n2o['sam3']] self.assertEqual(objs, [o[1] for o in sorted_objs])
def repsize_table(name2sample, outfile, group2avr={}, group2names={}, tex=False): # Sort the samples by group and/or size if len(group2avr) > 0: avrnames = [gavr[0] for gavr in group2avr.values()] sortedsamples = libcommon.sort_objs_by_group(name2sample, group2names, True, group2avr) else: avrnames = [] sortedsamples = libcommon.sort_dict_by_value(name2sample, keyfunc=lambda item: item[0].size) #sortedsamples = sorted(name2sample.values(), key=lambda s: s.size, # reverse=True) # Write to output file if tex: repsize_latex(sortedsamples, outfile, avrnames) else: repsize_text(sortedsamples, outfile)
def table(name2obj, outfile, colfields, group2avr={}, group2names={}, tex=False, keyattr='numclone', caption='', label='', islist=False): # rows=samples; cols=colfields; if not name2obj or not colfields: return # Sort the samples by group and/or size keyfunc = None listattr = None if islist or keyattr not in colfields: listattr = keyattr else: keyfunc = lambda item: item[0][keyattr] if group2avr: sortedobjs = libcommon.sort_objs_by_group(name2obj, group2names, True, group2avr, keyfunc=keyfunc) else: sortedobjs = libcommon.sort_dict_by_value(name2obj, keyfunc=keyfunc) if tex: table_latex(sortedobjs, outfile, colfields, caption, label, listattr) else: table_text(sortedobjs, outfile, colfields, listattr)