Commit 2421a62d authored by Sascha Steinbiss's avatar Sascha Steinbiss
Browse files

New upstream version 2.6.0b+dfsg

parent e608df7f
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
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
======================

+31 −4
Original line number Diff line number Diff line
@@ -889,6 +889,13 @@ void Parameters::inputParameters (int argInN, char* argIn[]) {//input parameters
    };

    
     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?
    outSAMattrPresent.HI=false;
@@ -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;
    };
    
    ////////////////////////////////////////////////
+32 −28
Original line number Diff line number Diff line
@@ -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,7 +110,7 @@ void ReadAlign::chimericDetectionOldOutput() {
        };
    };


    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
@@ -134,6 +134,9 @@ void ReadAlign::chimericDetectionOldOutput() {
                outputTranscriptSAM(trChim[iTr], chimN, iTr, -1, -1, -1, -1, NULL, &chunkOutChimSAM);
            };
        };
    };
    
    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 ? "+":"-") \
@@ -143,6 +146,7 @@ void ReadAlign::chimericDetectionOldOutput() {
        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
+17 −12
Original line number Diff line number Diff line
@@ -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,9 +229,12 @@ 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++) {
        intronMotifs[ii]=t.intronMotifs[ii];
+1 −1
Original line number Diff line number Diff line
#define STAR_VERSION "STAR_2.6.0a"
#define STAR_VERSION "STAR_2.6.0b"
Loading