W384孔板筛选 Hit List 代码
阈值划分 ,阳性到阴性 的 75% 或 60%
将酶标仪读值输出文件按一定格式汇总到同一EXCEL下(多工作表),在该表中计算阴阳性平均值,设定阈值,非Hit标记,找出Hit孔。通过Python 提取相应区域,按hit孔的行列名组合依次写入新的excel文件中,统计处Hit list
注: Hit一般为5%-10%,绝对值一般为50左右
软件环境:
Python: 3.10.9
Pandas Version: 1.5.3
openpyxl Version: 3.0.10
pip show [package name]
VScode
Anaconda
1. 将荧光素酶原始读值汇总文件 ,从原始仪器输出
2. 设定阈值,找出HIt值,抽取 W384测试孔读值区域存到新的文件夹中
3. 组合行列名和相应的读值到新的Excel中,形成Hit list
4. 进行下一步分析和验证
原始数据,PE酶标仪 W384 general 黑板 0.1s 0.1mm
1h衰减一般 , 一步法Fluc
总共10块W384孔板,先将数据读值部分汇总到一个EXCEL
p1 - p10,总共十个工作表
1. 将荧光素酶原始读值汇总文件 抽取 W384测试孔读值区域存到新的文件夹中
计算阳性和阴性对照的平均值,确定阈值 =IF(D22<$AB$39,D22,$A$42)
去除阴阳性对照,只留测试孔读值区域,保留行列名,列名为数字,需要在pandas中转换为字符串。
代码如下:
import pandas as pd
from openpyxl import load_workbook
# # 读取特定区域的数据
# data = worksheet['Y57'].value
# excel_path = r'D:\GZlab_W_AQY\实验记录\荧光素酶报告结果\C11-PerKinElmer-Luc\AQY\2023.5.21\汇总5.22-60per.xlsx'
excel_path = r"D:\GZlab_W_AQY\实验记录\荧光素酶报告结果\C11-PerKinElmer-Luc\AQY\2023.5.21\分析5.22\汇总5.22.xlsx"
excel_path = r"D:\GZlab_W_AQY\实验记录\荧光素酶报告结果\C11-PerKinElmer-Luc\AQY\2023.5.21\分析5.22\test\W384-60p.xlsx"
# 读取Excel文件中的数据
workbook = pd.read_excel(excel_path, sheet_name=None)
# print(workbook)
# 根据工作表名称或索引获取数据
data_frames = []
# # 获取工作表
# worksheet = workbook['Sheet1']
# 获取行号和列号
row = 57
column = 25
for sheet_name, sheet_data in workbook.items():
print("\n\n",sheet_name)
pd2 = sheet_data.loc[40:56,2:22]
data_frames.append(pd2)
print("\n\n",pd2)
# pd2.to_excel('W384-FDA-hit60-extract-2023.5.23.xlsx', sheet_name=sheet_name, index=True)
# 合并数据集
# merged_df = pd.concat(data_frames, ignore_index=True)
excel_outpath = r'test.xlsx'
book = load_workbook(excel_outpath)
index=0
with pd.ExcelWriter(excel_outpath) as wr:
data_frames[0].to_excel(wr,sheet_name="p0",index=False)
data_frames[1].to_excel(wr,sheet_name="p1",index=False)
data_frames[2].to_excel(wr,sheet_name="p2",index=False)
data_frames[3].to_excel(wr,sheet_name="p3",index=False)
data_frames[4].to_excel(wr,sheet_name="p4",index=False)
data_frames[5].to_excel(wr,sheet_name="p5",index=False)
data_frames[6].to_excel(wr,sheet_name="p6",index=False)
data_frames[7].to_excel(wr,sheet_name="p7",index=False)
data_frames[8].to_excel(wr,sheet_name="p8",index=False)
data_frames[9].to_excel(wr,sheet_name="p9",index=False)
# data_frames[].to_excel(wr,sheet_name="p3",index=False)
# data_frames[3].to_excel(wr,sheet_name="p3",index=False)
# index = index +1
# a='{}'.format(index)
# for i in data_frames:
# i.to_excel(writer,sheet_name= a,index=False)
# merged_df =pd.DataFrame(pd.array(data_frames))
2. 设定阈值,找出HIt值,抽取 W384测试孔读值区域存到新的文件夹中
计算阳性和阴性对照的平均值,确定阈值
蓝色为阳性平均值
绿色为阴性平均值
红色箭头为筛选阈值,计算公式为=(X39-B39)*AB38+B39
将不满足条件的孔赋值为 -1
![](https://img.haomeiwen.com/i20692894/c93617127d8f61ef.png)
![](https://img.haomeiwen.com/i20692894/128d58895f2a6aaa.png)
3. 根据阈值,筛选Hit,组合行列名和相应的读值到新的Excel中,形成Hit list 进行下一步分析和验证。
![](https://img.haomeiwen.com/i20692894/c386c747192f5776.png)
正式筛选10快板的代码如下:
import pandas as pd
from openpyxl import load_workbook
# excel_path = r"D:\GZlab_W_AQY\实验记录\荧光素酶报告结果\C11-PerKinElmer-Luc\AQY\2023.5.21\分析5.22\正式分析\Origin_data_5.22_analysis_60per.xlsx"
excel_path = r"D:\GZlab_W_AQY\实验记录\荧光素酶报告结果\C11-PerKinElmer-Luc\AQY\2023.5.21\分析5.22\正式分析\Origin_data_5.22_analysis_75per.xlsx"
# 读取原始Excel文件中的数据
workbook = pd.read_excel(excel_path, sheet_name=None)
# print(workbook)
# 根据工作表名称或索引获取数据
data_frames = []
for sheet_name, sheet_data in workbook.items():
pd2 = sheet_data.loc[40:56,2:22]
data_frames.append(pd2)
# 合并数据集
# merged_df = pd.concat(data_frames, ignore_index=True)
excel_outpath = excel_path[:-5] + "extract_df.xlsx"
# 新建文件
# 创建一个空文件
demo = pd.DataFrame()
demo.to_excel(excel_outpath)
book = load_workbook(excel_outpath)
index=0
with pd.ExcelWriter(excel_outpath) as wr:
data_frames[0].to_excel(wr,sheet_name="p0",index=False)
data_frames[1].to_excel(wr,sheet_name="p1",index=False)
data_frames[2].to_excel(wr,sheet_name="p2",index=False)
data_frames[3].to_excel(wr,sheet_name="p3",index=False)
data_frames[4].to_excel(wr,sheet_name="p4",index=False)
data_frames[5].to_excel(wr,sheet_name="p5",index=False)
data_frames[6].to_excel(wr,sheet_name="p6",index=False)
data_frames[7].to_excel(wr,sheet_name="p7",index=False)
data_frames[8].to_excel(wr,sheet_name="p8",index=False)
data_frames[9].to_excel(wr,sheet_name="p9",index=False)
# 读取提取 df读板数据区域的新excel
workbook = pd.read_excel(excel_outpath, header=0, index_col=0, sheet_name=None)
data_frames = []
for sheet_name, sheet_data in workbook.items():
data_frames.append(sheet_data)
# 抽提符合条件的板孔的板孔定位名称
def extract_name(df,pindex):
df.columns = df.columns.map(str)
# df[df >= 0 ]
dfrs=[]
for dfr in df.iterrows():
dfrs.append(dfr)
list = []
listn = []
for i in range(len(dfrs)):
for index,value in dfrs[i][1].items():
# print(dfrs[i][1][index])
if dfrs[i][1][index] >= 0:
strn = 'P' + str(pindex + 1) + '-' + str(dfrs[i][0]) + str(index)
listn.append(strn)
list.append(dfrs[i][1][index])
dfn = pd.DataFrame(listn)
dfv = pd.DataFrame(list)
result = pd.concat([dfn, dfv], axis=1)
return result
pindex = 0
result = pd.DataFrame()
for dfs in data_frames:
rs = extract_name(dfs,pindex)
result = pd.concat([result, rs])
pindex = pindex + 1
# print(result)
out_sheet_name_filename = excel_outpath[:-5] + "-all-sheet_name.xlsx"
result.to_excel(out_sheet_name_filename,index=False,header=None)
文件夹
![](https://img.haomeiwen.com/i20692894/66d0335bd7460ea6.png)
网友评论