This is a test version of Biostars. For the public version, visit https://www.biostars.org.
output of bedtools bamtofastq are empty files

Hi All,

I would like to convert my bam file to fastq. But after I run bedtools with the sorted bam file, I've got two empty files. What should be wrong? (Or what is the proper way to convert a mapped paired-end bam file to fastq?)

What I tried:

samtools sort -n /pathtothefiles/NA12878.chr1.bam /pathtothefiles/NA12878_chr1.qsort
bedtools bamtofastq -i /pathtothefiles/NA12878_chr1.qsort \
                      -fq aln.end1.fq \
                      -fq2 aln.end2.fq

Thanks in advance!

bamtofastq bam fastq samtools bedtools

Samtools doesn't sort files in place, it writes them sorted to a new file. You need something like samtools sort -n foo.bam > name_sorted.bam

sorry, I deleted too much from the inserted command ... I did it properly, like you wrote.

OK, thanks for the update. I've moved my answer to a comment in hopes that someone more familiar with that particular command will answer.

it's fairly possible that you can skip the qsort step, read the file from samtools and execute bedtools next. Also, it's possible that samtools is still running and the files will be available at the end of the run. Do you see the file's size increasing with time? Please edit your post with Code paragraph so we can read more easily.

I usually use bam2fq instead of bedtools, did you try the following?

htscmd bamshuf -uOn 128 aln_reads.bam tmp > shuffled_reads.bam
htscmd bam2fq -a shuffled_reads.bam > interleaved_reads.fq
gzip interleaved_reads.fq

In one line:

tscmd bamshuf -uOn 128 aln_reads.bam tmp | htscmd bam2fq -a - | gzip > interleaved_reads.fq.gz

thanks, I tried, but so far I didn't find a right way to deinterleave the output fastq, or at least the script, which I tried was not correct.

I'm sure that samtools ended before I started to use bedtools, but I try again.

2 answers

I know this post is old but I had the same issue. I was wondering if my data were paired-end or single-end. To do so I tried Bedtools but the resulting files were empty. So, I tried Picard with the paired-end command and it turned out that all my reads went to the unpaired file. Therefore my dataset was single-end and that's probably why the Bedtools command wouldn't work.

Please cite your command when you mention one in your solution, so that future users can see and better understand. (picard-tools : which command ? which flags ?)

I had the same issue as well. Just found out that the problem stems from sorting. I skipped the sorting step and directly convert the unsorted bam file into fastq file. It worked!

I tried what you suggested, it is still empty...

Log in to answer this question.