bufReader *initializeBufReaders2(const std::vector<char *> vec){ bufReader *ret = new bufReader[vec.size()]; for(size_t i =0;i<vec.size();i++) ret[i] = initBufReader2(vec[i]); //now all readers are inialized, lets validate the header is the same for(size_t i=1;i<vec.size();i++) if(compHeader(ret[0].hd,ret[i].hd)) printErr(); return ret; }
bufReader *initializeBufReaders2(const std::vector<char *> &vec,int exitOnError,int doCheck,char *fai_fname){ bufReader *ret = new bufReader[vec.size()]; for(size_t i =0;i<vec.size();i++) ret[i] = initBufReader2(vec[i],doCheck,fai_fname); //now all readers are inialized, lets validate the header is the same for(size_t i=1;i<vec.size();i++) if(compHeader(ret[0].hdr,ret[i].hdr)){ fprintf(stderr,"Difference in BAM headers for \'%s\' and \'%s\'\n",vec[0],vec[i]); fprintf(stderr,"HEADER BAM1\n"); printHd(ret[0].hdr,stderr); fprintf(stderr,"HEADER BAM2\n"); printHd(ret[i].hdr,stderr); fprintf(stderr,"Difference in BAM headers for \'%s\' and \'%s\'\n",vec[0],vec[i]); if(exitOnError) exit(0); } pair *val_keys = new pair[vec.size()]; size_t fsize(const char* fname); for(size_t i=0;i<vec.size();i++){ pair p; if (strstr(vec[i], "ftp://") == vec[i] || strstr(vec[i], "http://") == vec[i]){ p.val = 100+i;//doesntmatter p.key = i; }else{ p.val = aio::fsize(vec[i]); p.key = i; val_keys[i]=p; } } std::sort(val_keys,val_keys+vec.size()); #if 0 for(int i=0;i<vec.size();i++) fprintf(stderr,"i:%d key:%zu val:%d\n",i,val_keys[i].val,val_keys[i].key); #endif bamSortedIds = new int[vec.size()]; for(int i=0;i<vec.size();i++) bamSortedIds[i] = val_keys[i].key; delete [] val_keys; return ret; }