You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于BWA的链特异性比对问题咨询(遵循lentiMPRA流程)

解决方案

方案1:构建链特异性参考基因组(推荐,解决MAPQ为0问题)

  1. 重新生成参考基因组:将每条原始序列及其反向互补序列设为独立contig,给不同链的contig加独特后缀(比如原序列ID是seq_001,正向contig命名为seq_001_plus,反向互补contig命名为seq_001_minus)
  2. 用新参考构建BWA索引:
    bwa index chain_specific_ref.fasta
    
  3. 常规执行BWA比对:
    bwa mem -t 8 chain_specific_ref.fasta reads_R1.fq reads_R2.fq > aligned.sam
    
  4. 分离正反链序列:通过contig ID筛选,比如用samtools提取比对到_plus的reads:
    samtools view -b aligned.bam "*_plus" > forward_reads.bam
    samtools view -b aligned.bam "*_minus" > reverse_comp_reads.bam
    
    这种方式下每条reads只会匹配对应链的contig,不会因多比对导致MAPQ降低,下游流程可直接通过分离后的bam文件或contig ID处理,无需依赖SAM flags。

方案2:给reads添加链特异性标签(兼容现有参考)

如果不想重构参考,可在比对后给reads加自定义标签,替代SAM flags用于下游区分:

  1. 正常完成BWA比对得到bam文件
  2. 用samtools和awk判断链方向,添加自定义标签(比如ZS:Z:PLUS/ZS:Z:MINUS):
    samtools view -h aligned.bam | awk '
        BEGIN {OFS="\t"}
        /^@/ {print; next}
        {
            if(and($2, 16)) { tag = "ZS:Z:MINUS" } else { tag = "ZS:Z:PLUS" }
            print $0, tag
        }' | samtools view -b > tagged_aligned.bam
    
  3. 下游流程可通过读取ZS标签区分正反链,避免依赖原始SAM flags的筛选逻辑,减少兼容性冲突。

方案3:分组合并比对(针对单端数据)

如果是单端数据,可先拆分reads再预处理比对:

  1. 根据实验设计的barcode或序列特征,将原始reads拆分为正向组和反向互补组
  2. 对反向互补组执行序列转换:
    seqkit seq -r -p reverse_comp_reads.fq > rev_comp_converted.fq
    
  3. 分别用BWA比对到原始参考:
    bwa mem ref.fasta forward_reads.fq > forward_aligned.sam
    bwa mem ref.fasta rev_comp_converted.fq > reverse_aligned.sam
    
    转换后两组reads都比对到正链,后续直接通过比对文件区分即可。

内容的提问来源于stack exchange,提问作者Le Qi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 20:55:40