def plot_bigprofiles(prots, pids, unnorm_eluts, sp='Hs', min_count=1, remove_multi_base=False, gt=None, eluts_per_plot=10, do_cluster=True, label_trans=None, do_plot_tree=False, rename_fracs=None, colors=None, **kwargs): """ supply EITHER prots OR protids, set other to None unnorm_eluts: [el.NormElut(f, sp=sp, norm_cols=False, norm_rows=False) for f in fs] """ import plotting as pl if prots is not None: pids = [gt.name2id[p] for p in prots] if do_cluster: print "clustering" pids = cluster_ids(pids, unnorm_eluts, sp, gt=gt, do_plot=do_plot_tree, **kwargs) if gt is not None: prots = [gt.id2name[pid] for pid in pids if pid in gt.id2name] #re-order to match else: prots = pids print "No gene names provided--labeling with ids." if label_trans: print "Translating names for display." # Translate displayed names from base ids according to provided dict #prots = [gt.id2name[pid] for pid in pids] prots = [label_trans.get(p,p) for p in prots] prots.reverse(); pids.reverse(); # put them top to bottom if colors is not None: colors.reverse() print "%s proteins" % len(pids) use_eluts = elutions_containing_prots(unnorm_eluts, sp, pids, min_count) nplots = int(np.ceil(len(use_eluts) / eluts_per_plot)) maxfracs = 0 for iplot in range(nplots): pl.subplot(nplots, 1, iplot+1) plot_eluts = use_eluts[iplot*eluts_per_plot: (iplot+1)*eluts_per_plot] frac_names = [ut.shortname(e.filename) for e in plot_eluts] if rename_fracs: frac_names = [rename_fracs.get(n,n) for n in frac_names] startcols = [0] for i,e in enumerate(plot_eluts): freqarr = ut.normalize_fracs(e.normarr, norm_rows=False) sp_target = ut.shortname(e.filename)[:2] protsmax = max([np.max(freqarr[r]) for p in pids if p in e.baseid2inds for r in e.baseid2inds[p]]) plot_big_single(freqarr, pids, e.baseid2inds, protsmax, startcols[-1], colors=colors) startcols.append(startcols[-1]+freqarr.shape[1]) label_ys(prots) label_xs(startcols, frac_names) pl.grid(False) maxfracs = maxfracs if maxfracs > startcols[-1] else startcols[-1] for iplot in range(nplots): pl.subplot(nplots, 1, iplot+1) pl.xlim(0,maxfracs) pl.subplots_adjust(hspace=5/len(prots)) return nplots
def plot_prots(elut, pids, baseid2inds, maxcount): import plotting as pl for i,pid in enumerate(pids): if pid in baseid2inds: for rowid in baseid2inds[pid]: row = elut.normarr[rowid] bottom = np.log2(maxcount)*i pl.bar(range(row.shape[1]), np.clip(np.log2(row[0,:].T+.1),0,1000), color=pl.COLORS[i%len(pl.COLORS)], align='center',width=1,linewidth=0, bottom=bottom) pl.xlim(0,row.shape[1]) pl.ylim(-.1, np.log2(maxcount)*len(pids))