def gRNA_swarmplot(s1, s2, prefix=""):
# Rank of gRNA change
fig, axis = plt.subplots(3, 2, sharex=True, sharey=True, figsize=(8, 8))
axis = axis.flatten()
for i, screen in enumerate(s2.columns[::-1]):
s = s1.join(s2) # .fillna(0)
s = s.iloc[np.random.permutation(len(s))]
if ("TCR" in screen) or ("Jurkat" in screen) or ("stimulated" in screen) or ("unstimulated" in screen):
s = s.ix[s.index[~s.index.str.contains("Wnt")]]
if prefix.startswith("mid_screen-"):
b = s["gDNA_Jurkat"]
else:
b = s["plasmid_pool_TCR"]
x = s.ix[s.index[s.index.str.contains("Tcr")]]
y = s.ix[s.index[s.index.str.contains("Essential")]]
z = s.ix[s.index[s.index.str.contains("CTRL")]]
b_x = b.ix[s.index[s.index.str.contains("Tcr")]]
b_y = b.ix[s.index[s.index.str.contains("Essential")]]
b_z = b.ix[s.index[s.index.str.contains("CTRL")]]
elif ("WNT" in screen) or ("HEK" in screen):
s = s.ix[s.index[~s.index.str.contains("Tcr")]]
if prefix.startswith("mid_screen-"):
if "_4_" in prefix:
b = s["gDNA_HEKclone4"]
else:
b = s["gDNA_HEKclone6"]
else:
b = s["plasmid_pool_WNT"]
x = s.ix[s.index[s.index.str.contains("Wnt")]]
y = s.ix[s.index[s.index.str.contains("Essential")]]
z = s.ix[s.index[s.index.str.contains("CTRL")]]
b_x = b.ix[s.index[s.index.str.contains("Wnt")]]
b_y = b.ix[s.index[s.index.str.contains("Essential")]]
b_z = b.ix[s.index[s.index.str.contains("CTRL")]]
fc_x = np.log2(1 + x[screen]) - np.log2(1 + b_x)
fc_y = np.log2(1 + y[screen]) - np.log2(1 + b_y)
fc_z = np.log2(1 + z[screen]) - np.log2(1 + b_z)
fc_x.name = screen
fc_y.name = "Essential"
fc_z.name = "CTRL"
sns.violinplot(x="variable", y="value", alpha=0.1, inner="box", data=pd.melt(pd.DataFrame([fc_x, fc_y, fc_z]).T), ax=axis[i])
sns.swarmplot(x="variable", y="value", alpha=0.5, data=pd.melt(pd.DataFrame([fc_x, fc_y, fc_z]).T), ax=axis[i])
axis[i].axhline(y=0, color='black', linestyle='--', lw=0.5)
axis[i].set_title(screen)
sns.despine(fig)
fig.savefig(os.path.join(results_dir, "gRNA_counts.norm.{}.violin_swarmplot.svg".format(prefix)), bbox_inches="tight")
评论列表
文章目录