UTRGAN / conf /analysis /plot_4x4.py
wuxing0105's picture
Upload folder using huggingface_hub
34393ef verified
Raw
History Blame Contribute Delete
9.48 kB
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
import random
import seaborn as sns
import os
import argparse
sns.set()
sns.set_style('ticks')
colors = ["#3c5068", "#acbab6", "#dcd3cd", "#d4a6a6"]
#POSTER
params = {'legend.fontsize': 50,
'figure.figsize': (54, 38),
'axes.labelsize': 60,
'axes.titlesize':60,
'xtick.labelsize':60,
'ytick.labelsize':60}
plt.rcParams.update(params)
np.random.seed(25)
DISPLAY_DIFF = True
root_path = './../src/exp_optimization/'
PREFIX = 'outputs/'
# MIXED, REGULAR, GC_CONTROLED, MULT
TYPE = 'GC_CONTROLED'
DISPLAY_DIFF = True
if TYPE == 'REGULAR':
PREFIX = 'outputs/'
elif TYPE == 'MIXED':
PREFIX = 'outputs_joint/'
elif TYPE == 'GC_CONTROLED':
PREFIX = 'outputs/gc_'
elif TYPE == 'K562':
PREFIX = 'outputs/K562_'
elif TYPE == 'GM12878':
PREFIX = 'outputs/GM12878_'
if DISPLAY_DIFF:
parser = argparse.ArgumentParser(description="Gene Expression Optimization Visualization")
# Add arguments
parser.add_argument("-g", help="a list of gene names separated by comma")
# Parse the arguments
args = parser.parse_args()
gene_names = args.g.split(',')
gene_name = gene_names[0]
init = []
with open(root_path+PREFIX+'init_exps_'+gene_name+'.txt') as f:
scores = f.readlines()
init = [float(score.replace('\n','')) for score in scores]
opt = []
with open(root_path+PREFIX+'opt_exps_'+gene_name+'.txt') as f:
scores = f.readlines()
opt = [float(score.replace('\n','')) for score in scores]
init = np.power(10,init)
opt = np.power(10,opt)
diffs = (opt - init)/init
print("####################################################################")
print(f"{gene_name} results:")
print(f"Max Opt: {np.max(opt):.2f}")
print(f"Max Init: {np.max(init):.2f}")
print(f"Average Percent Increase (wrt Init): {np.average(diffs)*100:.2f}")
print(f"Max Percent Increase (wrt Init): {np.max(diffs)*100:.2f}")
indices = np.argsort(opt)[::-1]
init_large = []
init_small = []
opt_large = []
opt_small = []
for i in range(len(indices)):
if diffs[indices[i]] >= 0:
init_small.append(init[indices[i]])
init_large.append(0)
opt_small.append(0)
opt_large.append(opt[indices[i]])
else:
init_large.append(init[indices[i]])
init_small.append(0)
opt_large.append(0)
opt_small.append(opt[indices[i]])
width = 1.0/(len(indices))
bins = [(i+1) * width for i in range(len(indices))]
ns = [i * width for i in range(len(indices))]
fig, axs = plt.subplots(2,2)
axs[0,0].bar(x=ns, bottom=0, width=width, height=opt_large, color=colors[0], edgecolor="white")
axs[0,0].bar(x=ns, bottom=0, width=width, height=opt_small, color=colors[0], edgecolor="white")
axs[0,0].bar(x=ns, bottom=0, width=width, height=init_small, color=colors[3], edgecolor="white")
axs[0,0].bar(x=ns, bottom=0, width=width, height=init_large, color=colors[3], edgecolor="white")
axs[0,0].set_title(gene_name,loc='left',style='italic',fontsize=64)
axs[0,0].set_xticks([])
gene_name = gene_names[1]
init = []
with open(root_path+PREFIX+'init_exps_'+gene_name+'.txt') as f:
scores = f.readlines()
init = [float(score.replace('\n','')) for score in scores]
opt = []
with open(root_path+PREFIX+'opt_exps_'+gene_name+'.txt') as f:
scores = f.readlines()
opt = [float(score.replace('\n','')) for score in scores]
init = np.power(10,init)
opt = np.power(10,opt)
diffs = (opt - init)/init
print("####################################################################")
print(f"{gene_name} results:")
print(f"Max Opt: {np.max(opt):.2f}")
print(f"Max Init: {np.max(init):.2f}")
print(f"Average Percent Increase (wrt Init): {np.average(diffs)*100:.2f}")
print(f"Max Percent Increase (wrt Init): {np.max(diffs)*100:.2f}")
indices = np.argsort(opt)[::-1]
init_large = []
init_small = []
opt_large = []
opt_small = []
for i in range(len(indices)):
if diffs[indices[i]] >= 0:
init_small.append(init[indices[i]])
init_large.append(0)
opt_small.append(0)
opt_large.append(opt[indices[i]])
else:
init_large.append(init[indices[i]])
init_small.append(0)
opt_large.append(0)
opt_small.append(opt[indices[i]])
axs[0,1].bar(x=ns, bottom=0, width=width, height=opt_large, color=colors[0], edgecolor="white")
axs[0,1].bar(x=ns, bottom=0, width=width, height=opt_small, color=colors[0], edgecolor="white")
axs[0,1].bar(x=ns, bottom=0, width=width, height=init_small, color=colors[3], edgecolor="white")
axs[0,1].bar(x=ns, bottom=0, width=width, height=init_large, color=colors[3], edgecolor="white")
axs[0,1].set_title(gene_name,loc='left',style='italic',fontsize=64)
axs[0,1].set_xticks([])
gene_name = gene_names[2]
init = []
with open(root_path+PREFIX+'init_exps_'+gene_name+'.txt') as f:
scores = f.readlines()
init = [float(score.replace('\n','')) for score in scores]
opt = []
with open(root_path+PREFIX+'opt_exps_'+gene_name+'.txt') as f:
scores = f.readlines()
opt = [float(score.replace('\n','')) for score in scores]
init = np.power(10,init)
opt = np.power(10,opt)
diffs = (opt - init)/init
print("####################################################################")
print(f"{gene_name} results:")
print(f"Max Opt: {np.max(opt):.2f}")
print(f"Max Init: {np.max(init):.2f}")
print(f"Average Percent Increase (wrt Init): {np.average(diffs)*100:.2f}")
print(f"Max Percent Increase (wrt Init): {np.max(diffs)*100:.2f}")
indices = np.argsort(opt)[::-1]
init_large = []
init_small = []
opt_large = []
opt_small = []
for i in range(len(indices)):
if diffs[indices[i]] >= 0:
init_small.append(init[indices[i]])
init_large.append(0)
opt_small.append(0)
opt_large.append(opt[indices[i]])
else:
init_large.append(init[indices[i]])
init_small.append(0)
opt_large.append(0)
opt_small.append(opt[indices[i]])
axs[1,0].bar(x=ns, bottom=0, width=width, height=opt_large, color=colors[0], edgecolor="white")
axs[1,0].bar(x=ns, bottom=0, width=width, height=opt_small, color=colors[0], edgecolor="white")
axs[1,0].bar(x=ns, bottom=0, width=width, height=init_small, color=colors[3], edgecolor="white")
axs[1,0].bar(x=ns, bottom=0, width=width, height=init_large, color=colors[3], edgecolor="white")
axs[1,0].set_title(gene_name,loc='left',style='italic',fontsize=64)
axs[1,0].set_xticks([])
gene_name = gene_names[3]
init = []
with open(root_path+PREFIX+'init_exps_'+gene_name+'.txt') as f:
scores = f.readlines()
init = [float(score.replace('\n','')) for score in scores]
opt = []
with open(root_path+PREFIX+'opt_exps_'+gene_name+'.txt') as f:
scores = f.readlines()
opt = [float(score.replace('\n','')) for score in scores]
init = np.power(10,init)
opt = np.power(10,opt)
diffs = (opt - init)/init
print("####################################################################")
print(f"{gene_name} results:")
print(f"Max Opt: {np.max(opt):.2f}")
print(f"Max Init: {np.max(init):.2f}")
print(f"Average Percent Increase (wrt Init): {np.average(diffs)*100:.2f}")
print(f"Max Percent Increase (wrt Init): {np.max(diffs)*100:.2f}")
print("####################################################################")
indices = np.argsort(opt)[::-1]
init_large = []
init_small = []
opt_large = []
opt_small = []
for i in range(len(indices)):
if diffs[indices[i]] >= 0:
init_small.append(init[indices[i]])
init_large.append(0)
opt_small.append(0)
opt_large.append(opt[indices[i]])
else:
init_large.append(init[indices[i]])
init_small.append(0)
opt_large.append(0)
opt_small.append(opt[indices[i]])
axs[1,1].bar(x=ns, bottom=0, width=width, height=opt_large, color=colors[0], edgecolor="white")
axs[1,1].bar(x=ns, bottom=0, width=width, height=opt_small, color=colors[0], edgecolor="white")
axs[1,1].bar(x=ns, bottom=0, width=width, height=init_small, color=colors[3], edgecolor="white")
axs[1,1].bar(x=ns, bottom=0, width=width, height=init_large, color=colors[3], edgecolor="white")
axs[1,1].set_title(gene_name,loc='left',style='italic',fontsize=64)
axs[1,1].set_xticks([])
orange_patch = mpatches.Patch(color=colors[3], label='Initial Expression')
blue_patch = mpatches.Patch(color=colors[0], label='Optimized Expression')
fig.legend(handles=[orange_patch,blue_patch],loc='upper right')
axs[0,0].set_ylabel('TPM Expression')
axs[1,0].set_ylabel('TPM Expression')
axs[1,0].set_xlabel('UTR Samples')
axs[1,1].set_xlabel('UTR Samples')
fig.tight_layout()
plt.gcf().subplots_adjust(left=0.06)
os.makedirs('./plots/',exist_ok=True)
plt.savefig(f'./plots/exp_opt_all_{TYPE}_{gene_names}.png')