From 6230382b79d34ffe8fc51c923b5f0a3ca0529b1c Mon Sep 17 00:00:00 2001 From: Schneider Leo <leo.schneider@etu.ec-lyon.fr> Date: Tue, 1 Oct 2024 16:46:56 +0200 Subject: [PATCH] local integration working --- local_integration_msms.py | 63 +++++++++++++++++++++++++++++++-------- 1 file changed, 51 insertions(+), 12 deletions(-) diff --git a/local_integration_msms.py b/local_integration_msms.py index 2e5723f..17c67ab 100644 --- a/local_integration_msms.py +++ b/local_integration_msms.py @@ -27,23 +27,28 @@ def get_df(expe, long: bool = False): """ - cols = ["RT", "mzarray", "intarray", 'MSlevel','MS1 MZ'] + cols = ["RT", "mzarray", "intarray", 'MSlevel','MS1_mz_min','MS1_mz_max'] - df = pd.DataFrame(data=((spec.getRT(), *spec.get_peaks(), spec.getMSLevel(), spec.getPrecursors()[0].getMZ() if spec.getMSLevel() ==2 else None) for spec in expe), columns=cols) + df = pd.DataFrame(data=((spec.getRT(), *spec.get_peaks(), spec.getMSLevel(), + spec.getPrecursors()[0].getMZ() - spec.getPrecursors()[0].getIsolationWindowLowerOffset() if spec.getMSLevel()==2 else None, + spec.getPrecursors()[0].getMZ() + spec.getPrecursors()[0].getIsolationWindowUpperOffset() if spec.getMSLevel()==2 else None + ) for spec in expe), columns=cols) if long: RT = [] mz = [] inty = [] ms_lv = [] - ms1_mz = [] + ms1_mz_min = [] + ms1_mz_max = [] for index, row in df.iterrows(): mz.extend(row['mzarray']) inty.extend(row['intarray']) RT.extend([row['RT']]*len(row['intarray'])) ms_lv.extend([row['MSlevel']] * len(row['intarray'])) - ms1_mz.extend([row['MS1 MZ']] * len(row['intarray'])) - dico = {"RT": RT, "mz": mz, "inty": inty, "MSlevel": ms_lv, "MS1 MZ": ms1_mz} + ms1_mz_min.extend([row['MS1_mz_min']] * len(row['intarray'])) + ms1_mz_max.extend([row['MS1_mz_max']] * len(row['intarray'])) + dico = {"RT": RT, "mz": mz, "inty": inty, "MSlevel": ms_lv, "MS1_mz_min": ms1_mz_min, "MS1_mz_max": ms1_mz_max} return pd.DataFrame(dico) else : @@ -71,13 +76,21 @@ def generate_RT_int_imgs(exp,star_mz,stop_mz): plt.savefig('fig/rt_local/{}_to_{}.png'.format(mz_range[i] ,mz_range[i+1])) plt.clf() -def integrate_ms_ms(time_start, time_end, df): - df_useful = df[(df['MS1 RT']>time_start) & (df['MS1 RT']<time_end) & (df['MSlevel']==2)].reset_index(inplace=True) - - value = 0 - - - return value +def integrate_ms_ms(df, mz_bin, output='temp.png', display = False): + # df_useful = df[(df['MS1 RT']>time_start) & (df['MS1 RT']<time_end) & (df['MSlevel']==2)].reset_index(inplace=True) + min_mz, max_mz = min(df['mz']), max(df['mz']) + mz_list = np.linspace(min_mz,max_mz,num = int((max_mz-min_mz)//mz_bin)+1) + int_list = np.zeros(int((max_mz-min_mz)//mz_bin)+1) + for index, row in df.iterrows(): + int_list[int((row['mz']-min_mz)//mz_bin)]+=row['inty'] + if display : + plt.clf() + fig, ax = plt.subplots() + ax.plot(mz_list, int_list,linewidth=0.1) + ax.set_xlim(200,1800) + plt.savefig(output) + plt.clf() + return mz_list,int_list if __name__ == "__main__": e = oms.MSExperiment() @@ -97,4 +110,30 @@ if __name__ == "__main__": ax.plot(mz_sorted,inty_sorted) plt.savefig('temp.png') + + #pic d'étude 462-468 + #mz 750.13 + df_peak = df[df['MSlevel'] == 2] + df_peak = df_peak[750.1 < df_peak['MS1_mz_max']] + df_peak = df_peak[750.1 > df_peak['MS1_mz_min']] + df_peak = df_peak[465 < df_peak['RT']] + df_peak = df_peak[466 > df_peak['RT']] + + + df_peak2 = df[df['MSlevel'] == 2] + df_peak2 = df_peak2[750.1 < df_peak2['MS1_mz_max']] + df_peak2 = df_peak2[750.1 > df_peak2['MS1_mz_min']] + df_peak2 = df_peak2[463 < df_peak2['RT']] + df_peak2 = df_peak2[467 > df_peak2['RT']] + + mz1, inty1 = integrate_ms_ms(df_peak, 1) + mz2, inty2 = integrate_ms_ms(df_peak2, 1) + plt.clf() + fig, ax = plt.subplots() + ax.plot(mz1, inty1, linewidth=0.3) + ax.plot(mz2, inty2, linewidth=0.3) + ax.set_xlim(200, 1800) + plt.savefig('spec_combined.png') + plt.clf() + #358.1 358.32 \ No newline at end of file -- GitLab