]> git.donarmstrong.com Git - mothur.git/commitdiff
modified trim.seqs to split by primer name if primer name is given, and warn if dupli...
authorwestcott <westcott>
Wed, 30 Jun 2010 16:56:43 +0000 (16:56 +0000)
committerwestcott <westcott>
Wed, 30 Jun 2010 16:56:43 +0000 (16:56 +0000)
getsharedotucommand.cpp
helpcommand.cpp
makefile
mothur.h
mothurout.cpp
mothurout.h
setdircommand.cpp
trimseqscommand.cpp
trimseqscommand.h

index 7f8755645ce6664c5a299073e0ae1cbc6e875025..d2e40887851e046fe4ab23f0985c5a76b4903478 100644 (file)
@@ -334,7 +334,7 @@ int GetSharedOTUCommand::process(ListVector* shared) {
                                //find group
                                string seqGroup = groupMap->getGroup(name);
                                if (output != "accnos") {
-                                       namesOfSeqsInThisBin.push_back((name + "\t" + seqGroup + "\t" + toString(i+1)));
+                                       namesOfSeqsInThisBin.push_back((name + "|" + seqGroup + "|" + toString(i+1)));
                                }else {  namesOfSeqsInThisBin.push_back(name);  }
                                
                                if (seqGroup == "not found") { m->mothurOut(name + " is not in your groupfile. Please correct."); m->mothurOutEndLine(); exit(1);  }
@@ -348,7 +348,7 @@ int GetSharedOTUCommand::process(ListVector* shared) {
                        //get last name
                        string seqGroup = groupMap->getGroup(names);
                        if (output != "accnos") {
-                               namesOfSeqsInThisBin.push_back((names + "\t" + seqGroup + "\t" + toString(i+1)));
+                               namesOfSeqsInThisBin.push_back((names + "|" + seqGroup + "|" + toString(i+1)));
                        }else {  namesOfSeqsInThisBin.push_back(names); }
                        
                        if (seqGroup == "not found") { m->mothurOut(names + " is not in your groupfile. Please correct."); m->mothurOutEndLine(); exit(1);  }
@@ -379,8 +379,8 @@ int GetSharedOTUCommand::process(ListVector* shared) {
                                        
                                        if (fastafile != "") { 
                                                if (output != "accnos") {
-                                                       string seqName = namesOfSeqsInThisBin[j].substr(0,namesOfSeqsInThisBin[j].find_last_of('\t'));
-                                                       seqName = seqName.substr(0,seqName.find_last_of('\t'));
+                                                       string seqName = namesOfSeqsInThisBin[j].substr(0,namesOfSeqsInThisBin[j].find_last_of('|'));
+                                                       seqName = seqName.substr(0,seqName.find_last_of('|'));
                                                        fastaMap[seqName] = namesOfSeqsInThisBin[j];  //fastaMap needs to contain just the seq name for output later
                                                }else {
                                                        fastaMap[namesOfSeqsInThisBin[j]] = namesOfSeqsInThisBin[j];
index 608ff3e275a1c7240975b506961d3a7ecf78fa79..040327638318b271b72276671adb17ad1cc4a75e 100644 (file)
@@ -23,7 +23,6 @@ HelpCommand::~HelpCommand(){}
 //**********************************************************************************************************************
 
 int HelpCommand::execute(){
-
        validCommands->printCommands(cout);
        m->mothurOut("For more information about a specific command type 'commandName(help)' i.e. 'read.dist(help)'"); m->mothurOutEndLine();
        
index 08dee23581723953d2001a36ccda1cc957538eef..052519e633acf1b68dfd4d3c3f0f40c7f235cd11 100644 (file)
--- a/makefile
+++ b/makefile
-###################################################
-#
-# Makefile for mothur
-# Creator [Xcode -> Makefile Ver: Feb 14 2007 09:18:41]
-# Created: April 16, 2010
-#
-###################################################
-
-#
-# Macros
-#
-
-CC = g++ 
-CC_OPTIONS = -O3 
-
-# if you do not want to use the readline library set to no, default yes.
-# make sure you have the library installed
-
-64BIT_VERSION ?= yes
-
-ifeq  ($(strip $(64BIT_VERSION)),yes)
-    CC_OPTIONS += -arch x86_64
-       LNK_OPTIONS += -arch x86_64
-endif
-
-USEREADLINE ?= yes
-
-ifeq  ($(strip $(USEREADLINE)),yes)
-    CC_OPTIONS += -DUSE_READLINE
-       LNK_OPTIONS += \
-      -lreadline\
-      -lncurses\
-      -L../readline-6.0
-endif
-
-USEMPI ?= no
-
-ifeq  ($(strip $(USEMPI)),yes)
-       CC = mpic++
-    CC_OPTIONS += -DUSE_MPI
-endif
-
-#
-# INCLUDE directories for mothur
-#
-
-     INCLUDE = -I.
-
-#
-# Build mothur
-#
-
-mothur : \
-               ./sharedutilities.o\
-               ./treegroupscommand.o\
-               ./bootstrapsharedcommand.o\
-               ./matrixoutputcommand.o\
-               ./getoturepcommand.o\
-               ./screenseqscommand.o\
-               ./chimera.o\
-               ./decalc.o\
-               ./readotucommand.o\
-               ./readdistcommand.o\
-               ./commandfactory.o\
-               ./alignment.o\
-               ./alignmentcell.o\
-               ./gotohoverlap.o\
-               ./overlap.o\
-               ./needlemanoverlap.o\
-               ./blastalign.o\
-               ./noalign.o\
-               ./suffixdb.o\
-               ./suffixnodes.o\
-               ./suffixtree.o\
-               ./blastdb.o\
-               ./nast.o\
-               ./nastreport.o\
-               ./boneh.o\
-               ./efron.o\
-               ./solow.o\
-               ./unifracweightedcommand.o\
-               ./weighted.o\
-               ./unweighted.o\
-               ./unifracunweightedcommand.o\
-               ./getsabundcommand.o\
-               ./getrabundcommand.o\
-               ./bellerophon.o\
-               ./pintail.o\
-               ./sharedanderbergs.o\
-               ./venncommand.o\
-               ./venn.o\
-               ./fullmatrix.o\
-               ./heatmap.o\
-               ./heatmapcommand.o\
-               ./libshuffcommand.o\
-               ./nocommands.o\
-               ./sharedbraycurtis.o\
-               ./sharedkulczynski.o\
-               ./sharedlennon.o\
-               ./sharedkulczynskicody.o\
-               ./sharedmorisitahorn.o\
-               ./sharedochiai.o\
-               ./readcolumn.o\
-               ./readotu.o\
-               ./readphylip.o\
-               ./consensuscommand.o\
-               ./heatmapsimcommand.o\
-               ./heatmapsim.o\
-               ./optionparser.o\
-               ./filterseqscommand.o\
-               ./goodscoverage.o\
-               ./sequencedb.o\
-               ./sharedjackknife.o\
-               ./sharedmarczewski.o\
-               ./aligncommand.o\
-               ./treemap.o\
-               ./parsimonycommand.o\
-               ./parsimony.o\
-               ./seqsummarycommand.o\
-               ./chimeraccodecommand.o\
-               ./chimerabellerophoncommand.o\
-               ./chimeracheckcommand.o\
-               ./chimeraslayercommand.o\
-               ./chimerapintailcommand.o\
-               ./chimeraseqscommand.o\
-               ./sharedlistvector.o\
-               ./tree.o\
-               ./readtree.o\
-               ./sharedsobscollectsummary.o\
-               ./deconvolutecommand.o\
-               ./listseqscommand.o\
-               ./getseqscommand.o\
-               ./removeseqscommand.o\
-               ./degapseqscommand.o\
-               ./systemcommand.o\
-               ./binsequencecommand.o\
-               ./distancecommand.o\
-               ./ace.o\
-               ./averagelinkage.o\
-               ./bootstrap.o\
-               ./calculator.o\
-               ./chao1.o\
-               ./cluster.o\
-               ./clustercommand.o\
-               ./collect.o\
-               ./collectcommand.o\
-               ./collectsharedcommand.o\
-               ./commandoptionparser.o\
-               ./completelinkage.o\
-               ./database.o\
-               ./engine.o\
-               ./fastamap.o\
-               ./fileoutput.o\
-               ./globaldata.o\
-               ./groupmap.o\
-               ./helpcommand.o\
-               ./makegroupcommand.o\
-               ./chopseqscommand.o\
-               ./clearcutcommand.o\
-               ./catchallcommand.o\
-               ./splitabundcommand.o\
-               ./splitmatrix.o\
-               ./clustersplitcommand.o\
-               ./weightedlinkage.o\
-               ./inputdata.o\
-               ./jackknife.o\
-               ./kmer.o\
-               ./kmerdb.o\
-               ./listvector.o\
-               ./mothur.o\
-               ./nameassignment.o\
-               ./npshannon.o\
-               ./ordervector.o\
-               ./progress.o\
-               ./quitcommand.o\
-               ./rabundvector.o\
-               ./rarecalc.o\
-               ./raredisplay.o\
-               ./rarefact.o\
-               ./rarefactcommand.o\
-               ./rarefactsharedcommand.o\
-               ./sabundvector.o\
-               ./sequence.o\
-               ./shannon.o\
-               ./sharedace.o\
-               ./sharedchao1.o\
-               ./sharedcommand.o\
-               ./sharedjabund.o\
-               ./sharedjclass.o\
-               ./sharedjest.o\
-               ./sharedordervector.o\
-               ./sharedrabundvector.o\
-               ./sharedsabundvector.o\
-               ./sharedsobs.o\
-               ./sharedsorabund.o\
-               ./sharedsorclass.o\
-               ./sharedsorest.o\
-               ./sharedthetan.o\
-               ./sharedthetayc.o\
-               ./simpson.o\
-               ./singlelinkage.o\
-               ./sparsematrix.o\
-               ./summarycommand.o\
-               ./summarysharedcommand.o\
-               ./uvest.o\
-               ./validcalculator.o\
-               ./validparameter.o\
-               ./treenode.o\
-               ./readtreecommand.o\
-               ./reversecommand.o\
-               ./trimseqscommand.o\
-               ./slibshuff.o\
-               ./libshuff.o\
-               ./dlibshuff.o\
-               ./mergefilecommand.o\
-               ./coverage.o\
-               ./whittaker.o\
-               ./preclustercommand.o\
-               ./otuhierarchycommand.o\
-               ./setdircommand.o\
-               ./getgroupcommand.o\
-               ./getlabelcommand.o\
-               ./secondarystructurecommand.o\
-               ./mothurout.o\
-               ./parselistscommand.o\
-               ./readblast.o\
-               ./chimeracheckrdp.o\
-               ./hclustercommand.o\
-               ./hcluster.o\
-               ./getlistcountcommand.o\
-               ./getrelabundcommand.o\
-               ./readcluster.o\
-               ./ccode.o\
-               ./taxonomyequalizer.o\
-               ./phylotypecommand.o\
-               ./classifyseqscommand.o\
-               ./classifyotucommand.o\
-               ./parsesffcommand.o\
-               ./classify.o\
-               ./phylotree.o\
-               ./phylodiversity.o\
-               ./phylodiversitycommand.o\
-               ./bayesian.o\
-               ./phylosummary.o\
-               ./alignmentdb.o\
-               ./knn.o\
-               ./distancedb.o\
-               ./chimeraslayer.o\
-               ./slayer.o\
-               ./pcacommand.o\
-               ./formatcolumn.o\
-               ./formatphylip.o\
-               ./mgclustercommand.o\
-               ./getsharedotucommand.o\
-               ./maligner.o\
-               ./chimerarealigner.o\
-               ./bergerparker.o\
-               ./bstick.o\
-               ./sharedkstest.o\
-               ./qstat.o\
-               ./shen.o\
-               ./logsd.o\
-               ./geom.o\
-               ./setlogfilecommand.o
-       $(CC) $(LNK_OPTIONS) \
-               ./sharedutilities.o\
-               ./treegroupscommand.o\
-               ./bootstrapsharedcommand.o\
-               ./matrixoutputcommand.o\
-               ./getoturepcommand.o\
-               ./screenseqscommand.o\
-               ./chimera.o\
-               ./decalc.o\
-               ./readotucommand.o\
-               ./readdistcommand.o\
-               ./commandfactory.o\
-               ./alignment.o\
-               ./alignmentcell.o\
-               ./gotohoverlap.o\
-               ./overlap.o\
-               ./needlemanoverlap.o\
-               ./blastalign.o\
-               ./noalign.o\
-               ./suffixdb.o\
-               ./suffixnodes.o\
-               ./suffixtree.o\
-               ./blastdb.o\
-               ./nast.o\
-               ./nastreport.o\
-               ./boneh.o\
-               ./efron.o\
-               ./solow.o\
-               ./unifracweightedcommand.o\
-               ./weighted.o\
-               ./unweighted.o\
-               ./unifracunweightedcommand.o\
-               ./getsabundcommand.o\
-               ./getrabundcommand.o\
-               ./bellerophon.o\
-               ./pintail.o\
-               ./sharedanderbergs.o\
-               ./venncommand.o\
-               ./venn.o\
-               ./fullmatrix.o\
-               ./heatmap.o\
-               ./heatmapcommand.o\
-               ./libshuffcommand.o\
-               ./nocommands.o\
-               ./sharedbraycurtis.o\
-               ./sharedkulczynski.o\
-               ./sharedlennon.o\
-               ./sharedkulczynskicody.o\
-               ./sharedmorisitahorn.o\
-               ./sharedochiai.o\
-               ./readcolumn.o\
-               ./readotu.o\
-               ./readphylip.o\
-               ./consensuscommand.o\
-               ./heatmapsimcommand.o\
-               ./heatmapsim.o\
-               ./optionparser.o\
-               ./filterseqscommand.o\
-               ./goodscoverage.o\
-               ./sequencedb.o\
-               ./sharedjackknife.o\
-               ./sharedmarczewski.o\
-               ./aligncommand.o\
-               ./treemap.o\
-               ./parsimonycommand.o\
-               ./parsimony.o\
-               ./seqsummarycommand.o\
-               ./chimeraccodecommand.o\
-               ./chimerabellerophoncommand.o\
-               ./chimeracheckcommand.o\
-               ./chimeraslayercommand.o\
-               ./chimerapintailcommand.o\
-               ./chimeraseqscommand.o\
-               ./sharedlistvector.o\
-               ./tree.o\
-               ./readtree.o\
-               ./sharedsobscollectsummary.o\
-               ./deconvolutecommand.o\
-               ./listseqscommand.o\
-               ./getseqscommand.o\
-               ./removeseqscommand.o\
-               ./degapseqscommand.o\
-               ./systemcommand.o\
-               ./binsequencecommand.o\
-               ./distancecommand.o\
-               ./ace.o\
-               ./averagelinkage.o\
-               ./bootstrap.o\
-               ./calculator.o\
-               ./chao1.o\
-               ./cluster.o\
-               ./clustercommand.o\
-               ./collect.o\
-               ./collectcommand.o\
-               ./collectsharedcommand.o\
-               ./commandoptionparser.o\
-               ./completelinkage.o\
-               ./database.o\
-               ./engine.o\
-               ./fastamap.o\
-               ./fileoutput.o\
-               ./globaldata.o\
-               ./groupmap.o\
-               ./helpcommand.o\
-               ./makegroupcommand.o\
-               ./chopseqscommand.o\
-               ./clearcutcommand.o\
-               ./catchallcommand.o\
-               ./splitabundcommand.o\
-               ./splitmatrix.o\
-               ./clustersplitcommand.o\
-               ./weightedlinkage.o\
-               ./inputdata.o\
-               ./jackknife.o\
-               ./kmer.o\
-               ./kmerdb.o\
-               ./listvector.o\
-               ./mothur.o\
-               ./nameassignment.o\
-               ./npshannon.o\
-               ./ordervector.o\
-               ./progress.o\
-               ./quitcommand.o\
-               ./rabundvector.o\
-               ./rarecalc.o\
-               ./raredisplay.o\
-               ./rarefact.o\
-               ./rarefactcommand.o\
-               ./rarefactsharedcommand.o\
-               ./sabundvector.o\
-               ./sequence.o\
-               ./shannon.o\
-               ./sharedace.o\
-               ./sharedchao1.o\
-               ./sharedcommand.o\
-               ./sharedjabund.o\
-               ./sharedjclass.o\
-               ./sharedjest.o\
-               ./sharedordervector.o\
-               ./sharedrabundvector.o\
-               ./sharedsabundvector.o\
-               ./sharedsobs.o\
-               ./sharedsorabund.o\
-               ./sharedsorclass.o\
-               ./sharedsorest.o\
-               ./sharedthetan.o\
-               ./sharedthetayc.o\
-               ./simpson.o\
-               ./singlelinkage.o\
-               ./sparsematrix.o\
-               ./summarycommand.o\
-               ./summarysharedcommand.o\
-               ./uvest.o\
-               ./validcalculator.o\
-               ./validparameter.o\
-               ./treenode.o\
-               ./readtreecommand.o\
-               ./reversecommand.o\
-               ./trimseqscommand.o\
-               ./slibshuff.o\
-               ./libshuff.o\
-               ./dlibshuff.o\
-               ./mergefilecommand.o\
-               ./coverage.o\
-               ./whittaker.o\
-               ./preclustercommand.o\
-               ./otuhierarchycommand.o\
-               ./setdircommand.o\
-               ./getgroupcommand.o\
-               ./getlabelcommand.o\
-               ./secondarystructurecommand.o\
-               ./mothurout.o\
-               ./parselistscommand.o\
-               ./readblast.o\
-               ./chimeracheckrdp.o\
-               ./hclustercommand.o\
-               ./hcluster.o\
-               ./getlistcountcommand.o\
-               ./getrelabundcommand.o\
-               ./readcluster.o\
-               ./ccode.o\
-               ./taxonomyequalizer.o\
-               ./phylotypecommand.o\
-               ./classifyseqscommand.o\
-               ./classifyotucommand.o\
-               ./parsesffcommand.o\
-               ./classify.o\
-               ./phylotree.o\
-               ./phylodiversity.o\
-               ./phylodiversitycommand.o\
-               ./bayesian.o\
-               ./phylosummary.o\
-               ./alignmentdb.o\
-               ./knn.o\
-               ./distancedb.o\
-               ./chimeraslayer.o\
-               ./slayer.o\
-               ./pcacommand.o\
-               ./formatcolumn.o\
-               ./formatphylip.o\
-               ./mgclustercommand.o\
-               ./getsharedotucommand.o\
-               ./maligner.o\
-               ./chimerarealigner.o\
-               ./bergerparker.o\
-               ./bstick.o\
-               ./sharedkstest.o\
-               ./qstat.o\
-               ./shen.o\
-               ./logsd.o\
-               ./geom.o\
-               ./setlogfilecommand.o\
-               -o ../Release/mothur
-
-clean : 
-               rm \
-               ./sharedutilities.o\
-               ./treegroupscommand.o\
-               ./bootstrapsharedcommand.o\
-               ./matrixoutputcommand.o\
-               ./getoturepcommand.o\
-               ./screenseqscommand.o\
-               ./chimera.o\
-               ./decalc.o\
-               ./readotucommand.o\
-               ./readdistcommand.o\
-               ./commandfactory.o\
-               ./alignment.o\
-               ./alignmentcell.o\
-               ./gotohoverlap.o\
-               ./overlap.o\
-               ./needlemanoverlap.o\
-               ./blastalign.o\
-               ./noalign.o\
-               ./suffixdb.o\
-               ./suffixnodes.o\
-               ./suffixtree.o\
-               ./blastdb.o\
-               ./nast.o\
-               ./nastreport.o\
-               ./boneh.o\
-               ./efron.o\
-               ./solow.o\
-               ./unifracweightedcommand.o\
-               ./weighted.o\
-               ./unweighted.o\
-               ./unifracunweightedcommand.o\
-               ./getsabundcommand.o\
-               ./getrabundcommand.o\
-               ./bellerophon.o\
-               ./pintail.o\
-               ./sharedanderbergs.o\
-               ./venncommand.o\
-               ./venn.o\
-               ./fullmatrix.o\
-               ./heatmap.o\
-               ./heatmapcommand.o\
-               ./libshuffcommand.o\
-               ./nocommands.o\
-               ./sharedbraycurtis.o\
-               ./sharedkulczynski.o\
-               ./sharedlennon.o\
-               ./sharedkulczynskicody.o\
-               ./sharedmorisitahorn.o\
-               ./sharedochiai.o\
-               ./readcolumn.o\
-               ./readotu.o\
-               ./readphylip.o\
-               ./consensuscommand.o\
-               ./heatmapsimcommand.o\
-               ./heatmapsim.o\
-               ./optionparser.o\
-               ./filterseqscommand.o\
-               ./goodscoverage.o\
-               ./sequencedb.o\
-               ./sharedjackknife.o\
-               ./sharedmarczewski.o\
-               ./aligncommand.o\
-               ./treemap.o\
-               ./parsimonycommand.o\
-               ./parsimony.o\
-               ./seqsummarycommand.o\
-               ./chimeraccodecommand.o\
-               ./chimerabellerophoncommand.o\
-               ./chimeracheckcommand.o\
-               ./chimeraslayercommand.o\
-               ./chimerapintailcommand.o\
-               ./chimeraseqscommand.o\
-               ./sharedlistvector.o\
-               ./tree.o\
-               ./readtree.o\
-               ./sharedsobscollectsummary.o\
-               ./deconvolutecommand.o\
-               ./listseqscommand.o\
-               ./getseqscommand.o\
-               ./removeseqscommand.o\
-               ./degapseqscommand.o\
-               ./systemcommand.o\
-               ./binsequencecommand.o\
-               ./distancecommand.o\
-               ./ace.o\
-               ./averagelinkage.o\
-               ./bootstrap.o\
-               ./calculator.o\
-               ./chao1.o\
-               ./cluster.o\
-               ./clustercommand.o\
-               ./collect.o\
-               ./collectcommand.o\
-               ./collectsharedcommand.o\
-               ./commandoptionparser.o\
-               ./completelinkage.o\
-               ./database.o\
-               ./engine.o\
-               ./fastamap.o\
-               ./fileoutput.o\
-               ./globaldata.o\
-               ./groupmap.o\
-               ./helpcommand.o\
-               ./makegroupcommand.o\
-               ./chopseqscommand.o\
-               ./clearcutcommand.o\
-               ./catchallcommand.o\
-               ./splitabundcommand.o\
-               ./splitmatrix.o\
-               ./clustersplitcommand.o\
-               ./weightedlinkage.o\
-               ./inputdata.o\
-               ./jackknife.o\
-               ./kmer.o\
-               ./kmerdb.o\
-               ./listvector.o\
-               ./mothur.o\
-               ./nameassignment.o\
-               ./npshannon.o\
-               ./ordervector.o\
-               ./progress.o\
-               ./quitcommand.o\
-               ./rabundvector.o\
-               ./rarecalc.o\
-               ./raredisplay.o\
-               ./rarefact.o\
-               ./rarefactcommand.o\
-               ./rarefactsharedcommand.o\
-               ./sabundvector.o\
-               ./sequence.o\
-               ./shannon.o\
-               ./sharedace.o\
-               ./sharedchao1.o\
-               ./sharedcommand.o\
-               ./sharedjabund.o\
-               ./sharedjclass.o\
-               ./sharedjest.o\
-               ./sharedordervector.o\
-               ./sharedrabundvector.o\
-               ./sharedsabundvector.o\
-               ./sharedsobs.o\
-               ./sharedsorabund.o\
-               ./sharedsorclass.o\
-               ./sharedsorest.o\
-               ./sharedthetan.o\
-               ./sharedthetayc.o\
-               ./simpson.o\
-               ./singlelinkage.o\
-               ./sparsematrix.o\
-               ./summarycommand.o\
-               ./summarysharedcommand.o\
-               ./uvest.o\
-               ./validcalculator.o\
-               ./validparameter.o\
-               ./treenode.o\
-               ./readtreecommand.o\
-               ./reversecommand.o\
-               ./trimseqscommand.o\
-               ./slibshuff.o\
-               ./libshuff.o\
-               ./dlibshuff.o\
-               ./mergefilecommand.o\
-               ./coverage.o\
-               ./whittaker.o\
-               ./preclustercommand.o\
-               ./otuhierarchycommand.o\
-               ./setdircommand.o\
-               ./getgroupcommand.o\
-               ./getlabelcommand.o\
-               ./secondarystructurecommand.o\
-               ./mothurout.o\
-               ./parselistscommand.o\
-               ./readblast.o\
-               ./chimeracheckrdp.o\
-               ./hclustercommand.o\
-               ./hcluster.o\
-               ./getlistcountcommand.o\
-               ./getrelabundcommand.o\
-               ./readcluster.o\
-               ./ccode.o\
-               ./taxonomyequalizer.o\
-               ./phylotypecommand.o\
-               ./classifyseqscommand.o\
-               ./classifyotucommand.o\
-               ./parsesffcommand.o\
-               ./classify.o\
-               ./phylotree.o\
-               ./phylodiversity.o\
-               ./phylodiversitycommand.o\
-               ./bayesian.o\
-               ./phylosummary.o\
-               ./alignmentdb.o\
-               ./knn.o\
-               ./distancedb.o\
-               ./chimeraslayer.o\
-               ./slayer.o\
-               ./pcacommand.o\
-               ./formatcolumn.o\
-               ./formatphylip.o\
-               ./mgclustercommand.o\
-               ./getsharedotucommand.o\
-               ./maligner.o\
-               ./chimerarealigner.o\
-               ./bergerparker.o\
-               ./bstick.o\
-               ./sharedkstest.o\
-               ./qstat.o\
-               ./shen.o\
-               ./logsd.o\
-               ./geom.o\
-               ./setlogfilecommand.o\
-               mothur
-
-install : mothur
-               #cp mothur ../Release/mothur
-
-#
-# Build the parts of mothur
-#
-
-
-# Item # 1 -- sharedutilities --
-./sharedutilities.o : sharedutilities.cpp
-       $(CC) $(CC_OPTIONS) sharedutilities.cpp -c $(INCLUDE) -o ./sharedutilities.o
-
-
-# Item # 2 -- treegroupscommand --
-./treegroupscommand.o : treegroupscommand.cpp
-       $(CC) $(CC_OPTIONS) treegroupscommand.cpp -c $(INCLUDE) -o ./treegroupscommand.o
-
-
-# Item # 3 -- bootstrapsharedcommand --
-./bootstrapsharedcommand.o : bootstrapsharedcommand.cpp
-       $(CC) $(CC_OPTIONS) bootstrapsharedcommand.cpp -c $(INCLUDE) -o ./bootstrapsharedcommand.o
-
-
-# Item # 4 -- matrixoutputcommand --
-./matrixoutputcommand.o : matrixoutputcommand.cpp
-       $(CC) $(CC_OPTIONS) matrixoutputcommand.cpp -c $(INCLUDE) -o ./matrixoutputcommand.o
-
-
-# Item # 5 -- getoturepcommand --
-./getoturepcommand.o : getoturepcommand.cpp
-       $(CC) $(CC_OPTIONS) getoturepcommand.cpp -c $(INCLUDE) -o ./getoturepcommand.o
-
-
-# Item # 6 -- screenseqscommand --
-./screenseqscommand.o : screenseqscommand.cpp
-       $(CC) $(CC_OPTIONS) screenseqscommand.cpp -c $(INCLUDE) -o ./screenseqscommand.o
-
-
-# Item # 7 -- chimera --
-./chimera.o : chimera.cpp
-       $(CC) $(CC_OPTIONS) chimera.cpp -c $(INCLUDE) -o ./chimera.o
-
-
-# Item # 8 -- decalc --
-./decalc.o : decalc.cpp
-       $(CC) $(CC_OPTIONS) decalc.cpp -c $(INCLUDE) -o ./decalc.o
-
-
-# Item # 9 -- readotucommand --
-./readotucommand.o : readotucommand.cpp
-       $(CC) $(CC_OPTIONS) readotucommand.cpp -c $(INCLUDE) -o ./readotucommand.o
-
-
-# Item # 10 -- readdistcommand --
-./readdistcommand.o : readdistcommand.cpp
-       $(CC) $(CC_OPTIONS) readdistcommand.cpp -c $(INCLUDE) -o ./readdistcommand.o
-
-
-# Item # 11 -- commandfactory --
-./commandfactory.o : commandfactory.cpp
-       $(CC) $(CC_OPTIONS) commandfactory.cpp -c $(INCLUDE) -o ./commandfactory.o
-
-
-# Item # 12 -- alignment --
-./alignment.o : alignment.cpp
-       $(CC) $(CC_OPTIONS) alignment.cpp -c $(INCLUDE) -o ./alignment.o
-
-
-# Item # 13 -- alignmentcell --
-./alignmentcell.o : alignmentcell.cpp
-       $(CC) $(CC_OPTIONS) alignmentcell.cpp -c $(INCLUDE) -o ./alignmentcell.o
-
-
-# Item # 14 -- gotohoverlap --
-./gotohoverlap.o : gotohoverlap.cpp
-       $(CC) $(CC_OPTIONS) gotohoverlap.cpp -c $(INCLUDE) -o ./gotohoverlap.o
-
-
-# Item # 15 -- overlap --
-./overlap.o : overlap.cpp
-       $(CC) $(CC_OPTIONS) overlap.cpp -c $(INCLUDE) -o ./overlap.o
-
-
-# Item # 16 -- needlemanoverlap --
-./needlemanoverlap.o : needlemanoverlap.cpp
-       $(CC) $(CC_OPTIONS) needlemanoverlap.cpp -c $(INCLUDE) -o ./needlemanoverlap.o
-
-
-# Item # 17 -- blastalign --
-./blastalign.o : blastalign.cpp
-       $(CC) $(CC_OPTIONS) blastalign.cpp -c $(INCLUDE) -o ./blastalign.o
-
-
-# Item # 18 -- noalign --
-./noalign.o : noalign.cpp
-       $(CC) $(CC_OPTIONS) noalign.cpp -c $(INCLUDE) -o ./noalign.o
-
-
-# Item # 19 -- suffixdb --
-./suffixdb.o : suffixdb.cpp
-       $(CC) $(CC_OPTIONS) suffixdb.cpp -c $(INCLUDE) -o ./suffixdb.o
-
-
-# Item # 20 -- suffixnodes --
-./suffixnodes.o : suffixnodes.cpp
-       $(CC) $(CC_OPTIONS) suffixnodes.cpp -c $(INCLUDE) -o ./suffixnodes.o
-
-
-# Item # 21 -- suffixtree --
-./suffixtree.o : suffixtree.cpp
-       $(CC) $(CC_OPTIONS) suffixtree.cpp -c $(INCLUDE) -o ./suffixtree.o
-
-
-# Item # 22 -- blastdb --
-./blastdb.o : blastdb.cpp
-       $(CC) $(CC_OPTIONS) blastdb.cpp -c $(INCLUDE) -o ./blastdb.o
-
-
-# Item # 23 -- nast --
-./nast.o : nast.cpp
-       $(CC) $(CC_OPTIONS) nast.cpp -c $(INCLUDE) -o ./nast.o
-
-
-# Item # 24 -- nastreport --
-./nastreport.o : nastreport.cpp
-       $(CC) $(CC_OPTIONS) nastreport.cpp -c $(INCLUDE) -o ./nastreport.o
-
-
-# Item # 25 -- boneh --
-./boneh.o : boneh.cpp
-       $(CC) $(CC_OPTIONS) boneh.cpp -c $(INCLUDE) -o ./boneh.o
-
-
-# Item # 26 -- efron --
-./efron.o : efron.cpp
-       $(CC) $(CC_OPTIONS) efron.cpp -c $(INCLUDE) -o ./efron.o
-
-
-# Item # 27 -- solow --
-./solow.o : solow.cpp
-       $(CC) $(CC_OPTIONS) solow.cpp -c $(INCLUDE) -o ./solow.o
-
-
-# Item # 28 -- unifracweightedcommand --
-./unifracweightedcommand.o : unifracweightedcommand.cpp
-       $(CC) $(CC_OPTIONS) unifracweightedcommand.cpp -c $(INCLUDE) -o ./unifracweightedcommand.o
-
-
-# Item # 29 -- weighted --
-./weighted.o : weighted.cpp
-       $(CC) $(CC_OPTIONS) weighted.cpp -c $(INCLUDE) -o ./weighted.o
-
-
-# Item # 30 -- unweighted --
-./unweighted.o : unweighted.cpp
-       $(CC) $(CC_OPTIONS) unweighted.cpp -c $(INCLUDE) -o ./unweighted.o
-
-
-# Item # 31 -- unifracunweightedcommand --
-./unifracunweightedcommand.o : unifracunweightedcommand.cpp
-       $(CC) $(CC_OPTIONS) unifracunweightedcommand.cpp -c $(INCLUDE) -o ./unifracunweightedcommand.o
-
-
-# Item # 32 -- getsabundcommand --
-./getsabundcommand.o : getsabundcommand.cpp
-       $(CC) $(CC_OPTIONS) getsabundcommand.cpp -c $(INCLUDE) -o ./getsabundcommand.o
-
-
-# Item # 33 -- getrabundcommand --
-./getrabundcommand.o : getrabundcommand.cpp
-       $(CC) $(CC_OPTIONS) getrabundcommand.cpp -c $(INCLUDE) -o ./getrabundcommand.o
-
-
-# Item # 34 -- bellerophon --
-./bellerophon.o : bellerophon.cpp
-       $(CC) $(CC_OPTIONS) bellerophon.cpp -c $(INCLUDE) -o ./bellerophon.o
-
-
-# Item # 35 -- pintail --
-./pintail.o : pintail.cpp
-       $(CC) $(CC_OPTIONS) pintail.cpp -c $(INCLUDE) -o ./pintail.o
-
-
-# Item # 36 -- sharedanderbergs --
-./sharedanderbergs.o : sharedanderbergs.cpp
-       $(CC) $(CC_OPTIONS) sharedanderbergs.cpp -c $(INCLUDE) -o ./sharedanderbergs.o
-
-
-# Item # 37 -- venncommand --
-./venncommand.o : venncommand.cpp
-       $(CC) $(CC_OPTIONS) venncommand.cpp -c $(INCLUDE) -o ./venncommand.o
-
-
-# Item # 38 -- venn --
-./venn.o : venn.cpp
-       $(CC) $(CC_OPTIONS) venn.cpp -c $(INCLUDE) -o ./venn.o
-
-
-# Item # 39 -- fullmatrix --
-./fullmatrix.o : fullmatrix.cpp
-       $(CC) $(CC_OPTIONS) fullmatrix.cpp -c $(INCLUDE) -o ./fullmatrix.o
-
-
-# Item # 40 -- heatmap --
-./heatmap.o : heatmap.cpp
-       $(CC) $(CC_OPTIONS) heatmap.cpp -c $(INCLUDE) -o ./heatmap.o
-
-
-# Item # 41 -- heatmapcommand --
-./heatmapcommand.o : heatmapcommand.cpp
-       $(CC) $(CC_OPTIONS) heatmapcommand.cpp -c $(INCLUDE) -o ./heatmapcommand.o
-
-
-# Item # 42 -- libshuffcommand --
-./libshuffcommand.o : libshuffcommand.cpp
-       $(CC) $(CC_OPTIONS) libshuffcommand.cpp -c $(INCLUDE) -o ./libshuffcommand.o
-
-
-# Item # 43 -- nocommands --
-./nocommands.o : nocommands.cpp
-       $(CC) $(CC_OPTIONS) nocommands.cpp -c $(INCLUDE) -o ./nocommands.o
-
-
-# Item # 44 -- sharedbraycurtis --
-./sharedbraycurtis.o : sharedbraycurtis.cpp
-       $(CC) $(CC_OPTIONS) sharedbraycurtis.cpp -c $(INCLUDE) -o ./sharedbraycurtis.o
-
-
-# Item # 45 -- sharedkulczynski --
-./sharedkulczynski.o : sharedkulczynski.cpp
-       $(CC) $(CC_OPTIONS) sharedkulczynski.cpp -c $(INCLUDE) -o ./sharedkulczynski.o
-
-
-# Item # 46 -- sharedlennon --
-./sharedlennon.o : sharedlennon.cpp
-       $(CC) $(CC_OPTIONS) sharedlennon.cpp -c $(INCLUDE) -o ./sharedlennon.o
-
-
-# Item # 47 -- sharedkulczynskicody --
-./sharedkulczynskicody.o : sharedkulczynskicody.cpp
-       $(CC) $(CC_OPTIONS) sharedkulczynskicody.cpp -c $(INCLUDE) -o ./sharedkulczynskicody.o
-
-
-# Item # 48 -- sharedmorisitahorn --
-./sharedmorisitahorn.o : sharedmorisitahorn.cpp
-       $(CC) $(CC_OPTIONS) sharedmorisitahorn.cpp -c $(INCLUDE) -o ./sharedmorisitahorn.o
-
-
-# Item # 49 -- sharedochiai --
-./sharedochiai.o : sharedochiai.cpp
-       $(CC) $(CC_OPTIONS) sharedochiai.cpp -c $(INCLUDE) -o ./sharedochiai.o
-
-
-# Item # 50 -- readcolumn --
-./readcolumn.o : readcolumn.cpp
-       $(CC) $(CC_OPTIONS) readcolumn.cpp -c $(INCLUDE) -o ./readcolumn.o
-
-
-# Item # 51 -- readotu --
-./readotu.o : readotu.cpp
-       $(CC) $(CC_OPTIONS) readotu.cpp -c $(INCLUDE) -o ./readotu.o
-
-
-# Item # 52 -- readphylip --
-./readphylip.o : readphylip.cpp
-       $(CC) $(CC_OPTIONS) readphylip.cpp -c $(INCLUDE) -o ./readphylip.o
-
-
-# Item # 53 -- consensuscommand --
-./consensuscommand.o : consensuscommand.cpp
-       $(CC) $(CC_OPTIONS) consensuscommand.cpp -c $(INCLUDE) -o ./consensuscommand.o
-
-
-# Item # 54 -- heatmapsimcommand --
-./heatmapsimcommand.o : heatmapsimcommand.cpp
-       $(CC) $(CC_OPTIONS) heatmapsimcommand.cpp -c $(INCLUDE) -o ./heatmapsimcommand.o
-
-
-# Item # 55 -- heatmapsim --
-./heatmapsim.o : heatmapsim.cpp
-       $(CC) $(CC_OPTIONS) heatmapsim.cpp -c $(INCLUDE) -o ./heatmapsim.o
-
-
-# Item # 56 -- optionparser --
-./optionparser.o : optionparser.cpp
-       $(CC) $(CC_OPTIONS) optionparser.cpp -c $(INCLUDE) -o ./optionparser.o
-
-
-# Item # 57 -- filterseqscommand --
-./filterseqscommand.o : filterseqscommand.cpp
-       $(CC) $(CC_OPTIONS) filterseqscommand.cpp -c $(INCLUDE) -o ./filterseqscommand.o
-
-
-# Item # 58 -- goodscoverage --
-./goodscoverage.o : goodscoverage.cpp
-       $(CC) $(CC_OPTIONS) goodscoverage.cpp -c $(INCLUDE) -o ./goodscoverage.o
-
-
-# Item # 59 -- sequencedb --
-./sequencedb.o : sequencedb.cpp
-       $(CC) $(CC_OPTIONS) sequencedb.cpp -c $(INCLUDE) -o ./sequencedb.o
-
-
-# Item # 60 -- sharedjackknife --
-./sharedjackknife.o : sharedjackknife.cpp
-       $(CC) $(CC_OPTIONS) sharedjackknife.cpp -c $(INCLUDE) -o ./sharedjackknife.o
-
-
-# Item # 61 -- sharedmarczewski --
-./sharedmarczewski.o : sharedmarczewski.cpp
-       $(CC) $(CC_OPTIONS) sharedmarczewski.cpp -c $(INCLUDE) -o ./sharedmarczewski.o
-
-
-# Item # 62 -- aligncommand --
-./aligncommand.o : aligncommand.cpp
-       $(CC) $(CC_OPTIONS) aligncommand.cpp -c $(INCLUDE) -o ./aligncommand.o
-
-
-# Item # 63 -- treemap --
-./treemap.o : treemap.cpp
-       $(CC) $(CC_OPTIONS) treemap.cpp -c $(INCLUDE) -o ./treemap.o
-
-
-# Item # 64 -- parsimonycommand --
-./parsimonycommand.o : parsimonycommand.cpp
-       $(CC) $(CC_OPTIONS) parsimonycommand.cpp -c $(INCLUDE) -o ./parsimonycommand.o
-
-
-# Item # 65 -- parsimony --
-./parsimony.o : parsimony.cpp
-       $(CC) $(CC_OPTIONS) parsimony.cpp -c $(INCLUDE) -o ./parsimony.o
-
-
-# Item # 66 -- seqsummarycommand --
-./seqsummarycommand.o : seqsummarycommand.cpp
-       $(CC) $(CC_OPTIONS) seqsummarycommand.cpp -c $(INCLUDE) -o ./seqsummarycommand.o
-
-
-# Item # 67 -- chimeraseqscommand --
-./chimeraseqscommand.o : chimeraseqscommand.cpp
-       $(CC) $(CC_OPTIONS) chimeraseqscommand.cpp -c $(INCLUDE) -o ./chimeraseqscommand.o
-
-
-# Item # 68 -- sharedlistvector --
-./sharedlistvector.o : sharedlistvector.cpp
-       $(CC) $(CC_OPTIONS) sharedlistvector.cpp -c $(INCLUDE) -o ./sharedlistvector.o
-
-
-# Item # 69 -- tree --
-./tree.o : tree.cpp
-       $(CC) $(CC_OPTIONS) tree.cpp -c $(INCLUDE) -o ./tree.o
-
-
-# Item # 70 -- readtree --
-./readtree.o : readtree.cpp
-       $(CC) $(CC_OPTIONS) readtree.cpp -c $(INCLUDE) -o ./readtree.o
-
-
-# Item # 71 -- sharedsobscollectsummary --
-./sharedsobscollectsummary.o : sharedsobscollectsummary.cpp
-       $(CC) $(CC_OPTIONS) sharedsobscollectsummary.cpp -c $(INCLUDE) -o ./sharedsobscollectsummary.o
-
-
-# Item # 72 -- deconvolutecommand --
-./deconvolutecommand.o : deconvolutecommand.cpp
-       $(CC) $(CC_OPTIONS) deconvolutecommand.cpp -c $(INCLUDE) -o ./deconvolutecommand.o
-
-
-# Item # 73 -- listseqscommand --
-./listseqscommand.o : listseqscommand.cpp
-       $(CC) $(CC_OPTIONS) listseqscommand.cpp -c $(INCLUDE) -o ./listseqscommand.o
-
-
-# Item # 74 -- getseqscommand --
-./getseqscommand.o : getseqscommand.cpp
-       $(CC) $(CC_OPTIONS) getseqscommand.cpp -c $(INCLUDE) -o ./getseqscommand.o
-
-
-# Item # 75 -- removeseqscommand --
-./removeseqscommand.o : removeseqscommand.cpp
-       $(CC) $(CC_OPTIONS) removeseqscommand.cpp -c $(INCLUDE) -o ./removeseqscommand.o
-
-
-# Item # 76 -- systemcommand --
-./systemcommand.o : systemcommand.cpp
-       $(CC) $(CC_OPTIONS) systemcommand.cpp -c $(INCLUDE) -o ./systemcommand.o
-
-
-# Item # 77 -- binsequencecommand --
-./binsequencecommand.o : binsequencecommand.cpp
-       $(CC) $(CC_OPTIONS) binsequencecommand.cpp -c $(INCLUDE) -o ./binsequencecommand.o
-
-
-# Item # 78 -- distancecommand --
-./distancecommand.o : distancecommand.cpp
-       $(CC) $(CC_OPTIONS) distancecommand.cpp -c $(INCLUDE) -o ./distancecommand.o
-
-
-# Item # 79 -- ace --
-./ace.o : ace.cpp
-       $(CC) $(CC_OPTIONS) ace.cpp -c $(INCLUDE) -o ./ace.o
-
-
-# Item # 80 -- averagelinkage --
-./averagelinkage.o : averagelinkage.cpp
-       $(CC) $(CC_OPTIONS) averagelinkage.cpp -c $(INCLUDE) -o ./averagelinkage.o
-
-
-# Item # 81 -- bootstrap --
-./bootstrap.o : bootstrap.cpp
-       $(CC) $(CC_OPTIONS) bootstrap.cpp -c $(INCLUDE) -o ./bootstrap.o
-
-
-# Item # 82 -- calculator --
-./calculator.o : calculator.cpp
-       $(CC) $(CC_OPTIONS) calculator.cpp -c $(INCLUDE) -o ./calculator.o
-
-
-# Item # 83 -- chao1 --
-./chao1.o : chao1.cpp
-       $(CC) $(CC_OPTIONS) chao1.cpp -c $(INCLUDE) -o ./chao1.o
-
-
-# Item # 84 -- cluster --
-./cluster.o : cluster.cpp
-       $(CC) $(CC_OPTIONS) cluster.cpp -c $(INCLUDE) -o ./cluster.o
-
-
-# Item # 85 -- clustercommand --
-./clustercommand.o : clustercommand.cpp
-       $(CC) $(CC_OPTIONS) clustercommand.cpp -c $(INCLUDE) -o ./clustercommand.o
-
-
-# Item # 86 -- collect --
-./collect.o : collect.cpp
-       $(CC) $(CC_OPTIONS) collect.cpp -c $(INCLUDE) -o ./collect.o
-
-
-# Item # 87 -- collectcommand --
-./collectcommand.o : collectcommand.cpp
-       $(CC) $(CC_OPTIONS) collectcommand.cpp -c $(INCLUDE) -o ./collectcommand.o
-
-
-# Item # 88 -- collectsharedcommand --
-./collectsharedcommand.o : collectsharedcommand.cpp
-       $(CC) $(CC_OPTIONS) collectsharedcommand.cpp -c $(INCLUDE) -o ./collectsharedcommand.o
-
-
-# Item # 89 -- commandoptionparser --
-./commandoptionparser.o : commandoptionparser.cpp
-       $(CC) $(CC_OPTIONS) commandoptionparser.cpp -c $(INCLUDE) -o ./commandoptionparser.o
-
-
-# Item # 90 -- completelinkage --
-./completelinkage.o : completelinkage.cpp
-       $(CC) $(CC_OPTIONS) completelinkage.cpp -c $(INCLUDE) -o ./completelinkage.o
-
-
-# Item # 91 -- database --
-./database.o : database.cpp
-       $(CC) $(CC_OPTIONS) database.cpp -c $(INCLUDE) -o ./database.o
-
-
-# Item # 92 -- engine --
-./engine.o : engine.cpp
-       $(CC) $(CC_OPTIONS) engine.cpp -c $(INCLUDE) -o ./engine.o
-
-
-# Item # 93 -- fastamap --
-./fastamap.o : fastamap.cpp
-       $(CC) $(CC_OPTIONS) fastamap.cpp -c $(INCLUDE) -o ./fastamap.o
-
-
-# Item # 94 -- fileoutput --
-./fileoutput.o : fileoutput.cpp
-       $(CC) $(CC_OPTIONS) fileoutput.cpp -c $(INCLUDE) -o ./fileoutput.o
-
-
-# Item # 95 -- globaldata --
-./globaldata.o : globaldata.cpp
-       $(CC) $(CC_OPTIONS) globaldata.cpp -c $(INCLUDE) -o ./globaldata.o
-
-
-# Item # 96 -- groupmap --
-./groupmap.o : groupmap.cpp
-       $(CC) $(CC_OPTIONS) groupmap.cpp -c $(INCLUDE) -o ./groupmap.o
-
-
-# Item # 97 -- helpcommand --
-./helpcommand.o : helpcommand.cpp
-       $(CC) $(CC_OPTIONS) helpcommand.cpp -c $(INCLUDE) -o ./helpcommand.o
-
-
-# Item # 98 -- inputdata --
-./inputdata.o : inputdata.cpp
-       $(CC) $(CC_OPTIONS) inputdata.cpp -c $(INCLUDE) -o ./inputdata.o
-
-
-# Item # 99 -- jackknife --
-./jackknife.o : jackknife.cpp
-       $(CC) $(CC_OPTIONS) jackknife.cpp -c $(INCLUDE) -o ./jackknife.o
-
-
-# Item # 100 -- kmer --
-./kmer.o : kmer.cpp
-       $(CC) $(CC_OPTIONS) kmer.cpp -c $(INCLUDE) -o ./kmer.o
-
-
-# Item # 101 -- kmerdb --
-./kmerdb.o : kmerdb.cpp
-       $(CC) $(CC_OPTIONS) kmerdb.cpp -c $(INCLUDE) -o ./kmerdb.o
-
-
-# Item # 102 -- listvector --
-./listvector.o : listvector.cpp
-       $(CC) $(CC_OPTIONS) listvector.cpp -c $(INCLUDE) -o ./listvector.o
-
-
-# Item # 103 -- mothur --
-./mothur.o : mothur.cpp
-       $(CC) $(CC_OPTIONS) mothur.cpp -c $(INCLUDE) -o ./mothur.o
-
-
-# Item # 104 -- nameassignment --
-./nameassignment.o : nameassignment.cpp
-       $(CC) $(CC_OPTIONS) nameassignment.cpp -c $(INCLUDE) -o ./nameassignment.o
-
-
-# Item # 105 -- npshannon --
-./npshannon.o : npshannon.cpp
-       $(CC) $(CC_OPTIONS) npshannon.cpp -c $(INCLUDE) -o ./npshannon.o
-
-
-# Item # 106 -- ordervector --
-./ordervector.o : ordervector.cpp
-       $(CC) $(CC_OPTIONS) ordervector.cpp -c $(INCLUDE) -o ./ordervector.o
-
-
-# Item # 107 -- progress --
-./progress.o : progress.cpp
-       $(CC) $(CC_OPTIONS) progress.cpp -c $(INCLUDE) -o ./progress.o
-
-
-# Item # 108 -- quitcommand --
-./quitcommand.o : quitcommand.cpp
-       $(CC) $(CC_OPTIONS) quitcommand.cpp -c $(INCLUDE) -o ./quitcommand.o
-
-
-# Item # 109 -- rabundvector --
-./rabundvector.o : rabundvector.cpp
-       $(CC) $(CC_OPTIONS) rabundvector.cpp -c $(INCLUDE) -o ./rabundvector.o
-
-
-# Item # 110 -- rarecalc --
-./rarecalc.o : rarecalc.cpp
-       $(CC) $(CC_OPTIONS) rarecalc.cpp -c $(INCLUDE) -o ./rarecalc.o
-
-
-# Item # 111 -- raredisplay --
-./raredisplay.o : raredisplay.cpp
-       $(CC) $(CC_OPTIONS) raredisplay.cpp -c $(INCLUDE) -o ./raredisplay.o
-
-
-# Item # 112 -- rarefact --
-./rarefact.o : rarefact.cpp
-       $(CC) $(CC_OPTIONS) rarefact.cpp -c $(INCLUDE) -o ./rarefact.o
-
-
-# Item # 113 -- rarefactcommand --
-./rarefactcommand.o : rarefactcommand.cpp
-       $(CC) $(CC_OPTIONS) rarefactcommand.cpp -c $(INCLUDE) -o ./rarefactcommand.o
-
-
-# Item # 114 -- rarefactsharedcommand --
-./rarefactsharedcommand.o : rarefactsharedcommand.cpp
-       $(CC) $(CC_OPTIONS) rarefactsharedcommand.cpp -c $(INCLUDE) -o ./rarefactsharedcommand.o
-
-
-# Item # 115 -- sabundvector --
-./sabundvector.o : sabundvector.cpp
-       $(CC) $(CC_OPTIONS) sabundvector.cpp -c $(INCLUDE) -o ./sabundvector.o
-
-
-# Item # 116 -- sequence --
-./sequence.o : sequence.cpp
-       $(CC) $(CC_OPTIONS) sequence.cpp -c $(INCLUDE) -o ./sequence.o
-
-
-# Item # 117 -- shannon --
-./shannon.o : shannon.cpp
-       $(CC) $(CC_OPTIONS) shannon.cpp -c $(INCLUDE) -o ./shannon.o
-
-
-# Item # 118 -- sharedace --
-./sharedace.o : sharedace.cpp
-       $(CC) $(CC_OPTIONS) sharedace.cpp -c $(INCLUDE) -o ./sharedace.o
-
-
-# Item # 119 -- sharedchao1 --
-./sharedchao1.o : sharedchao1.cpp
-       $(CC) $(CC_OPTIONS) sharedchao1.cpp -c $(INCLUDE) -o ./sharedchao1.o
-
-
-# Item # 120 -- sharedcommand --
-./sharedcommand.o : sharedcommand.cpp
-       $(CC) $(CC_OPTIONS) sharedcommand.cpp -c $(INCLUDE) -o ./sharedcommand.o
-
-
-# Item # 121 -- sharedjabund --
-./sharedjabund.o : sharedjabund.cpp
-       $(CC) $(CC_OPTIONS) sharedjabund.cpp -c $(INCLUDE) -o ./sharedjabund.o
-
-
-# Item # 122 -- sharedjclass --
-./sharedjclass.o : sharedjclass.cpp
-       $(CC) $(CC_OPTIONS) sharedjclass.cpp -c $(INCLUDE) -o ./sharedjclass.o
-
-
-# Item # 123 -- sharedjest --
-./sharedjest.o : sharedjest.cpp
-       $(CC) $(CC_OPTIONS) sharedjest.cpp -c $(INCLUDE) -o ./sharedjest.o
-
-
-# Item # 124 -- sharedordervector --
-./sharedordervector.o : sharedordervector.cpp
-       $(CC) $(CC_OPTIONS) sharedordervector.cpp -c $(INCLUDE) -o ./sharedordervector.o
-
-
-# Item # 125 -- sharedrabundvector --
-./sharedrabundvector.o : sharedrabundvector.cpp
-       $(CC) $(CC_OPTIONS) sharedrabundvector.cpp -c $(INCLUDE) -o ./sharedrabundvector.o
-
-
-# Item # 126 -- sharedsabundvector --
-./sharedsabundvector.o : sharedsabundvector.cpp
-       $(CC) $(CC_OPTIONS) sharedsabundvector.cpp -c $(INCLUDE) -o ./sharedsabundvector.o
-
-
-# Item # 127 -- sharedsobs --
-./sharedsobs.o : sharedsobs.cpp
-       $(CC) $(CC_OPTIONS) sharedsobs.cpp -c $(INCLUDE) -o ./sharedsobs.o
-
-
-# Item # 128 -- sharedsorabund --
-./sharedsorabund.o : sharedsorabund.cpp
-       $(CC) $(CC_OPTIONS) sharedsorabund.cpp -c $(INCLUDE) -o ./sharedsorabund.o
-
-
-# Item # 129 -- sharedsorclass --
-./sharedsorclass.o : sharedsorclass.cpp
-       $(CC) $(CC_OPTIONS) sharedsorclass.cpp -c $(INCLUDE) -o ./sharedsorclass.o
-
-
-# Item # 130 -- sharedsorest --
-./sharedsorest.o : sharedsorest.cpp
-       $(CC) $(CC_OPTIONS) sharedsorest.cpp -c $(INCLUDE) -o ./sharedsorest.o
-
-
-# Item # 131 -- sharedthetan --
-./sharedthetan.o : sharedthetan.cpp
-       $(CC) $(CC_OPTIONS) sharedthetan.cpp -c $(INCLUDE) -o ./sharedthetan.o
-
-
-# Item # 132 -- sharedthetayc --
-./sharedthetayc.o : sharedthetayc.cpp
-       $(CC) $(CC_OPTIONS) sharedthetayc.cpp -c $(INCLUDE) -o ./sharedthetayc.o
-
-
-# Item # 133 -- simpson --
-./simpson.o : simpson.cpp
-       $(CC) $(CC_OPTIONS) simpson.cpp -c $(INCLUDE) -o ./simpson.o
-
-
-# Item # 134 -- singlelinkage --
-./singlelinkage.o : singlelinkage.cpp
-       $(CC) $(CC_OPTIONS) singlelinkage.cpp -c $(INCLUDE) -o ./singlelinkage.o
-
-
-# Item # 135 -- sparsematrix --
-./sparsematrix.o : sparsematrix.cpp
-       $(CC) $(CC_OPTIONS) sparsematrix.cpp -c $(INCLUDE) -o ./sparsematrix.o
-
-
-# Item # 136 -- summarycommand --
-./summarycommand.o : summarycommand.cpp
-       $(CC) $(CC_OPTIONS) summarycommand.cpp -c $(INCLUDE) -o ./summarycommand.o
-
-
-# Item # 137 -- summarysharedcommand --
-./summarysharedcommand.o : summarysharedcommand.cpp
-       $(CC) $(CC_OPTIONS) summarysharedcommand.cpp -c $(INCLUDE) -o ./summarysharedcommand.o
-
-
-# Item # 138 -- uvest --
-./uvest.o : uvest.cpp
-       $(CC) $(CC_OPTIONS) uvest.cpp -c $(INCLUDE) -o ./uvest.o
-
-
-# Item # 139 -- validcalculator --
-./validcalculator.o : validcalculator.cpp
-       $(CC) $(CC_OPTIONS) validcalculator.cpp -c $(INCLUDE) -o ./validcalculator.o
-
-
-# Item # 140 -- validparameter --
-./validparameter.o : validparameter.cpp
-       $(CC) $(CC_OPTIONS) validparameter.cpp -c $(INCLUDE) -o ./validparameter.o
-
-
-# Item # 141 -- treenode --
-./treenode.o : treenode.cpp
-       $(CC) $(CC_OPTIONS) treenode.cpp -c $(INCLUDE) -o ./treenode.o
-
-
-# Item # 142 -- readtreecommand --
-./readtreecommand.o : readtreecommand.cpp
-       $(CC) $(CC_OPTIONS) readtreecommand.cpp -c $(INCLUDE) -o ./readtreecommand.o
-
-
-# Item # 143 -- reversecommand --
-./reversecommand.o : reversecommand.cpp
-       $(CC) $(CC_OPTIONS) reversecommand.cpp -c $(INCLUDE) -o ./reversecommand.o
-
-
-# Item # 144 -- trimseqscommand --
-./trimseqscommand.o : trimseqscommand.cpp
-       $(CC) $(CC_OPTIONS) trimseqscommand.cpp -c $(INCLUDE) -o ./trimseqscommand.o
-
-
-# Item # 145 -- slibshuff --
-./slibshuff.o : slibshuff.cpp
-       $(CC) $(CC_OPTIONS) slibshuff.cpp -c $(INCLUDE) -o ./slibshuff.o
-
-
-# Item # 146 -- libshuff --
-./libshuff.o : libshuff.cpp
-       $(CC) $(CC_OPTIONS) libshuff.cpp -c $(INCLUDE) -o ./libshuff.o
-
-
-# Item # 147 -- dlibshuff --
-./dlibshuff.o : dlibshuff.cpp
-       $(CC) $(CC_OPTIONS) dlibshuff.cpp -c $(INCLUDE) -o ./dlibshuff.o
-
-
-# Item # 148 -- mergefilecommand --
-./mergefilecommand.o : mergefilecommand.cpp
-       $(CC) $(CC_OPTIONS) mergefilecommand.cpp -c $(INCLUDE) -o ./mergefilecommand.o
-
-
-# Item # 149 -- coverage --
-./coverage.o : coverage.cpp
-       $(CC) $(CC_OPTIONS) coverage.cpp -c $(INCLUDE) -o ./coverage.o
-
-
-# Item # 150 -- whittaker --
-./whittaker.o : whittaker.cpp
-       $(CC) $(CC_OPTIONS) whittaker.cpp -c $(INCLUDE) -o ./whittaker.o
-
-
-# Item # 151 -- preclustercommand --
-./preclustercommand.o : preclustercommand.cpp
-       $(CC) $(CC_OPTIONS) preclustercommand.cpp -c $(INCLUDE) -o ./preclustercommand.o
-
-
-# Item # 152 -- otuhierarchycommand --
-./otuhierarchycommand.o : otuhierarchycommand.cpp
-       $(CC) $(CC_OPTIONS) otuhierarchycommand.cpp -c $(INCLUDE) -o ./otuhierarchycommand.o
-
-
-# Item # 153 -- setdircommand --
-./setdircommand.o : setdircommand.cpp
-       $(CC) $(CC_OPTIONS) setdircommand.cpp -c $(INCLUDE) -o ./setdircommand.o
-
-
-# Item # 154 -- getgroupcommand --
-./getgroupcommand.o : getgroupcommand.cpp
-       $(CC) $(CC_OPTIONS) getgroupcommand.cpp -c $(INCLUDE) -o ./getgroupcommand.o
-
-
-# Item # 155 -- getlabelcommand --
-./getlabelcommand.o : getlabelcommand.cpp
-       $(CC) $(CC_OPTIONS) getlabelcommand.cpp -c $(INCLUDE) -o ./getlabelcommand.o
-
-
-# Item # 156 -- secondarystructurecommand --
-./secondarystructurecommand.o : secondarystructurecommand.cpp
-       $(CC) $(CC_OPTIONS) secondarystructurecommand.cpp -c $(INCLUDE) -o ./secondarystructurecommand.o
-
-
-# Item # 157 -- mothurout --
-./mothurout.o : mothurout.cpp
-       $(CC) $(CC_OPTIONS) mothurout.cpp -c $(INCLUDE) -o ./mothurout.o
-
-
-# Item # 158 -- parselistscommand --
-./parselistscommand.o : parselistscommand.cpp
-       $(CC) $(CC_OPTIONS) parselistscommand.cpp -c $(INCLUDE) -o ./parselistscommand.o
-
-
-# Item # 159 -- readblast --
-./readblast.o : readblast.cpp
-       $(CC) $(CC_OPTIONS) readblast.cpp -c $(INCLUDE) -o ./readblast.o
-
-
-# Item # 160 -- chimeracheckrdp --
-./chimeracheckrdp.o : chimeracheckrdp.cpp
-       $(CC) $(CC_OPTIONS) chimeracheckrdp.cpp -c $(INCLUDE) -o ./chimeracheckrdp.o
-
-
-# Item # 161 -- hclustercommand --
-./hclustercommand.o : hclustercommand.cpp
-       $(CC) $(CC_OPTIONS) hclustercommand.cpp -c $(INCLUDE) -o ./hclustercommand.o
-
-
-# Item # 162 -- hcluster --
-./hcluster.o : hcluster.cpp
-       $(CC) $(CC_OPTIONS) hcluster.cpp -c $(INCLUDE) -o ./hcluster.o
-
-
-# Item # 163 -- getlistcountcommand --
-./getlistcountcommand.o : getlistcountcommand.cpp
-       $(CC) $(CC_OPTIONS) getlistcountcommand.cpp -c $(INCLUDE) -o ./getlistcountcommand.o
-
-
-# Item # 164 -- readcluster --
-./readcluster.o : readcluster.cpp
-       $(CC) $(CC_OPTIONS) readcluster.cpp -c $(INCLUDE) -o ./readcluster.o
-
-
-# Item # 165 -- ccode --
-./ccode.o : ccode.cpp
-       $(CC) $(CC_OPTIONS) ccode.cpp -c $(INCLUDE) -o ./ccode.o
-
-
-# Item # 166 -- taxonomyequalizer --
-./taxonomyequalizer.o : taxonomyequalizer.cpp
-       $(CC) $(CC_OPTIONS) taxonomyequalizer.cpp -c $(INCLUDE) -o ./taxonomyequalizer.o
-
-
-# Item # 167 -- phylotypecommand --
-./phylotypecommand.o : phylotypecommand.cpp
-       $(CC) $(CC_OPTIONS) phylotypecommand.cpp -c $(INCLUDE) -o ./phylotypecommand.o
-
-
-# Item # 168 -- classifyseqscommand --
-./classifyseqscommand.o : classifyseqscommand.cpp
-       $(CC) $(CC_OPTIONS) classifyseqscommand.cpp -c $(INCLUDE) -o ./classifyseqscommand.o
-
-
-# Item # 169 -- classify --
-./classify.o : classify.cpp
-       $(CC) $(CC_OPTIONS) classify.cpp -c $(INCLUDE) -o ./classify.o
-
-
-# Item # 170 -- phylotree --
-./phylotree.o : phylotree.cpp
-       $(CC) $(CC_OPTIONS) phylotree.cpp -c $(INCLUDE) -o ./phylotree.o
-
-
-# Item # 171 -- bayesian --
-./bayesian.o : bayesian.cpp
-       $(CC) $(CC_OPTIONS) bayesian.cpp -c $(INCLUDE) -o ./bayesian.o
-
-
-# Item # 172 -- alignmentdb --
-./alignmentdb.o : alignmentdb.cpp
-       $(CC) $(CC_OPTIONS) alignmentdb.cpp -c $(INCLUDE) -o ./alignmentdb.o
-
-
-# Item # 173 -- knn --
-./knn.o : knn.cpp
-       $(CC) $(CC_OPTIONS) knn.cpp -c $(INCLUDE) -o ./knn.o
-
-
-# Item # 174 -- distancedb --
-./distancedb.o : distancedb.cpp
-       $(CC) $(CC_OPTIONS) distancedb.cpp -c $(INCLUDE) -o ./distancedb.o
-
-
-# Item # 175 -- chimeraslayer --
-./chimeraslayer.o : chimeraslayer.cpp
-       $(CC) $(CC_OPTIONS) chimeraslayer.cpp -c $(INCLUDE) -o ./chimeraslayer.o
-
-
-# Item # 176 -- slayer --
-./slayer.o : slayer.cpp
-       $(CC) $(CC_OPTIONS) slayer.cpp -c $(INCLUDE) -o ./slayer.o
-
-
-# Item # 177 -- pcacommand --
-./pcacommand.o : pcacommand.cpp
-       $(CC) $(CC_OPTIONS) pcacommand.cpp -c $(INCLUDE) -o ./pcacommand.o
-
-
-# Item # 178 -- formatcolumn --
-./formatcolumn.o : formatcolumn.cpp
-       $(CC) $(CC_OPTIONS) formatcolumn.cpp -c $(INCLUDE) -o ./formatcolumn.o
-
-
-# Item # 179 -- formatphylip --
-./formatphylip.o : formatphylip.cpp
-       $(CC) $(CC_OPTIONS) formatphylip.cpp -c $(INCLUDE) -o ./formatphylip.o
-
-
-# Item # 180 -- mgclustercommand --
-./mgclustercommand.o : mgclustercommand.cpp
-       $(CC) $(CC_OPTIONS) mgclustercommand.cpp -c $(INCLUDE) -o ./mgclustercommand.o
-
-
-# Item # 181 -- getsharedotucommand --
-./getsharedotucommand.o : getsharedotucommand.cpp
-       $(CC) $(CC_OPTIONS) getsharedotucommand.cpp -c $(INCLUDE) -o ./getsharedotucommand.o
-
-
-# Item # 182 -- maligner --
-./maligner.o : maligner.cpp
-       $(CC) $(CC_OPTIONS) maligner.cpp -c $(INCLUDE) -o ./maligner.o
-
-
-# Item # 183 -- chimerarealigner --
-./chimerarealigner.o : chimerarealigner.cpp
-       $(CC) $(CC_OPTIONS) chimerarealigner.cpp -c $(INCLUDE) -o ./chimerarealigner.o
-
-
-# Item # 184 -- bergerparker --
-./bergerparker.o : bergerparker.cpp
-       $(CC) $(CC_OPTIONS) bergerparker.cpp -c $(INCLUDE) -o ./bergerparker.o
-
-
-# Item # 185 -- bstick --
-./bstick.o : bstick.cpp
-       $(CC) $(CC_OPTIONS) bstick.cpp -c $(INCLUDE) -o ./bstick.o
-
-
-# Item # 186 -- sharedkstest --
-./sharedkstest.o : sharedkstest.cpp
-       $(CC) $(CC_OPTIONS) sharedkstest.cpp -c $(INCLUDE) -o ./sharedkstest.o
-
-
-# Item # 187 -- qstat --
-./qstat.o : qstat.cpp
-       $(CC) $(CC_OPTIONS) qstat.cpp -c $(INCLUDE) -o ./qstat.o
-
-
-# Item # 188 -- shen --
-./shen.o : shen.cpp
-       $(CC) $(CC_OPTIONS) shen.cpp -c $(INCLUDE) -o ./shen.o
-
-
-# Item # 189 -- logsd --
-./logsd.o : logsd.cpp
-       $(CC) $(CC_OPTIONS) logsd.cpp -c $(INCLUDE) -o ./logsd.o
-
-
-# Item # 190 -- geom --
-./geom.o : geom.cpp
-       $(CC) $(CC_OPTIONS) geom.cpp -c $(INCLUDE) -o ./geom.o
-
-# Item # 191 -- parsesffcommand --
-./parsesffcommand.o : parsesffcommand.cpp
-       $(CC) $(CC_OPTIONS) parsesffcommand.cpp -c $(INCLUDE) -o ./parsesffcommand.o
-
-# Item # 192 -- chimeraccodecommand --
-./chimeraccodecommand.o : chimeraccodecommand.cpp
-       $(CC) $(CC_OPTIONS) chimeraccodecommand.cpp -c $(INCLUDE) -o ./chimeraccodecommand.o
-
-# Item # 193 -- chimeracheckcommand --
-./chimeracheckcommand.o : chimeracheckcommand.cpp
-       $(CC) $(CC_OPTIONS) chimeracheckcommand.cpp -c $(INCLUDE) -o ./chimeracheckcommand.o
-
-
-# Item # 194 -- chimeraslayercommand --
-./chimeraslayercommand.o : chimeraslayercommand.cpp
-       $(CC) $(CC_OPTIONS) chimeraslayercommand.cpp -c $(INCLUDE) -o ./chimeraslayercommand.o
-
-# Item # 195 -- chimerapintailcommand --
-./chimerapintailcommand.o : chimerapintailcommand.cpp
-       $(CC) $(CC_OPTIONS) chimerapintailcommand.cpp -c $(INCLUDE) -o ./chimerapintailcommand.o
-
-# Item # 196 -- chimerabellerophoncommand --
-./chimerabellerophoncommand.o : chimerabellerophoncommand.cpp
-       $(CC) $(CC_OPTIONS) chimerabellerophoncommand.cpp -c $(INCLUDE) -o ./chimerabellerophoncommand.o
-
-# Item # 197 -- phylosummary --
-./phylosummary.o : phylosummary.cpp
-       $(CC) $(CC_OPTIONS) phylosummary.cpp -c $(INCLUDE) -o ./phylosummary.o
-
-# Item # 198 -- setlogfilecommand --
-./setlogfilecommand.o : setlogfilecommand.cpp
-       $(CC) $(CC_OPTIONS) setlogfilecommand.cpp -c $(INCLUDE) -o ./setlogfilecommand.o
-
-# Item # 199 -- phylodiversity --
-./phylodiversity.o : phylodiversity.cpp
-       $(CC) $(CC_OPTIONS) phylodiversity.cpp -c $(INCLUDE) -o ./phylodiversity.o
-
-# Item # 200 -- phylodiversitycommand --
-./phylodiversitycommand.o : phylodiversitycommand.cpp
-       $(CC) $(CC_OPTIONS) phylodiversitycommand.cpp -c $(INCLUDE) -o ./phylodiversitycommand.o
-
-# Item # 201 -- makegroupcommand --
-./makegroupcommand.o : makegroupcommand.cpp
-       $(CC) $(CC_OPTIONS) makegroupcommand.cpp -c $(INCLUDE) -o ./makegroupcommand.o
-
-# Item # 202 -- chopseqscommand --
-./chopseqscommand.o : chopseqscommand.cpp
-       $(CC) $(CC_OPTIONS) chopseqscommand.cpp -c $(INCLUDE) -o ./chopseqscommand.o
-
-# Item # 203 -- clearcutcommand --
-./clearcutcommand.o : clearcutcommand.cpp
-       $(CC) $(CC_OPTIONS) clearcutcommand.cpp -c $(INCLUDE) -o ./clearcutcommand.o
-
-# Item # 204 -- catchallcommand --
-./catchallcommand.o : catchallcommand.cpp
-       $(CC) $(CC_OPTIONS) catchallcommand.cpp -c $(INCLUDE) -o ./catchallcommand.o
-
-# Item # 205 -- splitabundcommand --
-./splitabundcommand.o : splitabundcommand.cpp
-       $(CC) $(CC_OPTIONS) splitabundcommand.cpp -c $(INCLUDE) -o ./splitabundcommand.o
-       
-# Item # 206 -- splitmatrix --
-./splitmatrix.o : splitmatrix.cpp
-       $(CC) $(CC_OPTIONS) splitmatrix.cpp -c $(INCLUDE) -o ./splitmatrix.o
-       
-# Item # 207 -- clustersplit --
-./clustersplitcommand.o : clustersplitcommand.cpp
-       $(CC) $(CC_OPTIONS) clustersplitcommand.cpp -c $(INCLUDE) -o ./clustersplitcommand.o
-       
-# Item # 208 -- classifyotu --
-./classifyotucommand.o : classifyotucommand.cpp
-       $(CC) $(CC_OPTIONS) classifyotucommand.cpp -c $(INCLUDE) -o ./classifyotucommand.o
-
-# Item # 209 -- weightedlinkage --
-./weightedlinkage.o : weightedlinkage.cpp
-       $(CC) $(CC_OPTIONS) weightedlinkage.cpp -c $(INCLUDE) -o ./weightedlinkage.o
-       
-# Item # 210 -- degapseqscommand --
-./degapseqscommand.o : degapseqscommand.cpp
-       $(CC) $(CC_OPTIONS) degapseqscommand.cpp -c $(INCLUDE) -o ./degapseqscommand.o
-
-# Item # 211 -- getrelabundcommand --
-./getrelabundcommand.o : getrelabundcommand.cpp
-       $(CC) $(CC_OPTIONS) getrelabundcommand.cpp -c $(INCLUDE) -o ./getrelabundcommand.o
-
-##### END RUN ####
+###################################################\r
+#\r
+# Makefile for mothur\r
+# Created: June 29, 2010\r
+#\r
+###################################################\r
+\r
+#\r
+# Macros\r
+#\r
+\r
+# Optimize to level 3:\r
+\r
+CXXFLAGS += -O3\r
+\r
+CYGWIN_BUILD ?= no\r
+ifeq  ($(strip $(CYGWIN_BUILD)),yes)\r
+    CXXFLAGS += -mno-cygwin\r
+    LDFLAGS += -mno-cygwin \r
+#-lpsapi\r
+endif\r
+\r
+64BIT_VERSION ?= yes\r
+\r
+ifeq  ($(strip $(64BIT_VERSION)),yes)\r
+    TARGET_ARCH += -arch x86_64\r
+endif\r
+\r
+# if you do not want to use the readline library, set this to no.\r
+# make sure you have the library installed\r
+\r
+USEREADLINE ?= yes\r
+\r
+ifeq  ($(strip $(USEREADLINE)),yes)\r
+    CXXFLAGS += -DUSE_READLINE\r
+    LDFLAGS += \\r
+      -lreadline\\r
+      -lncurses\\r
+      -L../readline-6.0\r
+endif\r
+\r
+USEMPI ?= no\r
+\r
+ifeq  ($(strip $(USEMPI)),yes)\r
+    CXX = mpic++\r
+    CXXFLAGS += -DUSE_MPI\r
+endif\r
+\r
+#\r
+# INCLUDE directories for mothur\r
+#\r
+\r
+     CXXFLAGS += -I.\r
+\r
+#\r
+# Get the list of all .cpp files, rename to .o files\r
+#\r
+\r
+OBJECTS=$(patsubst %.cpp,%.o,$(wildcard *.cpp))\r
+\r
+mothur : $(OBJECTS)\r
+       $(CXX) $(LDFLAGS) $(TARGET_ARCH) -o $@ $(OBJECTS)\r
+\r
+install : mothur\r
+       cp mothur ../Release/mothur\r
+\r
+clean :\r
+       @rm -f $(OBJECTS)\r
index 2404a84f08672c2178bd3e0a33946124348a72a7..93f96df30c73fa91b7119b07eadb27a89dc5109d 100644 (file)
--- a/mothur.h
+++ b/mothur.h
@@ -64,6 +64,9 @@
 #else
        #include <conio.h> //allows unbuffered screen capture from stdin
        #include <direct.h> //get cwd
+       #include <windows.h>
+       #include <psapi.h>
+
 #endif
 
 using namespace std;
index ca1a40b32ddbd86e185ddee6e59366e4b3aace94..8bf216a39ce9b6d8492e1e2ec10dedc70d46843e 100644 (file)
-/*\r
- *  m->mothurOut.cpp\r
- *  Mothur\r
- *\r
- *  Created by westcott on 2/25/10.\r
- *  Copyright 2010 Schloss Lab. All rights reserved.\r
- *\r
- */\r
-\r
-#include "mothurout.h"\r
-\r
-/******************************************************/\r
-MothurOut* MothurOut::getInstance() {\r
-       if( _uniqueInstance == 0) {\r
-               _uniqueInstance = new MothurOut();\r
-       }\r
-       return _uniqueInstance;\r
-}\r
-/*********************************************************************************************/\r
-void MothurOut::setFileName(string filename)  {\r
-       try {\r
-               logFileName = filename;\r
-               \r
-               #ifdef USE_MPI\r
-                       int pid;\r
-                       MPI_Comm_rank(MPI_COMM_WORLD, &pid); \r
-                                       \r
-                       if (pid == 0) { //only one process should output to screen\r
-               #endif\r
-               \r
-               openOutputFile(filename, out);\r
-               \r
-               #ifdef USE_MPI\r
-                       }\r
-               #endif\r
-       }\r
-       catch(exception& e) {\r
-               errorOut(e, "MothurOut", "setFileName");\r
-               exit(1);\r
-       }\r
-}\r
-/*********************************************************************************************/\r
-void MothurOut::closeLog()  {\r
-       try {\r
-               \r
-               #ifdef USE_MPI\r
-                       int pid;\r
-                       MPI_Comm_rank(MPI_COMM_WORLD, &pid); \r
-                                       \r
-                       if (pid == 0) { //only one process should output to screen\r
-               #endif\r
-               \r
-               out.close();\r
-               \r
-               #ifdef USE_MPI\r
-                       }\r
-               #endif\r
-       }\r
-       catch(exception& e) {\r
-               errorOut(e, "MothurOut", "closeLog");\r
-               exit(1);\r
-       }\r
-}\r
-\r
-/*********************************************************************************************/\r
-MothurOut::~MothurOut() {\r
-       try {\r
-               _uniqueInstance = 0;\r
-               \r
-       }\r
-       catch(exception& e) {\r
-               errorOut(e, "MothurOut", "MothurOut");\r
-               exit(1);\r
-       }\r
-}\r
-/*********************************************************************************************/\r
-void MothurOut::mothurOut(string output) {\r
-       try {\r
-               \r
-               #ifdef USE_MPI\r
-                       int pid;\r
-                       MPI_Comm_rank(MPI_COMM_WORLD, &pid); \r
-                                       \r
-                       if (pid == 0) { //only one process should output to screen\r
-               #endif\r
-               \r
-               cout << output;\r
-               out << output;\r
-               \r
-               #ifdef USE_MPI\r
-                       }\r
-               #endif\r
-       }\r
-       catch(exception& e) {\r
-               errorOut(e, "MothurOut", "MothurOut");\r
-               exit(1);\r
-       }\r
-}\r
-/*********************************************************************************************/\r
-void MothurOut::mothurOutEndLine() {\r
-       try {\r
-               #ifdef USE_MPI\r
-                       int pid;\r
-                       MPI_Comm_rank(MPI_COMM_WORLD, &pid); \r
-                                       \r
-                       if (pid == 0) { //only one process should output to screen\r
-               #endif\r
-               \r
-               cout << endl;\r
-               out << endl;\r
-               \r
-               #ifdef USE_MPI\r
-                       }\r
-               #endif\r
-       }\r
-       catch(exception& e) {\r
-               errorOut(e, "MothurOut", "MothurOutEndLine");\r
-               exit(1);\r
-       }\r
-}\r
-/*********************************************************************************************/\r
-void MothurOut::mothurOutJustToLog(string output) {\r
-       try {\r
-               #ifdef USE_MPI\r
-                       int pid;\r
-                       MPI_Comm_rank(MPI_COMM_WORLD, &pid); \r
-                                       \r
-                       if (pid == 0) { //only one process should output to screen\r
-               #endif\r
-               \r
-               out << output;\r
-               \r
-               #ifdef USE_MPI\r
-                       }\r
-               #endif\r
-       }\r
-       catch(exception& e) {\r
-               errorOut(e, "MothurOut", "MothurOutJustToLog");\r
-               exit(1);\r
-       }\r
-}\r
-/*********************************************************************************************/\r
-void MothurOut::errorOut(exception& e, string object, string function) {\r
-       mothurOut("Error: ");\r
-       mothurOut(toString(e.what()));\r
-       mothurOut(" has occurred in the " + object + " class function " + function + ". Please contact Pat Schloss at mothur.bugs@gmail.com, and be sure to include the mothur.logFile with your inquiry.");\r
-       mothurOutEndLine();\r
-}\r
-/*********************************************************************************************/\r
-\r
-\r
-\r
-\r
-\r
+/*
+ *  m->mothurOut.cpp
+ *  Mothur
+ *
+ *  Created by westcott on 2/25/10.
+ *  Copyright 2010 Schloss Lab. All rights reserved.
+ *
+ */
+
+#include "mothurout.h"
+
+/******************************************************/
+MothurOut* MothurOut::getInstance() {
+       if( _uniqueInstance == 0) {
+               _uniqueInstance = new MothurOut();
+       }
+       return _uniqueInstance;
+}
+/*********************************************************************************************/
+void MothurOut::setFileName(string filename)  {
+       try {
+               logFileName = filename;
+               
+               #ifdef USE_MPI
+                       int pid;
+                       MPI_Comm_rank(MPI_COMM_WORLD, &pid); 
+                                       
+                       if (pid == 0) { //only one process should output to screen
+               #endif
+               
+               openOutputFile(filename, out);
+               
+               #ifdef USE_MPI
+                       }
+               #endif
+       }
+       catch(exception& e) {
+               errorOut(e, "MothurOut", "setFileName");
+               exit(1);
+       }
+}
+/*********************************************************************************************/
+void MothurOut::closeLog()  {
+       try {
+               
+               #ifdef USE_MPI
+                       int pid;
+                       MPI_Comm_rank(MPI_COMM_WORLD, &pid); 
+                                       
+                       if (pid == 0) { //only one process should output to screen
+               #endif
+               
+               out.close();
+               
+               #ifdef USE_MPI
+                       }
+               #endif
+       }
+       catch(exception& e) {
+               errorOut(e, "MothurOut", "closeLog");
+               exit(1);
+       }
+}
+
+/*********************************************************************************************/
+MothurOut::~MothurOut() {
+       try {
+               _uniqueInstance = 0;
+               
+       }
+       catch(exception& e) {
+               errorOut(e, "MothurOut", "MothurOut");
+               exit(1);
+       }
+}
+/*********************************************************************************************/
+void MothurOut::mothurOut(string output) {
+       try {
+               
+               #ifdef USE_MPI
+                       int pid;
+                       MPI_Comm_rank(MPI_COMM_WORLD, &pid); 
+                                       
+                       if (pid == 0) { //only one process should output to screen
+               #endif
+               
+               cout << output;
+               out << output;
+               
+               #ifdef USE_MPI
+                       }
+               #endif
+       }
+       catch(exception& e) {
+               errorOut(e, "MothurOut", "MothurOut");
+               exit(1);
+       }
+}
+/*********************************************************************************************/
+void MothurOut::mothurOutEndLine() {
+       try {
+               #ifdef USE_MPI
+                       int pid;
+                       MPI_Comm_rank(MPI_COMM_WORLD, &pid); 
+                                       
+                       if (pid == 0) { //only one process should output to screen
+               #endif
+               
+               cout << endl;
+               out << endl;
+               
+               #ifdef USE_MPI
+                       }
+               #endif
+       }
+       catch(exception& e) {
+               errorOut(e, "MothurOut", "MothurOutEndLine");
+               exit(1);
+       }
+}
+/*********************************************************************************************/
+void MothurOut::mothurOutJustToLog(string output) {
+       try {
+               #ifdef USE_MPI
+                       int pid;
+                       MPI_Comm_rank(MPI_COMM_WORLD, &pid); 
+                                       
+                       if (pid == 0) { //only one process should output to screen
+               #endif
+               
+               out << output;
+               
+               #ifdef USE_MPI
+                       }
+               #endif
+       }
+       catch(exception& e) {
+               errorOut(e, "MothurOut", "MothurOutJustToLog");
+               exit(1);
+       }
+}
+/*********************************************************************************************/
+void MothurOut::errorOut(exception& e, string object, string function) {
+       double vm, rss;
+       mem_usage(vm, rss);
+       
+       mothurOut("Error: ");
+       mothurOut(toString(e.what()));
+       mothurOut(" has occurred in the " + object + " class function " + function + ". Please contact Pat Schloss at mothur.bugs@gmail.com, and be sure to include the mothur.logFile with your inquiry.");
+       mothurOutEndLine();
+}
+/*********************************************************************************************/
+//The following was originally from http://stackoverflow.com/questions/669438/how-to-get-memory-usage-at-run-time-in-c 
+// process_mem_usage(double &, double &) - takes two doubles by reference,
+// attempts to read the system-dependent data for a process' virtual memory
+// size and resident set size, and return the results in KB.
+//
+// On failure, returns 0.0, 0.0
+int MothurOut::mem_usage(double& vm_usage, double& resident_set) {
+  #if defined (__APPLE__) || (__MACH__) || (linux) || (__linux)
+  
+          vm_usage     = 0.0;
+          resident_set = 0.0;
+
+          // 'file' stat seems to give the most reliable results
+          //
+          ifstream stat_stream("/proc/self/stat",ios_base::in);
+
+          // dummy vars for leading entries in stat that we don't care about
+          //
+          string pid, comm, state, ppid, pgrp, session, tty_nr;
+          string tpgid, flags, minflt, cminflt, majflt, cmajflt;
+          string utime, stime, cutime, cstime, priority, nice;
+          string O, itrealvalue, starttime;
+
+          // the two fields we want
+          //
+          unsigned long vsize;
+          long rss;
+
+          stat_stream >> pid >> comm >> state >> ppid >> pgrp >> session >> tty_nr
+                                  >> tpgid >> flags >> minflt >> cminflt >> majflt >> cmajflt
+                                  >> utime >> stime >> cutime >> cstime >> priority >> nice
+                                  >> O >> itrealvalue >> starttime >> vsize >> rss; // don't care about the rest
+
+          long page_size_kb = sysconf(_SC_PAGE_SIZE) / 1024; // in case x86-64 is configured to use 2MB pages
+          vm_usage     = vsize / 1024.0;
+          resident_set = rss * page_size_kb;
+          
+          mothurOut("Memory Usage: vm = " + toString(vm_usage) + " rss = " + toString(resident_set) + "\n");
+               return 0;
+
+       #else
+/*             //windows memory usage
+               // Get the list of process identifiers.
+               DWORD aProcesses[1024], cbNeeded, cProcesses;
+               
+               if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) ){ return 1; }
+
+               // Calculate how many process identifiers were returned.
+               cProcesses = cbNeeded / sizeof(DWORD);
+
+               // Print the memory usage for each process
+               for (int i = 0; i < cProcesses; i++ ) {
+                       DWORD processID = aProcesses[i];
+                       
+                       PROCESS_MEMORY_COUNTERS pmc;
+
+                       HANDLE hProcess = OpenProcess((PROCESS_QUERY_INFORMATION | PROCESS_VM_READ), FALSE, processID);
+
+                       // Print the process identifier.
+                       printf( "\nProcess ID: %u\n", processID);
+                       
+                       if (NULL != hProcess) {
+
+                               if ( GetProcessMemoryInfo( hProcess, &pmc, sizeof(pmc)) ) {
+                                       printf( "\tPageFaultCount: 0x%08X\n", pmc.PageFaultCount );
+                                       printf( "\tPeakWorkingSetSize: 0x%08X\n", pmc.PeakWorkingSetSize );
+                                       printf( "\tWorkingSetSize: 0x%08X\n", pmc.WorkingSetSize );
+                                       printf( "\tQuotaPeakPagedPoolUsage: 0x%08X\n", pmc.QuotaPeakPagedPoolUsage );
+                                       printf( "\tQuotaPagedPoolUsage: 0x%08X\n", pmc.QuotaPagedPoolUsage );
+                                       printf( "\tQuotaPeakNonPagedPoolUsage: 0x%08X\n", pmc.QuotaPeakNonPagedPoolUsage );
+                                       printf( "\tQuotaNonPagedPoolUsage: 0x%08X\n", pmc.QuotaNonPagedPoolUsage );
+                                       printf( "\tPagefileUsage: 0x%08X\n", pmc.PagefileUsage ); 
+                                       printf( "\tPeakPagefileUsage: 0x%08X\n", pmc.PeakPagefileUsage );
+                               }
+                               CloseHandle(hProcess);
+                       }
+               }
+*/
+                       return 0;
+
+       #endif
+}
+/*********************************************************************************************/
+
+
+
+
+
index d2ba6b94f0b12a6bd31df7763e0d4b32d705d3ea..bf356ae285fba010f41f2bbc51b9ce093ead1b1b 100644 (file)
@@ -1,46 +1,48 @@
-#ifndef MOTHUROUT_H\r
-#define MOTHUROUT_H\r
-\r
-/*\r
- *  mothurOut.h\r
- *  Mothur\r
- *\r
- *  Created by westcott on 2/25/10.\r
- *  Copyright 2010 Schloss Lab. All rights reserved.\r
- *\r
- */\r
-\r
-#include "mothur.h"\r
-\r
-/***********************************************/\r
-\r
-class MothurOut {\r
-       \r
-       public:\r
-               static MothurOut* getInstance();\r
-               void setFileName(string);\r
-               \r
-               void mothurOut(string);\r
-               void mothurOutEndLine();\r
-               void mothurOutJustToLog(string);\r
-               void errorOut(exception&, string, string);\r
-               void closeLog();\r
-\r
-               int control_pressed;\r
-               bool executing;\r
-\r
-       private:\r
-               static MothurOut* _uniqueInstance;\r
-               MothurOut( const MothurOut& ); // Disable copy constructor\r
-               void operator=( const MothurOut& ); // Disable assignment operator\r
-               MothurOut() { control_pressed = false; };\r
-               ~MothurOut();\r
-\r
-               string logFileName;\r
-               ofstream out;\r
-\r
-};\r
-/***********************************************/\r
-\r
-#endif\r
-\r
+#ifndef MOTHUROUT_H
+#define MOTHUROUT_H
+
+/*
+ *  mothurOut.h
+ *  Mothur
+ *
+ *  Created by westcott on 2/25/10.
+ *  Copyright 2010 Schloss Lab. All rights reserved.
+ *
+ */
+
+#include "mothur.h"
+
+/***********************************************/
+
+class MothurOut {
+       
+       public:
+               static MothurOut* getInstance();
+               void setFileName(string);
+               
+               void mothurOut(string);
+               void mothurOutEndLine();
+               void mothurOutJustToLog(string);
+               void errorOut(exception&, string, string);
+               void closeLog();
+
+               int control_pressed;
+               bool executing;
+
+       private:
+               static MothurOut* _uniqueInstance;
+               MothurOut( const MothurOut& ); // Disable copy constructor
+               void operator=( const MothurOut& ); // Disable assignment operator
+               MothurOut() { control_pressed = false; };
+               ~MothurOut();
+
+               string logFileName;
+               ofstream out;
+               
+               int mem_usage(double&, double&);
+
+};
+/***********************************************/
+
+#endif
+
index b6626b872d31030d791362ec8ebf68f3f3aaa3e6..238ffa5ff227eb85bae8dff594a7d1f97d357280 100644 (file)
@@ -134,7 +134,7 @@ int SetDirectoryCommand::execute(){
                return 0;
        }
        catch(exception& e) {
-               m->errorOut(e, "SetDirectoryCommand", "SetDirectoryCommand");
+               m->errorOut(e, "SetDirectoryCommand", "execute");
                exit(1);
        }
 }
index dcd95cb94344063333d8f1c1c2abac6408dd314d..944e2cdc0a110828157301f14f2470a06ac3e052 100644 (file)
@@ -16,6 +16,7 @@ TrimSeqsCommand::TrimSeqsCommand(string option)  {
        try {
                
                abort = false;
+               comboStarts = 0;
                
                //allow user to run help
                if(option == "help") { help(); abort = true; }
@@ -281,25 +282,36 @@ int TrimSeqsCommand::execute(){
                                                
                                                                                
                for(int i=0;i<fastaFileNames.size();i++){
-                       ifstream inFASTA;
-                       string seqName;
-                       //openInputFile(getRootName(fastaFile) +  groupVector[i] + ".fasta", inFASTA);
-                       openInputFile(fastaFileNames[i], inFASTA);
-                       ofstream outGroups;
-                       string outGroupFilename = outputDir + getRootName(getSimpleName(fastaFileNames[i])) + "groups";
-                       openOutputFile(outGroupFilename, outGroups);
-                       //openOutputFile(outputDir + getRootName(getSimpleName(fastaFile)) + groupVector[i] + ".groups", outGroups);
-                       outputNames.push_back(outGroupFilename);
-                       
-                       while(!inFASTA.eof()){
-                               if(inFASTA.get() == '>'){
-                                       inFASTA >> seqName;
-                                       outGroups << seqName << '\t' << groupVector[i] << endl;
+                       if (isBlank(fastaFileNames[i])) { remove(fastaFileNames[i].c_str()); }
+                       else {
+                               ifstream inFASTA;
+                               string seqName;
+                               //openInputFile(getRootName(fastaFile) +  groupVector[i] + ".fasta", inFASTA);
+                               openInputFile(fastaFileNames[i], inFASTA);
+                               ofstream outGroups;
+                               string outGroupFilename = outputDir + getRootName(getSimpleName(fastaFileNames[i])) + "groups";
+                               openOutputFile(outGroupFilename, outGroups);
+                               //openOutputFile(outputDir + getRootName(getSimpleName(fastaFile)) + groupVector[i] + ".groups", outGroups);
+                               outputNames.push_back(outGroupFilename);
+                               
+                               string thisGroup = "";
+                               if (i > comboStarts) {
+                                       map<string, int>::iterator itCombo;
+                                       for(itCombo=combos.begin();itCombo!=combos.end(); itCombo++){
+                                               if(itCombo->second == i){       thisGroup = itCombo->first;     combos.erase(itCombo);  break;  }
+                                       }
+                               }else{ thisGroup = groupVector[i]; }
+                               
+                               while(!inFASTA.eof()){
+                                       if(inFASTA.get() == '>'){
+                                               inFASTA >> seqName;
+                                               outGroups << seqName << '\t' << thisGroup << endl;
+                                       }
+                                       while (!inFASTA.eof())  {       char c = inFASTA.get(); if (c == 10 || c == 13){        break;  }       }
                                }
-                               while (!inFASTA.eof())  {       char c = inFASTA.get(); if (c == 10 || c == 13){        break;  }       }
+                               outGroups.close();
+                               inFASTA.close();
                        }
-                       outGroups.close();
-                       inFASTA.close();
                }
                
                if (m->control_pressed) { 
@@ -368,7 +380,7 @@ int TrimSeqsCommand::driverCreateTrim(string filename, string qFileName, string
 
                        string origSeq = currSeq.getUnaligned();
                        if (origSeq != "") {
-                               int group;
+                               int groupBar, groupPrime;
                                string trashCode = "";
                                int currentSeqsDiffs = 0;
                                
@@ -384,13 +396,13 @@ int TrimSeqsCommand::driverCreateTrim(string filename, string qFileName, string
                                }
                        
                                if(barcodes.size() != 0){
-                                       success = stripBarcode(currSeq, group);
+                                       success = stripBarcode(currSeq, groupBar);
                                        if(success > bdiffs){   trashCode += 'b';       }
                                        else{ currentSeqsDiffs += success;  }
                                }
 
                                if(numFPrimers != 0){
-                                       success = stripForward(currSeq);
+                                       success = stripForward(currSeq, groupPrime);
                                        if(success > pdiffs){   trashCode += 'f';       }
                                        else{ currentSeqsDiffs += success;  }
                                }
@@ -421,10 +433,19 @@ int TrimSeqsCommand::driverCreateTrim(string filename, string qFileName, string
                                        currSeq.setAligned(currSeq.getUnaligned());
                                        currSeq.printSequence(outFASTA);
                                        if(barcodes.size() != 0){
-                                               outGroups << currSeq.getName() << '\t' << groupVector[group] << endl;
+                                               string thisGroup = groupVector[groupBar];
+                                               int indexToFastaFile = groupBar;
+                                               if (primers.size() != 0){
+                                                       //does this primer have a group
+                                                       if (groupVector[groupPrime] != "") {  
+                                                               thisGroup += "." + groupVector[groupPrime]; 
+                                                               indexToFastaFile = combos[thisGroup];
+                                                       }
+                                               }
+                                               outGroups << currSeq.getName() << '\t' << thisGroup << endl;
                                                
                                                if(allFiles){
-                                                       currSeq.printSequence(*fastaFileNames[group]);                                  
+                                                       currSeq.printSequence(*fastaFileNames[indexToFastaFile]);                                       
                                                }
                                        }
                                }
@@ -558,6 +579,7 @@ void TrimSeqsCommand::getOligos(vector<string>& outFASTAVec){ //vector<ofstream*
                
                string type, oligo, group;
                int index=0;
+               //int indexPrimer = 0;
                
                while(!inOligos.eof()){
                        inOligos >> type;
@@ -574,7 +596,29 @@ void TrimSeqsCommand::getOligos(vector<string>& outFASTAVec){ //vector<ofstream*
                                }
                                
                                if(type == "forward"){
-                                       forPrimer.push_back(oligo);
+                                       group = "";
+                                       
+                                       // get rest of line in case there is a primer name
+                                       while (!inOligos.eof()) {       
+                                               char c = inOligos.get(); 
+                                               if (c == 10 || c == 13){        break;  }
+                                               else if (c == 32 || c == 9){;} //space or tab
+                                               else {  group += c;  }
+                                       } 
+                                       
+                                       //check for repeat barcodes
+                                       map<string, int>::iterator itPrime = primers.find(oligo);
+                                       if (itPrime != primers.end()) { m->mothurOut("primer " + oligo + " is in your oligos file already."); m->mothurOutEndLine();  }
+                                       
+                                       primers[oligo]=index; index++;
+                                       groupVector.push_back(group);
+                                       
+                                       if(allFiles){
+                                               if (group != "") { //there is a group for this primer
+                                                       outputNames.push_back((outputDir + getRootName(getSimpleName(fastaFile)) + toString(index) + "." + group + ".fasta"));
+                                                       outFASTAVec.push_back((outputDir + getRootName(getSimpleName(fastaFile)) + toString(index) + "." + group + ".fasta"));
+                                               }
+                                       }
                                }
                                else if(type == "reverse"){
                                        Sequence oligoRC("reverse", oligo);
@@ -583,21 +627,40 @@ void TrimSeqsCommand::getOligos(vector<string>& outFASTAVec){ //vector<ofstream*
                                }
                                else if(type == "barcode"){
                                        inOligos >> group;
+                                       
+                                       //check for repeat barcodes
+                                       map<string, int>::iterator itBar = barcodes.find(oligo);
+                                       if (itBar != barcodes.end()) { m->mothurOut("barcode " + oligo + " is in your oligos file already."); m->mothurOutEndLine();  }
+                                       
                                        barcodes[oligo]=index; index++;
                                        groupVector.push_back(group);
                                        
                                        if(allFiles){
-                                               //outFASTAVec.push_back(new ofstream((outputDir + getRootName(getSimpleName(fastaFile)) + group + ".fasta").c_str(), ios::ate));
                                                outputNames.push_back((outputDir + getRootName(getSimpleName(fastaFile)) + toString(index) + "." + group + ".fasta"));
                                                outFASTAVec.push_back((outputDir + getRootName(getSimpleName(fastaFile)) + toString(index) + "." + group + ".fasta"));
                                        }
                                }else{  m->mothurOut(type + " is not recognized as a valid type. Choices are forward, reverse, and barcode. Ignoring " + oligo + "."); m->mothurOutEndLine();  }
                        }
+                       gobble(inOligos);
                }
                
                inOligos.close();
                
-               numFPrimers = forPrimer.size();
+               //add in potential combos
+               if(allFiles){
+                       comboStarts = outFASTAVec.size()-1;
+                       for (map<string, int>::iterator itBar = barcodes.begin(); itBar != barcodes.end(); itBar++) {
+                               for (map<string, int>::iterator itPrime = primers.begin(); itPrime != primers.end(); itPrime++) {
+                                       if (groupVector[itPrime->second] != "") { //there is a group for this primer
+                                               outputNames.push_back((outputDir + getRootName(getSimpleName(fastaFile)) + toString(itBar->second) + "." + groupVector[itBar->second] + "." + toString(itPrime->second) + "." + groupVector[itPrime->second] + ".fasta"));
+                                               outFASTAVec.push_back((outputDir + getRootName(getSimpleName(fastaFile)) + toString(itBar->second) + "." + groupVector[itBar->second] + "." + toString(itPrime->second) + "." + groupVector[itPrime->second] + ".fasta"));
+                                               combos[(groupVector[itBar->second] + "." + groupVector[itPrime->second])] = outFASTAVec.size()-1;
+                                       }
+                               }
+                       }
+               }
+               
+               numFPrimers = primers.size();
                numRPrimers = revPrimer.size();
                
        }
@@ -727,27 +790,27 @@ int TrimSeqsCommand::stripBarcode(Sequence& seq, int& group){
 
 //***************************************************************************************************************
 
-int TrimSeqsCommand::stripForward(Sequence& seq){
+int TrimSeqsCommand::stripForward(Sequence& seq, int& group){
        try {
                string rawSequence = seq.getUnaligned();
                int success = pdiffs + 1;       //guilty until proven innocent
                
                //can you find the primer
-               for(int i=0;i<numFPrimers;i++){
-                       string oligo = forPrimer[i];
-
-                       if(rawSequence.length() < oligo.length()){      
-                               success = pdiffs + 1;
-                               break;
+               for(map<string,int>::iterator it=primers.begin();it!=primers.end();it++){
+                       string oligo = it->first;
+                       if(rawSequence.length() < oligo.length()){      //let's just assume that the primers are the same length
+                               success = pdiffs + 10;                                  //if the sequence is shorter than the barcode then bail out
+                               break;  
                        }
                        
                        if(compareDNASeq(oligo, rawSequence.substr(0,oligo.length()))){
+                               group = it->second;
                                seq.setUnaligned(rawSequence.substr(oligo.length()));
                                success = 0;
                                break;
                        }
                }
-               
+
                //if you found the barcode or if you don't want to allow for diffs
 //             cout << success;
                if ((pdiffs == 0) || (success == 0)) { return success;  }
@@ -758,11 +821,12 @@ int TrimSeqsCommand::stripForward(Sequence& seq){
                        int maxLength = 0;
 
                        Alignment* alignment;
-                       if (numFPrimers > 0) {
+                       if (primers.size() > 0) {
+                               map<string,int>::iterator it=primers.begin();
 
-                               for(int i=0;i<numFPrimers;i++){
-                                       if(forPrimer[i].length() > maxLength){
-                                               maxLength = forPrimer[i].length();
+                               for(it;it!=primers.end();it++){
+                                       if(it->first.length() > maxLength){
+                                               maxLength = it->first.length();
                                        }
                                }
                                alignment = new NeedlemanOverlap(-1.0, 1.0, -1.0, (maxLength+pdiffs+1));  
@@ -772,10 +836,12 @@ int TrimSeqsCommand::stripForward(Sequence& seq){
                        //can you find the barcode
                        int minDiff = 1e6;
                        int minCount = 1;
+                       int minGroup = -1;
                        int minPos = 0;
                        
-                       for(int i=0;i<numFPrimers;i++){
-                               string oligo = forPrimer[i];
+                       for(map<string,int>::iterator it=primers.begin();it!=primers.end();it++){
+                               string oligo = it->first;
+//                             int length = oligo.length();
                                
                                if(rawSequence.length() < maxLength){   
                                        success = pdiffs + 100;
@@ -794,12 +860,16 @@ int TrimSeqsCommand::stripForward(Sequence& seq){
                                }
                                oligo = oligo.substr(0,alnLength);
                                temp = temp.substr(0,alnLength);
-
+                               
                                int newStart=0;
                                int numDiff = countDiffs(oligo, temp);
+                               
+//                             cout << oligo << '\t' << temp << '\t' << numDiff << endl;                               
+                               
                                if(numDiff < minDiff){
                                        minDiff = numDiff;
                                        minCount = 1;
+                                       minGroup = it->second;
                                        minPos = 0;
                                        for(int i=0;i<alnLength;i++){
                                                if(temp[i] != '-'){
@@ -812,9 +882,11 @@ int TrimSeqsCommand::stripForward(Sequence& seq){
                                }
 
                        }
-                       if(minDiff > pdiffs)    {       success =  minDiff;             }
-                       else if(minCount > 1)   {       success =  pdiffs + 10; }
-                       else{
+
+                       if(minDiff > pdiffs)    {       success = minDiff;              }       //no good matches
+                       else if(minCount > 1)   {       success = pdiffs + 10;  }       //can't tell the difference between multiple primers
+                       else{                                                                                                   //use the best match
+                               group = minGroup;
                                seq.setUnaligned(rawSequence.substr(minPos));
                                success = minDiff;
                        }
@@ -822,6 +894,7 @@ int TrimSeqsCommand::stripForward(Sequence& seq){
                        if (alignment != NULL) {  delete alignment;  }
                        
                }
+               
                return success;
 
        }
index a4a4215277fadbdb5857dea6d9e9319e233cad01..b5357b38e1e3bf892ef7f0cd9ffcfb7b7de4ec8a 100644 (file)
@@ -33,7 +33,7 @@ private:
        bool stripQualThreshold(Sequence&, ifstream&);
        bool cullQualAverage(Sequence&, ifstream&);
        int stripBarcode(Sequence&, int&);
-       int stripForward(Sequence&);
+       int stripForward(Sequence&, int&);
        bool stripReverse(Sequence&);
        bool cullLength(Sequence&);
        bool cullHomoP(Sequence&);
@@ -45,10 +45,12 @@ private:
        string fastaFile, oligoFile, qFileName, outputDir;
        
        bool flip, allFiles, qtrim;
-       int numFPrimers, numRPrimers, maxAmbig, maxHomoP, minLength, maxLength, qThreshold, qAverage, processors, tdiffs, bdiffs, pdiffs;
-       vector<string> forPrimer, revPrimer, outputNames;
+       int numFPrimers, numRPrimers, maxAmbig, maxHomoP, minLength, maxLength, qThreshold, qAverage, processors, tdiffs, bdiffs, pdiffs, comboStarts;
+       vector<string> revPrimer, outputNames;
        map<string, int> barcodes;
        vector<string> groupVector;
+       map<string, int> primers;
+       map<string, int> combos;
        
        vector<int> processIDS;   //processid
        vector<linePair*> lines;