マイクロプレートリーダーから得られたデータを自動で解析するスクリプト
データファイル
# coding: utf-8
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import time
filename = "data.csv"
df = pd.read_csv(filename, encoding= 'unicode_escape')
print(df)
start_index = 0
end_index = 0
num_samples = 0
temp_detected = False
for i in range(df.shape[0]-1):
print(df.iloc[i][0],type(df.iloc[i][0]))
if "Temp" in str(df.iloc[i][0]) :
start_index = i
temp_detected = True
if type(df.iloc[i+1][0]) == float and type(df.iloc[i][0]) == str and temp_detected:
end_index = i+1
break
print(start_index,end_index)
char_i = f"{df.iloc[start_index+1][0][0]}"
data = {}
for i in range(start_index+1,end_index):
data[df.iloc[i][0][0]] = []
for i in range(start_index+1,end_index):
data[df.iloc[i][0][0]].append({df.iloc[i][0]:[float(i) for i in df.iloc[i][1:-1]]})
x = [i*180/3600 for i in range(len(df.iloc[start_index-2])-2)]
for graph in range(len(list(data.keys()))):
time.sleep(1)
fig = plt.figure(figsize=[5,5])
sns.set()
plt.rcParams['font.family'] ='sans-serif'
plt.rcParams['xtick.direction'] = 'in'
plt.rcParams['ytick.direction'] = 'in'
plt.rcParams['xtick.major.width'] = 1.0
plt.rcParams['ytick.major.width'] = 1.0
plt.rcParams['font.size'] = 9
plt.rcParams['axes.linewidth'] = 1.0
plt.gca().yaxis.set_major_formatter(plt.FormatStrFormatter('%.2f'))
plt.xlabel("time(s)")
plt.ylabel("OD600(-)")
for i in data[list(data.keys())[graph]]:
key = [j for j in i.keys()][0]
plt.scatter(x,i[key],label = f"{key}",s = 6)
plt.legend(title="Gen conc.(µg/ml)")
fig.savefig(f"fig_{graph}.png",dpi = 500)
実行結果


