「生信」HiC-Pro最新安装及使用指南
2019-05-18 本文已影响70人
bioinfo_boy
目录
- 写在前面
- 01-What is Hic-Pro?
- 02-How does it work?
- 03-How to install it?
- 04-How to use it?
- 05-Test
- 06-Output file
- 07-User cases
- 08-Hic-Pro utilities
- 09-Compatibility with other software
- 相关链接
- 最后
写在前面
- 关于HiC-Pro的介绍和功能我也是知之甚少, 只是最近在学习3D基因组的东西, 很多大神都说HiC-Pro是现在最便捷的上游分析软件, 所以今天倒腾了一下, 遇到了些问题, 在这里记录一下
- 关于软件的介绍和使用方法以后会补充在这篇笔记里
01-What is Hic-Pro?
- .fastq file to normalized contact map
- 可以对dilution Hi-C, Dnase Hi-C, Micro-C, capture-C, capture Hi-C 和 Hi-Chip的数据进行处理
- 集合了序列比对, 过滤, 互作片段筛选, 原始矩阵构建及矩阵标准化等流程
- 每个环节可单独运行
- 可使用phasing data构建等位基因 contact map
02-How does it work?
流程reads mapping
- 双端reads end-to-end 比对到基因组中, 对于没有比对的 reads, 识别并剪掉酶切位点重新进行map
- 经过step1&2后, 有五种情况, singleton(单条reads比对上), multihits(多重比对), low mapq(低质量的比对), unmapped(未比对上的), unique paired alignments
- Singleton产生的原因可能有①adapter污染(先前数据没进行过滤);②另一侧数据质量较差,多数为N的区域;③DNA片段被降解或酶切反应产生星号活性。同时片段过短,150碱基已经读通了生物素标记的位点,但是该位点不是正常的junction fragment。在植物样本中,singleton较为常见,可能与细胞壁破碎不完全,部分细胞质成分进入到反应体系影响酶切有关
- Multiple mapped reads, 重复序列
- Unmapped reads可能产生的原因是基因组的组装完整度较差,基因组中存在大量的gap无法识别,被填充为NNNNN。另一个原因是酶切片段较碎,多个酶切片段连接在一起,无法识别到特定座位
- 本软件默认舍弃了前四种, 利用mapped进行(in)valid的筛选
-
黄灰色框为利用phasing data构建等位基因contact map的流程
mapping - phasing 或者Genotype Phasing, 中文称为基因定向, 基因分型, 单倍体分型等等, 参考链接: 知乎
片段评估过滤, 获得valid reads
根据实验步骤序列连接的各种可能性, 去除invalid reads
- dangling end, 未经连接的片段, pair-end 比对到酶切位点的一端
- self circles, 自连片段, pair-end 比对到一条片段上(反向比对)
- Religation, 两个相互并列的互作片段之间的连接
- Dumped pairs, 任何与insert size和限制性片段大小的过滤标准不匹配及没有预先重建出的连接类型, 比如线性的一条序列被限制酶切割成两条序列, 生物素标记+末端不平后又连接, 物理打断后同样会被拉去测序
- 注: Duplicated valid pairs (基因组的低复杂度及PCR引起的) 被过滤掉了
- (筛选思路见3D基因组笔记)
质量控制
软件设计了两个质控环节
- alignment statistics, 用于统计step1&2的reads结果, 经验发现step2 trimed reads在10-20%是正常的, 高于这个值说明实验部分存在问题. step1&2完成后, 会统计invalid和valid reads的结果
- 统计valid在subset中的比例, 正向互作和反式互作的比例, 互作大于20kb和小于20kb的比例
Map builder
- 生成raw matrix
ICE Normalization
- 借助ICE软件算法, 生成标准化的互作矩阵
- GitHub-ICE
03-How to install it?
软件介绍中提到了Singularty, 我查了查, 它是个微型操作系统, 实现起来类似于anaconda, 却比conda复杂的多, 所以直接pass
方法一: Anaconda 安装
方法一比方法二安装速度快很多, 而且比较傻瓜, 不用多说, 现在安装生信的软件, 第一个想到的当然是conda, 但它也不是万能的...
conda安装常规流程
- anaconda除了bioconda之外很有很多库, 打我们常规只添加这一个库的镜像, 这里推荐在Anaconda cloud网站中查找, 这相当于conda的云盘, 这里查不到就说明软件还没有登录conda平台了
- 这时, anaconda或miniconda目录下会多出来一个HiC-Pro的目录, 年少无知的我运行了一下已经添加到环境中的HiC-Pro之后, 发现木有问题, 然后就开始跑测试数据了, 其实到这里软件依然不能正常运行, 因为有几个脚本还没有生成, 需要编译一下
$conda install -c davebx hicpro
$cd PATH_TO_YOUR_MINICONDA/HiC-Pro_2.10.0
$vi config-install.txt
#添加依赖路径
$make
- 这时已经安装完成, 但不能运行conda添加到环境中的HiC-Pro, 而是要去
bin
目录下找对应的软件运行, 不信可以试试, 嘻嘻~ - 到这就大功告成了, 可以跑人类基因组的测试数据了
方法二: GitHub中提供的安装脚本
这是在conda不能用时, 我第一个想到的替代方案
安装流程
- 软件团队在github上有关于报错的答疑, 遇到问题了可以去上边找找或者是直接提问
- 下载及配置环境
git clone https://github.com/nservant/HiC-Pro.git
conda install -y samtools bowtie2 R
conda install -y pysam bx-python numpy scipy
R
install.packages(c('ggplot2','RColorBrewer'))
- 像上一种方法一样, 修改
config-install.txt
- 编译
make configure
make
- 大功告成, 但别看过程简单, 在配置环境的时候有你受的, 嘻嘻~
04-How to use it?
注释文件
- 三个文件: bowtie2 index, 限制酶消化的基因组BED文件, 染色体size文件, 最好删除scaffold
- 染色体名称要与bowtie index中一致
- Paths and Settings 部分, 软件的框架部分, 不要修改保持统一比较好
- N_CPU: 指定的cpu数量
- LOGFILE: 记录文件
- PBS_MEM: 内存分配
- PBS_WALLTIME: 限制运行时间
- PAIR1_EXT&PAIR2_EXT: pair-end reads 文件的后缀
- MIN_MAPQ: 最小的map质量, 默认值为0
- BOWTIE2_IDX_PATH: index的目录
- BOWTIE2_GLOBAL_OPTIONS&BOWTIE2_LOCAL_OPTIONS: step1&2的命令
- REFERENCE_GENOME: 参考基因组名称
- GENOME_SIZE: 染色体大小文件
- CAPTURE_TARGET: 目标区段的BED文件, 用于特殊要求的捕获
- ALLELE_SPECIFIC_SNP: SNP, vcf文件, 用于区分父母本来源, 用于等位基因的contrat map
- REPORT_CAPTURE_REPORTER: 报告目标基因座互作关系
- GENOME_FRAGMENT: 限制酶酶切后的基因组bed文件
- LIGATION SITE: 用于step2的酶切位点, 不设置的话会跳过该步骤
- MIN_FRAG_SIZE: 处理过程中最小的酶切片段
- MAX_FRAG_SIZE: ...
- MIN_INSERT_SIZE: 最小的序列插入片段 ??
- MAX_INSERT_SIZE: ...??
- MIN_CIS_DIST: 过滤指定距离一下的Cis互作, 主要用于DNase Hi-C(DNase I酶切,可以得到更高的分辨率)
- GET_ALL_INTERACTION_CLASSES : 3C互作的所有结果, 默认为0
- GET_PROCESS_BAM : 创建一个BAM文件, 内容包含所有aligned reads 的分类, 默认为0
- RM_SINGLETON: 删除SINGLETON的序列, 默认为1
- RM_MULTI: 删除多重比对的序列, 默认为1
- RM_DUP: 删除重复的序列, 默认为1
- BIN_SIZE: 设置bin的大小
- BIN_STEP : Binning step size in ‘n’ coverage i.e. window step. Default: 1
- MATRIX_FORMAT: 输出的矩阵文件的完整程度, 默认为upper
- (以下为标准化调用ICE的参数)
- MAX_ITER: ICE标准化反复的最大值, 默认为100
- SPARSE_FILTERING: 定义高度稀少的bin的百分比为0, 默认为0.02
- FILTER_LOW_COUNT_PERC: 定义low counts的bin的百分比为0, 默认为0.02, 用于替代SPARSE_FILTERING
- FILTER_HIGH_COUNT_PERC: low counts的bin在标准化之前删除,默认是0
- EPS: The relative increment in the results before declaring convergence. Default: 0.1
命令行
-
-s
可指定执行的流程
stepwise mode | input type |
---|---|
-s mapping | .fastq(.gz) files |
-s proc_hic | .bam files |
-s quality_checks | .bam files |
-s merge_persample | .validPairs files |
-s build_contact_maps | .validPairs files |
-s ice_norm | .matrix files |
- 单步执行
MY_INSTALL_PATH/bin/HiC-Pro -i FULL_PATH_TO_RAW_DATA -o FULL_PATH_TO_OUTPUTS -c MY_LOCAL_CONFIG_FILE -s mapping -s quality_checks
- 一步完成
MY_INSTALL_PATH/bin/HiC-Pro -i FULL_PATH_TO_RAW_DATA -o FULL_PATH_TO_OUTPUTS -c MY_LOCAL_CONFIG_FILE
05-Test
用官网提供的数据集, 比对到人类hg19参考基因组中, 关于人的参考基因组水就很深了, 去哪下载, 怎么下载速度最快, 大家还是自行谷歌吧
关于编译文件怎么填写会在下面介绍
记录一
- 报错:
line 109: /my_path_to/HiC-Pro_2.9.0/scripts/cutsite_trimming: No such file or directory
- 原因: 没有
make
, 作者有回答这个问题, github - 解决:
make
记录二
- 报错:
Makefile:169: recipe for target 'hic_qc' failed make: *** [hic_qc] Error 1
- 原因: 参考基因组染色体名称与染色体长度文件中的染色体名称不匹配(bowtie2 indexes, restriction fragments, chromosome sizes, etc.)
- 解决: 当然是让名字统一了, 所以就说人类基因组水深, 推荐去UCSC下载, 但下载速度十分感人, 这个问题中github也有参考意见
记录三
- 如果使用hicplotter做可视化, 需要为其单独建一个python2.7的环境, 因为这两款软件对其中一个库使用版本存在冲突
06-Output file
目录列表
- bowtie2 step1 →
/bwt2_glob
- bowtie2 step2 →
/bwt2_loc
- BAM文件, read pairs, mapping 统计 →
/bwt2
- valid互作结果 →
/data
- 互作矩阵 →
/matrix
- 关于reads的统计结果 →
/pic
统计结果
-
- plotMapping_Pdan.pdf为step1&2后的统计结果
- 数值结果在
bwt2
的.mapstat
中 - 高质量的数据, aligned reads占比80-90%
- step2的reads在10%以内, 大于20%时说明文库制备过程中存在问题
-
- plotMappingPairing_Pdan.pdf 为片段评估过滤的统计结果
- 数值结果在
bwt2
的.mpairstat
中 - 多重比对和单端比对的数量取决于基因组的复杂程度和unmapped reads
- 单端比对的数量与上一项_R1&2 unmapped reads的数量相近, 因为单端一定是一个map上, 另一个没map上
- 注: 为什么2中unmaped reads小于1中 no aligned, 因为1中是pair end分别做的比对并统计, 完全有可能1中reads_R1为no aligned, 而reads_R2为aligned, 则此条reads在2中不属于unmapped reads, 所以2必然小于1
-
- plotHiCFragment_Pdan.pdf 中计算的总和为2中reported pair的数量, 即唯一比对的pair的数量
- 数值结果在
data
的.RSstat
中, 每对reads的记录在.validPairs
中 - 相对于reported pairs, valid比率达到25即达到预期
- invalid过高同样说明建库存在问题
- 关于等位基因构建contract map的叙述有一短描述
-
- plotHiCContactRanges_Pdan.pdf为染色体内和染色体间的互作统计
- duplicate是由分子的低复杂度及PCR引起的
- 有cis和trans的统计
- plotHiCFragmentSize_Pdan.pdf为互作片段的长度统计
07-User cases
分步运行Hic-pro
HiC-Pro -i ${RES_PREFIX}_3/bowtie_results/bwt2 -o ${RES_PREFIX}_3.1 -c config_test.txt -s proc_hic -s quality_checks
HiC-Pro -i ${RES_PREFIX}_3.1/hic_results/data -o ${RES_PREFIX}_3.2 -c config_test.txt -s build_contact_maps -s ice_norm
等位基因互作构建
- 详细介绍GitHub-等位基因互作
- 需要一个N-masked genome,(原因是:This masking strategy avoid systematic bias toward the reference allele, compared to standard mapping where reads with the reference allele are more likely to be mapped than the reads with non-reference alleles.) 有三步, 方法见FAQ
- 当ALLELE_SPECIFIC_SNP中定义了snp的vcf文件后, 软件会执行等位基因的contract map, 会用到utilities中的
extract_snps.py
分析DNase Hi-C 数据
编译文件中不要填 LIGATION_SITE 和 GENOME_FRAGMENT
分析capture-C 数据
-s mapping -s proc_hic -s quality_checks -s merge_persample
- 使用
make_viewpoints.py
完成bedgraph的构建
分析capture Hi-C数据
需要给出给定区段的bed文件及CAPTURE_TARGET
08-HIC-PRO UTILITIES
01-SPLIT_READS.PY
用于拆分reads文件, 多线程mapping?
HICPRO_PATH/bin/utils/split_reads.py --results_folder OUTPUT --nreads READS_NB INPUT_FASTQ
02-EXTRACT_SNPS.PY
从基因phasing数据中提取SNP位点
## Extract SNPs information for CASTEiJ/129S1 cross
##下载 ftp://ftp-mouse.sanger.ac.uk/current_snps/
HICPRO_PATH/bin/utils/extract_snps.py -i mgp.v2.snps.annot.reformat.vcf -r CASTEij -a 129S1 > snps_CASTEiJ_129S1.vcf
03-DIGEST_GENOME.PY
- 限制性酶消化基因组获得bed文件
- 脚本内置了mboi, dpnii, bglii, hindiii四种酶的位点, 如果是其他位点, 可以在命令行指定
## Double digestion, HindIII + DpnII
HICPRO_PATH/bin/utils/digest_genome.py -r hindiii dpnii -o mm9_hindiii_dpnii.bed mm9.fasta
- HiTC同样可以生成这个文件, 但只能生成单酶的作用文件, 具体需要下载哪些库及怎么使用, 请看FAQ
04-HICPRO2JUICEBOX.SH
生成Juicebox可视化软件的输入文件
## Convert HiC-Pro output to Juicebox input up to restriction fragment resolution
HICPRO_PATH/bin/utils/hicpro2juicebox.sh -i hicpro_res/hic_results/data/dixon_2M/dixon_2M_allValidPairs -g hg19 -j /usr/local/juicebox/juicebox_clt_1.4.jar -f HICPRO_PATH/data_info/HindIII_resfrag_hg19.bed
05-SPARSETODENSE.PY
将sparse symmetric 矩阵格式转换为dense matrices格式, renbing给出的TAD directionaly index 方法需要提交该格式文件
## Convert to dense format
HICPRO_PATH/bin/utils/sparseToDense.py -b hic_results/matrix/dixon_2M/raw/1000000/dixon_2M_1000000_abs.bed hic_results/matrix/dixon_2M/iced/1000000/dixon_2M_1000000_iced.matrix
## Convert todense format per chromosome
HICPRO_PATH/bin/utils/sparseToDense.py -b hic_results/matrix/dixon_2M/raw/1000000/dixon_2M_1000000_abs.bed hic_results/matrix/dixon_2M/iced/1000000/dixon_2M_1000000_iced.matrix --perchr
## Convert into TADs caller input from Dixon et al.
HICPRO_PATH/bin/utils/sparseToDense.py -b hic_results/matrix/dixon_2M/raw/1000000/dixon_2M_1000000_abs.bed hic_results/matrix/dixon_2M/iced/1000000/dixon_2M_1000000_iced.matrix --perchr --di
06-HICPRO2FITHIC.PY
转成Fit-Hi-C的输入文件
## Whith IC bias vector
HICPRO_PATH/bin/utils/hicpro2fithic.py -i hic_results/matrix/dixon_2M/raw/1000000/dixon_2M_1000000.matrix -b hic_results/matrix/dixon_2M/raw/1000000/dixon_2M_1000000_abs.bed -s hic_results/matrix/dixon_2M/iced/1000000/dixon_2M_1000000_iced.matrix.biases
09-COMPATIBILITY WITH OTHER SOFTWARE
- Juicebox上面已经提到, 关于该软件使用, 请移步GitHub-Juicebox
- Hicplotter, 请移步GitHub-HiCPlotter
## Plot the chrX at 150Kb resolution
python HiCPlotter.py -f hic_results/matrix/sample1/iced/150000/sample1_150000_iced.matrix -o Exemple -r 150000 -tri 1 -bed hic_results/matrix/sample1/raw/150000/sample1_150000_ord.bed -n Test -chr chrX -ptr 1
- TAD calling, 用上边的方法转换矩阵, 然后renbing文章中找方法
- FIT-HI-C, 上面方法生成其输入文件
- R包 HiTC, 可以直接导入hic-pro的输出文件进行下游分析
相关链接
- GitHub-HiC-Pro
- MANUAL.md
- WELCOME TO HIC-PRO’S DOCUMENTATION!
- Hic-Pro google group
- Servant N., Varoquaux N., Lajoie BR., Viara E., Chen CJ., Vert JP., Dekker J., Heard E., Barillot E.HiC-Pro: An optimized and flexible pipeline for Hi-C processing. Genome Biology 2015, 16:259 doi:10.1186/s13059-015-0831-x
最后
- 当你拿到标准化的互作矩阵之后, 可以导入R包 HiTC Bioconductor package, 瞅瞅它能做些什么
-
运行前, 需要留出解压缩的.fq文件大小的4倍空间, 主要的中间文件是mapping阶段产生的, 软件说明中建议后期删除bowtie2_output...
GO