サムネがコーヒーの記事は書きかけです。

【研究用スクリプト】マイクロプレートリーダーの自動解析スクリプト

マイクロプレートリーダーから得られたデータを自動で解析するスクリプト

データファイル

# 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)

実行結果

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です