使用HicPro处理fastq data,并进行了数据格式转换以后,就可以进行一些常规的HiC下游计算了,最常规的包括AB compartment,TAD相关计算,loop相关计算。本文整理了我自己使用的AB区室计算的相关方法和代码。
一、HiC ValidPair修饰
hicpro 软件输出的validPair文件,经过简单修饰后,再使用homer进行compartment计算PC1值,PC1>0的区域为A区室,PC1<0为B区室。
homer软件只需要validPair的前7列:
cat CT.allValidPairs |awk 'BEGIN{FS=OFS="\t"}{print $1,$2,$3,$4,$5,$6,$7}' > CT.allValidPairs.homer
二、call PC1 value —— homer
## step 1 : makeTagDir
tagdir=~/data/hic/homer/tagDir
makeTagDirectory ${tagdir}/CT -format HiCsummary CT.allValidPairs.homer
## step 2 : calculate PC1 value
## 如果有ATAC 测序数据,则ATAC narrowPeak文件可以作为 seed 输入,辅助计算PC1
mm10=~/data/database/Mus_musculus.GRCm38.dna.toplevel.fa
seed=~/data/hic/homer/seed_active/
output=~/data/hic/homer/compartment/
runHiCpca.pl ${output}-500k ${tagdir}/CT -cpu 20 -res 500000 -genome $mm10 -pc 1 -active ${seed}/CT.narrowPeak
## output data,两个output
head -n 5 CT-500k.PC1.bedGraph
track name="..." yLineMark="0.0" alwaysZero=on maxHeightPixels=100:75:11 visibility=full viewLimits=-1:1 autoScale=on type=bedGraph
chr11 3080000 3120000 -0.220452952221998
chr11 3120000 3160000 -0.200718202287763
chr11 3160000 3200000 0.0416765017206624
chr11 3200000 3240000 0.343580286630125
[medhdl@login2 compartment]$ head -n 5 CT-500k.PC1.txt
#peakID chr start end strand PC1
chr11-3080000 chr11 3080000 3120000 + -0.510452952221998
chr11-3120000 chr11 3120000 3160000 + -0.314718202287763
chr11-3160000 chr11 3160000 3200000 + 0.0806765017206624
chr11-3200000 chr11 3200000 3240000 + 0.894380286630125
以上运行所得的矩阵可以导入R中进行相关下游分析,非常方便。
三、使用PC1 value 进行后续分析
变成文本了以后,用R进行统计就可以。
1、标记 AB compartment
通过PC1的正负符号标记 AB compartment。
#为了方便理解,这里尽量了使用最简单的Rcode
pc1.ct <- read.table("CT-500k.PC1.txt") #读入计算所得的PC1矩阵
colnames(pc1.ct) <- c("peakID","chr","start","end","strand","PC1")
pc1.A <- read.table("A-500k.PC1.txt") #读入计算所得的PC1矩阵
colnames(pc1.A) <- c("peakID","chr","start","end","strand","PC1")
pc1.dat <- merge(pc1.ct,pc1.A,by=c("peakID","chr","start","end","strand"))
colnames(pc1.dat)[6:7] <- c("CT","A") #合并矩阵
pc1.dat$ABtrans <- ifelse(pc1.dat$CT < 0 & pc1.dat$A < 0,"BB",
ifelse(pc1.dat$CT > 0 & pc1.dat$A > 0,"AA",
ifelse(pc1.dat$CT < 0 & pc1.dat$A > 0,"BA","AB"))) #标记区室信息
2、计算区室转换的比例
统计AB区室转换的数量和比例。
pc1.trans <- pc1.dat %>% group_by(ABtrans) %>%
summarise(n=n()) %>% as.data.frame() #计算四类区室转换的染色质区域个数
pc1.trans$percentage <- round(x=(pc1.trans$n)/sum(pc1.trans$n),digits = 2) #计算四类区室转换的占比
pc1.trans$label <- paste0(pc1.trans$ABtrans,"(",pc1.trans$percentage,"%)") #设置画图标记
3、画图
使用ggplot2包简单画个饼图,存成svg格式,再在PPT中修改格式细节。
p <- pc1.transW7vsM25.pctrans %>%
ggplot(aes(x="",y=percentage,fill=ABtrans))+
geom_bar(stat="identity")+
coord_polar(theta = "y")+
labs(title = "ABtrans_portion")+
scale_fill_manual(values = brewer.pal(9,"Blues")[c(2,4,5,3)],labels=pc1.trans$label)+
theme_bw(base_line_size = NA)+
theme(axis.text = element_text(size = 12,color="black"),legend.position = "top")
svg(file="ABtrans.svg",height=8,width=8) #保存svg格式,方便在window上进行修改
p
dev.off()
svg格式的图片灵活性还是蛮高的,可以根据需求随便改【只要不改数据】,一个简单的效果图:
也可以画成类似文献中的bar图,这个就看大家的喜好啦,比如:
图片来源发表文献
区室分析内容差不多就这些,一些其他的联合分析,还需要视具体情况而定。例如可以在IGV或WashU上进行Track观察,联合ATAC-seq和RNA-seq数据观察区室转换与基因表达调控的联系等。
下篇继续总结TAD相关的分析。
公众号原文: HI-C 数据分析pipeline(三:AB compartment 区室计算)