Picard RevertSam and OUTPUT_BY_READGROUP does not allow specify output files
I am using a pipeline with as input bam and cram files. The first step of this pipeline is RevertSam combined with the option OUTPUT_BY_READGROUP and I walked into the fact that it is impossible to specify your output type of your files and is the same as the input file. (See https://github.com/broadinstitute/picard/blob/50873dab8845bcd0676b6de80f5a3a484a211d58/src/main/java/picard/sam/RevertSam.java#L212 and 278-288) . Since developing two pipelines is not quite time efficient (as is working hours) and converting the cram files into bam files is also not efficient (cpu/io wise) I will focus on a bam only pipeline and specify the output type.
The default is a bam as output and I hide the cram file extension by using the following construct:
cat sample.cram |java -jar picard.jar RevertSam TMP_DIR=. I=/dev/stdin OUTPUT_BY_READGROUP=true SORT_ORDER=queryname O=revertsam COMPRESSION_LEVEL=1 REFERENCE_SEQUENCE=ref.fasta
This smells like a fishy hack to me, but it seems to work. Is there a better/faster/stronger/less hackerish way to do this?