AI_TP与2.0

/home/data/ydn/2.0/251020_wb/2.0_AI/AI_result/+_JQ1/TP-AI/
但以JQ1为例AI能找到BRDT,2.0能找到BRD4,取交集以后为空集
有部分GRN基因不在TP库里,怎么做target prediction?
AI-TP人源:1771   GRN:16202  交集:1687
老师建议:1、扩大到3层,样本不够时考虑相似性补充
2、AI序列最相似相似度统计再做交集,扩大样本。
将omnipath下载到本地
将蛋白质注释也加入到GRN

两层就有基本2000+了,逻辑上来说,感觉不应该这么多的

以前:
papers = ifelse(is.na(edge_matches$n_references) || edge_matches$n_references <= 0, 1, edge_matches$n_references)
也就是说:
每条调控关系(edge)在 complete_network.RData 中有一个字段 n_references(即该关系被多少篇文献报道过)。
如果该字段缺失(NA)或 ≤ 0,则自动赋值为 1。
→ 意味着:脚本永远不会因为缺乏文献支持而忽略一条边,只是默认给最低支持度。
查一下平均文献支持
讨论现在:降低文献支持2以上
如果你的差异蛋白来自 蛋白组学,上游变化往往源自激酶级或互作级信号;
如果来自 转录组学,上游变化更可能是 TF 层面的调控;
这其实反映的是 网络拓扑结构的密度(high-degree hubs)
  • 少数枢纽基因(TP53、STAT3、AKT1、EGFR)拥有几百至上千下游;
  • 它们互相连接,形成巨大的核心团块(core cluster)
  • 只要进到这个团块,三层之内几乎可以到任何节点。
因此,从任意差异蛋白向上走三步,
你都会“撞”进同一个核心信号网。
这就是为什么 3 层时平均上游基因数会达到 2000 +。
是合理的,也是官方(OmniPath、SIGNOR)标准做法:
官方同样认为:
“A regulates B” 表示已知有因果关系,不论中间是否经过级联。
因此,BFS 搜索的“第1层”自动包含了所有文献支持的最短调控路径。
当药物靶点是膜受体或代谢酶时,其调控效应需要通过多级信号传导(约 4–6 层)才能作用于表达或功能蛋白。
但在基于综合数据库的计算模型(如 OmniPath)中,
由于存在大量“汇总型直接调控边”,
实际上通过 2–3 层上游搜索 就能识别到这些靶点的网络位置和主要调控路径。
换言之:
生物化学上是 5 层,网络算法上通常表现为 2–3 层。
层级分子类型生物学事件
第 1 层EGFR受体酪氨酸激酶激活膜上信号
第 2 层RASGTPase中介信号
第 3 层RAF激酶启动 MAPK 级联
第 4 层MEK激酶激活 ERK
第 5 层ERK激酶激活核内转录因子
第 6 层FOS转录因子诱导基因表达变化
在像 OmniPath 或 Reactome 这样的网络中,研究者会把文献中描述的调控关系全部转成边,例如:
  • EGFR → RAS
  • RAS → RAF
  • RAF → MEK
  • MEK → ERK
  • ERK → FOS
但!他们往往还会额外加上汇总边(aggregated / inferred edges),例如:
EGFR → RAF(因为多篇文献说“EGFR 通过 RAS 激活 RAF”)
EGFR → ERK(综述型关系)
EGFR → FOS(转录签名关联)
于是网络中的边集就变成了:
  • EGFR → RAS
  • EGFR → RAF
  • EGFR → ERK
  • EGFR → FOS
  • RAS → RAF
  • RAF → MEK
  • MEK → ERK
  • ERK → FOS
DoRothEA 转录网络 → ✅ 完全压缩,A → C 可能经过多步信号,但网络里只保留 A → C。
PPI / pathwayextra / kinaseextra → 部分压缩,部分单步,不能保证所有边都是逐步事件。
酶-底物 / 配体-受体 → ✅ 非压缩单步事件,可以区分 A → B → C。
关键函数在这里:
neighbors(network, target, mode = "in")
这行是 igraph 的标准函数,用来查找“当前节点的直接上游节点”。
再看循环部分:
for (layer in 2:(max_layers + 1)) {
  ...
  direct_upstream <- names(neighbors(network, target, mode = "in"))
  ...
}
意思是:
第 1 层:直接上游(所有到差异蛋白的边)
第 2 层:这些上游的上游(上游的上游节点)
第 3 层:再往上 1 层,以此类推。
而每一层都会调用 neighbors(),也就是一步可达的上游节点。
这其实是“逐层的最短路径扩展”(BFS 搜索,Breadth-First Search)。
 对应关系:
生物概念        代码逻辑
第 1 层调控        neighbors(target)
第 2 层调控        neighbors(neighbors(target))
第 n 层调控        迭代 n 次邻居扩展
避免重复节点        用 setdiff() 去掉已访问节点
数据库官方定义对应脚本行为
OmniPathR每条 interaction 代表「A regulates B」,无论直接或间接,只要有文献支持即保留neighbors() 读取这些边,等价于一步可达关系
DoRothEATF–target 关系代表转录调控,不关心中间复合物layer=1 覆盖直接 TF 调控
SIGNORSignaling edge 表示一种“causal effect”,可以跨越多个中间蛋白在网络中表现为汇总边,因此被算作短路径
Reactome (via OmniPath)Reaction 被转为高层次因果关系在图中简化为直接连接
1、跑上游(a)
2、跑ai+筛人源(b)
3、ab以uniprotID做交集为a的TP(c)
4、bc比较
三层
  • Rscript wb_upstream.R JQ1.txt 3 1 JQ1_upstream complete_network.RData