nuget server logo nuget api documents
↑

API Docs / SMRUCC.genomics.Analysis.PanGenome / PanGenomeStats

PanGenomeStats

Full name SMRUCC.genomics.Analysis.PanGenome.PanGenomeStats Assembly SMRUCC.genomics.Analysis.PanGenome Members 15

01 Syntax

SMRUCC.genomics.Analysis.PanGenome.PanGenomeStats

02 Methods

NameOverloadsSummary
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

NameOverloadsSummary
Entropy_Label 1 基因组三维散点图:基因存在/缺失均衡度(香农信息熵)的坐标轴标题
SpecificRatio_Label 1 基因组三维散点图:特有基因占比的坐标轴标题
CoreRatio_Label 1 基因组三维散点图:核心基因占比的坐标轴标题
PCA_Dimensions 1 PCA降维的目标维度
PCA_ColorLabel 1 PCA散点图的着色维度标题

04 Members

method BuildGenomeStats #
BuildGenomeStats(PanGenomeResult)

构建基因组基本信息统计数据(基因总数/特有基因数/核心基因占比)

method CountFamiliesPerGenome #
CountFamiliesPerGenome(PanGenomeResult, String(), String())

统计每一个基因组在给定的基因家族集合之中出现的家族数量

Remarks

原来的实现是 "基因组 x 家族" 的双重循环,在上百个基因组、十几万个基因家族的数据集 上面会退化成上千万次的字典查找。这里反过来只遍历每一个家族的PAV行, 复杂度降低为 O(家族数 x 该家族出现的基因组数)。

Parameters
NameTypeDescription
resultPanGenomeResult

-

familiesString()

目标基因家族ID列表(例如特有基因家族、核心基因家族)

genomeNamesString()

全部的基因组名称

Returns

Key为基因组名称,Value为该基因组在families之中出现的家族数量

method BuildGenomeEntropyData #
BuildGenomeEntropyData(PanGenomeResult, GenomeStatRow())

基因组级别的三维散点图数据:

  • 维度1: 基因存在/缺失均衡度的香农信息熵 H(基于完整的PAV矩阵)
  • 维度2: 特有基因数 / 基因总数
  • 维度3: 核心基因占比
Remarks

熵的定义参考 entropy.md 之中的第一种方法:假设泛基因组总共有N个基因家族, 某个基因组之中存在K个、缺失N-K个,则 p = K / N, H = -(plog(p) + (1-p)log(1-p)),这里使用自然对数。

p越偏离0.5(即缺失了大量非必需基因)熵越低;反之通过水平基因转移获取了大量 附属基因、使得"存在/缺失"的比例相对均衡的时候,熵值会升高。

Parameters
NameTypeDescription
resultPanGenomeResult

泛基因组分析结果

statsGenomeStatRow()

基因组基本信息统计(提供特有基因数与核心基因占比)

method ShannonEntropy #
ShannonEntropy(Int32, Int32)

计算基因存在/缺失均衡度的香农信息熵(自然对数)

Remarks

p = K/N。当 p 为0或者1的时候(全部缺失或者全部存在)熵定义为0, 这里做边界短路以避免 Log(0) 产生 Infinity 或者 NaN, 因为 NaN 会导致序列化出来的JSON文本不是合法的JSON。

Parameters
NameTypeDescription
presentInt32

该基因组之中存在的基因家族数量 K

totalInt32

泛基因组的基因家族总数 N

method GetPCVector #
GetPCVector(DataFrame, String, Int32)

取出某一个主成分的得分向量;长度与基因组数量不一致的时候返回Nothing

method ComponentLabel #
ComponentLabel(String, Double(), Int32)

生成坐标轴标题,例如 PC1 (42.51%)

method BuildPCAData #
BuildPCAData(PanGenomeResult, GenomeStatRow(), Int32)

PAV矩阵的PCA分析:取基因总数最多的前MaxPCAFamilies个基因家族构建PAV子矩阵, 以基因组为样本、基因家族为特征,降维到PanGenomeStats.PCA_Dimensions个维度

Remarks

任何数据不足或者计算失败的情况都会返回一个空的数据集,由前端显示"数据不可用", 保证PCA分析的失败不会导致整个报告的生成过程失败。

Parameters
NameTypeDescription
resultPanGenomeResult

泛基因组分析结果

statsGenomeStatRow()

基因组基本信息统计,提供核心基因占比作为散点图的着色维度

MaxPCAFamiliesInt32

PCA分析所使用的基因家族数量上限(按照家族的基因总数降序取Top-N)

method GetGenomeStats #
GetGenomeStats(PanGenomeResult)

获取基因组基本信息统计:优先复用分析阶段已经缓存好的结果, 只有在缓存为空的时候才重新计算一次并且回填到结果对象之中

Remarks

这三份统计数据既要在生成HTML报告的时候使用,也会被外部脚本(R#的scatter_set)单独取用, 如果每次都重新计算一遍的话,在最坏的情况下整个流程会重复计算两次; 因此在分析阶段就一次性算好并保存到 PanGenomeResult 之中。

Parameters
NameTypeDescription
resultPanGenomeResult

泛基因组分析结果

method GetPCAData #
GetPCAData(PanGenomeResult)

获取PAV矩阵的PCA降维散点数据(为空的时候惰性计算并回填)

Parameters
NameTypeDescription
resultPanGenomeResult

泛基因组分析结果

method GetGenomeEntropyData #
GetGenomeEntropyData(PanGenomeResult)

获取基因组存在/缺失均衡度的香农信息熵散点数据(为空的时候惰性计算并回填)

Parameters
NameTypeDescription
resultPanGenomeResult

泛基因组分析结果

field Entropy_Label #
Entropy_Label

基因组三维散点图:基因存在/缺失均衡度(香农信息熵)的坐标轴标题

field SpecificRatio_Label #
SpecificRatio_Label

基因组三维散点图:特有基因占比的坐标轴标题

field CoreRatio_Label #
CoreRatio_Label

基因组三维散点图:核心基因占比的坐标轴标题

field PCA_Dimensions #
PCA_Dimensions

PCA降维的目标维度

field PCA_ColorLabel #
PCA_ColorLabel

PCA散点图的着色维度标题