b2de9d458c5a1afbcb1eda2ee6d636e2fbc21c76 hiram Mon Feb 21 15:04:36 2022 -0800 correctly use specified index file for cram file types no redmine diff --git src/lib/bamFile.c src/lib/bamFile.c index 2ffdc9f..164b1cc 100644 --- src/lib/bamFile.c +++ src/lib/bamFile.c @@ -11,31 +11,36 @@ #include "cram/sam_header.h" #include "cram/cram_structs.h" #include "htslib/cram.h" #include "udc.h" #include "psl.h" // If KNETFILE_HOOKS is used (as recommended!), then we can simply call bam_index_load // without worrying about the samtools lib creating local cache files in cgi-bin: static bam_index_t *bamOpenIndexGivenUrl(samfile_t *sam, char *fileOrUrl, char *baiFileOrUrl) /* If fileOrUrl has a valid accompanying .bai file, parse and return the index; * otherwise return NULL. baiFileOrUrl can be NULL. * The difference to bamOpenIndex is that the URL/filename of the bai file can be specified. */ { if (sam->format.format == cram) + { + if (baiFileOrUrl) + return sam_index_load2(sam, fileOrUrl, baiFileOrUrl); + else return sam_index_load(sam, fileOrUrl); + } // assume that index is a .bai file char indexName[4096]; bam_index_t *ret = NULL; if (baiFileOrUrl==NULL) { // first try tacking .bai on the end of the bam file name safef(indexName, sizeof indexName, "%s.bai", fileOrUrl); if ((ret = sam_index_load2(sam, fileOrUrl, indexName)) == NULL) { // since the open didn't work, try replacing suffix (if any) with .bai safef(indexName, sizeof indexName - sizeof(".bai"), "%s", fileOrUrl); char *lastDot = strrchr(indexName, '.'); if (lastDot) {