概述
Juicer 是一个用于处理 Hi-C 测序数据的完整分析流程,从原始 FASTQ 文件到最终的接触矩阵(.hic 文件)。
安装方法如下
wget https://github.com/aidenlab/juicer/archive/refs/tags/1.6.tar.gz
tar xf 1.6.tar.gz
cd juicer-1.6
ln -s $PWD/CPU scripts
cd scripts/common
wget https://hicfiles.tc4ga.com/public/juicer/juicer_tools.1.9.9_jcuda.0.8.jar
ln -s juicer_tools.1.9.9_jcuda.0.8.jar juicer_tools.jar
主要处理阶段
1. 比对阶段 (Alignment)
功能:将双端测序reads比对到参考基因组
- 使用 BWA mem 进行比对
- 参数
-SP5M
专门针对 Hi-C 数据优化-SP
: 跳过配对救援,将read1和read2独立比对-5
: 对于split reads,输出主要和补充比对-M
: 将较短的split标记为次要比对
- 输出:SAM 格式的比对文件
2. 嵌合reads处理 (Chimeric Reads Processing)
功能:识别和处理跨越多个基因组区域的reads
什么是嵌合reads
在Hi-C实验中,一个DNA分子可能包含多个连接点:
Read序列: [区域A]--[连接点]--[区域B]--[连接点]--[区域C]
处理机制
chimeric_blacklist.awk
脚本将reads分为三类:
- 正常配对 (
_norm.txt
):标准的双端配对,两个reads各映射到单一位置 - 异常配对 (
_abnorm.sam
):包含嵌合reads,有补充比对(SA tag) - 未映射 (
_unmapped.sam
):无法比对的低质量reads
生物学意义
- 反映多重染色质互作(A-B-C三者空间接近)
- 可能指示染色体重排或复杂的空间结构
- 提供额外的互作信息,提高数据利用率
3. 片段分配 (Fragment Assignment)
功能:将reads分配到对应的限制性酶切片段
作用机制
- 使用
fragment.pl
根据酶切位点文件分配片段编号 - 为每个read pair添加片段信息(片段号和片段间距离)
数据格式转换
分配前:
readname chr1 pos1 chr2 pos2 strand1 strand2
分配后:
readname chr1 pos1 frag1 chr2 pos2 frag2 frag_distance
质量控制意义
片段分配用于区分:
- 有效配对:不同片段间的连接(真实互作)
- 自连片段 (dangling ends):同一片段内的连接
- 自环片段 (self-circles):片段自身环化
- 重连片段 (re-ligation):相邻片段的非特异连接
DNase-Hi-C特殊处理
当使用 site="none"
时,不进行实际片段分配,设置假片段值(0和1)
4. 排序 (Sorting)
功能:对处理后的数据进行多键排序
- 排序顺序:染色体 → 片段 → 链方向 → 位置
- 使用临时目录处理大文件:
-T $tmpdir
5. 合并 (Merge)
功能:将所有排序文件合并为单一文件
- 输出:
merged_sort.txt
- 保持排序顺序,为去重做准备
6. 去重复 (Deduplication)
功能:去除PCR扩增产生的重复reads
处理选项
- 默认模式:使用"wobble"策略(允许位置轻微偏移)
- 精确模式(
-j
参数):仅去除完全相同的重复
输出文件
merged_nodups.txt
:去重后的有效配对dups.txt
:被去除的重复readsopt_dups.txt
:光学重复
7. 统计分析 (Statistics)
功能:生成质量控制指标
主要统计内容
- 文库复杂度:评估文库多样性
- 有效配对率:真实互作的比例
- 片段内/间配对:评估消化和连接效率
- 短程/长程互作:距离分布统计
- 碰撞分析:处理异常和嵌合reads统计
8. HiC文件生成 (HiC File Creation)
功能:创建二进制接触矩阵文件
质量版本
- inter.hic:MAPQ ≥ 1(包含更多数据)
- inter_30.hic:MAPQ ≥ 30(高质量数据)
参数说明
-f
:包含片段信息(用于片段级分辨率)-s
:统计文件路径-g
:直方图输出-q
:最小映射质量阈值
9. 后处理 (Post-processing)
功能:特征注释和高级分析
- 调用
juicer_postprocessing.sh
- 添加基因组注释
- 识别染色质环等特征
断点恢复机制
Juicer 支持从特定阶段恢复,避免重复计算:
恢复阶段 (-S 参数)
- merge:从合并步骤开始(比对已完成)
- dedup:从去重步骤开始(合并已完成)
- final:从生成HiC文件开始(去重已完成)
- postproc:仅执行后处理
- early:在统计后提前退出
常见问题及解决方案
1. AWK 兼容性问题
问题:and() function never defined
原因:使用了 mawk 而非 gawk
解决:安装并使用 GNU awk (gawk)
2. 缺少 juicer_tools
问题:juicer_tools: No such file or directory
解决:下载 juicer_tools.jar 并创建执行脚本
3. 高嵌合reads率
可能原因:
- 过度消化(片段太小)
- 连接浓度过高
- 交联不充分
建议:优化实验条件,检查酶切和连接步骤
关键质量指标
良好的Hi-C数据应具备
- 有效配对率 > 60%
- 片段间配对率 > 90%
- 长程互作(>20kb)> 40%
- PCR重复率 < 20%
- 嵌合reads率 < 15%
质量评估要点
- 比对率:评估测序质量和基因组匹配度
- 有效配对率:反映实验成功程度
- 文库复杂度:评估数据多样性
- 距离分布:验证是否符合预期的幂律分布
- 片段大小分布:评估酶切效率
优化建议
计算资源
- 使用多线程加速BWA比对(
-t
参数) - 预留足够的临时空间用于排序
- 内存需求:至少16GB用于 juicer_tools
数据处理
- 保留中间文件便于问题排查
- 定期检查各阶段输出文件大小
- 使用
-S
参数从断点恢复,避免重复计算
文件组织结构
topDir/
├── fastq/ # 原始测序文件
├── splits/ # 中间处理文件
│ ├── *.sam
│ ├── *_norm.txt
│ ├── *_abnorm.sam
│ ├── *_unmapped.sam
│ └── *.sort.txt
├── aligned/ # 最终输出文件
│ ├── merged_sort.txt
│ ├── merged_nodups.txt
│ ├── inter.txt
│ ├── inter.hic
│ └── inter_30.hic
└── HIC_tmp/ # 临时文件目录
参考资料
- Juicer GitHub
- Juicer Wiki
- Durand et al., 2016. Cell Systems%