{ "packages": ["numpy", "pandas", "matplotlib"] }
bio-tools
about
contact
HPLCのデータ解析 (α版)
データを入力 (No., RT, Area, others)
#culture 0h 1 12.98 7269.23 70.57 #culture 24h 1 2.75 644.18 36.46 2 13.43 1112.02 9.83 #culture 48h 1 2.75 386.41 22.43 2 3.37 29.34 1.59
タイトル
サンプリング時間 (h)
化合物名,リテンションタイム(start, end), 1mMの蛍光強度,描画色の設定
解析開始
入力データの確認
import numpy as np import pandas as pd import matplotlib.pyplot as plt def set_peak(*ags, **kws): data_element = Element('input-data') data = data_element.element.value data = data.split('\n') if data == ['']: return li = [] for row in data: if row == '': pass elif row[0] == '#': li.append(row.replace('\n','').replace('\r','')) else: row = row.replace('\n','').split('\t') row = row[1:3] row[0] = float(format(float(row[0]), '.1f')) row[1] = float(format(float(row[1]), '.5f')) li.append(row) t = eval(Element('sampling-time').element.value) df = pd.DataFrame({'RT': (np.arange(0, 151, 1)/10)}).set_index('RT') x = 0 for i in li: if i[0] == '#': x += 1 df[f'{t[x-1]}'] = 0 else: df.at[i[0], f'{t[x-1]}'] = i[1] co = eval(Element('comp-list').element.value) df['co'] = None for i in co: df.loc[i[1]:i[2],'co'] = i[0] return df # Element('test').write(df[df.iloc[:,:-1].sum(axis=1) != 0]) def create_table(df, *ags, **kws): co = eval(Element('comp-list').element.value) tb = [] for i in co: tb.append(df[df['co'] == i[0]].iloc[:,0:-1].sum().rename(i[0])) return tb def calc_conc(tb, *ags, **kws): co = eval(Element('comp-list').element.value) tb_conc = [] for j in tb: for i in co: if i[0] == j.name: tb_conc.append(j/i[3]) return tb_conc def plot_fig(tb_conc, *ags, **kws): co = eval(Element('comp-list').element.value) title = Element('data-title').element.value fig = plt.figure(figsize=(8, 5)) fig.subplots_adjust(bottom=0.18) plt.rcParams['font.size'] = 15 plt.rcParams['legend.fontsize'] = 18 plt.rcParams['xtick.direction'] = 'out' plt.rcParams['ytick.direction'] = 'out' ax = plt.gca() ax.set_title(title, pad = 15) plt.xlabel('Time (h)', labelpad = 10) plt.ylabel('Concentration (mM)', labelpad = 10) for i in tb_conc: if sum(i) != 0: i_index = i.index.to_list() color = 'black' for j in co: if j[0] == i.name: color = j[4] ax.plot(i_index, i, label=i.name, marker='o', markersize=10, color=color) ax.legend() Element('plot').write(fig) # plt.savefig('plot.png', dpi = 300, pad_inches = .1, bbox_inches = 'tight') def hplc_analysis(*ags, **kws): df = set_peak() tb = create_table(df) tb_conc = calc_conc(tb) plot_fig(tb_conc) def data_preview(*ags, **kws): data_element = Element('input-data') data = data_element.element.value Element('data-preview').write(data) button_analysis = Element('analysis') button_analysis.element.onclick = hplc_analysis button_check = Element('data-check') button_check.element.onclick = data_preview button_analysis.element.disabled = False button_check.element.disabled = False