]> git.donarmstrong.com Git - mothur.git/blobdiff - chimeraslayer.cpp
1.21.0
[mothur.git] / chimeraslayer.cpp
index 5d714fd1ee88ff18a00619e96ae253847883a151..9da0d3c522526a7fb76720aef8a38c83fab11814 100644 (file)
@@ -14,7 +14,7 @@
 
 //***************************************************************************************************************
 ChimeraSlayer::ChimeraSlayer(string file, string temp, bool trim, string mode, int k, int ms, int mms, int win, float div, 
-int minsim, int mincov, int minbs, int minsnp, int par, int it, int inc, int numw, bool r) : Chimera()  {      
+int minsim, int mincov, int minbs, int minsnp, int par, int it, int inc, int numw, bool r, string blas) : Chimera()  {         
        try {
                fastafile = file;
                templateFileName = temp; templateSeqs = readSeqs(temp);
@@ -35,6 +35,7 @@ int minsim, int mincov, int minbs, int minsnp, int par, int it, int inc, int num
                realign = r; 
                trimChimera = trim;
                numNoParents = 0;
+               blastlocation = blas;
        
                doPrep();
        }
@@ -44,8 +45,9 @@ int minsim, int mincov, int minbs, int minsnp, int par, int it, int inc, int num
        }
 }
 //***************************************************************************************************************
+//template=self
 ChimeraSlayer::ChimeraSlayer(string file, string temp, bool trim, map<string, int>& prior, string mode, int k, int ms, int mms, int win, float div, 
-                                                        int minsim, int mincov, int minbs, int minsnp, int par, int it, int inc, int numw, bool r) : Chimera()  {      
+                                                        int minsim, int mincov, int minbs, int minsnp, int par, int it, int inc, int numw, bool r, string blas) : Chimera()  {         
        try {
                fastafile = file; templateSeqs = readSeqs(fastafile);
                templateFileName = temp; 
@@ -67,6 +69,7 @@ ChimeraSlayer::ChimeraSlayer(string file, string temp, bool trim, map<string, in
                trimChimera = trim;
                priority = prior;
                numNoParents = 0;
+               blastlocation = blas;
                
                createFilter(templateSeqs, 0.0); //just removed columns where all seqs have a gap
                
@@ -215,7 +218,7 @@ int ChimeraSlayer::doPrep() {
                }else if (searchMethod == "blast") {
                
                        //generate blastdb
-                       databaseLeft = new BlastDB(m->getRootName(m->getSimpleName(fastafile)), -1.0, -1.0, 1, -3);
+                       databaseLeft = new BlastDB(m->getRootName(m->getSimpleName(fastafile)), -1.0, -1.0, 1, -3, blastlocation);
                        
                        if (m->control_pressed) { return 0; }
 
@@ -256,6 +259,11 @@ vector<Sequence*> ChimeraSlayer::getTemplate(Sequence q, vector<Sequence*>& user
                        }
                }
                
+               //avoids nuisance error from formatdb for making blank blast database
+               if (userTemplate.size() == 0) {
+                       return userTemplate;
+               }
+               
                string  kmerDBNameLeft;
                string  kmerDBNameRight;
                
@@ -324,7 +332,7 @@ vector<Sequence*> ChimeraSlayer::getTemplate(Sequence q, vector<Sequence*>& user
                }else if (searchMethod == "blast") {
                        
                        //generate blastdb
-                       databaseLeft = new BlastDB(m->getRootName(m->getSimpleName(templateFileName)), -1.0, -1.0, 1, -3);
+                       databaseLeft = new BlastDB(m->getRootName(m->getSimpleName(templateFileName)), -1.0, -1.0, 1, -3, blastlocation);
                        
                        if (m->control_pressed) { return userTemplate; }
 
@@ -749,7 +757,6 @@ int ChimeraSlayer::getChimeras(Sequence* query) {
                else {  thisTemplate = getTemplate(*query, thisFilteredTemplate);  } //fills this template and creates the databases
                
                if (m->control_pressed) {  return 0;  }
-               
                if (thisTemplate.size() == 0) {  return 0; } //not chimeric
                
                //moved this out of maligner - 4/29/11