Skip to content
Commits on Source (3)
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
======================
......
rna-star (2.6.0b+dfsg-1) unstable; urgency=medium
* New upstream release.
-- Sascha Steinbiss <satta@debian.org> Mon, 07 May 2018 15:09:13 +0200
rna-star (2.6.0a+dfsg-1) unstable; urgency=medium
[ Sascha Steinbiss ]
......
......@@ -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;
};
////////////////////////////////////////////////
......
......@@ -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
......@@ -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];
......
#define STAR_VERSION "STAR_2.6.0a"
#define STAR_VERSION "STAR_2.6.0b"
......@@ -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);
......
......@@ -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;
......
This diff is collapsed.