本系列合集主要用于 3D-Genome
(Hi-C ) 系列的分析,主要涉及三维基因组分析中的数据处理,重复性评估,Compartment/TAD/Loop 检测,差异分析等,欢迎订阅!
需要以下软件和工具来分析与检查数据:
用于 TAD(拓扑关联结构域)分析的 Hi-C 数据取自淋巴母细胞系 GM 12878(数据已放入交流群)。以染色体 19 的分析为例进行展示,但同样的方法完全可以应用于其他所有染色体,进而开展全基因组层面的分析。将基于所需的分辨率,假定输入数据是经过标准化处理的基因组区间计数。
在上述链接中提供的数据是一个标准化计数矩阵,这是 TopDom 工具所要求的格式。这种数据格式可以轻松转换为其他 TAD 调用工具所需的格式。
|325
TopDom[1] 的运行分为三个步骤。首先,它计算一个名为 binSignal 的分数,该分数表示每个基因组区间(bin)在其周围的上游和下游区域之间的计数平均值。通常情况下,这个指标在 TAD(拓扑关联结构域)的边界处会比较低,而在 TAD 的中间位置则会比较高。接下来,它通过分段线性函数来检测 binSignal 的最小值,这些最小值即为候选的 TAD 边界。在算法的最后一步中,通过 Wilcoxon 秩和检验来评估,保留那些在上游和下游区间之间显著缺乏相互作用的边界,与这些区间内的接触计数相比,这些边界被认为是真正有意义的,从而对边界列表进行优化和细化。
期望的数据格式是一个 N×(N+3) 的标准化计数矩阵。其中,前三个列分别表示基因组区间的染色体编号、起始位置和终止位置(即基因组坐标)。矩阵的其余部分则包含各个区间之间的接触值。这个矩阵可以存储为普通的文本文件,也可以采用压缩格式(例如 gzip 压缩)。此外,一个 N×(N+4) 的格式也是被接受的,这种格式比前面提到的多了一个 ID 列,用于标识每个区间。下面展示了一个示例输入文件。
TopDom 的唯一可调节参数是窗口大小(window. Size)。这个参数用于控制在第一步计算每个区间(bin)的 binSignal 时,以及在最后一步过滤假阳性结果时,所考察的区域范围。根据研究,推荐窗口大小在 5 到 20 个区间之间,并且在分析中发现,窗口大小为 5 时效果最佳。
当在 R 软件环境中安装并加载该软件包后,可以直接在每个染色体上通过 TopDom 函数启动 TopDom 分析。该函数需要指定输入文件(即接触矩阵,此处称为 topDom_file)、窗口大小以及输出文件名(此处将输出文件名存储在变量 topDom_outFile 中)。
topDom_file <- "GM12878_chr19_25kb_matrix_pos_zero.txt"
topDom_outFile <- "result.txt"
topDom_out <- TopDom(topDom_file, window.size=5, outFile=topDom_outFile)
# running time
# user system elapsed
# 54.278 0.632 54.915
TopDom 函数的输出结果是一个包含 3 个数据框(binSignal、domain 和 bed)的列表。这些数据框将分别保存到“<topDom_outFile>. bed”“<topDom_outFile>. binSignal”和“<topDom_outFile>. domain”这三个文本文件中(“. Bed”文件除外,其他文件都包含标题行),前提是提供了 outFile 参数。
该算法将基因组划分为非重叠的 TAD(拓扑关联结构域)区域和 TAD 之间的间隙区域(gap),这些区域可以从 bed 数据框中提取。因此,为了生成一个类似 3 列 BED 格式的 TAD 列表,需要根据名称列对数据进行筛选,仅保留 domain 行。Domain 表包含了与 bed 数据框相似的信息,但额外增加了几列:以区间坐标(而非基因组坐标)表示的起始和终止位置,以及一个字段,记录每个 TAD 的大小(以碱基对为单位)。最后,输出中的 binSignal 元素是一个数据框,它记录了染色体上每个区间在程序运行过程中计算的统计信息,包括上游和下游染色质区域之间的平均接触频率(mean. Cf 列)以及 Wilcoxon 秩和检验的 p 值(pvalue 列)。
head(topDom_out[["bed"]], 3)
# chrom chromStart chromEnd name
# chr19 0 75000 gap
# chr19 75000 125000 domain
# chr19 125000 300000 domain
head(topDom_out[["binSignal"]], 3)
# id chr from.coord to.coord local.ext mean.cf pvalue
# 1 chr19 0 25000 -0.5 0.0000 1.00000000
# 2 chr19 25000 50000 -0.5 0.0000 1.00000000
# 3 chr19 50000 75000 -0.5 0.0000 1.00000000
head(topDom_out[["domain"]], 3)
# chr from.id from.coord to.id to.coord tag size
# chr19 1 0 3 75000 gap 75000
# chr19 4 75000 5 125000 domain 50000
# chr19 6 125000 12 300000 domain 175000
topDom_results_dt <- topDom_out[["bed"]]
# filter the inter-TAD regions:
topDom_tads_dt <- [topDom_results_dt$name == "domain",]
Reference
[1]
Source: https://academic.oup.com/nar/article/44/7/e70/2467818?login=false#41652104