Python 协同矩阵计算

Synergy_Matrix_pandas_csv.py
机器检测获取原始数据 A549ZT2b- A:Riba B:FDA
W384 FLuc PE e86-4_Fluc
两个重复

CPDA    10      3       1       0.3     0.1     0   
10  4780    5530    32100   28820   163520  209300  248850  249590  259310  325660  335570  368230
3   96340   100830  187000  160690  366850  401390  496680  554270  507860  624260  573330  665090
1   154250  154640  253970  264960  482270  528830  550620  641530  478160  480540  588860  639440
0   232510  246640  292390  327710  455540  436800  404140  519110  539170  516010  732670  669020

平均处理

Matrix  CPDA-10uM   CPDA-3uM    CPDA-1uM    CPDA-0.3uM  CPDA-0.1uM  CPDA-0uM
RIba-10uM   5155    30460   186410  249220  292485  351900
RIba-3uM    98585   173845  384120  525475  566060  619210
RIba-1uM    154445  259465  505550  596075  479350  614150
RIba-0uM    239575  310050  446170  461625  527590  700845

matrix_demo.xlsx 文件内容如下:

Matrix  0   1   2   3   4   5
RIba-10uM   5155    30460   186410  249220  292485  351900
RIba-3uM    98585   173845  384120  525475  566060  619210
RIba-1uM    154445  259465  505550  596075  479350  614150
RIba-0uM    239575  310050  446170  461625  527590  700845

矩阵A : 实际矩阵
对照 RIba-0 CPDA-0uM 即最后一行一列的单元格为 阴性对照(相对于药物)Neg
计算每一个单元格的抑制率: (Neg-test)/Nge * 100%
计算结果填充到新的矩阵中:

矩阵B: 理论矩阵
获取单药抑制率 作为两个列表, 最后一行(Riba单药抑制率) 和最后一列(CPDA单药抑制率)
进行理论叠加效用抑制率计算: IA + IB - (IA * IB)

矩阵C: 协同矩阵
将实际矩阵-理论矩阵即为协同矩阵,单元格大于0 的称为有协同作用

运算控制台打印

理论矩阵
           0         1         2         3         4         5
0  0.828361  0.777870  0.680349  0.669277  0.622017  0.497892
1  0.697980  0.609136  0.437536  0.418053  0.334894  0.116481
2  0.700448  0.612330  0.442133  0.422809  0.340330  0.123701
3  0.658163  0.557605  0.363383  0.341331  0.247209  0.000000
实际矩阵
           0         1         2         3         4         5
0  0.992645  0.956538  0.734021  0.644401  0.582668  0.497892
1  0.859334  0.751949  0.451919  0.250227  0.192318  0.116481
2  0.779630  0.629783  0.278656  0.149491  0.316040  0.123701
3  0.658163  0.557605  0.363383  0.341331  0.247209  0.000000
协同矩阵
           0         1         2         3         4    5
0  0.164284  0.178668  0.053672 -0.024876 -0.039349  0.0
1  0.161354  0.142813  0.014382 -0.167827 -0.142577  0.0
2  0.079182  0.017453 -0.163476 -0.273318 -0.024290  0.0
3  0.000000  0.000000  0.000000  0.000000  0.000000  0.0

代码如下:

import pandas as pd
import numpy as np
import os
homePath = os.path.dirname(os.path.abspath(__file__))
os.chdir(homePath)
def load_csv(path):
    data_read = pd.read_csv(path,header=None)
    print(data_read)
    # list = data_read.values.tolist()
    # data = np.array(list)
    # print(data.shape)
    # print(data)
    # return data


# csv_path = r"./matrix_demo.csv"
excel_path = r"./matrix_demo.xlsx"
# load_csv(csv_path)

df = pd.read_excel(excel_path)

print(df)
df = df.loc[0:3,:]
df2 = df.iloc[:,1:7]
print(df)
print(df2)
print(df2.shape)

Neg = df2.iloc[-1,-1]
print(Neg)

# df3 = df2.map(lambda x: (Neg-x)/Neg, na_action='ignore')
# print(df3)


# 计算 Icell  细胞实验实际抑制率 矩阵 df3
df3 = df2.apply(lambda x: (Neg-x)/Neg)
print(df3)

# 获取最后一列 作为A药 RIba的单药抑制率
dfA = df3.iloc[:,-1]

# 获取最后一行 作为B药 FDA特定药物的单药抑制率
dfB=df3.iloc[-1,:]

print(dfA)
print(dfB)

a = list(dfA)
b = list(dfB)
ma=[]
mc=[]
s=0
for i in a:
    for j in b:
        s = i+j -(i*j)
        print(s)
        ma.append(s)
    mc.append(ma)
    ma=[]
print(mc)
df2w = pd.DataFrame(mc)
print("理论矩阵\n",df2w)
print("实际矩阵\n",df3)

dfd = df3-df2w
print("协同矩阵\n",dfd)

# 将数据写入Excel文件
dfd.to_excel('./output.xlsx', sheet_name='Sheet1')
# df.to_excel('output.xlsx', sheet_name='Sheet1', index=False)


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容