跳转至

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索引

samtools faidx assembly.fasta       # 生成.fai索引文件

第四步:运行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
-lFAI索引文件assembly.fasta.fai
-bHi-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 | headcut -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.fqHi-C专用BWA比对参数
samtools view -F 2316 \| bamToBed过滤并转BED
python run_pipeline.py -e GATCMboI/DpnII酶切
python run_pipeline.py -e AAGCTTHindIII酶切
python run_pipeline.py -e DNASEOmni-C无酶方案
python run_pipeline.py -m yes开启错误连接检测(推荐)
scaffolds_FINAL.fasta最终输出的scaffold序列