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

Sascha Steinbiss gitlab at salsa.debian.org
Mon May 7 14:14:13 BST 2018


Sascha Steinbiss pushed to branch upstream at Debian Med / rna-star


Commits:
2421a62d by Sascha Steinbiss at 2018-05-07T15:08:52+02:00
New upstream version 2.6.0b+dfsg
- - - - -


8 changed files:

- CHANGES.md
- source/Parameters.cpp
- source/ReadAlign_chimericDetectionOldOutput.cpp
- source/ReadAlign_peOverlapMergeMap.cpp
- source/VERSION
- source/Variation.cpp
- source/Variation.h
- source/parametersDefault.xxd


Changes:

=====================================
CHANGES.md
=====================================
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,3 +1,9 @@
+STAR 2.6.0b 2018/05/02
+======================
+
+* Fixed bugs introduced in 2.6.0a. Please see CHANGES and RELEASEnotes from 2.5.0a.
+
+
 STAR 2.6.0a 2018/04/23
 ======================
 


=====================================
source/Parameters.cpp
=====================================
--- a/source/Parameters.cpp
+++ b/source/Parameters.cpp
@@ -887,7 +887,14 @@ void Parameters::inputParameters (int argInN, char* argIn[]) {//input parameters
         errOut <<"SOLUTION: re-run STAR with --waspOutputMode ... and --varVCFfile /path/to/file.vcf\n";
         exitWithError(errOut.str(), std::cerr, inOut->logMain, EXIT_CODE_PARAMETER, *this);
     };
-        
+
+    
+     if (wasp.yes && outSAMtype.at(0)!="BAM") {
+        ostringstream errOut;
+        errOut <<"EXITING because of FATAL INPUT ERROR: --waspOutputMode requires output to BAM file\n";
+        errOut <<"SOLUTION: re-run STAR with --waspOutputMode ... and --outSAMtype BAM ... \n";
+        exitWithError(errOut.str(), std::cerr, inOut->logMain, EXIT_CODE_PARAMETER, *this);
+    };
     
     //outSAMattributes
     outSAMattrPresent.NH=false;//TODO re-write as class with constructor?
@@ -1050,7 +1057,7 @@ void Parameters::inputParameters (int argInN, char* argIn[]) {//input parameters
             exitWithError(errOut.str(), std::cerr, inOut->logMain, EXIT_CODE_PARAMETER, *this);
         };
     };
-    
+
     if (pCh.out.bam && !outBAMunsorted && !outBAMcoord) {
             ostringstream errOut;
             errOut <<"EXITING because of fatal PARAMETERS error: --chimOutType WithinBAM requires BAM output\n";
@@ -1058,6 +1065,24 @@ void Parameters::inputParameters (int argInN, char* argIn[]) {//input parameters
             exitWithError(errOut.str(), std::cerr, inOut->logMain, EXIT_CODE_PARAMETER, *this);
     };
     
+    if (pCh.multimapNmax>0 && (pCh.out.bam || pCh.out.samOld)) {       
+            ostringstream errOut;
+            errOut <<"EXITING because of fatal PARAMETERS error: --chimMultimapNmax > 0 (new chimeric detection) presently only works with --chimOutType Junctions\n";
+            errOut <<"SOLUTION: re-run with --chimOutType Junctions\n";
+            exitWithError(errOut.str(), std::cerr, inOut->logMain, EXIT_CODE_PARAMETER, *this);
+    };
+    
+    if (peOverlap.NbasesMin > 0) {
+        if (pCh.multimapNmax == 0 && (pCh.out.junctions || pCh.out.samOld)) {
+                ostringstream errOut;
+                errOut <<"EXITING because of fatal PARAMETERS error: --chimMultimapNmax 0 (default old chimeric detection) and --peOverlapNbasesMin > 0 (merging ovelrapping mates) presently only works with --chimOutType WithinBAM\n";
+                errOut <<"SOLUTION: re-run with --chimOutType WithinBAM\n";
+                exitWithError(errOut.str(), std::cerr, inOut->logMain, EXIT_CODE_PARAMETER, *this);
+        };
+    };
+        
+    
+    
     if (pCh.out.bam && !outSAMattrPresent.NM) {
        outSAMattrOrder.push_back(ATTR_NM);
        inOut->logMain << "WARNING --chimOutType=WithinBAM, therefore STAR will output NM attribute" <<endl;
@@ -1217,8 +1242,8 @@ void Parameters::inputParameters (int argInN, char* argIn[]) {//input parameters
 
         if (pGe.gLoad!="NoSharedMemory") {
             ostringstream errOut;
-            errOut << "EXITING because of fatal PARAMETERS error: 2-pass method is not compatible with pGe.gLoad<<"<<pGe.gLoad<<"\n";
-            errOut << "SOLUTION: re-run STAR with --genomeLoad NoSharedMemory ; this is the only compatible option at the moment.s\n";
+            errOut << "EXITING because of fatal PARAMETERS error: 2-pass method is not compatible with --genomeLoad "<<pGe.gLoad<<"\n";
+            errOut << "SOLUTION: re-run STAR with --genomeLoad NoSharedMemory ; this is the only option compatible with --twopassMode Basic .\n";
             exitWithError(errOut.str(),std::cerr, inOut->logMain, EXIT_CODE_PARAMETER, *this);
         };
         twoPass.yes=true;
@@ -1359,6 +1384,8 @@ void Parameters::inputParameters (int argInN, char* argIn[]) {//input parameters
     //peOverlap
     if (peOverlap.NbasesMin>0) {
         peOverlap.yes=true;
+    } else {
+        peOverlap.yes=false;
     };
     
     ////////////////////////////////////////////////


=====================================
source/ReadAlign_chimericDetectionOldOutput.cpp
=====================================
--- a/source/ReadAlign_chimericDetectionOldOutput.cpp
+++ b/source/ReadAlign_chimericDetectionOldOutput.cpp
@@ -78,7 +78,7 @@ void ReadAlign::chimericDetectionOldOutput() {
 
             };
 
-            bamN+=alignBAM(trChim[itr], 1, 0, mapGen.chrStart[trChim[itr].Chr],  mateChr, mateStart-mapGen.chrStart[mateChr], mateStrand, \
+            bamN+=alignBAM(trChim[itr], 1, 0, mapGen.chrStart[trChim[itr].Chr],  mateChr, mateStart-mapGen.chrStart[(mateChr<mapGen.nChrReal ? mateChr : 0)], mateStrand, \
                             alignType, NULL, P.outSAMattrOrder, outBAMoneAlign+bamN, outBAMoneAlignNbytes+bamN);
             bamBytesTotal+=outBAMoneAlignNbytes[0]+outBAMoneAlignNbytes[1];//outBAMoneAlignNbytes[1] = 0 if SE is recorded
         };
@@ -110,39 +110,43 @@ void ReadAlign::chimericDetectionOldOutput() {
         };
     };
 
-
-    for (uint iTr=0;iTr<chimN;iTr++) 
-    {//write all chimeric pieces to Chimeric.out.sam/junction
-        if (P.readNmates==2) {//PE: need mate info
-            uint iex=0;
-            if ( trChim[1-iTr].exons[0][EX_iFrag] != trChim[1-iTr].exons[trChim[1-iTr].nExons-1][EX_iFrag] )
-            {//the other segment has 2 mates, need to find the opposite mate
-                for (;iex<trChim[1-iTr].nExons;iex++) {
-                    if (trChim[1-iTr].exons[iex][EX_iFrag]!=trChim[iTr].exons[0][EX_iFrag]) {
-                        break;
+    if (P.pCh.out.samOld) {
+        for (uint iTr=0;iTr<chimN;iTr++) 
+        {//write all chimeric pieces to Chimeric.out.sam/junction
+            if (P.readNmates==2) {//PE: need mate info
+                uint iex=0;
+                if ( trChim[1-iTr].exons[0][EX_iFrag] != trChim[1-iTr].exons[trChim[1-iTr].nExons-1][EX_iFrag] )
+                {//the other segment has 2 mates, need to find the opposite mate
+                    for (;iex<trChim[1-iTr].nExons;iex++) {
+                        if (trChim[1-iTr].exons[iex][EX_iFrag]!=trChim[iTr].exons[0][EX_iFrag]) {
+                            break;
+                        };
                     };
                 };
-            };
 
-            uint mateChr=trChim[1-iTr].Chr;
-            uint mateStart=trChim[1-iTr].exons[iex][EX_G];
-            char mateStrand=(char) (trChim[1-iTr].Str!=trChim[1-iTr].exons[iex][EX_iFrag]);
+                uint mateChr=trChim[1-iTr].Chr;
+                uint mateStart=trChim[1-iTr].exons[iex][EX_G];
+                char mateStrand=(char) (trChim[1-iTr].Str!=trChim[1-iTr].exons[iex][EX_iFrag]);
 
-            outputTranscriptSAM(trChim[iTr], chimN, iTr, mateChr, mateStart, mateStrand, -1, NULL, &chunkOutChimSAM);
-        } else 
-        {
-            outputTranscriptSAM(trChim[iTr], chimN, iTr, -1, -1, -1, -1, NULL, &chunkOutChimSAM);
+                outputTranscriptSAM(trChim[iTr], chimN, iTr, mateChr, mateStart, mateStrand, -1, NULL, &chunkOutChimSAM);
+            } else 
+            {
+                outputTranscriptSAM(trChim[iTr], chimN, iTr, -1, -1, -1, -1, NULL, &chunkOutChimSAM);
+            };
         };
     };
-    //junction + SAMp
-    *chunkOutChimJunction << mapGen.chrName[trChim[0].Chr] <<"\t"<< chimJ0 - mapGen.chrStart[trChim[0].Chr]+1 <<"\t"<< (trChim[0].Str==0 ? "+":"-") \
-            <<"\t"<< mapGen.chrName[trChim[1].Chr] <<"\t"<< chimJ1 - mapGen.chrStart[trChim[1].Chr]+1 <<"\t"<< (trChim[1].Str==0 ? "+":"-") \
-            <<"\t"<< chimMotif <<"\t"<< chimRepeat0  <<"\t"<< chimRepeat1 <<"\t"<< readName+1 \
-            <<"\t"<< trChim[0].exons[0][EX_G] - mapGen.chrStart[trChim[0].Chr]+1 <<"\t"<< outputTranscriptCIGARp(trChim[0]) \
-            <<"\t"<< trChim[1].exons[0][EX_G] - mapGen.chrStart[trChim[1].Chr]+1 <<"\t"<<  outputTranscriptCIGARp(trChim[1]);
-    if (P.outSAMattrPresent.RG)
-        *chunkOutChimJunction <<"\t"<< P.outSAMattrRG.at(readFilesIndex);
-    *chunkOutChimJunction <<"\n"; //<<"\t"<< trChim[0].exons[0][EX_iFrag]+1 --- no need for that, since trChim[0] is always on the first mate
+    
+    if (P.pCh.out.junctions) {
+        //junction + SAMp
+        *chunkOutChimJunction << mapGen.chrName[trChim[0].Chr] <<"\t"<< chimJ0 - mapGen.chrStart[trChim[0].Chr]+1 <<"\t"<< (trChim[0].Str==0 ? "+":"-") \
+                <<"\t"<< mapGen.chrName[trChim[1].Chr] <<"\t"<< chimJ1 - mapGen.chrStart[trChim[1].Chr]+1 <<"\t"<< (trChim[1].Str==0 ? "+":"-") \
+                <<"\t"<< chimMotif <<"\t"<< chimRepeat0  <<"\t"<< chimRepeat1 <<"\t"<< readName+1 \
+                <<"\t"<< trChim[0].exons[0][EX_G] - mapGen.chrStart[trChim[0].Chr]+1 <<"\t"<< outputTranscriptCIGARp(trChim[0]) \
+                <<"\t"<< trChim[1].exons[0][EX_G] - mapGen.chrStart[trChim[1].Chr]+1 <<"\t"<<  outputTranscriptCIGARp(trChim[1]);
+        if (P.outSAMattrPresent.RG)
+            *chunkOutChimJunction <<"\t"<< P.outSAMattrRG.at(readFilesIndex);
+        *chunkOutChimJunction <<"\n"; //<<"\t"<< trChim[0].exons[0][EX_iFrag]+1 --- no need for that, since trChim[0] is always on the first mate
+    };
     
     return;
 };
\ No newline at end of file


=====================================
source/ReadAlign_peOverlapMergeMap.cpp
=====================================
--- a/source/ReadAlign_peOverlapMergeMap.cpp
+++ b/source/ReadAlign_peOverlapMergeMap.cpp
@@ -3,9 +3,9 @@
 
 void ReadAlign::peOverlapMergeMap() {
     
-    peOv.yes=false;
-    
+
     if (!P.peOverlap.yes || P.readNmates!=2 ) {//no peOverlap
+        peOv.yes=false;
         return;
     };
 
@@ -18,10 +18,9 @@ void ReadAlign::peOverlapMergeMap() {
     peMergeRA->peMergeMates();
     peOv=peMergeRA->peOv;
 
-
-    
     if (peOv.nOv==0) {//check if mates can be merged, if not - return
         //cout <<"\n-1\n";
+        peOv.yes=false;
         return;
     };
 
@@ -74,6 +73,8 @@ void ReadAlign::peOverlapMergeMap() {
     
     if (peScore<=trBest->maxScore || chimRecord) {
         peOv.yes=true;
+    } else {
+        peOv.yes=false;
     };
     
     return;
@@ -202,12 +203,13 @@ void Transcript::peOverlapSEtoPE(uint* mateStart, Transcript &t) {//convert alig
 
             exons[nExons][EX_iFrag]=(imate==0 ? t.Str : 1-t.Str);
             exons[nExons][EX_sjA]=t.exons[iex][EX_sjA];
-            canonSJ[nExons]=t.canonSJ[iex];
-            sjAnnot[nExons]=t.sjAnnot[iex];
-            sjStr[nExons]=t.sjStr[iex];
-            shiftSJ[nExons][0]=t.shiftSJ[iex][0];
-            shiftSJ[nExons][1]=t.shiftSJ[iex][1];
-
+            if (nExons>0 && iex>0) {
+                canonSJ[nExons-1]=t.canonSJ[iex-1];
+                sjAnnot[nExons-1]=t.sjAnnot[iex-1];
+                sjStr[nExons-1]=t.sjStr[iex-1];
+                shiftSJ[nExons-1][0]=t.shiftSJ[iex-1][0];
+                shiftSJ[nExons-1][1]=t.shiftSJ[iex-1][1];
+            };
             //record these exons for mate2
             if (t.exons[iex][EX_R]>=mSta[imate]) {//exon left is inside the mate
                 exons[nExons][EX_G]=t.exons[iex][EX_G];  
@@ -227,8 +229,11 @@ void Transcript::peOverlapSEtoPE(uint* mateStart, Transcript &t) {//convert alig
             ++nExons;
         };
         canonSJ[nExons-1]=-3; //marks "junction" between mates
-    };
-    
+        sjAnnot[nExons-1]=0;
+        sjStr[nExons-1]=0;
+        shiftSJ[nExons-1][0]=0;
+        shiftSJ[nExons-1][1]=0;
+    }; 
     
     //copy scalar variables
     for (uint ii=0;ii<3;ii++) {


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


=====================================
source/Variation.cpp
=====================================
--- a/source/Variation.cpp
+++ b/source/Variation.cpp
@@ -12,8 +12,9 @@ Variation::Variation (Parameters &Pin, vector <uint> &chrStartIn, map <string,ui
     
     yes=true;
     
-    varOutFileName=P.outFileNamePrefix+"Variation.out";
-    varOutStream.open(varOutFileName);
+    //not used yet
+    //varOutFileName=P.outFileNamePrefix+"Variation.out";
+    //varOutStream.open(varOutFileName);
     
     vcfFile=P.var.vcfFile;
     loadVCF(vcfFile);


=====================================
source/Variation.h
=====================================
--- a/source/Variation.h
+++ b/source/Variation.h
@@ -42,8 +42,8 @@ public:
     
 private:
     string vcfFile;
-    string varOutFileName;
-    ofstream varOutStream;//output file for variations
+    //string varOutFileName;
+    //ofstream varOutStream;//output file for variations
     
     vector <uint> &chrStart; //this needs to be replaced with a structure that contains basic genome variables
     map <string,uint> &chrNameIndex;


=====================================
source/parametersDefault.xxd
=====================================
The diff for this file was not included because it is too large.


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

---
View it on GitLab: https://salsa.debian.org/med-team/rna-star/commit/2421a62d4a8f3b37efa1d64cdba25e2b987d252f
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/20180507/bd605919/attachment-0001.html>


More information about the debian-med-commit mailing list