Thanks. It works!!! Can I generate a folder call fastq under the "/path/to/folder/" to output all fastq using the same input filename?
Picard tools samtofastq for a folder
I want to use SamToFastq in Picard tools to convert 100 bam files to fastq (pair-end). I wrote a loop, but it does not work. Anyone can help me to look at the code. I have no idea what's going on. Appreciate ahead.
#!/bin/bash
bamfolder="/path/to/folder/*"
for b in $bamfolder
do
echo $b
java -jar picard.jar SamToFastq \
I=$b \
FASTQ= /path/to/folder/*_R1.fastq \
SECOND_END_FASTQ= /path/to/folder/*_R2.fastq
done
• 5,448 views
•
link
3 answers
find dir/ -name "*.bam" | while read F ; do java -jar picard.jar SamToFastq I=$F FASTQ=${F%.bam}_R1.fq.gz SECOND_END_FASTQ=${F%.bam}_R2.fq.gz ; done
• 0 views
•
link
#!/bin/bash
bamfolder="/path/to/folder/*"
for b in $bamfolder
do
echo ${b}
java -jar picard.jar SamToFastq \
I=$b \
FASTQ=/path/to/folder/{b}_R1.fastq \
SECOND_END_FASTQ=/path/to/folder/{b}_R2.fastq
done
space edited per @genomax2
• 0 views
•
link
I have tried, same error: ERROR: Option 'INPUT' is required. I don't know why it's always request INPUT
• 0 views
•
link
That's my final code and it works. First, use SamToFastq to generate *_R1_fq.gz and *_R2_fq.gz, then use mkdir and mv to move all fastq files to a new folder.
find /path/to/folder/ -name "*.bam" | while read F ;
do
java -jar picard.jar SamToFastq \
INPUT=$F \
FASTQ=${F%.*}_R1.fq.gz \
SECOND_END_FASTQ=${F%.*}_R2.fq.gz
done
bamfolder="/path/to/folder/*.fq.gz"
for b in $bamfolder
do
fastq="/path/to/folder/fastq/"
mkdir -p $fastq
mv $b $fastq/
done
• 0 views
•
link
Log in to answer this question.
Are you getting anything back from
echo $b. There can be no spaces betweenFASTQ=andSECOND_END_FASTQ=and the paths.When I run echo $b done, It listed all bam files in the folder.
This is academic since @Pierre's solution works but the reason yours is not working is because your are passing
$bas the entire file name (with .bam extension intact). So instead if you try the following and see if that works.I have tried. ERROE: Neither file nor parent directory exist.
I think for the "FASTQ=" and "SECOND_END_FASTQ=" I can not use /path/to/folder/${b%.*}, because it shows output=/path/to/folder/path/to/folder/. If only use FASTQ=${b%.bam}_R1.fq.gz, it works.
As is customary with these
/path/to/folder/is a placeholder that needs to be replaced with a real path available on your computer. It is there to show that you can use/write data from/to any other location.Does not work? How it doesn't work? What is the error message?
Anyway, I think there should not be spaces after
FASTQ=andSECOND_END_FASTQ=.erroe msg is INPUT is required. It's kind wired. I think the I=$b is right....