| import numpy as np |
| import matplotlib.pyplot as plt |
| import matplotlib.patches as mpatches |
| import seaborn as sns |
| import os |
| import argparse |
| sns.set() |
| sns.set_style('ticks') |
|
|
|
|
| params = {'legend.fontsize': 50, |
| 'figure.figsize': (54, 27), |
| 'axes.labelsize': 60, |
| 'axes.titlesize':60, |
| 'xtick.labelsize':60, |
| 'ytick.labelsize':36} |
|
|
|
|
| plt.rcParams.update(params) |
|
|
| os.environ["CUDA_VISIBLE_DEVICES"] = '2' |
|
|
| fig, axs = plt.subplots(2,3) |
|
|
| colors = ["#3c5068", "#acbab6", "#dcd3cd", "#d4a6a6"] |
|
|
| init = [] |
| with open(f'./../src/mrl_te_optimization/outputs/init_mrl_TE.txt') as f: |
| scores = f.readlines() |
| init = [float(score.replace('\n','')) for score in scores] |
|
|
| opt = [] |
| with open(f'./../src/mrl_te_optimization/outputs/opt_mrl_TE.txt') as f: |
| scores = f.readlines() |
| opt = [float(score.replace('\n','')) for score in scores] |
|
|
| init = np.array(init) |
| opt = np.array(opt) |
|
|
| init = np.power(10,init) |
| opt = np.power(10,opt) |
|
|
| SORT_INIT = False |
|
|
| if SORT_INIT: |
|
|
| min_init_indices = np.argsort(init) |
| init = init[min_init_indices[:min(int(len(init)),100)]] |
| opt = opt[min_init_indices[:min(int(len(opt)),100)]] |
| else: |
| init = init[:min(int(len(init)),100)] |
| opt = opt[:min(int(len(opt)),100)] |
|
|
| diffs = [(opt[i]-init[i]) for i in range(len(init))] |
|
|
| count = 0 |
| for i in range(len(diffs)): |
| if diffs[i] < 0: |
| count += 1 |
|
|
| print(count) |
|
|
| print(np.average(init)) |
| print(np.average(opt)) |
| print(np.max(diffs/init)) |
| print(np.average(diffs/init)) |
|
|
| indices_sorted = np.argsort(diffs)[::-1] |
|
|
| diffs = np.sort(diffs)[::-1] |
|
|
| new_inits = [] |
|
|
| for i in range(len(diffs)): |
| new_inits.append(init[indices_sorted[i]]) |
|
|
| N = min(100, len(diffs)) |
|
|
| step = 1.0/N |
|
|
| new_n = [i * step for i in range(N)] |
|
|
| width = step |
|
|
| plt.rcParams.update({'font.size': 12}) |
|
|
|
|
| print(len(diffs)) |
|
|
| axs[0,1].bar(x=new_n, bottom=0, width=width, height=diffs,color=colors[0]) |
| axs[0,1].set_xticks([]) |
| axs[0,1].set_ylabel('TE Change') |
| axs[0,1].set_title('B',weight='bold',fontsize=60,loc='left') |
|
|
| axs[1,1].bar(x=new_n, bottom=0, width=width, height=new_inits,color=colors[3]) |
| axs[1,1].set_xticks([]) |
| axs[1,1].set_xlabel('UTR Samples') |
| axs[1,1].set_ylabel('Initial TE') |
| axs[1,1].set_title('E',weight='bold',fontsize=60,loc='left') |
|
|
| init = [] |
| with open('./../src/exp_optimization/outputs/mul_init_exps.txt') as f: |
| scores = f.readlines() |
| init = [float(score.replace('\n','')) for score in scores] |
|
|
| opt = [] |
| with open('./../src/exp_optimization/outputs/mul_opt_exps.txt') as f: |
| scores = f.readlines() |
| opt = [float(score.replace('\n','')) for score in scores] |
|
|
| init = np.array(init) |
| opt = np.array(opt) |
|
|
| init = np.power(10,init) |
| opt = np.power(10,opt) |
|
|
| print(np.average(init)) |
| print(np.average(opt)) |
|
|
| SORT_INIT = True |
|
|
| if SORT_INIT: |
|
|
| min_init_indices = np.argsort(init) |
| init = init[min_init_indices[:min(int(len(init)),100)]] |
| opt = opt[min_init_indices[:min(int(len(opt)),100)]] |
| else: |
| init = init[:min(int(len(init)),100)] |
| opt = opt[:min(int(len(opt)),100)] |
|
|
| diffs = [(opt[i]-init[i]) for i in range(len(init))] |
|
|
| count = 0 |
| for i in range(len(diffs)): |
| if diffs[i] < 0: |
| count += 1 |
|
|
| print(count) |
|
|
| print(np.mean(diffs/init)) |
| |
|
|
| indices_sorted = np.argsort(diffs)[::-1] |
|
|
| print(f"Average Opt: {np.average(opt)}") |
| print(f"Average Init: {np.average(init)}") |
| print(f"Max Opt: {np.max(opt)}") |
| print(f"Max Init: {np.max(init)}") |
| print(f"Max Increase (wrt Init) : {np.max(opt/init)}") |
| print(f"Average Increase (wrt Init) : {np.mean(opt/init)}") |
| print(f"Max Increase (wrt Natural) : {np.max(opt/np.power(10,-0.63))}") |
|
|
| diffs = (opt - init)/init |
| print(f"Average Percent Increase (wrt Init): {np.average(diffs)}") |
|
|
| print(np.max(diffs/init)) |
|
|
| new_inits = [] |
|
|
| for i in range(len(diffs)): |
| new_inits.append(init[indices_sorted[i]]) |
|
|
| N = min(100, len(diffs)) |
|
|
| step = 1.0/N |
|
|
| new_n = [i * step for i in range(N)] |
|
|
| width = step |
|
|
| axs[0,0].bar(x=new_n, bottom=0, width=width, height=diffs,color=colors[0]) |
| axs[0,0].set_xticks([]) |
| |
| axs[0,0].set_ylabel('Log TPM Expression Change') |
| axs[0,0].set_title('A',weight='bold',fontsize=60,loc='left') |
|
|
| axs[1,0].bar(x=new_n, bottom=0, width=width, height=init,color=colors[3]) |
| axs[1,0].set_xticks([]) |
| axs[1,0].set_xlabel('UTR Samples') |
| axs[1,0].set_ylabel('Initial TPM Expression') |
| axs[1,0].set_title('D',weight='bold',fontsize=60,loc='left') |
|
|
| |
|
|
| init = [] |
| with open(f'/home/sina/UTR/optimization/mrl/init_mrl_FMRL.txt') as f: |
| scores = f.readlines() |
| init = [float(score.replace('\n','')) for score in scores] |
|
|
| opt = [] |
| with open(f'/home/sina/UTR/optimization/mrl/opt_mrl_FMRL.txt') as f: |
| scores = f.readlines() |
| opt = [float(score.replace('\n','')) for score in scores] |
|
|
| init = np.array(init) |
| opt = np.array(opt) |
|
|
|
|
| SORT_INIT = False |
|
|
| if SORT_INIT: |
|
|
| min_init_indices = np.argsort(init) |
| init = init[min_init_indices[:min(int(len(init)),100)]] |
| opt = opt[min_init_indices[:min(int(len(opt)),100)]] |
| else: |
| init = init[:min(int(len(init)),100)] |
| opt = opt[:min(int(len(opt)),100)] |
|
|
| diffs = [(opt[i]-init[i]) for i in range(len(init))] |
|
|
| count = 0 |
| for i in range(len(diffs)): |
| if diffs[i] < 0: |
| count += 1 |
|
|
| print(count) |
|
|
| print(np.average(init)) |
| print(np.average(opt)) |
| print(np.max(diffs/init)) |
| print(np.average(diffs/init)) |
|
|
| indices_sorted = np.argsort(diffs)[::-1] |
|
|
| diffs = np.sort(diffs)[::-1] |
|
|
| new_inits = [] |
|
|
| for i in range(len(diffs)): |
| new_inits.append(init[indices_sorted[i]]) |
|
|
| N = min(100, len(diffs)) |
|
|
| step = 1.0/N |
|
|
| new_n = [i * step for i in range(N)] |
|
|
| width = step |
|
|
| plt.rcParams.update({'font.size': 12}) |
|
|
|
|
| print(len(diffs)) |
|
|
| axs[0,2].bar(x=new_n, bottom=0, width=width, height=diffs,color=colors[0]) |
| axs[0,2].set_xticks([]) |
| axs[0,2].set_ylabel('MRL Change') |
| axs[0,2].set_title('C',weight='bold',fontsize=60,loc='left') |
|
|
| axs[1,2].bar(x=new_n, bottom=0, width=width, height=new_inits,color=colors[3]) |
| axs[1,2].set_xticks([]) |
| axs[1,2].set_xlabel('UTR Samples') |
| axs[1,2].set_ylabel('Initial MRL') |
| axs[1,2].set_title('F',weight='bold',fontsize=60,loc='left') |
|
|
| |
|
|
|
|
| fig.tight_layout() |
|
|
| plt.savefig('./plots/opt_init_comparison.png') |