李成笔记网

专注域名、站长SEO知识分享与实战技巧

HiCBricks|Hi-C 数据可视化与注释

Visualizing Hi-C Contact Maps

HiCBricks提供两种热图来展示 Hi-C 接触图,一种是标准热图(正方形或长方形,两个轴上都标有基因组位点),另一种是旋转的三角形热图(横轴表示距离,纵轴表示基因组位置)。在 HiCBricks中,所有热图都是通过 Brick_vizart_plot_heatmap 函数生成的。这个函数基于 ggplot2,ggplot2 是一个在数据可视化领域广泛使用的 R 包。

以 3 号染色体的染色体内 Hi-C 图谱为例。人类基因组存在许多无法进行映射的区域,在 Hi-C 图谱中这些区域是没有覆盖的。所以,为了本次练习,将从 3 号染色体的接触矩阵中选取一个信号密度较高的 10 兆碱基(Mb)区域。在这个过程中,会用到 Brick_list_matrix_mcols 和 Brick_get_matrix_mcols 这两个函数。其中,Brick_list_matrix_mcols 函数可以列出 Brick_object 中所有可用的矩阵元数据列。

Brick_list_matrix_mcols()

在这部分,我们关注的元数据列是矩阵的行和或列和。因为这是一个染色体内(顺式)接触矩阵,所以行和与列和是相等的。在 HiCBricks包里,行和被命名为 chr1_row_sums,而列和被命名为 chr2_col_sums。通过使用 Brick_get_matrix_mcols 函数,我们能够获取到行和,也就是 chr1_row_sums 的值。

chr3_row_sums <- Brick_get_matrix_mcols(Brick = My_Brick_object, chr1 = "chr3", chr2 = "chr3", resolution= 100000, what = "chr1_row_sums")

通过运用“run lengths”方法,能够识别出那些无法进行映射的区域。

chr3_run_lengths <- rle(as.vector(chr3_row_sums) > 0)

chr3_row_sums 向量已经被一个逻辑向量替换了。在这个新的逻辑向量中,TRUE 值表示那些信号强度大于零的行,而 FALSE 值则表示那些没有信号的行。rle 函数(“run length”的缩写,即“连续长度”)提供了一种方法,用于将具有相同值的连续区间进行聚合。输出结果 chr3_run_lengths 包含两个属性:length(长度)和 value(值)。其中,length 属性可以用来确定每个连续区间(或称为“运行”)的起始和结束坐标。

run_values <- chr3_run_lengths$values

run_lengths <- chr3_run_lengths$lengths

Ends <- cumsum(run_lengths)

Starts <- c(Ends - run_lengths) + 1

length 属性能够告诉我们,在接触矩阵的行和中,连续的 TRUE 或 FALSE 值各自有多少个。通过运用 which 函数,我们可以找到最长的连续区间。而 region_end_pos 和 region_start_pos 这两个变量,则分别记录了最长的非零行和值连续区间的结束位置和起始位置。

loc <- which(run_lengths == max(run_lengths[run_values ==TRUE]))

region_end_pos <- Ends[loc]

region_start_pos <- Starts[loc]

Brick_objects 中包含一个关联的“bintable”文件。这个文件记录了 Hi-C 矩阵中每一行或每一列所对应的基因组区间。通过这个“bintable”,我们可以确定与基于覆盖度所选择的 bin 位置相对应的基因组坐标,具体过程如上文所述。Brick_get_bintable 函数会生成一个 GRanges 类的对象,这个对象可以通过 GenomicRanges 包中的方法进行操作。GRanges 对象在 R 中用于与基因组区间进行交互。而 start 和 end 是 GenomicRanges 包中的两个方法,它们可以提供指定基因组区间的起始和结束坐标。

chr3_bintable_ranges <- Brick_get_bintable(Brick = My_Brick_object, chr = "chr3", resolution = 100000)

require(GenomicRanges)

start_coords <- start(chr3_bintable_ranges[region_start_pos])

end_coords <- end(chr3_bintable_ranges[region_end_pos])

最后一步,通过使用 paste 命令,将坐标格式化为 Brick_vizart_plot_heatmap 函数能够接受的格式。

coords <- paste("chr3", start_coords, end_coords, sep = ":")

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言