当前位置: 首页 > news >正文

Python药物副作用生物图分析算法和矩阵降维算法

🎯要点

🎯人体疾病模块网络结构位置与病理生物学关系 | 🎯药物与药物靶点相互作用 | 🎯细胞和蛋白质之间的作用分层 | 🎯疾病和症状之间的联系 | 🎯药物与副作用之间的联系 | 🎯生物学分析

📜图分析用例

📜Python鲁汶意外莱顿复杂图拓扑分解算法

🍪语言内容分比

在这里插入图片描述
在这里插入图片描述

🍇Python药物副作用数学矩阵降维算法

预测药物效应在药物研发中非常重要,而药物研发是制药科学的主要目标。关于已批准药物的安全性、有效性和耐受性,有大量信息可用,这可以最大限度地减少预测新药效应所需的费用和时间。

药物数据准备

  • 药物蛋白质矩阵
  • 药物疾病矩阵
  • 药物和蛋白质相似性核

在本研究中,观察到的标签矩阵用 Y ∈ R m × n Y \in R ^{m \times n} YRm×n表示,其中 m m m n n n分别是药物和靶标的数量。每个元素用 y i j ∈ y_{i j} \in yij { − 1 , 0 , + 1 } \{-1,0,+1\} {1,0,+1}表示,其中+1表示正标签,-1表示负标签,0表示缺失标签。我们将交互矩阵 Y Y Y 分解为两个低秩潜在特征矩阵 U ∈ R m × k U \in R ^{m \times k} URm×k V ∈ R n × k V \in R ^{n \times k} VRn×k,其中 k k k 是潜在特征向量的维度。我们假设 Y Y Y可以用 U U U V V V的乘积来表示,如下:
arg ⁡ min ⁡ U , V ∥ R ∘ ( Y − U V T ) ∥ F 2 \underset{ U , V }{\arg \min }\left\| R ^{\circ}\left( Y - U V ^T\right)\right\|_F^2 U,Vargmin R(YUVT) F2
其中 ∥ ⋅ ∥ F \|\cdot\|_F F 表示 Frobenius 范数, ∘ { }^{\circ} 表示两个矩阵的 Hadamard 乘积。设 R ∈ R m × n R \in R ^{m \times n} RRm×n为指示矩阵,其中当 y i j = 1 y_{i j}=1 yij=1 r i j = p w r_{i j}=p w rij=pw,当 y i j = − 1 y_{i j}=-1 yij=1时, r i j = n w r_{i j}=n w rij=nw,否则为0。请注意, p w p_w pw n w n w nw 分别是正标签和负标签的权重,默认值都是 1 。由于 R R R的存在,我们只关注正标签和负标签,缺失标签并不会导致任何损失。

药物邻域信息采用邻接矩阵𝐀表示,其元素定义如下:
A i , μ = { S i , μ d if  d μ ∈ N ( d i ) 0 否则  A _{i, \mu}=\left\{\begin{array}{cc} S_{i, \mu}^d & \text { if } d _\mu \in N\left(d_{ i }\right) \\ 0 & \text { 否则 } \end{array}\right. Ai,μ={Si,μd0 if dμN(di) 否则 
其中 N ( d i ) N\left(d_{ i }\right) N(di) 是通过选择 K 1 K_1 K1 个与 d i d _{ i } di 最相似的药物来构建的。药物靶标效应邻域信息 B B B可以类似地定义如下:
B j , v = { S j , v t if  d v ∈ N ( t j ) 0 否则  B _{j, v}=\left\{\begin{array}{cc} S_{j, v}^t & \text { if } d _v \in N\left( t _{ j }\right) \\ 0 & \text { 否则 } \end{array}\right. Bj,v={Sj,vt0 if dvN(tj) 否则 
最小化潜在空间中 d i d _{ i } di 与其最近邻 N ( d i ) N\left(d_{ i }\right) N(di) 之间距离的目标函数如下:
α 2 ∑ i = 1 m ∑ μ = 1 m A i , μ ∥ u i − u μ ∥ F 2 = α 2 tr ⁡ ( U T L d U ) \frac{\alpha}{2} \sum_{i=1}^m \sum_{\mu=1}^m A _{i, \mu}\left\| u _i- u _\mu\right\|_F^2=\frac{\alpha}{2} \operatorname{tr}\left( U ^T L ^d U \right) 2αi=1mμ=1mAi,μuiuμF2=2αtr(UTLdU)

Python伪码算法实践:

import pandas as pd
import numpy as np
from collections import defaultdict
from tqdm import tqdm
import sys
from _utils import performance_compare as pc
df = pd.read_csv(base_dir + '/Data/table.csv',index_col=0)
drugMat = pd.read_csv(base_dir + '/Data/sim.csv',index_col=0)
diseaseMat = pd.read_csv(base_dir + '/Data/sim.csv',index_col=0)ind_bi = pd.read_csv(base_dir + '/Data/binary.csv',index_col=0)
se_bi = pd.read_csv(base_dir + '/Data/binary.csv',index_col=0)
use_ind = ind_bi[df.columns.tolist()].loc[df.index.tolist()]
use_se = se_bi[df.columns.tolist()].loc[df.index.tolist()]drug2name = pd.read_pickle(base_dir + '/Data/name.pkl')
list(drug2name.keys())[0]
name2pt = pd.read_pickle(base_dir + '/Data/cui.pkl')drugs = df.index.tolist()
diseases = df.columns.tolist()ann_ind = [drug2name.get(k) for k in drugs]
ann_col = [pt2name.get(k) for k in diseases]df.index = ann_ind
df.columns = ann_coldrugMat.index = ann_ind
drugMat.columns = ann_inddiseaseMat.index = ann_col
diseaseMat.columns = ann_coluse_ind.index = ann_ind
use_ind.columns = ann_coluse_se.index = ann_ind
use_se.columns = ann_col
  • 预测副作用的化合物
cv_data = defaultdict(list)idx = df.columns.tolist().index(r)
intMat = np.array(df.T)
num_drugs,num_disease = intMat.T.shape
test_data = np.array([[k,j] for k in [idx] for j in range(num_drugs)],dtype=np.int32)
x,y = test_data[:,0], test_data[:,1]
test_label = intMat[x,y]
W = np.ones(intMat.shape)
W[x,y] = 0
cv_data[ann_col[idx]].append((W,test_data,test_label))for W, test_data, test_label in cv_data[r]:model = nrbdmf.NRBdMF(K1=5,K2=5,num_factors=50,theta=1.0,lambda_d=0.625,lambda_t=0.625,alpha=0.1,beta=0.1, max_iter=5000,tolx=1e-5,positive_weight=0.1,negative_weight=0.1,missing_base=0,indicator=True,half_mask=False,verbose=False)model.fix_model(W, np.array(df).T, diseaseMat, drugMat, seed=123)posi_val,nega_val = model.ex_evaluation(test_data, test_label)print(posi_val,nega_val)# processing outputpred_res = model.pred_respred_res.index = df.index.tolist()se_label = use_se[r].tolist() # side effect binary label (before merging)pred_res['se_label'] = se_labelind_label = use_ind[r].tolist()pred_res['ind_label'] = ind_labelpred_res['name'] = pred_res.index.tolist()pred_res = pred_res.sort_values('scores',ascending=False)auroc, aupr = nrbdmf.calc_auc_aupr(y_true=pred_res['se_label'].tolist(), y_score=pred_res['scores'].tolist(),title=r)
  • 预测某种化合物产生的副作用
cv_data = defaultdict(list)
idx = df.index.tolist().index(r)
intMat = np.array(df)
num_drugs,num_disease = intMat.T.shape
test_data = np.array([[k,j] for k in [idx] for j in range(num_drugs)],dtype=np.int32)
x,y = test_data[:,0], test_data[:,1]
test_label = intMat[x,y]
W = np.ones(intMat.shape)
W[x,y] = 0
cv_data[ann_ind[idx]].append((W,test_data,test_label))for W, test_data, test_label in cv_data[r]:model = nrbdmf.NRBdMF(K1=5,K2=5,num_factors=50,theta=1.0,lambda_d=0.625,lambda_t=0.625,alpha=0.1,beta=0.1, max_iter=5000,tolx=1e-5,positive_weight=0.1,negative_weight=0.1,missing_base=0,indicator=True,half_mask=False,verbose=False)model.fix_model(W, np.array(df), drugMat, diseaseMat, seed=123)posi_val,nega_val = model.ex_evaluation(test_data, test_label)print(posi_val,nega_val)pred_res = model.pred_res    pred_res.index = df.columns.tolist()se_label = use_se.loc[r].tolist() pred_res['se_label'] = se_labelind_label = use_ind.loc[r].tolist()pred_res['ind_label'] = ind_labelpred_res['name'] = pred_res.index.tolist()pred_res = pred_res.sort_values('scores',ascending=False)auroc, aupr = nrbdmf.calc_auc_aupr(y_true=pred_res['se_label'].tolist(), y_score=pred_res['scores'].tolist(),title=r)

👉参阅、更新:计算思维 | 亚图跨际

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 2022.11.17 阿里钉钉数据开发岗位一面
  • PyEcharts知识点详解(每张图都有!)(巨详细!!)
  • BGP路由反射器
  • Apache Doris + Paimon 快速搭建指南|Lakehouse 使用手册(二)
  • mysql字符类型字段设置默认值为当前时间
  • react配置代理的3中方法
  • 9. 机器学习汇总(数据、模型、流程、心血管疾病预测)
  • 编程类精品GPTs
  • 05 循环神经网络
  • Webpack 5 Tree Shaking与Module Federation
  • 【管控业财一体化】
  • k8s核心知识总结
  • 构造函数的详解和new操作符
  • 项目架构知识点总结
  • 计算机网络(四)数字签名和CA认证
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • canvas绘制圆角头像
  • CSS居中完全指南——构建CSS居中决策树
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • GraphQL学习过程应该是这样的
  • JAVA 学习IO流
  • JavaScript实现分页效果
  • JS+CSS实现数字滚动
  • NSTimer学习笔记
  • Selenium实战教程系列(二)---元素定位
  • vue的全局变量和全局拦截请求器
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 仿天猫超市收藏抛物线动画工具库
  • 给github项目添加CI badge
  • 关于字符编码你应该知道的事情
  • 后端_ThinkPHP5
  • 欢迎参加第二届中国游戏开发者大会
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 收藏好这篇,别再只说“数据劫持”了
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 协程
  • 优秀架构师必须掌握的架构思维
  • 怎么把视频里的音乐提取出来
  • 正则表达式
  • ​低代码平台的核心价值与优势
  • ​力扣解法汇总946-验证栈序列
  • ​批处理文件中的errorlevel用法
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • #define 用法
  • #如何使用 Qt 5.6 在 Android 上启用 NFC
  • (12)Hive调优——count distinct去重优化
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (pojstep1.1.2)2654(直叙式模拟)
  • (ros//EnvironmentVariables)ros环境变量
  • (STM32笔记)九、RCC时钟树与时钟 第一部分
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (四)opengl函数加载和错误处理