[med-svn] [Git][med-team/rna-star][upstream] New upstream version 2.6.1b+dfsg

Steffen Möller gitlab at salsa.debian.org
Tue Sep 18 18:03:59 BST 2018


Steffen Möller pushed to branch upstream at Debian Med / rna-star


Commits:
f926e182 by Steffen Moeller at 2018-09-18T16:52:13Z
New upstream version 2.6.1b+dfsg
- - - - -


6 changed files:

- CHANGES.md
- source/BAMoutput.cpp
- source/Genome.cpp
- source/Parameters.cpp
- source/STAR.cpp
- source/VERSION


Changes:

=====================================
CHANGES.md
=====================================
@@ -1,3 +1,10 @@
+STAR 2.6.1b 2018/09/06
+======================
+
+* Fixed a problem with --outSAMfilter KeepOnlyAddedReferences option.
+* Fixed a problem with output of an empty sorted BAM.
+
+
 STAR 2.6.1a 2018/08/14
 ======================
 


=====================================
source/BAMoutput.cpp
=====================================
@@ -127,7 +127,7 @@ void BAMoutput::coordBins() {//define genomic starts for bins
     if (P.runThreadN>1) pthread_mutex_lock(&g_threadChunks.mutexBAMsortBins);
     if (P.outBAMsortingBinStart[0]!=0) {//it's set to 0 only after the bin sizes are determined
         //extract coordinates and sort
-        uint *startPos = new uint [binTotalN[0]];//array of aligns start positions
+        uint *startPos = new uint [binTotalN[0]+1];//array of aligns start positions
         for (uint ib=0,ia=0;ia<binTotalN[0];ia++) {
             uint32 *bamIn32=(uint32*) (binStart[0]+ib);
             startPos[ia]  =( ((uint) bamIn32[1]) << 32) | ( (uint)bamIn32[2] );


=====================================
source/Genome.cpp
=====================================
@@ -336,10 +336,10 @@ void Genome::genomeLoad(){//allocate and load Genome
     else if (pGe.gLoad=="NoSharedMemory") // simply allocate memory, do not use shared memory
     {
         genomeInsertL=0;
+        genomeInsertChrIndFirst=nChrReal;
         if (pGe.gFastaFiles.at(0)!="-")
         {//will insert sequences in the genome, now estimate the extra size
            uint oldlen=chrStart.back();//record the old length
-           genomeInsertChrIndFirst=nChrReal;
            genomeInsertL=genomeScanFastaFiles(P, G, false, *this)-oldlen;
         };
 


=====================================
source/Parameters.cpp
=====================================
@@ -737,6 +737,14 @@ void Parameters::inputParameters (int argInN, char* argIn[]) {//input parameters
         exitWithError(errOut.str(), std::cerr, inOut->logMain, EXIT_CODE_PARAMETER, *this);
     };
 
+    if ( (outSAMfilter.KeepOnlyAddedReferences || outSAMfilter.KeepAllAddedReferences) && pGe.gFastaFiles.at(0)=="-" ) {
+        ostringstream errOut;
+        errOut <<"EXITING because of FATAL INPUT ERROR: --outSAMfilter KeepOnlyAddedReferences OR KeepAllAddedReferences options can only be used if references are added on-the-fly with --genomeFastaFiles" <<"\n";
+        errOut <<"SOLUTION: use default --outSAMfilter None, OR add references with --genomeFataFiles\n";
+        exitWithError(errOut.str(), std::cerr, inOut->logMain, EXIT_CODE_PARAMETER, *this);
+    };
+       
+    
     if (outMultimapperOrder.mode=="Old_2.4")
     {
         outMultimapperOrder.random=false;


=====================================
source/STAR.cpp
=====================================
@@ -403,57 +403,68 @@ int main(int argInN, char* argIn[]) {
             errOut <<"EXITING because of fatal ERROR: not enough memory for BAM sorting: \n";
             errOut <<"SOLUTION: re-run STAR with at least --limitBAMsortRAM " <<maxMem+1000000000;
             exitWithError(errOut.str(), std::cerr, P.inOut->logMain, EXIT_CODE_PARAMETER, P);
-        };
-
-
-        uint totalMem=0;
-//         P.inOut->logMain << "Started sorting BAM ..." <<endl;
-        #pragma omp parallel num_threads(P.outBAMsortingThreadNactual)
-        #pragma omp for schedule (dynamic,1)
-        for (uint32 ibin1=0; ibin1<nBins; ibin1++) {
-            uint32 ibin=nBins-1-ibin1;//reverse order to start with the last bin - unmapped reads
-
-            uint binN=0, binS=0;
-            for (int it=0; it<P.runThreadN; it++) {//collect sizes from threads
-                binN += RAchunk[it]->chunkOutBAMcoord->binTotalN[ibin];
-                binS += RAchunk[it]->chunkOutBAMcoord->binTotalBytes[ibin];
+        } else if(maxMem==0) {
+            P.inOut->logMain << "WARNING: nothing to sort - no output alignments" <<endl;
+            BGZF *bgzfOut;
+            bgzfOut=bgzf_open(P.outBAMfileCoordName.c_str(),("w"+to_string((long long) P.outBAMcompression)).c_str());
+            if (bgzfOut==NULL) {
+                ostringstream errOut;
+                errOut <<"EXITING because of fatal ERROR: could not open output bam file: " << P.outBAMfileCoordName << "\n";
+                errOut <<"SOLUTION: check that the disk is not full, increase the max number of open files with Linux command ulimit -n before running STAR";
+                exitWithError(errOut.str(), std::cerr, P.inOut->logMain, EXIT_CODE_PARAMETER, P);
             };
+            outBAMwriteHeader(bgzfOut,P.samHeaderSortedCoord,mainGenome.chrNameAll,mainGenome.chrLengthAll);
+            bgzf_close(bgzfOut);
+        } else {//sort
+            uint totalMem=0;
+            #pragma omp parallel num_threads(P.outBAMsortingThreadNactual)
+            #pragma omp for schedule (dynamic,1)
+            for (uint32 ibin1=0; ibin1<nBins; ibin1++) {
+                uint32 ibin=nBins-1-ibin1;//reverse order to start with the last bin - unmapped reads
+
+                uint binN=0, binS=0;
+                for (int it=0; it<P.runThreadN; it++) {//collect sizes from threads
+                    binN += RAchunk[it]->chunkOutBAMcoord->binTotalN[ibin];
+                    binS += RAchunk[it]->chunkOutBAMcoord->binTotalBytes[ibin];
+                };
 
-            if (binS==0) continue; //empty bin
-
-            if (ibin == nBins-1) {//last bin for unmapped reads
-                BAMbinSortUnmapped(ibin,P.runThreadN,P.outBAMsortTmpDir, P, mainGenome);
-            } else {
-            uint newMem=binS+binN*24;
-            bool boolWait=true;
-            while (boolWait) {
-                #pragma omp critical
-                if (totalMem+newMem < P.limitBAMsortRAM) {
-                    boolWait=false;
-                    totalMem+=newMem;
+                if (binS==0) continue; //empty bin
+
+                if (ibin == nBins-1) {//last bin for unmapped reads
+                    BAMbinSortUnmapped(ibin,P.runThreadN,P.outBAMsortTmpDir, P, mainGenome);
+                } else {
+                    uint newMem=binS+binN*24;
+                    bool boolWait=true;
+                    while (boolWait) {
+                        #pragma omp critical
+                        if (totalMem+newMem < P.limitBAMsortRAM) {
+                            boolWait=false;
+                            totalMem+=newMem;
+                        };
+                        sleep(0.1);
+                    };
+                    BAMbinSortByCoordinate(ibin,binN,binS,P.runThreadN,P.outBAMsortTmpDir, P, mainGenome);
+                    #pragma omp critical
+                    totalMem-=newMem;//"release" RAM
                 };
-                sleep(0.1);
             };
-            BAMbinSortByCoordinate(ibin,binN,binS,P.runThreadN,P.outBAMsortTmpDir, P, mainGenome);
-            #pragma omp critical
-            totalMem-=newMem;//"release" RAM
-        };
-        };
-        //concatenate all BAM files, using bam_cat
-        char **bamBinNames = new char* [nBins];
-        vector <string> bamBinNamesV;
-        for (uint32 ibin=0; ibin<nBins; ibin++) {
-
-            bamBinNamesV.push_back(P.outBAMsortTmpDir+"/b"+std::to_string((uint) ibin));
-            struct stat buffer;
-            if (stat (bamBinNamesV.back().c_str(), &buffer) != 0) {//check if file exists
-                bamBinNamesV.pop_back();
+        
+            //concatenate all BAM files, using bam_cat
+            char **bamBinNames = new char* [nBins];
+            vector <string> bamBinNamesV;
+            for (uint32 ibin=0; ibin<nBins; ibin++) {
+
+                bamBinNamesV.push_back(P.outBAMsortTmpDir+"/b"+std::to_string((uint) ibin));
+                struct stat buffer;
+                if (stat (bamBinNamesV.back().c_str(), &buffer) != 0) {//check if file exists
+                    bamBinNamesV.pop_back();
+                };
             };
+            for (uint32 ibin=0; ibin<bamBinNamesV.size(); ibin++) {
+                    bamBinNames[ibin] = (char*) bamBinNamesV.at(ibin).c_str();
+            };
+            bam_cat(bamBinNamesV.size(), bamBinNames, 0, P.outBAMfileCoordName.c_str());
         };
-        for (uint32 ibin=0; ibin<bamBinNamesV.size(); ibin++) {
-                bamBinNames[ibin] = (char*) bamBinNamesV.at(ibin).c_str();
-        };
-        bam_cat(bamBinNamesV.size(), bamBinNames, 0, P.outBAMfileCoordName.c_str());
     };
     //wiggle output
     if (P.outWigFlags.yes) {


=====================================
source/VERSION
=====================================
@@ -1 +1 @@
-#define STAR_VERSION "STAR_2.6.1a"
+#define STAR_VERSION "STAR_2.6.1b"



View it on GitLab: https://salsa.debian.org/med-team/rna-star/commit/f926e182047e5dcf97be248fa0d30b9850a0ca1a

-- 
View it on GitLab: https://salsa.debian.org/med-team/rna-star/commit/f926e182047e5dcf97be248fa0d30b9850a0ca1a
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20180918/f6271d59/attachment-0001.html>


More information about the debian-med-commit mailing list