# convert sam to bam, filtering out alignments with less than $MINQ quality # (I've seen a value of 20 or 30 being used in some cases) samtools view -hbSq $MINQ pe.sam > tmp.bam samtools sort tmp.bam tmp.sorted samtools index tmp.sorted.bam # remove duplicates (this only works for samtools <= 0.1.20) samtools rmdup tmp.sorted.bam tmp.rmdup.sorted.bam # add readgroups picard-tools AddOrReplaceReadGroups INPUT=tmp.rmdup.sorted.bam OUTPUT=tmp.addrg.rmdup.sorted.bam RGLB="rglib" RGPL="rgpl" RGPU="rgpu" RGSM="rgsm" VALIDATION_STRINGENCY=SILENT samtools index tmp.addrg.rmdup.sorted.bam # realign near indels picard-tools CreateSequenceDictionary R=hg38.fa O=hg38.dict samtools faidx hg38.fa # you might want to look for better gatk options gatk -I tmp.addrg.rmdup.sorted.bam -R hg38.fa -T RealignerTargetCreator -o help.intervals gatk -I tmp.addrg.rmdup.sorted.bam -R hg38.fa -T IndelRealigner -targetIntervals help.intervals -o final.bam samtools index final.bam