def union_models(models): # for each attribute, find the union list of keys and add the # missing keys of to each sample (with val = 0) if not models: return for attr in models[0].get_attrs_depth1(): key_lists = [m[attr].keys() for m in models] union_keys = lcommon.union_lists(key_lists) for k in union_keys: for m in models: if k not in m[attr]: m[attr][k] = 0.0 for attr in models[0].get_attrs_depth2(): key_lists = [m[attr].keys() for m in models] union_keys = lcommon.union_lists(key_lists) for k in union_keys: for m in models: if k not in m[attr]: m[attr][k] = {} for k in union_keys: key_lists2 = [m[attr][k].keys() for m in models] union_keys2 = lcommon.union_lists(key_lists2) for k2 in union_keys2: for m in models: if k2 not in m[attr][k]: m[attr][k][k2] = 0.0
def draw_plots(name2obj, outdir): vfile = os.path.join(outdir, "v") vgenes = union_lists([obj.type2gene2clones['v'].keys() for obj in name2obj.values()]) draw_gene_usage(name2obj, "clones", "v", vfile, vgenes) jfile = os.path.join(outdir, "j") jgenes = union_lists([obj.type2gene2clones['j'].keys() for obj in name2obj.values()]) draw_gene_usage(name2obj, "clones", "j", jfile, jgenes) lfile = os.path.join(outdir, "lendist") draw_lendist(name2obj, "clones", lfile)