During the process of applying your method, I found that the bam index for "xxx.bam" must be "xxx.bam.bai". However, my bam data came with "xxx.bai" format (created using Picard's BuildBamIndex) and cannot be modified (requires root privilege).
I commented the "xxx.bam.bai" check code segments and the codes still worked (maybe samtools can auto-determine .bai or .bam.bai format).
So I extended the bam index check codes to support both ".bam.bai" and ".bai" format.
During the process of applying your method, I found that the bam index for "xxx.bam" must be "xxx.bam.bai". However, my bam data came with "xxx.bai" format (created using Picard's BuildBamIndex) and cannot be modified (requires root privilege). I commented the "xxx.bam.bai" check code segments and the codes still worked (maybe samtools can auto-determine .bai or .bam.bai format). So I extended the bam index check codes to support both ".bam.bai" and ".bai" format.