SALSA2 — Hi-C数据辅助基因组scaffolding工具¶
一句话说明¶
SALSA2 利用 Hi-C 数据中染色体空间接近性信息,把零散的 contig 拼接成染色体级别的 scaffold——就像用"染色体地图"把拼图碎片按正确顺序排列。
安装与配置¶
# 方法1:conda安装(推荐,依赖自动处理)
conda create -n salsa_env python=3.9 # 创建独立环境
conda activate salsa_env
conda install -c bioconda salsa2 # 安装SALSA2
conda install -c bioconda bwa samtools bedtools # 安装比对所需工具
# 方法2:源码安装
git clone https://github.com/marbl/SALSA # 克隆仓库
cd SALSA
pip install -r requirements.txt # 安装Python依赖
# 验证安装
run_pipeline.py --help # 查看帮助信息
核心用法¶
第一步:Hi-C reads 比对到组装¶
# 使用BWA将Hi-C reads比对到组装
bwa index assembly.fasta # 建立比对索引
# 比对Hi-C双端reads(注意:Hi-C要用-5SP参数,处理Hi-C连接产物)
bwa mem -5SP -T0 assembly.fasta hic_R1.fastq.gz hic_R2.fastq.gz \
| samtools sort -n -T tmp_sort -o hic_sorted.bam # 按read name排序
第二步:转换BAM为BED格式¶
# 过滤低质量比对(-F 2316过滤未比对、非主要比对等)
samtools view -F 2316 hic_sorted.bam \
| bamToBed -i stdin > hic.bed # 转换为BED格式,SALSA需要BED输入
第三步:生成genome索引¶
第四步:运行SALSA2 scaffolding¶
python run_pipeline.py \
-a assembly.fasta \ # 输入组装文件
-l assembly.fasta.fai \ # 基因组索引文件
-b hic.bed \ # Hi-C比对BED文件
-e GATC \ # Hi-C酶切位点(MboI用GATC;HindIII用AAGCTT)
-o salsa_output \ # 输出目录
-m yes \ # 启用错误连接检测
-p yes # 输出SALSA图文件
参数详解¶
| 参数 | 说明 | 示例值 |
|---|---|---|
-a | 输入contig FASTA文件 | assembly.fasta |
-l | FAI索引文件 | assembly.fasta.fai |
-b | Hi-C比对BED文件 | hic.bed |
-e | 限制性内切酶位点 | GATC(MboI/DpnII)、AAGCTT(HindIII)、DNASE(无酶Omni-C) |
-o | 输出目录 | salsa_output/ |
-m | 错误连接检测 | yes(推荐开启) |
-i | 最大迭代轮数 | 10(默认) |
-q | 最低比对质量过滤 | 10 |
-p | 输出scaffolding图 | yes |
实战案例¶
# 完整流程:从Hi-C reads到染色体级scaffold
# 1. 准备输入
BWA_THREADS=16 # 比对线程数
# 2. BWA比对(Hi-C专用参数-5SP)
bwa index assembly.fasta
bwa mem -5SP -T0 -t $BWA_THREADS assembly.fasta \
hic_R1.fastq.gz hic_R2.fastq.gz \
| samtools sort -n -@ 8 -T tmp -o hic_namesorted.bam
# 3. 过滤并转BED(-F 2316排除非主要比对和未比对读段)
samtools view -F 2316 hic_namesorted.bam \
| bamToBed -i stdin > hic_filtered.bed
# 4. 统计BED行数确认数据量
wc -l hic_filtered.bed
# 5. 运行SALSA2(以MboI酶为例)
python run_pipeline.py \
-a assembly.fasta \
-l assembly.fasta.fai \
-b hic_filtered.bed \
-e GATC \
-o salsa2_scaffolds \
-m yes \
-i 10 \
-p yes
# 6. 输出文件
ls salsa2_scaffolds/
# scaffolds_FINAL.fasta - 最终scaffold序列
# scaffolds_FINAL.agp - AGP格式的组装描述
# iteration*/ - 各迭代步骤中间结果
常见报错与解决¶
报错1:KeyError: contig not found in fai - 原因:BAM/BED中的contig名称与FASTA中不匹配 - 解决:检查grep ">"assembly.fasta | head和cut -f1 hic.bed | sort -u | head是否一致
报错2:No pairs found after filtering - 原因:Hi-C reads比对率过低,或过滤条件太严 - 解决:检查比对率samtools flagstat hic_namesorted.bam,或降低质量过滤阈值-q 0
报错3:SALSA迭代后scaffold数量反而增加 - 原因:Hi-C数据质量差,存在大量错误连接被检测并切断 - 解决:检查Hi-C library质量,确认cis/trans比例,理想情况>80% cis连接
速查表¶
| 常用命令 | 说明 |
|---|---|
bwa mem -5SP -T0 assembly.fasta R1.fq R2.fq | Hi-C专用BWA比对参数 |
samtools view -F 2316 \| bamToBed | 过滤并转BED |
python run_pipeline.py -e GATC | MboI/DpnII酶切 |
python run_pipeline.py -e AAGCTT | HindIII酶切 |
python run_pipeline.py -e DNASE | Omni-C无酶方案 |
python run_pipeline.py -m yes | 开启错误连接检测(推荐) |
scaffolds_FINAL.fasta | 最终输出的scaffold序列 |