踩坑日记|bam文件转为fastq文件

这是第二篇踩坑日记,这个系列用来记录在 Python 和 R 学习过程中遇到的问题和结果。今天介绍的是将bam文件转换为fastq文件使用的一些工具和工具使用过程中发现的问题。希望可以帮助到大家,也希望大家可以给出建议,欢迎留言交流。

在写宏基因组分析流程的过程中,去宿主后需要将bam文件转换为fastq文件,以便进行后续的分析。但是在在使用一些生信主流工具进行文件格式转换过程中,发现了一些问题,分享出来解决办法(更确切地说是绕过这些问题),和大家相互学习讨论。

bedtools

在尝试过程中,先使用了bedtoolsbedtools工具中的bamtofastq命令进行 bam 文件转换为 fastq 文件,可以对单端比对的生成的 bam 和双端比对生成的 bam 进行转换,详细使用方法和参数见bamtofastq 官方文档

双端:

samtools sort -n -o aln.qsort.bam aln.bam

bedtools bamtofastq -i aln.qsort.bam -fq aln.end1.fq  -fq2 aln.end2.fq

单端:

bedtools bamtofastq -i aln.bam -fq aln.fq

坑呢,就出现在这个地方。在使用bedtools bamtofastq工具进行单端比对的 bam2fastq 过程中, 输出的 fastq 文件会两次输出同一条序列,导致转换后的 fastq 序列数是实际的两倍。具体原因查了好久都没有查到,而且没有可选的参数(希望有牛掰的大佬可以帮忙解释一下这是啥原因形成的)。

alt

alt (上图中,图一为 bam 文件,图二为转换后的 fastq 文件)

bedtools bamtofastq 可选参数:

alt

命令行

刚开始没有发现用 samtools 将单端比对的 bam 文件转换为 fastq 的方法,就写了一条 linux 命令解决上面的问题。

samtools view in_pos.bam | egrep -v '^@' | awk '{if($3 == "*") print "@"$1"\n"$10"\n" "+" "\n"$11}' > single.fq

samtools 工具

samtools工具使用fastq命令进行 bam 文件转换为 fastq 文件,并且可以将单端比对、双端比对的 bam 文件转换为 fastq 文件,使用方法和参数见samtools-fasta 官方文档

双端

# 通过samtools collat​​e 或 samtools sort -n 命令对bam文件排序
samtools collate -u -O in_pos.bam | samtools fastq -1 paired1.fq -2 paired2.fq -0 /dev/null -s /dev/null -n

#若bam文件已经排过序
samtools fastq in_pos.bam -1 paired1.fq -2 paired2.fq -0 /dev/null -s /dev/null -n

单端

samtools fastq in_pos.bam > single.fq

单端情况下只能进行重定向输出,在查找的过程中没有找到有教程写这个方法,不清楚是因为大家没有单端比对的 bam2fastq 需求,还是说这种方法有缺陷。

samtools fastq 可选参数:

alt

好了,今天的踩坑日记就到这里了,其它实现 bam2fastq 工具(例如:Picard、GATK、Biopython)没有做过尝试,大家尝试一下发现的坑,可以留言交流一下。

alt

本文由 mdnice 多平台发布

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值