PanGenomeStats
01 Syntax
02 Methods
| Name | Overloads | Summary |
|---|---|---|
| BuildGenomeStats | 1 | 构建基因组基本信息统计数据(基因总数/特有基因数/核心基因占比) |
| CountFamiliesPerGenome | 1 | 统计每一个基因组在给定的基因家族集合之中出现的家族数量 |
| BuildGenomeEntropyData | 1 | 基因组级别的三维散点图数据: + 维度1: 基因存在/缺失均衡度的香农信息熵 H(基于完整的PAV矩阵) + 维度2: 特有基因数 / 基因总数 + 维度3: 核心基因占比 |
| ShannonEntropy | 1 | 计算基因存在/缺失均衡度的香农信息熵(自然对数) |
| GetPCVector | 1 | 取出某一个主成分的得分向量;长度与基因组数量不一致的时候返回Nothing |
| ComponentLabel | 1 | 生成坐标轴标题,例如 PC1 (42.51%) |
| BuildPCAData | 1 | PAV矩阵的PCA分析:取基因总数最多的前MaxPCAFamilies个基因家族构建PAV子矩阵, 以基因组为样本、基因家族为特征,降维到PanGenomeStats.PCA_Dimensions个维度 |
| GetGenomeStats | 1 | 获取基因组基本信息统计:优先复用分析阶段已经缓存好的结果, 只有在缓存为空的时候才重新计算一次并且回填到结果对象之中 |
| GetPCAData | 1 | 获取PAV矩阵的PCA降维散点数据(为空的时候惰性计算并回填) |
| GetGenomeEntropyData | 1 | 获取基因组存在/缺失均衡度的香农信息熵散点数据(为空的时候惰性计算并回填) |
03 Fields
| Name | Overloads | Summary |
|---|---|---|
| Entropy_Label | 1 | 基因组三维散点图:基因存在/缺失均衡度(香农信息熵)的坐标轴标题 |
| SpecificRatio_Label | 1 | 基因组三维散点图:特有基因占比的坐标轴标题 |
| CoreRatio_Label | 1 | 基因组三维散点图:核心基因占比的坐标轴标题 |
| PCA_Dimensions | 1 | PCA降维的目标维度 |
| PCA_ColorLabel | 1 | PCA散点图的着色维度标题 |
04 Members
构建基因组基本信息统计数据(基因总数/特有基因数/核心基因占比)
统计每一个基因组在给定的基因家族集合之中出现的家族数量
原来的实现是 "基因组 x 家族" 的双重循环,在上百个基因组、十几万个基因家族的数据集 上面会退化成上千万次的字典查找。这里反过来只遍历每一个家族的PAV行, 复杂度降低为 O(家族数 x 该家族出现的基因组数)。
| Name | Type | Description |
|---|---|---|
result | PanGenomeResult | - |
families | String() | 目标基因家族ID列表(例如特有基因家族、核心基因家族) |
genomeNames | String() | 全部的基因组名称 |
Key为基因组名称,Value为该基因组在families之中出现的家族数量
基因组级别的三维散点图数据:
- 维度1: 基因存在/缺失均衡度的香农信息熵 H(基于完整的PAV矩阵)
- 维度2: 特有基因数 / 基因总数
- 维度3: 核心基因占比
熵的定义参考 entropy.md 之中的第一种方法:假设泛基因组总共有N个基因家族, 某个基因组之中存在K个、缺失N-K个,则 p = K / N, H = -(plog(p) + (1-p)log(1-p)),这里使用自然对数。
p越偏离0.5(即缺失了大量非必需基因)熵越低;反之通过水平基因转移获取了大量 附属基因、使得"存在/缺失"的比例相对均衡的时候,熵值会升高。
| Name | Type | Description |
|---|---|---|
result | PanGenomeResult | 泛基因组分析结果 |
stats | GenomeStatRow() | 基因组基本信息统计(提供特有基因数与核心基因占比) |
Int32, Int32)计算基因存在/缺失均衡度的香农信息熵(自然对数)
p = K/N。当 p 为0或者1的时候(全部缺失或者全部存在)熵定义为0, 这里做边界短路以避免 Log(0) 产生 Infinity 或者 NaN, 因为 NaN 会导致序列化出来的JSON文本不是合法的JSON。
| Name | Type | Description |
|---|---|---|
present | Int32 | 该基因组之中存在的基因家族数量 K |
total | Int32 | 泛基因组的基因家族总数 N |
DataFrame, String, Int32)取出某一个主成分的得分向量;长度与基因组数量不一致的时候返回Nothing
String, Double(), Int32)生成坐标轴标题,例如 PC1 (42.51%)
PAV矩阵的PCA分析:取基因总数最多的前MaxPCAFamilies个基因家族构建PAV子矩阵, 以基因组为样本、基因家族为特征,降维到PanGenomeStats.PCA_Dimensions个维度
任何数据不足或者计算失败的情况都会返回一个空的数据集,由前端显示"数据不可用", 保证PCA分析的失败不会导致整个报告的生成过程失败。
| Name | Type | Description |
|---|---|---|
result | PanGenomeResult | 泛基因组分析结果 |
stats | GenomeStatRow() | 基因组基本信息统计,提供核心基因占比作为散点图的着色维度 |
MaxPCAFamilies | Int32 | PCA分析所使用的基因家族数量上限(按照家族的基因总数降序取Top-N) |
获取基因组基本信息统计:优先复用分析阶段已经缓存好的结果, 只有在缓存为空的时候才重新计算一次并且回填到结果对象之中
这三份统计数据既要在生成HTML报告的时候使用,也会被外部脚本(R#的scatter_set)单独取用, 如果每次都重新计算一遍的话,在最坏的情况下整个流程会重复计算两次; 因此在分析阶段就一次性算好并保存到 PanGenomeResult 之中。
| Name | Type | Description |
|---|---|---|
result | PanGenomeResult | 泛基因组分析结果 |
获取PAV矩阵的PCA降维散点数据(为空的时候惰性计算并回填)
| Name | Type | Description |
|---|---|---|
result | PanGenomeResult | 泛基因组分析结果 |
获取基因组存在/缺失均衡度的香农信息熵散点数据(为空的时候惰性计算并回填)
| Name | Type | Description |
|---|---|---|
result | PanGenomeResult | 泛基因组分析结果 |
基因组三维散点图:基因存在/缺失均衡度(香农信息熵)的坐标轴标题
基因组三维散点图:特有基因占比的坐标轴标题
基因组三维散点图:核心基因占比的坐标轴标题
PCA降维的目标维度
PCA散点图的着色维度标题