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)

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3281139.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

年过30年程序员,到底要不要考虑搞点副业

一、前言 作为一名年过三十的程序员,我深刻体会到了职场的残酷和不确定性。在这个技术日新月异的时代,我们不仅要在专业领域深耕细作,更要敏锐地捕捉互联网的风口,以确保自己不被时代淘汰。程序员的黄金年龄似乎被限定在35岁之前…

事务性邮件api接口服务怎么选?怎么集成?

事务性邮件API接口安全性如何保障?API接口调用方法? 在现代企业的运营中,事务性邮件是确保信息及时传达和用户体验的关键环节。AokSend将探讨如何选择合适的事务性邮件API接口服务,以及如何有效地集成这些服务。 事务性邮件api接…

MongoDB下载与基本使用(mac图文详解)

目录 一、下载安装 1.1 官网下载mongoDB 1.1.1 mongoDB 1.1.2 MongoDB GUI 1.2 下载流程 二、基本使用 2.1 创建数据库和集合 2.2 插入 2.3 查询 2.4 修改 2.5 删除 三、case 3.1 销售case 3.1.1 实操 3.1.2 全部指令汇总 背景: 个人练习用 一、下…

《计算机网络》(第8版)第九章 无线网络和移动网络 复习笔记

第九章 无线网络和移动网络 一、无线局域网 WLAN 1 无线局域网的组成 无线局域网提供移动接入的功能,可分为两大类:有固定基础设施的和无固定基础设 施的。 (1)IEEE 802.11 IEEE 802.11 是无线以太网的标准,是有固定…

MySQL安装教程(保姆级)

1. 首先要了解自己的计算机 打开设置——系统——系统信息 然后就可以知道自己计算机的类型了。 2. 下载MySQL 2.1. 来到MySQL官网 点击进入 我们下拉页面,可以找到DOWNLOADS 页面默认给咱们选择最新的版本,咱们不用,咱们尽量选一个稳定的版…

Linux的防火墙

一、防火墙概述 防火墙是一种计算机硬件和软件的结合,使internet和intranet之间建立一个安全网关(Security Gateway),从而保护内网免受非法用户侵入的技术。 防火墙主要由服务访问规则、验证工具、包过滤和应用网关4个部分组成。…

绝密!OceanBase OBCP备考模拟题讲解(2)

「源de爸讲数据库」每天更新OceanBase OBCP题库及全网独家超详细题目解析,祝您早日持证上岸! 现如今,一大批国产数据库随着国产化浪潮,已经逐步被越来越多的人认可。OceanBase便是其中一个优秀代表。 做这个日更专题,…

easy_Maze

结合题目,知道是一道迷宫题型 那么我们要做的就是 1.找到迷宫 2.确定方向(一般为wasd,但是可能会改) 3.确定起点 4.确定终点 // TAGS: dict_keys([spawn]) int __cdecl main(int argc, const char **argv, const char **envp) {__int64 v3; // raxint v5[49]; // [rsp0h]…

HCIA总结

一、情景再现:ISP网络为学校提供了DNS服务,所以,DNS服务器驻留在ISP网络内,而不再学校网络内。DHCP服务器运行在学校网络的路由器上 小明拿了一台电脑,通过网线,接入到校园网内部。其目的是为了访问谷歌网站…

【ROS 最简单教程 002/300】ROS 集成开发环境安装: Noetic

💗 有遇到安装问题可以留言呀 ~ 当时踩了挺多坑,能帮忙解决的我会尽力 ! 1. 安装操作系统环境 Linux ❄️ VM / VirtualBox Ubuntu20.04 如果已有 linux 环境 (如双系统等),可跳过步骤 1 ~ 👉 保姆级图文安装教程指路…

微服务事务管理(分布式事务问题 理论基础 初识Seata XA模式 AT模式 )

目录 一、分布式事务问题 1. 本地事务 2. 分布式事务 3. 演示分布式事务问题 二、理论基础 1. CAP定理 1.1 ⼀致性 1.2 可⽤性 1.3 分区容错 1.4 ⽭盾 2. BASE理论 3. 解决分布式事务的思路 三、初识Seata 1. Seata的架构 2. 部署TC服务 3. 微服务集成Se…

P3501 [POI2010] ANT-Antisymmetry 反对称 题解(字符串哈希+二分)

原题 题意 若一个由 01 01 01组成的字符串将 0 0 0和 1 1 1取反,并倒过来后与原字符串相同,则称为反对称字符串。现在给你一个长度为 n ( n ≤ 1 0 5 ) n(n \le 10^5) n(n≤105) 01 01 01组成的字符串,求它有多少个反对称子串。&#xff08…

Prometheus-部署

Prometheus-部署 Server端安装配置部署Node Exporters监控系统指标监控MySQL数据库监控nginx安装grafana Server端安装配置 1、上传安装包,并解压 cd /opt/ tar xf prometheus-2.30.3.linux-amd64.tar.gz mv prometheus-2.30.3.linux-amd64 /usr/local/prometheus…

npm install报错原因记录:npm ERR! code ENOENT

报错原因:路径打开错了,你需要在package.json这个文件的文件夹目录打开终端执行命令才行。 比如我的前端项目中,package.json项目在back-system-font-ts文件下,我就需要右击该文件,从该目录打开终端才有用

【前端】(仅思路)如何在前端实现一个fc手柄,将手机作为游戏手柄设备。

文章目录 背景界面demo遇到的问题最终后端demo(甚至比前端逻辑更简单) 背景 突发奇想,想要在前端实现一个fc游戏手柄,然后控制电脑的nes模拟器玩玩魂斗罗。 思路很简单,前后端使用websocket通信,connected标识socket链接已建立&a…

【Vulnhub系列】Vulnhub_Dr4g0n_b4ll 靶场渗透(原创)

【Vulnhub系列靶场】Vulnhub_Dr4g0n_b4ll靶场渗透 原文转载已经过授权 原文链接:Lusen的小窝 - 学无止尽,不进则退 (lusensec.github.io) 一、环境搭建 选择打开.ovf 文件 配置名称和路径 打开后调整网络连接模式为【NAT】即可 二、信息收集 1、主机…

RTC实时通信技术:GPT-4o急速响应背后的技术浅谈

RTC实时通信技术:GPT-4o急速响应背后的技术浅谈 RTC实时通信技术概述 RTC(Real Time Communication),即实时通信技术,是实时音视频通信的简称。其核心在于实现低延迟、高质量的音视频数据传输和处理,广泛…

2024华为数通HCIP-datacom最新题库(H12-831变题更新⑧)

请注意,华为HCIP-Datacom考试831已变题 请注意,华为HCIP-Datacom考试831已变题 请注意,华为HCIP-Datacom考试831已变题 近期打算考HCIP的朋友注意了,如果你准备去考试,还是用的之前的题库,切记暂缓。 1、…

2024-7-28-CAJ转换器

🍿*★,*:.☆( ̄▽ ̄)/$:*.★* 🍿 💥💥💥欢迎来到🤞汤姆🤞的csdn博文💥💥💥 💟💟喜欢的朋友可以关注一下&#xf…