import os
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
from matplotlib import pyplot as plt
import matplotlib.patches as mpatches
from matplotlib import rcParams
import shutup
shutup.please()
rcParams['font.family'] = 'Arial'
svpath = '/IPMNPDAC_WGS/Data/'
#updated15-4-23 sample label
precancerList =['case13_4','case10_2','case10_5','case12_S10','case12_S11',
'case12_S13','case12_S9','case15_1','case15_3','case2_S10',
'case3_1','case3_2','case3_4','case4_S1','case4_S3','case4_S4',
'case4_S5','case15_4','case16_2','case2_S2','case2_S4','case7_1']
cancerList = ['case6_S7','case7_4','case7_5','case9_S4','case4_S2','case11_S7',
'case11_S8','case13_3','case13_5','case15_10','case15_11','case16_4',
'case16_5','case3_5','case6_S8','case6_S9','case9_S2','case9_S3','case9_S6']
# input
brassdf = pd.read_csv(svpath + '41BrassTypeSampleCounts.csv')
brassprecancerDf = brassdf.query('samples==@precancerList')
brassprecancerDf.insert(1,'tumorStage', 'IPMN')
brasscancerDf = brassdf.query('samples==@cancerList')
brasscancerDf.insert(1, 'tumorStage','PDAC')
brasstumorStageDf = pd.concat([brassprecancerDf, brasscancerDf])
brasstumorStageDfb = brasstumorStageDf[list(brasstumorStageDf)[1:]]
# plot
boxpps = dict(linestyle='-', linewidth=0, color='r')
medianpps = dict(linestyle='-', linewidth=1, color='r')
xt = brasstumorStageDfb.boxplot(by='tumorStage', medianprops=medianpps, sharey=True,
boxprops=boxpps,rot=0, grid=False, showfliers=False,
layout=(1,4), fontsize=10, return_type='both', figsize=(16,4),
patch_artist = True, column=list(brasstumorStageDfb)[1:])
colors = ['lightgreen', 'pink' ]
pv=['p = 0.1051','p = 0.0002','p = 0.0004','p = 0.0004']
colors = ['lightgreen', 'pink' ]
for i, (row_key, (ax, row)) in enumerate(xt.items()):
ax.set_xlabel("")
#ax.set_title(row_key)
ax.set_xticklabels("")
ax.set_ylabel('Number of SVs')
ax.text(0.65, 65, pv[i], fontsize=12)
for i,box in enumerate(row['boxes']):
box.set_facecolor(colors[i])
plt.suptitle("")
ipmn_patch = mpatches.Patch(color='lightgreen', label='IPMN')
pdac_patch = mpatches.Patch(color='pink', label='PDAC')
plt.subplots_adjust(wspace=0.12, hspace=0.5)
#plt.legend(handles=[ipmn_patch, pdac_patch], loc='best', frameon=False)
plt.show()