简介网络药理学将传统“一药一靶”的研究范式拓展为“一药多靶一网”借助虚拟筛选与分子对接技术在计算层面快速预测化合物与潜在靶点之间的相互作用。其核心原理是基于化合物结构特征与已知蛋白数据库进行反向匹配并通过通路富集分析将散在靶点映射到生物学功能模块从而构建“药物-靶点-通路”层级网络。这套方法的价值在于显著降低实验试错成本尤其适用于中药复方机制解析、天然产物作用靶点预测等研究场景。完整的虚拟筛选流程涵盖分子结构准备、靶点评分过滤、UniProt编号转换及Cytoscape网络图构建每一步的格式规范与参数选择都直接影响后续富集结果的可靠性。针对上传报错、Fit值偏低、通路全空等高频问题也提供了可落地的排查思路。1. 网络药理学筛选方法从“一药一靶”变成“一药多靶一网”网络药理学这几年在中药复方和天然产物机制研究里几乎成了标配。它的核心不是把药物和靶点一对一地找出来而是把化合物、靶点、通路放到一张网络里看药物到底影响了哪些生物学模块。对做药物机制、药效物质基础或者毒理预测的人来说这套方法最大的价值在于不用做大规模湿实验也能在短时间内产出一张有逻辑的“药物-靶点-通路”关系网给后续验证提供候选方向。经常有研究者问我拿到一个化合物除了查文献还有什么办法判断它的作用靶点我一般建议直接走一遍虚拟筛选。用分子结构去匹配已知蛋白库用富集分析把靶点映射到通路上再用网络图把层级关系画出来。整个过程涉及的工具不少但逻辑是固定的。这篇文章按最常见的一套筛选流程来拆分子准备、靶点预测、通路富集、Cytoscape网络图。每一段都会讲清楚操作步骤、参数依据和容易踩的坑。适合刚接触网络药理学、打算用公共数据库做机制预测的从业者也适合想把手头化合物快速跑通整套流程的同行参考。2. 先定研究思路两种数据驱动模式与四步筛选主线2.1 基于公共数据库的预测建模网络药理学第一种研究思路是从公共数据库和已发表的数据出发建立“药物-靶点-疾病”预测网络。这个思路的核心逻辑是既然药物作用的靶点在数据库中已经积累了大量实验证据那么新的化合物只要结构上能与这些已知靶点产生相互作用就可以被预测为潜在靶点。换句话说这一步是在用已知知识“猜”未知关系猜测的质量取决于数据库覆盖面和匹配算法的精度。实际操作中这条路线依赖的外部数据包括化合物结构库、蛋白三维结构库、药物-靶点相互作用库等。把化合物结构提交到在线靶点预测平台平台用反向分子对接或药效团映射的方式逐一比对库中所有已知靶点返回每个靶点的匹配打分。这里有两个容易混淆的概念反向对接跟正向对接不一样正向对接是拿蛋白筛化合物反向对接反过来是拿化合物筛蛋白。网络药理学里的靶点筛选用的就是反向对接的逻辑。这种做法的优势是快几乎当天就能拿到几十个候选靶点劣势也很明显计算匹配和真实实验验证之间还有相当距离假阳性率偏高。因此一般建议在预测结果上加一层过滤优先选择与疾病适应症直接相关的靶点再对照已有文献验证哪些靶点有药理学支持。这一步“人肉判断”虽然不增加计算量但能把明显不合理的靶点提前排除后面通路富集的结果也会更干净。2.2 基于组学数据的机制解析第二种思路是自下而上的实验驱动路线通过转录组、蛋白组等高通量组学技术观察药物处理前后模型分子、细胞、组织或动物中的表达变化再用生物信息学方法去构建网络。和第一种思路比它更贴近真实生物学但实验成本高数据分析复杂得多。具体操作上先做差异表达分析常用阈值是P值小于0.05、|log2FC|大于1由此得到差异基因集。然后做通路富集看这个基因集集中在哪些信号通路。最后把“药物—靶点/差异基因—通路”拼接成网络。和第一种思路的差别在于数据的来源是自己的实验而不是公共数据库所以统计假设和实验设计都会直接影响网络质量。对刚接触网络药理学的人而言第一种思路更适合作为入手点因为它不依赖高通量实验设备和长时间的数据分析周期。但等手里有了一些基础数据后用第二种思路做验证和补充往往比单纯计算预测更有说服力。两种思路在实践中不是二选一经常互为前后手先用公共数据库预测再用组学数据回填和校验最后汇成一张网络图。这个“混搭”用法在不同项目里很常见也是目前网络药理学论文里比较稳的策略。对比两种思路可以从数据来源、主要工具、时间成本和假阳性风险几个角度看我给一个简单的对照表维度公共数据库预测建模组学数据机制解析数据来源公共数据库与文献自己做的组学实验主要工具对接平台、靶点预测服务差异分析、富集分析工具时间成本数天数周到数月假阳性风险较高较低但噪声多适用场景初步探索、候选靶点挖掘机制验证、论文数据支撑这个对照表也是选路线的依据时间紧就选第一种要做深机制就选第二种。两条路线最后的落点都是“药物-靶点-通路”网络差别只在前期的数据来源不同。2.3 虚拟筛选四步主线分子→靶点→通路→网络图无论选哪种思路虚拟筛选是有固定流程的至少四个环节准备待筛选分子、靶点筛选、通路筛选、网络药理图绘制。这个顺序不是随便定的每一步的输出恰好是下一步的输入环环相扣。前面任何一个环节出了格式问题后面的富集和作图都会受到牵连。第一步把分子结构转成标准格式sdf。大多数靶点预测平台接收sdf或mol这也是目前交换分子结构最通用的格式之一。第二步把sdf提交到在线靶点预测平台得到靶点列表和打分。这里要求的是单分子提交一次一个结构。第三步把靶点蛋白代码转换成标准蛋白编号再提交到通路富集平台得到靶点显著富集的通路。这里有个隐藏门槛不同平台对编号格式的要求不统一转换时很容出错。第四步把“化合物-靶点”和“靶点-通路”两类关系合在同一个Excel表中导入网络绘图软件做可视化布局。整套流程的计算压力其实不大靶点预测和通路富集靠服务器算力本地电脑只承担结构绘制、表格整理和作图。真正耗费时间的反而是数据整理几十个靶点逐一转换蛋白编号这类琐碎工作我会用批量检索而不是手动逐个点。格式衔接是这条流程最容易翻车的地方分子格式不对、靶点名称多一个空格都会让后续步骤反复返工。把这条主线拆清楚后面每个环节的细节才能对得上。3. 靶点筛选实操从SDF分子文件到Fit值打分3.1 分子结构准备绘图、SDF格式与文件自检靶点筛选的第一步是把化合物结构转成靶点预测平台能读的sdf文件。常见做法是用ChemBioOffice 2008以上版本画好二维结构再另存为sdf格式也有不少人直接从PubChem等公共化合物库下载sdf文件甚至从文献的补充材料里拿现成的MOL文件再转换。无论来源是哪种最终交给靶点预测平台的文件必须格式规范。sdf是一种分子结构存储的标准文本格式每个化合物以块为单位包含原子坐标、键连接信息和可选字段。大多数靶点预测平台接收sdf或mol格式。这里有个关键点一个sdf文件里只能存一个结构如果手里有多个分子要拆成多个文件逐一提交平台不会接受混合文件。有些人习惯把整批分子塞进一个sdf里图省事结果上传后平台只读取第一个分子后面的靶点全丢这个坑我见过不少次。提交前我习惯先用命令行看一眼文件内容避免文件损坏或内容不对。在Linux或macOS终端里一条head命令就能看到文件头head -20 compound.sdf如果输出里能看到原子行原子符号加三个坐标数字说明文件可用如果打开是乱码或全是空行多半是文件损坏回绘图软件重新导出。还要注意分子电荷和氢原子状态画结构时把溶剂分子或金属离子也画进去会导致匹配出一堆无关靶点因为这些原子会被平台当作结构的一部分去参与打分。这条命令的作用是查看sdf文件前20行确认格式是纯文本且内容非空。sdf的原子块行通常是“原子符号坐标X坐标Y坐标Z”的排列前20行出现坐标就说明结构体正常。head的参数-n也可以换成5或50只看头部关键几行就够不需要读完整文件。这个自检习惯能省掉后续上传失败时反复改文件的来回值得每次提交前花三十秒走一遍。3.2 在线靶点预测一次只传一个分子Job ID当密码分子文件准备好之后提交到在线靶点预测平台。这类平台的流程基本一致上传分子结构后台做反向对接或药效团匹配返回靶点列表及打分。我的经验是每次只提交一个分子不要试图批量操作因为绝大多数平台对单次任务有明确的文件粒度限制。操作顺序是打开靶点预测服务页面选择浏览文件把sdf传上去提交后系统给一个Job ID。这个Job ID是下载结果的“密码”在结果页找回列表必须靠它记不住就只能重新提交。页面刷新后可以从已提交列表里找但提交记录不会永久保留隔几天再来看可能已经被清理掉。所以拿到Job ID的第一件事就是写进实验记录不要依赖记忆。结果下载通常包含两个内容靶点名称列表带物种信息和靶点蛋白代码和对应的匹配打分。拿到结果后先过滤一遍把打分低于0的靶点直接删掉。负分意味着空间匹配不成立这部分在计算上没有参考意义留在列表里只会污染后续通路富集的结果。我自己通常会在Excel里加一个辅助列用筛选功能把Fit值为负的行全部隐藏再复制一份干净列表给后面步骤用。3.3 Fit值怎么读匹配度不是结论平台返回的每个靶点都带Fit值代表分子和靶点的匹配程度数值越高越好。多数情况下Fit值大于0.5左右就可以进入候选集合但具体阈值不能死守要结合候选数量动态调整。如果一批靶点分数都低先把最高分那批记录下来再和已知文献比对看是否落在合理范围。Fit值的绝对高低受到分子大小、结构柔性等因素影响不同分子之间直接比Fit值参考意义不大同分子内排序筛选才是正确用法。Fit值高不等于这个靶点在真实生物环境里一定响应这个分子。分子在体内还要过吸收、分布、代谢几道关计算只代表“结构上能匹配”。所以我的习惯是取Fit值前20的靶点再从里面排除掉与疾病完全无关的靶点剩下的按排序进入通路富集。这个前处理会让后面富集分析少很多噪声不多花时间但效果明显。同时下载结果时务必把human相关靶点筛出来后面的通路富集数据库对人类通路注释最完善也最贴近药物作用的生物学意义。非人源靶点先留在原始结果里不用彻底删等确认不需要再弃用。靶点名称也会一并给出代码形式比如PDPK1_HUMAN这类写法。后面的UniProt转换就要用这个代码去查编号所以Excel整理时别把靶点名称列删了也不要改成中文名保持原文最稳妥。4. 通路筛选实操UniProt编号转换与p值阈值选择4.1 靶点名称到标准蛋白编号UniProt的查询逻辑上一步拿到的靶点名称是类似PDPK1_HUMAN的写法这不是通路富集平台直接认的格式。多数通路富集平台要的是标准蛋白编号比如UniProt编号P00517这类。所以中间必须经过一个转换步骤最常去的就是UniProt。如果跳过这一步直接拿原始名称去富集平台要么报格式错误要么返回一个空结果白白浪费一次任务。在UniProt检索框输入PDPK1_HUMAN搜索结果会定位到对应蛋白条目页面顶部显示蛋白编号。把这个编号记下来作为后续通路富集平台的输入。这里有个细节页面可能同时出现多条同源记录必须把物种筛选为人否则拿到的是小鼠或大鼠的同源编号富集结果会跑偏。物种筛错的后果不一定会报错但通路结果会和人体生物学背景完全不匹配到作图阶段才发现问题就晚了。靶点数量多的时候一个个搜效率太低。常见做法是先把靶点名称列表整理成txt或csv用UniProt的批量检索功能一次提交整个列表导出转换后的编号列表。批量操作时保留两列原始靶点名称和转换后的蛋白编号方便后续溯源。我一般会顺便把基因名也拉下来后面做图时标签用基因名比用编号短得多Cytoscape节点上的字也不会挤在一起。4.2 通路富集平台的注册、上传与提交通路富集平台通常要求注册账户才能使用注册后会有自己的项目空间。打开平台主页面注册并登录新建一个项目把整理好的蛋白编号列表导入到这个项目里。上传时平台一般允许直接粘贴编号或导入txt文件格式要求是每行一个编号不允许有空行也不要有引号。Excel复制过来的数值如果带了隐藏格式粘贴进网页提交框后经常被识别成两行这也是一个不容易察觉的坑。填到靶基因/蛋白提交窗口后提交运行。整个分析过程一般在几分钟到十几分钟不等取决于平台当前的任务队列。长时间没出结果别急着关页面记得留意邮箱通知多数平台会把结果下载链接发到注册邮箱。如果等了半小时还没动静先检查输入列表里有没有平台不认的编号格式比如带了下划线后缀或UniProt版本号。跑完之后会返回一系列靶点相关的通路条目每条通路都带p值。p值代表该通路上的靶点数量相对于随机背景的富集程度p值越小越显著。一般选择p值小于0.01的通路纳入后续网络图这是做这类分析比较通用的阈值许多论文里的网络药理学图也基本卡在这个值上。p值的计算与输入靶点数量直接相关靶点太小时即使真实存在生物学关联统计上也很难达到显著。4.3 p0.01阈值怎么调整不是死规矩p值阈值选0.01还是0.05要看手里的靶点数量和作图需求。靶点只有十几个时用0.05可能富集出五六十条通路网络图密密麻麻没法看靶点有上百个时用0.01可能只剩几条通路又太单薄。十个到二十个靶点这个区间p0.01是经常能找到平衡的阈值既保留了核心通路又不会让后续网络图太杂乱。实际使用中我会把p0.01的通路全部导出同时把命中靶点数、富集倍数一并导出再在Excel里排一次序优先选“命中靶点数多且p值低”的通路。这类通路往往是该化合物的核心通路是网络图上最值得突出展示的节点。p值靠边的通路比如0.008这种可以先留作候选接近阈值但不达标的通路保留名单但不强调免得网络图信息过载。还有一点容易被忽略有的平台会给出“靶点-通路关系表”的下载入口导出后可以直接在Excel里筛出某个通路上命中了哪几个靶点。这组数据对后续做图非常有价值建议顺手下载保存。有了这个关系表才能在Cytoscape里画出“化合物→靶点→通路”的完整层级连线而不是只在通路级别画几个孤立的圆圈。5. 常见问题排查从上传失败到通路全空的五个坑5.1 分子上传直接报错现象sdf文件传到靶点预测平台后页面报错不生成Job ID。原因文件里包含了多个结构或者sdf虽然扩展名正确内容却是mol2或V2000/V3000混用平台解析不了也可能是结构被保存成二维平面坐标缺少三维构象信息平台对接时直接判定为不可用。解决先打开绘图软件重新确认是单一结构另存为标准sdf。用文本编辑器打开sdf核对原子个数信息是否和结构一致比如碳氢氧的数量和分子式对得上。工具生成的sdf建议用OpenBabel做一次标准化命令行写法是obabel input.sdf -O output.sdf --gen3d这样能补全三维坐标并统一格式。这个习惯能修复大多数格式兼容问题每次换平台前我都强制走一遍这个转换。5.2 Fit值普遍偏低现象靶点预测结果全部Fit值都在0.3以下没有明显高分。原因分子结构可能有张力或电荷分布异常导致对接打分整体偏低也可能是画结构时用的构象和平台默认三维构象差别太大平台从僵硬的构象里找不到好的匹配姿势。解决在绘图软件里先做一步能量最小化把结构释放到合理构象再导出sdf提交前检查质子化状态按生理pH补氢。另外不要直接提交二维平面结构图转换来的sdf尽量保存为包含三维坐标的sdf平台对接才能正确计算。Fit值偏低时也别急着全盘否定先拿已知活性的阳性对照分子跑一遍同样的流程如果阳性对照也低说明是平台或参数的问题而不是分子本身的问题。5.3 UniProt搜不到目标蛋白现象输入PDPK1_HUMAN页面提示找不到对应条目。原因靶点名称里的物种缩写是旧版注释或者Excel手动修改时引入了空格也可能是平台返回的靶点名称是别名而非主名UniProt默认搜索不支持别名匹配。解决从靶点预测平台原始结果里直接复制完整靶点名称不做任何手动修改搜索时去掉物种前缀只保留基因名比如只搜PDPK1再用UniProt侧边栏的物种过滤功能指定人源。如果还搜不到去Ensembl或NCBI里先查一下基因名反查蛋白编号。记住不要把Excel里的名称列做任何“美化”处理空格、换行、全半角引号都会导致查找失败。5.4 通路富集平台注册失败现象注册页面要求邮箱验证但一直收不到验证邮件。原因平台对部分邮箱域名的信件过滤比较严格或填写的用户名已被占用也可能是注册时网络环境被风控系统拦截。解决换一个常用邮箱重新注册不要用刚注册的临时邮箱记得查看垃圾邮件文件夹如果还不行直接申请平台的试用账号。提醒一句不要拿别人的共享账号登录并上传自己的数据数据分析完成后平台会保留项目现场数据存在被他人看到的风险。注册后每次登录前也要注意确认平台域名正确避免打开仿冒页面泄露账号信息。5.5 富集结果全是p0.05的通路现象通路富集跑完p值没有一条低于0.01几乎没有显著通路。原因输入靶点数量太少统计功效不足或者靶点里掺入了非人源条目被混合分析后拉低显著性还有一个可能是靶点编号转换时混用了旧版ID平台匹配不到对应的通路注释。解决回到靶点筛选那一步确认只保留了人类相关靶点把Fit值阈值放宽一点纳入更多候选靶点再做一次富集。如果还是不显著可以把已知文献里同类化合物的已知靶点补充进列表参考。这一步做下来基本能解决通路全空的问题。如果加了阳性靶点仍然全空那就是编号转换环节出了系统性错误回到UniProt重新做一次批量转换而不是在富集平台里反复试。6. Cytoscape网络图构建进阶两列数据与attributes定制6.1 Excel两列结构把“化合物-靶点”“靶点-通路”铺平网络药理图的原料是一张Excel表里面只有两列。第一列放前一个节点第二列放后一个节点。第一种关系是“化合物—靶点”化合物放第一列靶点放第二列第二种关系是“靶点—通路”靶点放第一列通路放第二列。两类关系不能分开放两个工作表要合并到同一个工作表中这样Cytoscape导入时才把它们识别为同一套节点。实际准备数据时小脚本能提高效率。比如用pandas把原料表直接整理成Cytoscape可导入的csvimport pandas as pd df pd.read_excel(raw_relation.xlsx, header0) df.columns [source, target] df.to_csv(network.csv, indexFalse, sep,) print(df.head())这段代码用pandas读取原始Excel表重命名列名先确认前几行内容再输出为csv。列名统一成source和targetCytoscape导入时可以少做一次手动指认。csv编码建议用UTF-8如果软件导入后中文变乱码就另存一遍GBK再导入。表格单元格不能带多余空格、引号或换行符这些会让Cytoscape把同一个靶点识别成两个独立节点网络图里出现一堆孤立点。6.2 Cytoscape导入与attributes定制Cytoscape打开后选择File、Import、Network from Table指定source列为来源节点、target列为目标节点确认后连线就生成了。初次导入的图通常比较乱用Layout里的Force-Directed布局整理一下节点会撑开成清晰网络。我一般会把节点标签字体调到14号以上网络图才有可读性默认的10号字在导出PNG后几乎看不清。让图具备分组语义需要导入attributes。新建一张三列小表节点名、类型、数值。把通路节点设值为2化合物节点设值为3靶点节点设值为1。导入作为节点属性后在样式映射里把类型映射成颜色和形状化合物用菱形靶点用圆形通路用三角形。连线颜色也可以分组比如“化合物→靶点”用实线、“靶点→通路”用虚线一眼就能看清层级。实际操作中先把节点颜色映射试一遍形状映射留到最后调因为形状对视觉密度的影响比颜色大得多。这样一张网络药理图就能直接放进论文了。从那以后我每次拿到靶点列表的第一件事都不是急着做富集而是先把物种筛成人把打分阈值写进实验记录。这个习惯帮我在后续所有分析里少走了很多弯路希望帮到你。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?