泛基因组分析HTML报告的生成器。
PanGenomeReportGenerator
00 Remarks
页面绘图所需的数据全部先构造成具名的CLR数据对象,然后再通过 JsonContract.GetJson() 序列化为JSON文本, 并内嵌到HTML模板的 <script type="application/json"> 标签之中。
这样子当基因组名称或者其他文本内容包含单引号、反斜杠、尖括号等特殊字符的时候, 也不会再破坏页面的JavaScript代码。
01 Syntax
02 Methods
| Name | Overloads | Summary |
|---|---|---|
| GenerateReport | 1 | 生成泛基因组分析HTML报告 |
| SerializeData | 1 | 将报告数据对象序列化为可以安全内嵌到HTML页面之中的JSON文本 |
| EscapeJsonForHtml | 1 | 转义JSON文本之中的HTML敏感字符,避免 </script> 或者 <!-- 这样的内容破坏内嵌脚本标签的解析。 |
| H | 1 | HTML转义:避免基因组名称等文本内容破坏服务端渲染的表格结构 |
| SampleEvenly | 1 | 当数据量超过上限的时候,按照等间距的方式抽样,保证展示结果是确定性的 |
| BuildPieChartData | 1 | 生成饼图数据 |
| BuildPangenomeCurve | 1 | 生成泛基因组曲线数据 |
| BuildCategoryPercentData | 1 | 基因家族分布比例的绘图数据(直接复用分析阶段缓存好的统计结果) |
| BuildSVMatrixData | 1 | 构建SV矩阵的热图绘图数据(行=基因家族,列=基因组) |
| BuildSVEntropyData | 1 | SV结构变异的信息熵散点图与聚类结果 |
| RoundEntropyPoint | 1 | 截断信息熵散点数据的浮点精度 |
| SampleIndexes | 1 | 等间距地取出最多 maxCount 个下标,保证抽样结果是确定性的 |
| BuildPAVMatrixData | 1 | 生成PAV矩阵数据 |
| BuildGeneticDistanceData | 1 | 生成遗传距离矩阵数据 |
| BuildSVStatsData | 1 | 生成结构变异统计数据 |
| BuildCollinearityData | 1 | 构建共线性结果的可视化数据(基因组×基因组共线性矩阵 + Top 基因组对排行) |
| GenerateCollinearityStats | 1 | 生成共线性统计信息 |
| BlockLocus | 1 | 生成共线性区块在两个基因组之上所覆盖的坐标摘要文本(用于共线性绘图时的定位参考) |
| GenerateGeneFamilyTable | 1 | 生成基因家族详细表格 |
| GetCategoryClass | 1 | 获取分类对应的CSS类名 |
| DefaultHtmlReport | 1 |
03 Properties
| Name | Overloads | Summary |
|---|---|---|
| DefaultHtmlTemplate | 1 |
04 Fields
| Name | Overloads | Summary |
|---|---|---|
| MaxCollinearityGenomes | 1 | 共线性矩阵热图最多展示的基因组数量 |
| MaxCollinearityPairs | 1 | 共线性条形图最多展示的基因组对数量 |
| CollinearMetric_Pairs | 1 | 共线性统计指标:共线基因对数量 |
| CollinearMetric_Blocks | 1 | 共线性统计指标:共线性区块数量 |
| MaxDistanceGenomes | 1 | 遗传距离热图最多展示的基因组数量 |
| MaxPAVFamilies | 1 | PAV热图最多展示的基因家族数量 |
| MaxPAVGenomes | 1 | PAV热图最多展示的基因组数量 |
| SV_MetricCopyNumber | 1 | SV CopyNumber 矩阵热图的单元格含义 |
| SV_MetricMedian | 1 | SV Median 矩阵热图的单元格含义 |
| MaxSVHeatmapFamilies | 1 | SV热图最多展示的基因家族数量 |
| MaxSVHeatmapGenomes | 1 | SV热图最多展示的基因组数量 |
| MaxSVEntropyPoints | 1 | SV信息熵散点图最多展示的基因家族数量 |
05 Members
String)生成泛基因组分析HTML报告
| Name | Type | Description |
|---|---|---|
result | PanGenomeResult | 泛基因组分析结果 |
``0)将报告数据对象序列化为可以安全内嵌到HTML页面之中的JSON文本
String)转义JSON文本之中的HTML敏感字符,避免 </script> 或者 <!-- 这样的内容破坏内嵌脚本标签的解析。
这些字符在合法的JSON文本之中只会出现在字符串字面量内部, 因此使用 \uXXXX 进行转义在任何位置都是合法的, 并且 DataContractJsonSerializer 默认不会输出这些转义。
String)HTML转义:避免基因组名称等文本内容破坏服务端渲染的表格结构
String(), Int32)当数据量超过上限的时候,按照等间距的方式抽样,保证展示结果是确定性的
Int32, Int32, Int32, Int32)生成饼图数据
生成泛基因组曲线数据
基因家族分布比例的绘图数据(直接复用分析阶段缓存好的统计结果)
由于核心/软核心/壳/云这四个类别构成了一个完整的划分, 因此"按基因数"与"按家族个数"两种口径之下的四类占比加和都接近100%。
构建SV矩阵的热图绘图数据(行=基因家族,列=基因组)
为了避免生成的JSON过于庞大,这里对基因家族行与基因组列都按照等间距的方式做了抽样, 并通过 truncated 标志提示前端;完整的矩阵由R#脚本通过导出接口获取。
| Name | Type | Description |
|---|---|---|
result | PanGenomeResult | 泛基因组分析结果 |
metricLabel | String | 单元格数值的含义说明 |
useMedian | Boolean | True取Median矩阵,False取CopyNumber矩阵 |
SV结构变异的信息熵散点图与聚类结果
截断信息熵散点数据的浮点精度
页面上绘图只需要6位小数的精度,而默认的序列化会写出17位有效数字, 在上万个基因家族的时候会白白增加一倍以上的页面体积。 完整的精度依然保存在分析结果对象与归档文件之中,不影响导出为CSV的数据。
| Name | Type | Description |
|---|---|---|
point | SVDomainEntropyPoint | - |
Int32, Int32)等间距地取出最多 maxCount 个下标,保证抽样结果是确定性的
生成PAV矩阵数据
只保留在PAV矩阵之中真实存在的基因家族,保证 families 与 matrix 的行是一一对应的; 当基因组/家族数量过多的时候按照等间距方式抽样,避免生成的JSON过于庞大。
生成遗传距离矩阵数据
生成结构变异统计数据
构建共线性结果的可视化数据(基因组×基因组共线性矩阵 + Top 基因组对排行)
这里只依赖 CollinearBlock.GenePairCount 区块统计信息, 因此在基因组数量超过阈值、逐基因的同源配对数据被关闭 (GenomeAnalyzer.RetainOrthologyLinks = False)的时候依然可以正常展示。
统计指标优先使用区块之内的共线基因对数量;部分历史归档之中区块的基因对数量全部为0, 这个时候自动退化为使用共线性区块个数作为指标,保证可视化结果依然是有意义的。
生成共线性统计信息
生成共线性区块在两个基因组之上所覆盖的坐标摘要文本(用于共线性绘图时的定位参考)
生成基因家族详细表格
String)获取分类对应的CSS类名
共线性矩阵热图最多展示的基因组数量
共线性条形图最多展示的基因组对数量
共线性统计指标:共线基因对数量
共线性统计指标:共线性区块数量
遗传距离热图最多展示的基因组数量
PAV热图最多展示的基因家族数量
PAV热图最多展示的基因组数量
SV CopyNumber 矩阵热图的单元格含义
SV Median 矩阵热图的单元格含义
SV热图最多展示的基因家族数量
SV热图最多展示的基因组数量
SV信息熵散点图最多展示的基因家族数量
在上百个基因组的数据集上面,逐家族的全部散点会让内嵌的JSON达到十几MB, 因此超过这个上限的时候只等间距抽样展示一部分(完整的聚类结果依然保存在分析结果之中, 可以通过R#导出接口获取)。