基因调控图:由先验调控网络构建用于 GNN 消息传递的异质有向图
GeneRegulatoryGraph
00 Remarks
本类型负责 readme 中 Step 1 的工作:把 PriorNetwork 中的 TF → TargetGene 调控关系转换为 GNN 的图结构,并且可选地根据 control 表达谱的 相关性追加共表达边(GEARS 双通道设计中的「共表达协方差图」)。
除了构建 Graph 之外,这里还会预先把入边按照目标节点分组缓存为 稀疏邻接结构(源节点索引 / 关系类型 / 归一化权重),供 GEARSConvLayer 做 O(|E|) 的稀疏聚合,避免 350+ 节点场景下 稠密邻接矩阵乘法带来的巨大开销。
01 Syntax
02 Methods
| Name | Overloads | Summary |
|---|---|---|
| .ctor | 1 | 构建基因调控图 |
| BuildGeneIndex | 1 | 建立基因名称到节点索引的映射 |
| TopCoExpressionEdges | 1 | 计算基因两两之间的 Pearson 相关系数,为每个基因挑选相关性最强的 Top-K 条共表达边 |
| InEdgeSources | 1 | 获取指向指定节点的所有入边源节点索引 |
| InEdgeTypes | 1 | 获取指向指定节点的所有入边关系类型 |
| InEdgeWeights | 1 | 获取指向指定节点的所有入边的归一化权重(已折算自环,权重之和小于 1) |
| SelfWeight | 1 | 获取指定节点自环信息的保留权重 |
| TryGetGeneIndex | 1 | 尝试按照基因名称获取节点索引 |
| ToString | 1 | 输出图结构的摘要信息 |
03 Properties
| Name | Overloads | Summary |
|---|---|---|
| GeneNames | 1 | 基因名称列表,顺序与表达矩阵的行顺序严格一致 |
| NumGenes | 1 | 基因数量(图中的节点数量) |
| Graph | 1 | GNN 图结构对象 |
| GeneIndex | 1 | 基因名称到节点索引的映射(大小写不敏感) |
| NumPriorEdges | 1 | 实际生效的调控边数量(不含共表达边与自环) |
| NumCoExpressionEdges | 1 | 追加的共表达边数量 |
| RelationTypeCounts | 1 | 图中每种关系类型的边数量统计 |
04 Members
String(), PriorNetwork, Double[0:,0:], Int32, Double)构建基因调控图
| Name | Type | Description |
|---|---|---|
geneNames | String() | 表达矩阵中的基因名称列表(行名),决定节点索引顺序 |
prior | PriorNetwork | 先验调控网络;两端基因不在 geneNames 中的边会被丢弃 |
controlExpr | Double[0:,0:] | control 条件下的表达矩阵 [gene, sample];当 coexpressionTopK 大于 0 时 用于计算基因间 Pearson 相关并追加共表达边 |
coexpressionTopK | Int32 | 每个基因保留的共表达边数量(按 |Pearson r| 降序);0 表示关闭共表达图 |
minCoexpression | Double | 共表达边的最小相关系数阈值,低于该阈值的关系不会被加入图中 |
String())建立基因名称到节点索引的映射
| Name | Type | Description |
|---|---|---|
geneNames | String() | 基因名称列表 |
大小写不敏感的基因名索引字典
Double[0:,0:], Int32, Double)计算基因两两之间的 Pearson 相关系数,为每个基因挑选相关性最强的 Top-K 条共表达边
| Name | Type | Description |
|---|---|---|
expr | Double[0:,0:] | 表达矩阵 [gene, sample] |
topK | Int32 | 每个基因保留的边数量 |
minCorr | Double | 相关系数阈值 |
共表达边列表,元素为 (基因A索引, 基因B索引, |相关系数|)
Int32)获取指向指定节点的所有入边源节点索引
| Name | Type | Description |
|---|---|---|
nodeIndex | Int32 | 目标节点索引 |
源节点索引数组
Int32)获取指向指定节点的所有入边关系类型
| Name | Type | Description |
|---|---|---|
nodeIndex | Int32 | 目标节点索引 |
关系类型索引数组,与 GeneRegulatoryGraph.InEdgeSources() 一一对应
Int32)获取指向指定节点的所有入边的归一化权重(已折算自环,权重之和小于 1)
| Name | Type | Description |
|---|---|---|
nodeIndex | Int32 | 目标节点索引 |
归一化权重数组,与 GeneRegulatoryGraph.InEdgeSources() 一一对应
Int32)获取指定节点自环信息的保留权重
| Name | Type | Description |
|---|---|---|
nodeIndex | Int32 | 节点索引 |
自环权重,取值在 (0, 1] 区间内
String, Int32)尝试按照基因名称获取节点索引
| Name | Type | Description |
|---|---|---|
geneName | String | 基因名称(大小写不敏感) |
index | Int32 | 返回的节点索引;基因不存在时返回 -1 |
基因存在则返回 True,否则返回 False
输出图结构的摘要信息
描述图规模的字符串
基因名称列表,顺序与表达矩阵的行顺序严格一致
基因名称数组
基因数量(图中的节点数量)
节点数量
GNN 图结构对象
Graph 实例
基因名称到节点索引的映射(大小写不敏感)
基因名 → 节点索引 的字典
实际生效的调控边数量(不含共表达边与自环)
先验网络中被成功映射到表达矩阵上的边数量
追加的共表达边数量
共表达边数量
图中每种关系类型的边数量统计
长度为 EdgeRelationTypes.NumRelationTypes 的计数数组