]> git.donarmstrong.com Git - mothur.git/commitdiff
Added get.line command.
authorryabin <ryabin>
Wed, 18 Feb 2009 19:28:34 +0000 (19:28 +0000)
committerryabin <ryabin>
Wed, 18 Feb 2009 19:28:34 +0000 (19:28 +0000)
Added get.label command.
Added get.group command.
Added parameter and parameter value error checking.
Modified ace to allow changing the abund variable.
Made it so you don't need a space after the comma when entering parameters.
Added error checking for invalid labels.
Added a new convert method that tests if a given string can be converted into an int.

21 files changed:
Mothur.xcodeproj/project.pbxproj
ace.cpp
ace.h
collect.cpp
collect.h
collectcommand.cpp
collectcommand.h
collectsharedcommand.cpp
commandfactory.cpp
errorchecking.cpp
errorchecking.h
globaldata.cpp
globaldata.hpp
helpcommand.cpp
rarefactcommand.cpp
rarefactcommand.h
summarycommand.cpp
summarycommand.h
utilities.hpp
validcommands.cpp
validparameter.cpp

index 93e0e58cf60e16ef5098d680acc14637f59403c0..d3716c77281a1535db35ac892336f89d66694654 100644 (file)
                372E12700F26365B0095CF7E /* readotucommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 372E126F0F26365B0095CF7E /* readotucommand.cpp */; };
                372E12960F263D5A0095CF7E /* readdistcommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 372E12950F263D5A0095CF7E /* readdistcommand.cpp */; };
                372E12ED0F264D320095CF7E /* commandfactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 372E12EC0F264D320095CF7E /* commandfactory.cpp */; };
-               374610780F40645300460C57 /* unifracweightedcommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 374610770F40645300460C57 /* unifracweightedcommand.cpp */; };
-               3746107E0F4064D100460C57 /* weighted.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3746107D0F4064D100460C57 /* weighted.cpp */; };
-               374610830F40652400460C57 /* unweighted.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 374610820F40652400460C57 /* unweighted.cpp */; };
-               3746109D0F40657600460C57 /* unifracunweightedcommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3746109C0F40657600460C57 /* unifracunweightedcommand.cpp */; };
                379293C30F2DE73400B9034A /* treemap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 379293C20F2DE73400B9034A /* treemap.cpp */; };
-               379294700F2E191800B9034A /* parsimonycommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3792946F0F2E191800B9034A /* parsimonycommand.cpp */; };
-               3792948A0F2E258500B9034A /* parsimony.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 379294890F2E258500B9034A /* parsimony.cpp */; };
                37AD4CE40F28AEA300AA2D49 /* sharedlistvector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 37AD4CE30F28AEA300AA2D49 /* sharedlistvector.cpp */; };
                37AD4DBB0F28E2FE00AA2D49 /* tree.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 37AD4DBA0F28E2FE00AA2D49 /* tree.cpp */; };
                37AD4DCA0F28F3DD00AA2D49 /* readtree.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 37AD4DC90F28F3DD00AA2D49 /* readtree.cpp */; };
-               37AFC71F0F445386005F492D /* sharedsobscollectsummary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 37AFC71E0F445386005F492D /* sharedsobscollectsummary.cpp */; };
-               37AFC7A30F44703E005F492D /* readsharedcommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 37AFC7A20F44703E005F492D /* readsharedcommand.cpp */; };
                37B28F680F27590100808A62 /* deconvolutecommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 37B28F670F27590100808A62 /* deconvolutecommand.cpp */; };
                37D928550F21331F001D4494 /* ace.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 37D927B80F21331F001D4494 /* ace.cpp */; };
                37D928560F21331F001D4494 /* averagelinkage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 37D927BA0F21331F001D4494 /* averagelinkage.cpp */; };
                37D9289F0F21331F001D4494 /* validparameter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 37D928530F21331F001D4494 /* validparameter.cpp */; };
                37E5F3E30F29FD4200F8D827 /* treenode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 37E5F3E20F29FD4200F8D827 /* treenode.cpp */; };
                37E5F4920F2A3DA800F8D827 /* readtreecommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 37E5F4910F2A3DA800F8D827 /* readtreecommand.cpp */; };
+               7E44EBD10F3235D900B0D45D /* makefile in Sources */ = {isa = PBXBuildFile; fileRef = 7E44EBD00F32358B00B0D45D /* makefile */; };
                8DD76F6A0486A84900D96B5E /* Mothur.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = C6859E8B029090EE04C91782 /* Mothur.1 */; };
+               EBA52D2C0F378B0F00122C15 /* getgroupcommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EBA52D2B0F378B0F00122C15 /* getgroupcommand.cpp */; };
+               EBFD67840F33876C00883537 /* getlabelcommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EBFD67830F33876C00883537 /* getlabelcommand.cpp */; };
+               EBFD67E80F339AAA00883537 /* getlinecommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EBFD67E70F339AAA00883537 /* getlinecommand.cpp */; };
 /* End PBXBuildFile section */
 
 /* Begin PBXCopyFilesBuildPhase section */
 /* End PBXCopyFilesBuildPhase section */
 
 /* Begin PBXFileReference section */
-               372E126E0F26365B0095CF7E /* readotucommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = readotucommand.h; sourceTree = "<group>"; };
-               372E126F0F26365B0095CF7E /* readotucommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = readotucommand.cpp; sourceTree = "<group>"; };
-               372E12940F263D5A0095CF7E /* readdistcommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = readdistcommand.h; sourceTree = "<group>"; };
-               372E12950F263D5A0095CF7E /* readdistcommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = readdistcommand.cpp; sourceTree = "<group>"; };
-               372E12EC0F264D320095CF7E /* commandfactory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = commandfactory.cpp; sourceTree = "<group>"; };
-               374610760F40645300460C57 /* unifracweightedcommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = unifracweightedcommand.h; sourceTree = "<group>"; };
-               374610770F40645300460C57 /* unifracweightedcommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = unifracweightedcommand.cpp; sourceTree = "<group>"; };
-               3746107C0F4064D100460C57 /* weighted.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = weighted.h; sourceTree = "<group>"; };
-               3746107D0F4064D100460C57 /* weighted.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = weighted.cpp; sourceTree = "<group>"; };
-               374610810F40652400460C57 /* unweighted.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = unweighted.h; sourceTree = "<group>"; };
-               374610820F40652400460C57 /* unweighted.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = unweighted.cpp; sourceTree = "<group>"; };
-               3746109B0F40657600460C57 /* unifracunweightedcommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = unifracunweightedcommand.h; sourceTree = "<group>"; };
-               3746109C0F40657600460C57 /* unifracunweightedcommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = unifracunweightedcommand.cpp; sourceTree = "<group>"; };
-               379293C10F2DE73400B9034A /* treemap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = treemap.h; sourceTree = "<group>"; };
-               379293C20F2DE73400B9034A /* treemap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = treemap.cpp; sourceTree = "<group>"; };
-               3792946E0F2E191800B9034A /* parsimonycommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = parsimonycommand.h; sourceTree = "<group>"; };
-               3792946F0F2E191800B9034A /* parsimonycommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = parsimonycommand.cpp; sourceTree = "<group>"; };
-               379294880F2E258500B9034A /* parsimony.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = parsimony.h; sourceTree = "<group>"; };
-               379294890F2E258500B9034A /* parsimony.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = parsimony.cpp; sourceTree = "<group>"; };
-               3792948D0F2E271100B9034A /* treecalculator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = treecalculator.h; sourceTree = "<group>"; };
-               37AD4CE20F28AEA300AA2D49 /* sharedlistvector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sharedlistvector.h; sourceTree = "<group>"; };
-               37AD4CE30F28AEA300AA2D49 /* sharedlistvector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sharedlistvector.cpp; sourceTree = "<group>"; };
-               37AD4DB90F28E2FE00AA2D49 /* tree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tree.h; sourceTree = "<group>"; };
-               37AD4DBA0F28E2FE00AA2D49 /* tree.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tree.cpp; sourceTree = "<group>"; };
-               37AD4DC80F28F3DD00AA2D49 /* readtree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = readtree.h; sourceTree = "<group>"; };
-               37AD4DC90F28F3DD00AA2D49 /* readtree.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = readtree.cpp; sourceTree = "<group>"; };
-               37AFC71D0F445386005F492D /* sharedsobscollectsummary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sharedsobscollectsummary.h; sourceTree = "<group>"; };
-               37AFC71E0F445386005F492D /* sharedsobscollectsummary.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sharedsobscollectsummary.cpp; sourceTree = "<group>"; };
-               37AFC7A10F44703E005F492D /* readsharedcommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = readsharedcommand.h; sourceTree = "<group>"; };
-               37AFC7A20F44703E005F492D /* readsharedcommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = readsharedcommand.cpp; sourceTree = "<group>"; };
-               37B28F660F27590100808A62 /* deconvolutecommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = deconvolutecommand.h; sourceTree = "<group>"; };
-               37B28F670F27590100808A62 /* deconvolutecommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = deconvolutecommand.cpp; sourceTree = "<group>"; };
-               37D927B80F21331F001D4494 /* ace.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ace.cpp; sourceTree = "<group>"; };
-               37D927B90F21331F001D4494 /* ace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ace.h; sourceTree = "<group>"; };
-               37D927BA0F21331F001D4494 /* averagelinkage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = averagelinkage.cpp; sourceTree = "<group>"; };
-               37D927BB0F21331F001D4494 /* bootstrap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = bootstrap.cpp; sourceTree = "<group>"; };
-               37D927BC0F21331F001D4494 /* bootstrap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bootstrap.h; sourceTree = "<group>"; };
-               37D927BD0F21331F001D4494 /* calculator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = calculator.cpp; sourceTree = "<group>"; };
-               37D927BE0F21331F001D4494 /* calculator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = calculator.h; sourceTree = "<group>"; };
-               37D927BF0F21331F001D4494 /* chao1.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = chao1.cpp; sourceTree = "<group>"; };
-               37D927C00F21331F001D4494 /* chao1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = chao1.h; sourceTree = "<group>"; };
-               37D927C10F21331F001D4494 /* cluster.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = cluster.cpp; sourceTree = "<group>"; };
-               37D927C20F21331F001D4494 /* cluster.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = cluster.hpp; sourceTree = "<group>"; };
-               37D927C30F21331F001D4494 /* clustercommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = clustercommand.cpp; sourceTree = "<group>"; };
-               37D927C40F21331F001D4494 /* clustercommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = clustercommand.h; sourceTree = "<group>"; };
-               37D927C50F21331F001D4494 /* collect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = collect.cpp; sourceTree = "<group>"; };
-               37D927C60F21331F001D4494 /* collect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = collect.h; sourceTree = "<group>"; };
-               37D927C70F21331F001D4494 /* collectcommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = collectcommand.cpp; sourceTree = "<group>"; };
-               37D927C80F21331F001D4494 /* collectcommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = collectcommand.h; sourceTree = "<group>"; };
-               37D927C90F21331F001D4494 /* collectdisplay.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = collectdisplay.h; sourceTree = "<group>"; };
-               37D927CA0F21331F001D4494 /* collectorscurvedata.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = collectorscurvedata.h; sourceTree = "<group>"; };
-               37D927CB0F21331F001D4494 /* collectsharedcommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = collectsharedcommand.cpp; sourceTree = "<group>"; };
-               37D927CC0F21331F001D4494 /* collectsharedcommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = collectsharedcommand.h; sourceTree = "<group>"; };
-               37D927CD0F21331F001D4494 /* command.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = command.hpp; sourceTree = "<group>"; };
-               37D927CF0F21331F001D4494 /* commandfactory.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = commandfactory.hpp; sourceTree = "<group>"; };
-               37D927D00F21331F001D4494 /* commandoptionparser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = commandoptionparser.cpp; sourceTree = "<group>"; };
-               37D927D10F21331F001D4494 /* commandoptionparser.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = commandoptionparser.hpp; sourceTree = "<group>"; };
-               37D927D20F21331F001D4494 /* completelinkage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = completelinkage.cpp; sourceTree = "<group>"; };
-               37D927D30F21331F001D4494 /* database.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = database.cpp; sourceTree = "<group>"; };
-               37D927D40F21331F001D4494 /* database.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = database.hpp; sourceTree = "<group>"; };
-               37D927D50F21331F001D4494 /* datavector.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = datavector.hpp; sourceTree = "<group>"; };
-               37D927D60F21331F001D4494 /* display.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = display.h; sourceTree = "<group>"; };
-               37D927D70F21331F001D4494 /* engine.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = engine.cpp; sourceTree = "<group>"; };
-               37D927D80F21331F001D4494 /* engine.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = engine.hpp; sourceTree = "<group>"; };
-               37D927D90F21331F001D4494 /* errorchecking.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = errorchecking.cpp; sourceTree = "<group>"; };
-               37D927DA0F21331F001D4494 /* errorchecking.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = errorchecking.h; sourceTree = "<group>"; };
-               37D927DB0F21331F001D4494 /* fastamap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fastamap.cpp; sourceTree = "<group>"; };
-               37D927DC0F21331F001D4494 /* fastamap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fastamap.h; sourceTree = "<group>"; };
-               37D927DD0F21331F001D4494 /* fileoutput.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fileoutput.cpp; sourceTree = "<group>"; };
-               37D927DE0F21331F001D4494 /* fileoutput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fileoutput.h; sourceTree = "<group>"; };
-               37D927DF0F21331F001D4494 /* globaldata.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = globaldata.cpp; sourceTree = "<group>"; };
-               37D927E00F21331F001D4494 /* globaldata.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = globaldata.hpp; sourceTree = "<group>"; };
-               37D927E10F21331F001D4494 /* groupmap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = groupmap.cpp; sourceTree = "<group>"; };
-               37D927E20F21331F001D4494 /* groupmap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = groupmap.h; sourceTree = "<group>"; };
-               37D927E30F21331F001D4494 /* helpcommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = helpcommand.cpp; sourceTree = "<group>"; };
-               37D927E40F21331F001D4494 /* helpcommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = helpcommand.h; sourceTree = "<group>"; };
-               37D927E50F21331F001D4494 /* inputdata.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = inputdata.cpp; sourceTree = "<group>"; };
-               37D927E60F21331F001D4494 /* inputdata.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inputdata.h; sourceTree = "<group>"; };
-               37D927E70F21331F001D4494 /* jackknife.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = jackknife.cpp; sourceTree = "<group>"; };
-               37D927E80F21331F001D4494 /* jackknife.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = jackknife.h; sourceTree = "<group>"; };
-               37D927E90F21331F001D4494 /* kmer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = kmer.cpp; sourceTree = "<group>"; };
-               37D927EA0F21331F001D4494 /* kmer.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = kmer.hpp; sourceTree = "<group>"; };
-               37D927EB0F21331F001D4494 /* kmerdb.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = kmerdb.cpp; sourceTree = "<group>"; };
-               37D927EC0F21331F001D4494 /* kmerdb.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = kmerdb.hpp; sourceTree = "<group>"; };
-               37D927ED0F21331F001D4494 /* listvector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = listvector.cpp; sourceTree = "<group>"; };
-               37D927EE0F21331F001D4494 /* listvector.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = listvector.hpp; sourceTree = "<group>"; };
-               37D927EF0F21331F001D4494 /* mothur.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mothur.cpp; sourceTree = "<group>"; };
-               37D927F00F21331F001D4494 /* nameassignment.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = nameassignment.cpp; sourceTree = "<group>"; };
-               37D927F10F21331F001D4494 /* nameassignment.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = nameassignment.hpp; sourceTree = "<group>"; };
-               37D927F20F21331F001D4494 /* nocommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = nocommand.cpp; sourceTree = "<group>"; };
-               37D927F30F21331F001D4494 /* nocommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = nocommand.h; sourceTree = "<group>"; };
-               37D927F40F21331F001D4494 /* npshannon.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = npshannon.cpp; sourceTree = "<group>"; };
-               37D927F50F21331F001D4494 /* npshannon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = npshannon.h; sourceTree = "<group>"; };
-               37D927F60F21331F001D4494 /* observable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = observable.h; sourceTree = "<group>"; };
-               37D927F70F21331F001D4494 /* ordervector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ordervector.cpp; sourceTree = "<group>"; };
-               37D927F80F21331F001D4494 /* ordervector.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = ordervector.hpp; sourceTree = "<group>"; };
-               37D927F90F21331F001D4494 /* parselistcommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = parselistcommand.cpp; sourceTree = "<group>"; };
-               37D927FA0F21331F001D4494 /* parselistcommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = parselistcommand.h; sourceTree = "<group>"; };
-               37D927FB0F21331F001D4494 /* progress.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = progress.cpp; sourceTree = "<group>"; };
-               37D927FC0F21331F001D4494 /* progress.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = progress.hpp; sourceTree = "<group>"; };
-               37D927FD0F21331F001D4494 /* quitcommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = quitcommand.cpp; sourceTree = "<group>"; };
-               37D927FE0F21331F001D4494 /* quitcommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = quitcommand.h; sourceTree = "<group>"; };
-               37D927FF0F21331F001D4494 /* rabundvector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = rabundvector.cpp; sourceTree = "<group>"; };
-               37D928000F21331F001D4494 /* rabundvector.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = rabundvector.hpp; sourceTree = "<group>"; };
-               37D928010F21331F001D4494 /* rarecalc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = rarecalc.cpp; sourceTree = "<group>"; };
-               37D928020F21331F001D4494 /* rarecalc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rarecalc.h; sourceTree = "<group>"; };
-               37D928030F21331F001D4494 /* raredisplay.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = raredisplay.cpp; sourceTree = "<group>"; };
-               37D928040F21331F001D4494 /* raredisplay.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = raredisplay.h; sourceTree = "<group>"; };
-               37D928050F21331F001D4494 /* rarefact.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = rarefact.cpp; sourceTree = "<group>"; };
-               37D928060F21331F001D4494 /* rarefact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rarefact.h; sourceTree = "<group>"; };
-               37D928070F21331F001D4494 /* rarefactcommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = rarefactcommand.cpp; sourceTree = "<group>"; };
-               37D928080F21331F001D4494 /* rarefactcommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rarefactcommand.h; sourceTree = "<group>"; };
-               37D928090F21331F001D4494 /* rarefactioncurvedata.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rarefactioncurvedata.h; sourceTree = "<group>"; };
-               37D9280A0F21331F001D4494 /* rarefactsharedcommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = rarefactsharedcommand.cpp; sourceTree = "<group>"; };
-               37D9280B0F21331F001D4494 /* rarefactsharedcommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rarefactsharedcommand.h; sourceTree = "<group>"; };
-               37D928120F21331F001D4494 /* readmatrix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = readmatrix.cpp; sourceTree = "<group>"; };
-               37D928130F21331F001D4494 /* readmatrix.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = readmatrix.hpp; sourceTree = "<group>"; };
-               37D9281A0F21331F001D4494 /* sabundvector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sabundvector.cpp; sourceTree = "<group>"; };
-               37D9281B0F21331F001D4494 /* sabundvector.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = sabundvector.hpp; sourceTree = "<group>"; };
-               37D9281C0F21331F001D4494 /* sequence.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sequence.cpp; sourceTree = "<group>"; };
-               37D9281D0F21331F001D4494 /* sequence.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = sequence.hpp; sourceTree = "<group>"; };
-               37D9281E0F21331F001D4494 /* shannon.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = shannon.cpp; sourceTree = "<group>"; };
-               37D9281F0F21331F001D4494 /* shannon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = shannon.h; sourceTree = "<group>"; };
-               37D928200F21331F001D4494 /* shared.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = shared.cpp; sourceTree = "<group>"; };
-               37D928210F21331F001D4494 /* shared.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = shared.h; sourceTree = "<group>"; };
-               37D928220F21331F001D4494 /* sharedace.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sharedace.cpp; sourceTree = "<group>"; };
-               37D928230F21331F001D4494 /* sharedace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sharedace.h; sourceTree = "<group>"; };
-               37D928240F21331F001D4494 /* sharedchao1.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sharedchao1.cpp; sourceTree = "<group>"; };
-               37D928250F21331F001D4494 /* sharedchao1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sharedchao1.h; sourceTree = "<group>"; };
-               37D928260F21331F001D4494 /* sharedcommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sharedcommand.cpp; sourceTree = "<group>"; };
-               37D928270F21331F001D4494 /* sharedcommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sharedcommand.h; sourceTree = "<group>"; };
-               37D928280F21331F001D4494 /* sharedjabund.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sharedjabund.cpp; sourceTree = "<group>"; };
-               37D928290F21331F001D4494 /* sharedjabund.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sharedjabund.h; sourceTree = "<group>"; };
-               37D9282A0F21331F001D4494 /* sharedjclass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sharedjclass.cpp; sourceTree = "<group>"; };
-               37D9282B0F21331F001D4494 /* sharedjclass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sharedjclass.h; sourceTree = "<group>"; };
-               37D9282C0F21331F001D4494 /* sharedjest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sharedjest.cpp; sourceTree = "<group>"; };
-               37D9282D0F21331F001D4494 /* sharedjest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sharedjest.h; sourceTree = "<group>"; };
-               37D9282E0F21331F001D4494 /* sharedordervector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sharedordervector.cpp; sourceTree = "<group>"; };
-               37D9282F0F21331F001D4494 /* sharedordervector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sharedordervector.h; sourceTree = "<group>"; };
-               37D928300F21331F001D4494 /* sharedrabundvector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sharedrabundvector.cpp; sourceTree = "<group>"; };
-               37D928310F21331F001D4494 /* sharedrabundvector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sharedrabundvector.h; sourceTree = "<group>"; };
-               37D928320F21331F001D4494 /* sharedsabundvector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sharedsabundvector.cpp; sourceTree = "<group>"; };
-               37D928330F21331F001D4494 /* sharedsabundvector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sharedsabundvector.h; sourceTree = "<group>"; };
-               37D928340F21331F001D4494 /* sharedsobs.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sharedsobs.cpp; sourceTree = "<group>"; };
-               37D928350F21331F001D4494 /* sharedsobs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sharedsobs.h; sourceTree = "<group>"; };
-               37D928360F21331F001D4494 /* sharedsorabund.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sharedsorabund.cpp; sourceTree = "<group>"; };
-               37D928370F21331F001D4494 /* sharedsorabund.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sharedsorabund.h; sourceTree = "<group>"; };
-               37D928380F21331F001D4494 /* sharedsorclass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sharedsorclass.cpp; sourceTree = "<group>"; };
-               37D928390F21331F001D4494 /* sharedsorclass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sharedsorclass.h; sourceTree = "<group>"; };
-               37D9283A0F21331F001D4494 /* sharedsorest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sharedsorest.cpp; sourceTree = "<group>"; };
-               37D9283B0F21331F001D4494 /* sharedsorest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sharedsorest.h; sourceTree = "<group>"; };
-               37D9283C0F21331F001D4494 /* sharedthetan.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sharedthetan.cpp; sourceTree = "<group>"; };
-               37D9283D0F21331F001D4494 /* sharedthetan.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sharedthetan.h; sourceTree = "<group>"; };
-               37D9283E0F21331F001D4494 /* sharedthetayc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sharedthetayc.cpp; sourceTree = "<group>"; };
-               37D9283F0F21331F001D4494 /* sharedthetayc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sharedthetayc.h; sourceTree = "<group>"; };
-               37D928400F21331F001D4494 /* simpson.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = simpson.cpp; sourceTree = "<group>"; };
-               37D928410F21331F001D4494 /* simpson.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simpson.h; sourceTree = "<group>"; };
-               37D928420F21331F001D4494 /* singlelinkage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = singlelinkage.cpp; sourceTree = "<group>"; };
-               37D928430F21331F001D4494 /* sobs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sobs.h; sourceTree = "<group>"; };
-               37D928440F21331F001D4494 /* sparsematrix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sparsematrix.cpp; sourceTree = "<group>"; };
-               37D928450F21331F001D4494 /* sparsematrix.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = sparsematrix.hpp; sourceTree = "<group>"; };
-               37D928460F21331F001D4494 /* summarycommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = summarycommand.cpp; sourceTree = "<group>"; };
-               37D928470F21331F001D4494 /* summarycommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = summarycommand.h; sourceTree = "<group>"; };
-               37D928480F21331F001D4494 /* summarydata.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = summarydata.h; sourceTree = "<group>"; };
-               37D928490F21331F001D4494 /* summarydisplay.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = summarydisplay.h; sourceTree = "<group>"; };
-               37D9284A0F21331F001D4494 /* summarysharedcommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = summarysharedcommand.cpp; sourceTree = "<group>"; };
-               37D9284B0F21331F001D4494 /* summarysharedcommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = summarysharedcommand.h; sourceTree = "<group>"; };
-               37D9284C0F21331F001D4494 /* utilities.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = utilities.hpp; sourceTree = "<group>"; };
-               37D9284D0F21331F001D4494 /* uvest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = uvest.cpp; sourceTree = "<group>"; };
-               37D9284E0F21331F001D4494 /* uvest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uvest.h; sourceTree = "<group>"; };
-               37D9284F0F21331F001D4494 /* validcalculator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validcalculator.cpp; sourceTree = "<group>"; };
-               37D928500F21331F001D4494 /* validcalculator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = validcalculator.h; sourceTree = "<group>"; };
-               37D928510F21331F001D4494 /* validcommands.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validcommands.cpp; sourceTree = "<group>"; };
-               37D928520F21331F001D4494 /* validcommands.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = validcommands.h; sourceTree = "<group>"; };
-               37D928530F21331F001D4494 /* validparameter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validparameter.cpp; sourceTree = "<group>"; };
-               37D928540F21331F001D4494 /* validparameter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = validparameter.h; sourceTree = "<group>"; };
-               37E5F3E10F29FD4200F8D827 /* treenode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = treenode.h; sourceTree = "<group>"; };
-               37E5F3E20F29FD4200F8D827 /* treenode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = treenode.cpp; sourceTree = "<group>"; };
-               37E5F4900F2A3DA800F8D827 /* readtreecommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = readtreecommand.h; sourceTree = "<group>"; };
-               37E5F4910F2A3DA800F8D827 /* readtreecommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = readtreecommand.cpp; sourceTree = "<group>"; };
+               372E126E0F26365B0095CF7E /* readotucommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = readotucommand.h; sourceTree = SOURCE_ROOT; };
+               372E126F0F26365B0095CF7E /* readotucommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = readotucommand.cpp; sourceTree = SOURCE_ROOT; };
+               372E12940F263D5A0095CF7E /* readdistcommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = readdistcommand.h; sourceTree = SOURCE_ROOT; };
+               372E12950F263D5A0095CF7E /* readdistcommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = readdistcommand.cpp; sourceTree = SOURCE_ROOT; };
+               372E12EC0F264D320095CF7E /* commandfactory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = commandfactory.cpp; sourceTree = SOURCE_ROOT; };
+               379293C10F2DE73400B9034A /* treemap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = treemap.h; sourceTree = SOURCE_ROOT; };
+               379293C20F2DE73400B9034A /* treemap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = treemap.cpp; sourceTree = SOURCE_ROOT; };
+               37AD4CE20F28AEA300AA2D49 /* sharedlistvector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sharedlistvector.h; sourceTree = SOURCE_ROOT; };
+               37AD4CE30F28AEA300AA2D49 /* sharedlistvector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sharedlistvector.cpp; sourceTree = SOURCE_ROOT; };
+               37AD4DB90F28E2FE00AA2D49 /* tree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tree.h; sourceTree = SOURCE_ROOT; };
+               37AD4DBA0F28E2FE00AA2D49 /* tree.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tree.cpp; sourceTree = SOURCE_ROOT; };
+               37AD4DC80F28F3DD00AA2D49 /* readtree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = readtree.h; sourceTree = SOURCE_ROOT; };
+               37AD4DC90F28F3DD00AA2D49 /* readtree.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = readtree.cpp; sourceTree = SOURCE_ROOT; };
+               37B28F660F27590100808A62 /* deconvolutecommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = deconvolutecommand.h; sourceTree = SOURCE_ROOT; };
+               37B28F670F27590100808A62 /* deconvolutecommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = deconvolutecommand.cpp; sourceTree = SOURCE_ROOT; };
+               37D927B80F21331F001D4494 /* ace.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ace.cpp; sourceTree = SOURCE_ROOT; };
+               37D927B90F21331F001D4494 /* ace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ace.h; sourceTree = SOURCE_ROOT; };
+               37D927BA0F21331F001D4494 /* averagelinkage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = averagelinkage.cpp; sourceTree = SOURCE_ROOT; };
+               37D927BB0F21331F001D4494 /* bootstrap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = bootstrap.cpp; sourceTree = SOURCE_ROOT; };
+               37D927BC0F21331F001D4494 /* bootstrap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bootstrap.h; sourceTree = SOURCE_ROOT; };
+               37D927BD0F21331F001D4494 /* calculator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = calculator.cpp; sourceTree = SOURCE_ROOT; };
+               37D927BE0F21331F001D4494 /* calculator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = calculator.h; sourceTree = SOURCE_ROOT; };
+               37D927BF0F21331F001D4494 /* chao1.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = chao1.cpp; sourceTree = SOURCE_ROOT; };
+               37D927C00F21331F001D4494 /* chao1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = chao1.h; sourceTree = SOURCE_ROOT; };
+               37D927C10F21331F001D4494 /* cluster.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = cluster.cpp; sourceTree = SOURCE_ROOT; };
+               37D927C20F21331F001D4494 /* cluster.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = cluster.hpp; sourceTree = SOURCE_ROOT; };
+               37D927C30F21331F001D4494 /* clustercommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = clustercommand.cpp; sourceTree = SOURCE_ROOT; };
+               37D927C40F21331F001D4494 /* clustercommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = clustercommand.h; sourceTree = SOURCE_ROOT; };
+               37D927C50F21331F001D4494 /* collect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = collect.cpp; sourceTree = SOURCE_ROOT; };
+               37D927C60F21331F001D4494 /* collect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = collect.h; sourceTree = SOURCE_ROOT; };
+               37D927C70F21331F001D4494 /* collectcommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = collectcommand.cpp; sourceTree = SOURCE_ROOT; };
+               37D927C80F21331F001D4494 /* collectcommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = collectcommand.h; sourceTree = SOURCE_ROOT; };
+               37D927C90F21331F001D4494 /* collectdisplay.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = collectdisplay.h; sourceTree = SOURCE_ROOT; };
+               37D927CA0F21331F001D4494 /* collectorscurvedata.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = collectorscurvedata.h; sourceTree = SOURCE_ROOT; };
+               37D927CB0F21331F001D4494 /* collectsharedcommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = collectsharedcommand.cpp; sourceTree = SOURCE_ROOT; };
+               37D927CC0F21331F001D4494 /* collectsharedcommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = collectsharedcommand.h; sourceTree = SOURCE_ROOT; };
+               37D927CD0F21331F001D4494 /* command.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = command.hpp; sourceTree = SOURCE_ROOT; };
+               37D927CF0F21331F001D4494 /* commandfactory.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = commandfactory.hpp; sourceTree = SOURCE_ROOT; };
+               37D927D00F21331F001D4494 /* commandoptionparser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = commandoptionparser.cpp; sourceTree = SOURCE_ROOT; };
+               37D927D10F21331F001D4494 /* commandoptionparser.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = commandoptionparser.hpp; sourceTree = SOURCE_ROOT; };
+               37D927D20F21331F001D4494 /* completelinkage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = completelinkage.cpp; sourceTree = SOURCE_ROOT; };
+               37D927D30F21331F001D4494 /* database.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = database.cpp; sourceTree = SOURCE_ROOT; };
+               37D927D40F21331F001D4494 /* database.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = database.hpp; sourceTree = SOURCE_ROOT; };
+               37D927D50F21331F001D4494 /* datavector.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = datavector.hpp; sourceTree = SOURCE_ROOT; };
+               37D927D60F21331F001D4494 /* display.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = display.h; sourceTree = SOURCE_ROOT; };
+               37D927D70F21331F001D4494 /* engine.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = engine.cpp; sourceTree = SOURCE_ROOT; };
+               37D927D80F21331F001D4494 /* engine.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = engine.hpp; sourceTree = SOURCE_ROOT; };
+               37D927D90F21331F001D4494 /* errorchecking.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = errorchecking.cpp; sourceTree = SOURCE_ROOT; };
+               37D927DA0F21331F001D4494 /* errorchecking.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = errorchecking.h; sourceTree = SOURCE_ROOT; };
+               37D927DB0F21331F001D4494 /* fastamap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fastamap.cpp; sourceTree = SOURCE_ROOT; };
+               37D927DC0F21331F001D4494 /* fastamap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fastamap.h; sourceTree = SOURCE_ROOT; };
+               37D927DD0F21331F001D4494 /* fileoutput.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fileoutput.cpp; sourceTree = SOURCE_ROOT; };
+               37D927DE0F21331F001D4494 /* fileoutput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fileoutput.h; sourceTree = SOURCE_ROOT; };
+               37D927DF0F21331F001D4494 /* globaldata.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = globaldata.cpp; sourceTree = SOURCE_ROOT; };
+               37D927E00F21331F001D4494 /* globaldata.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = globaldata.hpp; sourceTree = SOURCE_ROOT; };
+               37D927E10F21331F001D4494 /* groupmap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = groupmap.cpp; sourceTree = SOURCE_ROOT; };
+               37D927E20F21331F001D4494 /* groupmap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = groupmap.h; sourceTree = SOURCE_ROOT; };
+               37D927E30F21331F001D4494 /* helpcommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = helpcommand.cpp; sourceTree = SOURCE_ROOT; };
+               37D927E40F21331F001D4494 /* helpcommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = helpcommand.h; sourceTree = SOURCE_ROOT; };
+               37D927E50F21331F001D4494 /* inputdata.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = inputdata.cpp; sourceTree = SOURCE_ROOT; };
+               37D927E60F21331F001D4494 /* inputdata.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inputdata.h; sourceTree = SOURCE_ROOT; };
+               37D927E70F21331F001D4494 /* jackknife.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = jackknife.cpp; sourceTree = SOURCE_ROOT; };
+               37D927E80F21331F001D4494 /* jackknife.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = jackknife.h; sourceTree = SOURCE_ROOT; };
+               37D927E90F21331F001D4494 /* kmer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = kmer.cpp; sourceTree = SOURCE_ROOT; };
+               37D927EA0F21331F001D4494 /* kmer.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = kmer.hpp; sourceTree = SOURCE_ROOT; };
+               37D927EB0F21331F001D4494 /* kmerdb.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = kmerdb.cpp; sourceTree = SOURCE_ROOT; };
+               37D927EC0F21331F001D4494 /* kmerdb.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = kmerdb.hpp; sourceTree = SOURCE_ROOT; };
+               37D927ED0F21331F001D4494 /* listvector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = listvector.cpp; sourceTree = SOURCE_ROOT; };
+               37D927EE0F21331F001D4494 /* listvector.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = listvector.hpp; sourceTree = SOURCE_ROOT; };
+               37D927EF0F21331F001D4494 /* mothur.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mothur.cpp; sourceTree = SOURCE_ROOT; };
+               37D927F00F21331F001D4494 /* nameassignment.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = nameassignment.cpp; sourceTree = SOURCE_ROOT; };
+               37D927F10F21331F001D4494 /* nameassignment.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = nameassignment.hpp; sourceTree = SOURCE_ROOT; };
+               37D927F20F21331F001D4494 /* nocommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = nocommand.cpp; sourceTree = SOURCE_ROOT; };
+               37D927F30F21331F001D4494 /* nocommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = nocommand.h; sourceTree = SOURCE_ROOT; };
+               37D927F40F21331F001D4494 /* npshannon.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = npshannon.cpp; sourceTree = SOURCE_ROOT; };
+               37D927F50F21331F001D4494 /* npshannon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = npshannon.h; sourceTree = SOURCE_ROOT; };
+               37D927F60F21331F001D4494 /* observable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = observable.h; sourceTree = SOURCE_ROOT; };
+               37D927F70F21331F001D4494 /* ordervector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ordervector.cpp; sourceTree = SOURCE_ROOT; };
+               37D927F80F21331F001D4494 /* ordervector.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = ordervector.hpp; sourceTree = SOURCE_ROOT; };
+               37D927F90F21331F001D4494 /* parselistcommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = parselistcommand.cpp; sourceTree = SOURCE_ROOT; };
+               37D927FA0F21331F001D4494 /* parselistcommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = parselistcommand.h; sourceTree = SOURCE_ROOT; };
+               37D927FB0F21331F001D4494 /* progress.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = progress.cpp; sourceTree = SOURCE_ROOT; };
+               37D927FC0F21331F001D4494 /* progress.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = progress.hpp; sourceTree = SOURCE_ROOT; };
+               37D927FD0F21331F001D4494 /* quitcommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = quitcommand.cpp; sourceTree = SOURCE_ROOT; };
+               37D927FE0F21331F001D4494 /* quitcommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = quitcommand.h; sourceTree = SOURCE_ROOT; };
+               37D927FF0F21331F001D4494 /* rabundvector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = rabundvector.cpp; sourceTree = SOURCE_ROOT; };
+               37D928000F21331F001D4494 /* rabundvector.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = rabundvector.hpp; sourceTree = SOURCE_ROOT; };
+               37D928010F21331F001D4494 /* rarecalc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = rarecalc.cpp; sourceTree = SOURCE_ROOT; };
+               37D928020F21331F001D4494 /* rarecalc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rarecalc.h; sourceTree = SOURCE_ROOT; };
+               37D928030F21331F001D4494 /* raredisplay.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = raredisplay.cpp; sourceTree = SOURCE_ROOT; };
+               37D928040F21331F001D4494 /* raredisplay.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = raredisplay.h; sourceTree = SOURCE_ROOT; };
+               37D928050F21331F001D4494 /* rarefact.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = rarefact.cpp; sourceTree = SOURCE_ROOT; };
+               37D928060F21331F001D4494 /* rarefact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rarefact.h; sourceTree = SOURCE_ROOT; };
+               37D928070F21331F001D4494 /* rarefactcommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = rarefactcommand.cpp; sourceTree = SOURCE_ROOT; };
+               37D928080F21331F001D4494 /* rarefactcommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rarefactcommand.h; sourceTree = SOURCE_ROOT; };
+               37D928090F21331F001D4494 /* rarefactioncurvedata.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rarefactioncurvedata.h; sourceTree = SOURCE_ROOT; };
+               37D9280A0F21331F001D4494 /* rarefactsharedcommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = rarefactsharedcommand.cpp; sourceTree = SOURCE_ROOT; };
+               37D9280B0F21331F001D4494 /* rarefactsharedcommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rarefactsharedcommand.h; sourceTree = SOURCE_ROOT; };
+               37D928120F21331F001D4494 /* readmatrix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = readmatrix.cpp; sourceTree = SOURCE_ROOT; };
+               37D928130F21331F001D4494 /* readmatrix.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = readmatrix.hpp; sourceTree = SOURCE_ROOT; };
+               37D9281A0F21331F001D4494 /* sabundvector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sabundvector.cpp; sourceTree = SOURCE_ROOT; };
+               37D9281B0F21331F001D4494 /* sabundvector.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = sabundvector.hpp; sourceTree = SOURCE_ROOT; };
+               37D9281C0F21331F001D4494 /* sequence.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sequence.cpp; sourceTree = SOURCE_ROOT; };
+               37D9281D0F21331F001D4494 /* sequence.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = sequence.hpp; sourceTree = SOURCE_ROOT; };
+               37D9281E0F21331F001D4494 /* shannon.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = shannon.cpp; sourceTree = SOURCE_ROOT; };
+               37D9281F0F21331F001D4494 /* shannon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = shannon.h; sourceTree = SOURCE_ROOT; };
+               37D928200F21331F001D4494 /* shared.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = shared.cpp; sourceTree = SOURCE_ROOT; };
+               37D928210F21331F001D4494 /* shared.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = shared.h; sourceTree = SOURCE_ROOT; };
+               37D928220F21331F001D4494 /* sharedace.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sharedace.cpp; sourceTree = SOURCE_ROOT; };
+               37D928230F21331F001D4494 /* sharedace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sharedace.h; sourceTree = SOURCE_ROOT; };
+               37D928240F21331F001D4494 /* sharedchao1.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sharedchao1.cpp; sourceTree = SOURCE_ROOT; };
+               37D928250F21331F001D4494 /* sharedchao1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sharedchao1.h; sourceTree = SOURCE_ROOT; };
+               37D928260F21331F001D4494 /* sharedcommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sharedcommand.cpp; sourceTree = SOURCE_ROOT; };
+               37D928270F21331F001D4494 /* sharedcommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sharedcommand.h; sourceTree = SOURCE_ROOT; };
+               37D928280F21331F001D4494 /* sharedjabund.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sharedjabund.cpp; sourceTree = SOURCE_ROOT; };
+               37D928290F21331F001D4494 /* sharedjabund.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sharedjabund.h; sourceTree = SOURCE_ROOT; };
+               37D9282A0F21331F001D4494 /* sharedjclass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sharedjclass.cpp; sourceTree = SOURCE_ROOT; };
+               37D9282B0F21331F001D4494 /* sharedjclass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sharedjclass.h; sourceTree = SOURCE_ROOT; };
+               37D9282C0F21331F001D4494 /* sharedjest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sharedjest.cpp; sourceTree = SOURCE_ROOT; };
+               37D9282D0F21331F001D4494 /* sharedjest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sharedjest.h; sourceTree = SOURCE_ROOT; };
+               37D9282E0F21331F001D4494 /* sharedordervector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sharedordervector.cpp; sourceTree = SOURCE_ROOT; };
+               37D9282F0F21331F001D4494 /* sharedordervector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sharedordervector.h; sourceTree = SOURCE_ROOT; };
+               37D928300F21331F001D4494 /* sharedrabundvector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sharedrabundvector.cpp; sourceTree = SOURCE_ROOT; };
+               37D928310F21331F001D4494 /* sharedrabundvector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sharedrabundvector.h; sourceTree = SOURCE_ROOT; };
+               37D928320F21331F001D4494 /* sharedsabundvector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sharedsabundvector.cpp; sourceTree = SOURCE_ROOT; };
+               37D928330F21331F001D4494 /* sharedsabundvector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sharedsabundvector.h; sourceTree = SOURCE_ROOT; };
+               37D928340F21331F001D4494 /* sharedsobs.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sharedsobs.cpp; sourceTree = SOURCE_ROOT; };
+               37D928350F21331F001D4494 /* sharedsobs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sharedsobs.h; sourceTree = SOURCE_ROOT; };
+               37D928360F21331F001D4494 /* sharedsorabund.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sharedsorabund.cpp; sourceTree = SOURCE_ROOT; };
+               37D928370F21331F001D4494 /* sharedsorabund.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sharedsorabund.h; sourceTree = SOURCE_ROOT; };
+               37D928380F21331F001D4494 /* sharedsorclass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sharedsorclass.cpp; sourceTree = SOURCE_ROOT; };
+               37D928390F21331F001D4494 /* sharedsorclass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sharedsorclass.h; sourceTree = SOURCE_ROOT; };
+               37D9283A0F21331F001D4494 /* sharedsorest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sharedsorest.cpp; sourceTree = SOURCE_ROOT; };
+               37D9283B0F21331F001D4494 /* sharedsorest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sharedsorest.h; sourceTree = SOURCE_ROOT; };
+               37D9283C0F21331F001D4494 /* sharedthetan.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sharedthetan.cpp; sourceTree = SOURCE_ROOT; };
+               37D9283D0F21331F001D4494 /* sharedthetan.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sharedthetan.h; sourceTree = SOURCE_ROOT; };
+               37D9283E0F21331F001D4494 /* sharedthetayc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sharedthetayc.cpp; sourceTree = SOURCE_ROOT; };
+               37D9283F0F21331F001D4494 /* sharedthetayc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sharedthetayc.h; sourceTree = SOURCE_ROOT; };
+               37D928400F21331F001D4494 /* simpson.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = simpson.cpp; sourceTree = SOURCE_ROOT; };
+               37D928410F21331F001D4494 /* simpson.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simpson.h; sourceTree = SOURCE_ROOT; };
+               37D928420F21331F001D4494 /* singlelinkage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = singlelinkage.cpp; sourceTree = SOURCE_ROOT; };
+               37D928430F21331F001D4494 /* sobs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sobs.h; sourceTree = SOURCE_ROOT; };
+               37D928440F21331F001D4494 /* sparsematrix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sparsematrix.cpp; sourceTree = SOURCE_ROOT; };
+               37D928450F21331F001D4494 /* sparsematrix.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = sparsematrix.hpp; sourceTree = SOURCE_ROOT; };
+               37D928460F21331F001D4494 /* summarycommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = summarycommand.cpp; sourceTree = SOURCE_ROOT; };
+               37D928470F21331F001D4494 /* summarycommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = summarycommand.h; sourceTree = SOURCE_ROOT; };
+               37D928480F21331F001D4494 /* summarydata.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = summarydata.h; sourceTree = SOURCE_ROOT; };
+               37D928490F21331F001D4494 /* summarydisplay.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = summarydisplay.h; sourceTree = SOURCE_ROOT; };
+               37D9284A0F21331F001D4494 /* summarysharedcommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = summarysharedcommand.cpp; sourceTree = SOURCE_ROOT; };
+               37D9284B0F21331F001D4494 /* summarysharedcommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = summarysharedcommand.h; sourceTree = SOURCE_ROOT; };
+               37D9284C0F21331F001D4494 /* utilities.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = utilities.hpp; sourceTree = SOURCE_ROOT; };
+               37D9284D0F21331F001D4494 /* uvest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = uvest.cpp; sourceTree = SOURCE_ROOT; };
+               37D9284E0F21331F001D4494 /* uvest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uvest.h; sourceTree = SOURCE_ROOT; };
+               37D9284F0F21331F001D4494 /* validcalculator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validcalculator.cpp; sourceTree = SOURCE_ROOT; };
+               37D928500F21331F001D4494 /* validcalculator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = validcalculator.h; sourceTree = SOURCE_ROOT; };
+               37D928510F21331F001D4494 /* validcommands.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validcommands.cpp; sourceTree = SOURCE_ROOT; };
+               37D928520F21331F001D4494 /* validcommands.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = validcommands.h; sourceTree = SOURCE_ROOT; };
+               37D928530F21331F001D4494 /* validparameter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validparameter.cpp; sourceTree = SOURCE_ROOT; };
+               37D928540F21331F001D4494 /* validparameter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = validparameter.h; sourceTree = SOURCE_ROOT; };
+               37E5F3E10F29FD4200F8D827 /* treenode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = treenode.h; sourceTree = SOURCE_ROOT; };
+               37E5F3E20F29FD4200F8D827 /* treenode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = treenode.cpp; sourceTree = SOURCE_ROOT; };
+               37E5F4900F2A3DA800F8D827 /* readtreecommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = readtreecommand.h; sourceTree = SOURCE_ROOT; };
+               37E5F4910F2A3DA800F8D827 /* readtreecommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = readtreecommand.cpp; sourceTree = SOURCE_ROOT; };
+               7E44EBD00F32358B00B0D45D /* makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = makefile; sourceTree = "<group>"; };
                8DD76F6C0486A84900D96B5E /* mothur */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = mothur; sourceTree = BUILT_PRODUCTS_DIR; };
                C6859E8B029090EE04C91782 /* Mothur.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = Mothur.1; sourceTree = "<group>"; };
+               EBA52D2A0F378B0F00122C15 /* getgroupcommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = getgroupcommand.h; sourceTree = "<group>"; };
+               EBA52D2B0F378B0F00122C15 /* getgroupcommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = getgroupcommand.cpp; sourceTree = "<group>"; };
+               EBFD67820F33876C00883537 /* getlabelcommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = getlabelcommand.h; sourceTree = "<group>"; };
+               EBFD67830F33876C00883537 /* getlabelcommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = getlabelcommand.cpp; sourceTree = "<group>"; };
+               EBFD67E60F339AAA00883537 /* getlinecommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = getlinecommand.h; sourceTree = "<group>"; };
+               EBFD67E70F339AAA00883537 /* getlinecommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = getlinecommand.cpp; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
                                37D927D60F21331F001D4494 /* display.h */,
                                37D927D80F21331F001D4494 /* engine.hpp */,
                                37D927D70F21331F001D4494 /* engine.cpp */,
+                               7E44EBD00F32358B00B0D45D /* makefile */,
                                37D928B10F213472001D4494 /* errorcheckor */,
                                37D927DE0F21331F001D4494 /* fileoutput.h */,
                                37D927DD0F21331F001D4494 /* fileoutput.cpp */,
                                37D9284C0F21331F001D4494 /* utilities.hpp */,
                        );
                        name = Source;
-                       sourceTree = "<group>";
+                       sourceTree = SOURCE_ROOT;
                };
                1AB674ADFE9D54B511CA2CBB /* Products */ = {
                        isa = PBXGroup;
                        isa = PBXGroup;
                        children = (
                                37D927BE0F21331F001D4494 /* calculator.h */,
-                               3792948D0F2E271100B9034A /* treecalculator.h */,
                                37D927BD0F21331F001D4494 /* calculator.cpp */,
                                37D927B90F21331F001D4494 /* ace.h */,
                                37D927B80F21331F001D4494 /* ace.cpp */,
                                37D927E70F21331F001D4494 /* jackknife.cpp */,
                                37D927F50F21331F001D4494 /* npshannon.h */,
                                37D927F40F21331F001D4494 /* npshannon.cpp */,
-                               379294880F2E258500B9034A /* parsimony.h */,
-                               379294890F2E258500B9034A /* parsimony.cpp */,
                                37D928020F21331F001D4494 /* rarecalc.h */,
                                37D928010F21331F001D4494 /* rarecalc.cpp */,
                                37D9281F0F21331F001D4494 /* shannon.h */,
                                37D9282C0F21331F001D4494 /* sharedjest.cpp */,
                                37D928350F21331F001D4494 /* sharedsobs.h */,
                                37D928340F21331F001D4494 /* sharedsobs.cpp */,
-                               37AFC71D0F445386005F492D /* sharedsobscollectsummary.h */,
-                               37AFC71E0F445386005F492D /* sharedsobscollectsummary.cpp */,
                                37D928370F21331F001D4494 /* sharedsorabund.h */,
                                37D928360F21331F001D4494 /* sharedsorabund.cpp */,
                                37D928390F21331F001D4494 /* sharedsorclass.h */,
                                37D928410F21331F001D4494 /* simpson.h */,
                                37D928400F21331F001D4494 /* simpson.cpp */,
                                37D928430F21331F001D4494 /* sobs.h */,
-                               374610810F40652400460C57 /* unweighted.h */,
-                               374610820F40652400460C57 /* unweighted.cpp */,
                                37D9284E0F21331F001D4494 /* uvest.h */,
                                37D9284D0F21331F001D4494 /* uvest.cpp */,
-                               3746107C0F4064D100460C57 /* weighted.h */,
-                               3746107D0F4064D100460C57 /* weighted.cpp */,
                        );
                        name = calculators;
-                       sourceTree = "<group>";
+                       sourceTree = SOURCE_ROOT;
                };
                37D928A90F2133E5001D4494 /* commands */ = {
                        isa = PBXGroup;
                                37D927CB0F21331F001D4494 /* collectsharedcommand.cpp */,
                                37B28F660F27590100808A62 /* deconvolutecommand.h */,
                                37B28F670F27590100808A62 /* deconvolutecommand.cpp */,
+                               EBA52D2A0F378B0F00122C15 /* getgroupcommand.h */,
+                               EBA52D2B0F378B0F00122C15 /* getgroupcommand.cpp */,
+                               EBFD67820F33876C00883537 /* getlabelcommand.h */,
+                               EBFD67830F33876C00883537 /* getlabelcommand.cpp */,
+                               EBFD67E60F339AAA00883537 /* getlinecommand.h */,
+                               EBFD67E70F339AAA00883537 /* getlinecommand.cpp */,
                                37D927E40F21331F001D4494 /* helpcommand.h */,
                                37D927E30F21331F001D4494 /* helpcommand.cpp */,
                                37D927F20F21331F001D4494 /* nocommand.cpp */,
                                37D927F30F21331F001D4494 /* nocommand.h */,
                                37D927FA0F21331F001D4494 /* parselistcommand.h */,
                                37D927F90F21331F001D4494 /* parselistcommand.cpp */,
-                               3792946E0F2E191800B9034A /* parsimonycommand.h */,
-                               3792946F0F2E191800B9034A /* parsimonycommand.cpp */,
-                               37D927FE0F21331F001D4494 /* quitcommand.h */,
-                               37D927FD0F21331F001D4494 /* quitcommand.cpp */,
                                37D928080F21331F001D4494 /* rarefactcommand.h */,
                                37D928070F21331F001D4494 /* rarefactcommand.cpp */,
                                37D9280B0F21331F001D4494 /* rarefactsharedcommand.h */,
                                372E12950F263D5A0095CF7E /* readdistcommand.cpp */,
                                372E126E0F26365B0095CF7E /* readotucommand.h */,
                                372E126F0F26365B0095CF7E /* readotucommand.cpp */,
-                               37AFC7A10F44703E005F492D /* readsharedcommand.h */,
-                               37AFC7A20F44703E005F492D /* readsharedcommand.cpp */,
                                37E5F4900F2A3DA800F8D827 /* readtreecommand.h */,
                                37E5F4910F2A3DA800F8D827 /* readtreecommand.cpp */,
                                37D928270F21331F001D4494 /* sharedcommand.h */,
                                37D928460F21331F001D4494 /* summarycommand.cpp */,
                                37D9284B0F21331F001D4494 /* summarysharedcommand.h */,
                                37D9284A0F21331F001D4494 /* summarysharedcommand.cpp */,
-                               3746109B0F40657600460C57 /* unifracunweightedcommand.h */,
-                               3746109C0F40657600460C57 /* unifracunweightedcommand.cpp */,
-                               374610760F40645300460C57 /* unifracweightedcommand.h */,
-                               374610770F40645300460C57 /* unifracweightedcommand.cpp */,
+                               37D927FE0F21331F001D4494 /* quitcommand.h */,
+                               37D927FD0F21331F001D4494 /* quitcommand.cpp */,
                        );
                        name = commands;
-                       sourceTree = "<group>";
+                       sourceTree = SOURCE_ROOT;
                };
                37D928AC0F213420001D4494 /* containers */ = {
                        isa = PBXGroup;
                                37E5F3E20F29FD4200F8D827 /* treenode.cpp */,
                        );
                        name = containers;
-                       sourceTree = "<group>";
+                       sourceTree = SOURCE_ROOT;
                };
                37D928B10F213472001D4494 /* errorcheckor */ = {
                        isa = PBXGroup;
                                37D928530F21331F001D4494 /* validparameter.cpp */,
                        );
                        name = errorcheckor;
-                       sourceTree = "<group>";
+                       sourceTree = SOURCE_ROOT;
                };
                C6859E8C029090F304C91782 /* Documentation */ = {
                        isa = PBXGroup;
                                37E5F3E30F29FD4200F8D827 /* treenode.cpp in Sources */,
                                37E5F4920F2A3DA800F8D827 /* readtreecommand.cpp in Sources */,
                                379293C30F2DE73400B9034A /* treemap.cpp in Sources */,
-                               379294700F2E191800B9034A /* parsimonycommand.cpp in Sources */,
-                               3792948A0F2E258500B9034A /* parsimony.cpp in Sources */,
-                               374610780F40645300460C57 /* unifracweightedcommand.cpp in Sources */,
-                               3746107E0F4064D100460C57 /* weighted.cpp in Sources */,
-                               374610830F40652400460C57 /* unweighted.cpp in Sources */,
-                               3746109D0F40657600460C57 /* unifracunweightedcommand.cpp in Sources */,
-                               37AFC71F0F445386005F492D /* sharedsobscollectsummary.cpp in Sources */,
-                               37AFC7A30F44703E005F492D /* readsharedcommand.cpp in Sources */,
+                               7E44EBD10F3235D900B0D45D /* makefile in Sources */,
+                               EBFD67840F33876C00883537 /* getlabelcommand.cpp in Sources */,
+                               EBFD67E80F339AAA00883537 /* getlinecommand.cpp in Sources */,
+                               EBA52D2C0F378B0F00122C15 /* getgroupcommand.cpp in Sources */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
                                GCC_DYNAMIC_NO_PIC = NO;
                                GCC_ENABLE_FIX_AND_CONTINUE = YES;
                                GCC_MODEL_TUNING = G5;
-                               GCC_OPTIMIZATION_LEVEL = 3;
+                               GCC_OPTIMIZATION_LEVEL = 0;
                                GCC_PREPROCESSOR_DEFINITIONS = (
                                        "_GLIBCXX_DEBUG=1",
                                        "_GLIBCXX_DEBUG_PEDANTIC=1",
                        buildSettings = {
                                DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
                                GCC_MODEL_TUNING = G5;
-                               GCC_OPTIMIZATION_LEVEL = 3;
                                INSTALL_PATH = /usr/local/bin;
                                PRODUCT_NAME = mothur;
                        };
                                        ppc,
                                        i386,
                                );
-                               GCC_OPTIMIZATION_LEVEL = 0;
+                               GCC_OPTIMIZATION_LEVEL = 3;
                                GCC_WARN_ABOUT_RETURN_TYPE = YES;
                                GCC_WARN_UNUSED_VARIABLE = YES;
                                PREBINDING = NO;
diff --git a/ace.cpp b/ace.cpp
index 064779467d92c14a514f9ad10c4fd714763401ed..d074310ab1678ca44abbb23372ee74b41321999b 100644 (file)
--- a/ace.cpp
+++ b/ace.cpp
@@ -13,6 +13,7 @@
 
 EstOutput Ace::getValues(SAbundVector* rank) {
        try {
+               cout << "abund = " << abund << "\n";
                data.resize(3,0);
        //      vector<double> aceData(3,0);
                double ace, acelci, acehci;
diff --git a/ace.h b/ace.h
index 4c4a69de67c1b4ccccf9aa0d4adc33927b2fd6c2..b81dd64eef6c0cd24d354416f0dd6e3583b83bd2 100644 (file)
--- a/ace.h
+++ b/ace.h
@@ -20,7 +20,7 @@ It is a child of the calculator class. */
 class Ace : public Calculator  {
        
 public:
-       Ace(int n=10) : abund(n), Calculator("ACE", 3) {};
+       Ace(int n) : abund(n), Calculator("ACE", 3) {};
        EstOutput getValues(SAbundVector*);
        EstOutput getValues(SharedRAbundVector*, SharedRAbundVector*) {return data;};
 private:
index 2ed5ca7f10eeefdb860ae9fc7b5859b5eb239c0e..1c8128aef4ba42ec11fc2a7edbaa8cd42aa97ced 100644 (file)
@@ -64,7 +64,8 @@ void Collect::getSharedCurve(int increment = 1){
 try {
                globaldata = GlobalData::getInstance();
                vector<SharedRAbundVector*> lookup; 
-
+               vector<string> chosenGroups = globaldata->sharedGroups;
+               
                //create and initialize vector of sharedvectors, one for each group
                for (int i = 0; i < globaldata->gGroupmap->getNumGroups(); i++) { 
                        SharedRAbundVector* temp = new SharedRAbundVector(sharedorder->getNumBins());
@@ -78,7 +79,7 @@ try {
        
                //initialize labels for output
                //makes  'uniqueAB       uniqueAC  uniqueBC' if your groups are A, B, C
-               getGroupComb();
+               getGroupComb(chosenGroups);
                groupLabel = "";
                for (int s = 0; s < groupComb.size(); s++) {
                        groupLabel = groupLabel + label + groupComb[s] + "\t";
@@ -94,7 +95,6 @@ try {
                        //get first sample
                        individual chosen = sharedorder->get(i);
                        int abundance; 
-                                       
                        //set info for sharedvector in chosens group
                        for (int j = 0; j < lookup.size(); j++) { 
                                if (chosen.group == lookup[j]->getGroup()) {
@@ -103,7 +103,7 @@ try {
                                         break;
                                }
                        }
-                       
+
                        //calculate at 0 and the given increment
                        if((i == 0) || (i+1) % increment == 0){
                                //randomize group order
@@ -116,8 +116,8 @@ try {
                                        }
                                        n++;
                                }
-                       }
                        totalNumSeq = i+1;
+                       }
                }
                
                //calculate last line if you haven't already
@@ -150,7 +150,7 @@ try {
 
 /**************************************************************************************/
 
-void Collect::getGroupComb() {
+void Collect::getGroupComb(vector<string> chosen) {
                string group;
                
                numGroupComb = 0;
@@ -158,13 +158,28 @@ void Collect::getGroupComb() {
                int n = 1;
                for (int i = 0; i < (globaldata->gGroupmap->getNumGroups() - 1); i++) {
                        for (int l = n; l < globaldata->gGroupmap->getNumGroups(); l++) {
-                               group = globaldata->gGroupmap->namesOfGroups[i] + globaldata->gGroupmap->namesOfGroups[l];
-                               groupComb.push_back(group);     
-                               numGroupComb++;
+                               string g1 = globaldata->gGroupmap->namesOfGroups[i];
+                               string g2 = globaldata->gGroupmap->namesOfGroups[l];
+                               if(validGroup(chosen, g1) && validGroup(chosen, g2)) { 
+                                       group = g1 + g2;
+                                       groupComb.push_back(group);     
+                                       numGroupComb++;
+                               }
                        }
                        n++;
                }
-
 }
 
 /**************************************************************************************/
+
+bool Collect::validGroup(vector<string> chosen, string group) {
+       if(chosen.size() == 0)
+               return true;
+       for(int i = 0; i < chosen.size(); i++)
+               if(chosen.at(i).compare(group) == 0)
+                       return true;
+       return false;
+}
+                                       
+
+
index fe78dda86f6088f7395f0b990bbed79c1d16bfa8..3f6a094e0319092f3c8151408813cd2678468d85 100644 (file)
--- a/collect.h
+++ b/collect.h
@@ -34,8 +34,9 @@ private:
        vector<Display*> displays;
        int numSeqs, numGroupComb, totalNumSeq;
        string label, groupLabel;
-       void getGroupComb();
+       void getGroupComb(vector<string>);
        vector<string> groupComb;
+       bool validGroup(vector<string>, string);
 };
 
 
index 0f622c49b2a30632f53e4fa3ec0dfc3196113374..f012ba151e0813f9b7ab67f5c2961db8eec23b1b 100644 (file)
@@ -36,6 +36,7 @@ CollectCommand::CollectCommand(){
                                }else if (globaldata->Estimators[i] == "chao") { 
                                        cDisplays.push_back(new CollectDisplay(new Chao1(), new ThreeColumnFile(fileNameRoot+"chao")));
                                }else if (globaldata->Estimators[i] == "ace") { 
+                               convert(globaldata->getAbund(), abund);
                                        cDisplays.push_back(new CollectDisplay(new Ace(), new ThreeColumnFile(fileNameRoot+"ace")));
                                }else if (globaldata->Estimators[i] == "jack") { 
                                        cDisplays.push_back(new CollectDisplay(new Jackknife(), new ThreeColumnFile(fileNameRoot+"jack")));
@@ -88,11 +89,12 @@ int CollectCommand::execute(){
                
                order = globaldata->gorder;
                input = globaldata->ginput;
-                       
+               set<string> orderList;  
+               
                while(order != NULL){
                
+                       orderList.insert(order->getLabel());
                        if(globaldata->allLines == 1 || globaldata->lines.count(count) == 1 || globaldata->labels.count(order->getLabel()) == 1){
-                       
                                cCurve = new Collect(order, cDisplays);
                                convert(globaldata->getFreq(), freq);
                                cCurve->getCurve(freq);
@@ -101,12 +103,14 @@ int CollectCommand::execute(){
                        
                                cout << order->getLabel() << '\t' << count << endl;
                        }
-               
                        order = (input->getOrderVector());
                        count++;
-               
                }
-       
+               set<string>::iterator i;
+               for(i = globaldata->labels.begin(); i != globaldata->labels.end(); ++i)
+                       if(orderList.count(*i) == 0)
+                               cout << "'" << *i << "'" << " is not a valid label.\n";
+               globaldata->clearLabels();
                for(int i=0;i<cDisplays.size();i++){    delete cDisplays[i];    }       
                return 0;
        }
index 686c4910c7f6e50fc572be4a4408d08d838b5933..64362ef61cdfdc18da9cb5b170a88ff9713d93c9 100644 (file)
        The collect command generates a collector's curve from the given file.  
        The collect command can only be executed after a successful read.list, read.sabund or read.rabund command, with one exception. 
        The collect command can be executed after a successful cluster command.  It will use the .list file from the output of the cluster.  
-       The collect command outputs a file for each estimator you choose to use.  The collect command parameters are label, line, freq, single.  
+       The collect command outputs a file for each estimator you choose to use.  The collect command parameters are label, line, freq, single, abund.  
        No parameters are required, but you may not use both the line and label  parameters at the same time.  
-       The collect command should be in the following format: collect(label=yourLabel, line=yourLines, freq=yourFreq, single=yourEstimators). 
+       The collect command should be in the following format: collect(label=yourLabel, line=yourLines, freq=yourFreq, single=yourEstimators, abund=yourAbund). 
        example collect(label=unique-.01-.03, line=0,5,10, freq=10, single=collect-chao-ace-jack).  
-       The default values for  freq is 100, and single are collect-chao-ace-jack-bootstrap-shannon-npshannon-simpson.  
+       The default values for  freq is 100, for abund is 10, and single are collect-chao-ace-jack-bootstrap-shannon-npshannon-simpson.  
        The valid single estimators are: collect-chao-ace-jack-bootstrap-shannon-npshannon-simpson. 
        The label and line parameters are used to analyze specific lines in your input. */
 
@@ -52,7 +52,7 @@ private:
        Collect* cCurve;
        ValidCalculators* validCalculator;
        vector<Display*> cDisplays;
-       int freq;
+       int freq, abund;
 
 };
 
index 217045a4a1fc5dc0c83986f3b3a0345b755e1f6c..b3f798145bc4de3abe460aa0e8dbccd8825178c6 100644 (file)
@@ -108,9 +108,10 @@ int CollectSharedCommand::execute(){
                        SharedList = globaldata->gSharedList;
                        order = SharedList->getSharedOrderVector();
                }
-               
+               set<string> orderList;
+
                while(order != NULL){
-               
+                       orderList.insert(order->getLabel());
                        if(globaldata->allLines == 1 || globaldata->lines.count(count) == 1 || globaldata->labels.count(order->getLabel()) == 1){
                                //create collectors curve
                                cCurve = new Collect(order, cDisplays);
@@ -137,7 +138,11 @@ int CollectSharedCommand::execute(){
                        
                        count++;
                }
-       
+               set<string>::iterator i;
+               for(i = globaldata->labels.begin(); i != globaldata->labels.end(); ++i)
+                       if(orderList.count(*i) == 0)
+                               cout << "'" << *i << "'" << " is not a valid label.\n";
+               globaldata->clearLabels();
                for(int i=0;i<cDisplays.size();i++){    delete cDisplays[i];    }       
                return 0;
        }
index 0c1b3e075ee8ade15e0ea619463df962e9eac846..840eaaccc82c392de096729a5db32d7c72cdf08a 100644 (file)
@@ -16,6 +16,9 @@
 #include "parselistcommand.h"
 #include "collectcommand.h"
 #include "collectsharedcommand.h"
+#include "getgroupcommand.h"
+#include "getlabelcommand.h"
+#include "getlinecommand.h"
 #include "rarefactcommand.h"
 #include "summarycommand.h"
 #include "summarysharedcommand.h"
@@ -70,8 +73,11 @@ Command* CommandFactory::getCommand(string commandName){
                else if(commandName == "summary.shared")                {       command = new SummarySharedCommand();           }
                else if(commandName == "unifrac.weighted")              {       command = new UnifracWeightedCommand();         }
                else if(commandName == "unifrac.unweighted")    {       command = new UnifracUnweightedCommand();       }
+               else if(commandName == "get.group")             {   command = new GetgroupCommand();        }
+               else if(commandName == "get.label")             {   command = new GetlabelCommand();        }
+               else if(commandName == "get.line")              {   command = new GetlineCommand();         }
                else                                                                                    {       command = new NoCommand();                                      }
-                       
+
                return command;
        }
        catch(exception& e) {
index 1d60a4a35a8e7252e8f318a4997f91abdf102a51..cc6cbf9d8d96ac90a55dc68d16d2ffa157079cb1 100644 (file)
@@ -8,6 +8,7 @@
  */
 
 #include "errorchecking.h"
+#include <math.h>
 
 /*******************************************************/
 
@@ -36,6 +37,127 @@ void ErrorCheck::refresh() {
        cutoff = globaldata->getCutOff();
        format = globaldata->getFormat();
        method = globaldata->getMethod();
+
+       
+       string p[] = {
+               "phylip",              //0
+               "column",             //1
+               "list",               //2
+               "rabund",             //3
+               "sabund",             //4
+               "name",               //5
+               "order",              //6
+               "group",              //7
+               "fasta",              //8
+               "treefile",           //9
+               "cutoff",             //10
+               "precision",          //11
+               "iters",              //12
+               "jumble",             //13
+               "freq",               //14
+               "method",             //15
+               "fileroot",           //16
+               "line",               //17
+               "label",              //18
+               "single",             //19
+               "rarefaction",        //20
+               "shared",             //21
+               "summary",            //22
+               "sharedrarefaction",  //23
+               "sharedsummary",      //24
+               "comparegroups",      //25
+               "abund",              //26
+               };
+       
+       string c0[] = {p[0],p[5],p[10],p[11]};
+       string c1[] = {p[2],p[6],p[7]}; 
+       string c2[] = {p[10],p[11],p[15]}; 
+       string c3[] = {p[8]};  
+       string c4[] = {p[14],p[17],p[18],p[19],p[26]};
+       string c5[] = {p[13],p[14],p[17],p[18],p[21],p[25]};
+       string c6[] = {""}; 
+       string c7[] = {""}; 
+       string c8[] = {""}; 
+       string c9[] = {p[12],p[14],p[17],p[18],p[20],p[26]};
+       string c10[] = {p[12],p[13],p[17],p[18],p[23]};
+       string c11[] = {p[17],p[18],p[22],p[26]};   
+       string c12[] =  {p[13],p[17],p[18],p[24]}; 
+       string c13[] = {""};    
+       
+       vector<string> v0 (c0, c0+sizeof(c0)/sizeof(string)); 
+       vector<string> v1 (c1, c1+sizeof(c1)/sizeof(string));
+       vector<string> v2 (c2, c2+sizeof(c2)/sizeof(string));
+       vector<string> v3 (c3, c3+sizeof(c3)/sizeof(string));
+       vector<string> v4 (c4, c4+sizeof(c4)/sizeof(string));
+       vector<string> v5 (c5, c5+sizeof(c5)/sizeof(string));
+       vector<string> v6 (c6, c6+sizeof(c6)/sizeof(string));
+       vector<string> v7 (c7, c7+sizeof(c7)/sizeof(string));
+       vector<string> v8 (c8, c8+sizeof(c8)/sizeof(string));
+       vector<string> v9 (c9, c9+sizeof(c9)/sizeof(string));
+       vector<string> v10 (c10, c10+sizeof(c10)/sizeof(string));
+       vector<string> v11 (c11, c11+sizeof(c11)/sizeof(string));
+       vector<string> v12 (c12, c12+sizeof(c12)/sizeof(string));
+       vector<string> v13 (c13, c13+sizeof(c13)/sizeof(string));
+       
+       vector<vector<string> > allCommands;
+       allCommands.push_back(v0);
+       allCommands.push_back(v1);
+       allCommands.push_back(v2);
+       allCommands.push_back(v3);
+       allCommands.push_back(v4);
+       allCommands.push_back(v5);
+       allCommands.push_back(v6);
+       allCommands.push_back(v7);
+       allCommands.push_back(v8);
+       allCommands.push_back(v9);
+       allCommands.push_back(v10);
+       allCommands.push_back(v11);
+       allCommands.push_back(v12);
+       allCommands.push_back(v13);
+       
+       string commands[] = {
+       "read.dist",          //0
+       "read.otu",           //1
+       "cluster",            //2
+       "deconvolute",        //3
+       "collect.single",     //4
+       "collect.shared",     //5
+       "get.group",          //6
+       "get.label",          //7
+       "get.line",           //8
+       "rarefaction.single", //9
+       "rarefaction.shared", //10
+       "summary.single",     //11
+       "summary.shared",     //12
+       "quit"                //13
+       };
+       
+       for(int i = 0; i < allCommands.size(); i++)
+               commandParameters[commands[i]] = allCommands.at(i);
+       
+        //{Lowerbound(piSent if no lowerbound), Upperbound(piSent if no upperbound), 1 if only the first 2 values, 0 if greater than, 0 if less than};
+       piSent = 3.14159;
+       double ip0[] = {10, piSent, 0, 1, 0};
+       double ip1[] = {10, piSent, 0, 1, 0};
+       double ip2[] = {0, 1, 1, 0, 0};
+       double ip3[] =  {1, piSent, 0, 0, 0};
+       double ip4[] = {1, piSent, 0, 1, 0};
+       double ip5[] = {5, piSent, 0, 1, 0};
+       
+       vector<double> ipv0 (ip0, ip0+sizeof(ip0)/sizeof(double)); 
+       vector<double> ipv1 (ip1, ip1+sizeof(ip1)/sizeof(double)); 
+       vector<double> ipv2 (ip2, ip2+sizeof(ip2)/sizeof(double)); 
+       vector<double> ipv3 (ip3, ip3+sizeof(ip3)/sizeof(double)); 
+       vector<double> ipv4 (ip4, ip4+sizeof(ip4)/sizeof(double)); 
+       vector<double> ipv5 (ip5, ip5+sizeof(ip5)/sizeof(double));
+
+       intParams[p[11]] = ipv0;
+       intParams[p[12]] = ipv1;
+       intParams[p[13]] = ipv2;
+       intParams[p[14]] = ipv3;
+       intParams[p[17]] = ipv4;
+       intParams[p[26]] = ipv5;
+       
        randomtree = globaldata->getRandomTree();
        sharedfile = globaldata->getSharedFile();
 }
@@ -73,6 +195,7 @@ bool ErrorCheck::checkInput(string input) {
                if (validCommand->isValidCommand(commandName) != true) { return false; }
                
                string parameter, value;
+               
                //reads in parameters and values
                if((optionText != "") && (commandName != "help")){
                        while((optionText.find_first_of(',') != -1) && (errorFree)) {  //while there are parameters
@@ -81,7 +204,48 @@ bool ErrorCheck::checkInput(string input) {
                                
                                //is it a valid parameter
                                if (validParameter->isValidParameter(parameter) != true) { return false; }
-                               
+                               if(!validCommandParameter(parameter,commandName)) { 
+                                       cout << "'" << parameter << "' is not a valid parameter for the " << commandName << " command.\n";
+                                       return false; 
+                               }
+                               if(!validParameterValue(value, parameter)) {
+                                       if(parameter.compare("precision") == 0)
+                                               cout << "The precision parameter can only take powers of 10 as a value (e.g. 10,1000,1000, etc.)\n";
+                                       else {
+                                       vector<double> bounds = intParams[parameter];
+                                       double a = bounds.at(0);
+                                       double b = bounds.at(1);
+                                       double c = bounds.at(2);
+                                       double d = bounds.at(3);
+                                       double e = bounds.at(4);
+                                       cout << "The '" << parameter << "' parameter needs to be ";
+                                       if(c == 1)
+                                                       cout << "either '" << a << "' or '" << b << "'.\n";
+                                       else
+                                       {
+                                               if(a != piSent)
+                                               {
+                                                       cout << ">";
+                                                       if(d != 0)
+                                                               cout << "=";
+                                                       cout << " '" << a << "'";
+                                               }
+                                               if(b == piSent)
+                                                       cout << ".\n";
+                                               else if(a != piSent)
+                                                       cout << " and ";
+                                               if(b != piSent)
+                                               {
+                                                       cout << "<";
+                                                       if(e != 0)
+                                                               cout << "=";
+                                                       cout << " '" << b << ".\n";
+                                               }
+                                       }
+                                       }
+                                       return false;
+                               }
+
                                if (parameter == "phylip" )             { phylipfile = value; }
                                if (parameter == "column" )             { columnfile = value; }
                                if (parameter == "list" )               { listfile = value; }
@@ -102,8 +266,14 @@ bool ErrorCheck::checkInput(string input) {
                                if (parameter == "fileroot" )           { fileroot = value; }
                                if (parameter == "line" )                       { line = value; }
                                if (parameter == "label" )                      { label = value; }
+                               if (parameter == "abund" )          { abund = value; }
                                if (parameter == "random" )                     { randomtree = value;   }
 
+                               if (parameter == "comparegroups") { //stores groups to be compared
+                                       sharedGroups.clear(); //clears out old values
+                                       globaldata->splitAtDash(value, sharedGroups);
+                               }
+
                        }
                        
                        //gets the last parameter and value
@@ -112,7 +282,47 @@ bool ErrorCheck::checkInput(string input) {
                                splitAtEquals(parameter, value);
                                //is it a valid parameter
                                if (validParameter->isValidParameter(parameter) != true) { return false; }
-                               
+                               if(!validCommandParameter(parameter,commandName)) { 
+                                       cout << "'" << parameter << "' is not a valid parameter for the " << commandName << " command.\n";
+                                       return false; 
+                               }
+                               if(!validParameterValue(value, parameter)) {
+                                       if(parameter.compare("precision") == 0)
+                                               cout << "The precision parameter can only take powers of 10 as a value (e.g. 10,1000,1000, etc.)\n";
+                                       else {
+                                       vector<double> bounds = intParams[parameter];
+                                       double a = bounds.at(0);
+                                       double b = bounds.at(1);
+                                       double c = bounds.at(2);
+                                       double d = bounds.at(3);
+                                       double e = bounds.at(4);
+                                       cout << "The '" << parameter << "' parameter needs to be ";
+                                       if(c == 1)
+                                                       cout << "either '" << a << "' or '" << b << "'.\n";
+                                       else
+                                       {
+                                               if(a != piSent)
+                                               {
+                                                       cout << ">";
+                                                       if(d != 0)
+                                                               cout << "=";
+                                                       cout << " '" << a << "'";
+                                               }
+                                               if(b == piSent)
+                                                       cout << ".\n";
+                                               else if(a != piSent)
+                                                       cout << " and ";
+                                               if(b != piSent)
+                                               {
+                                                       cout << "<";
+                                                       if(e != 0)
+                                                               cout << "=";
+                                                       cout << " '" << b << ".\n";
+                                               }
+                                       }
+                                       }
+                                       return false;
+                               }
                                if (parameter == "phylip" )             { phylipfile = value; }
                                if (parameter == "column" )             { columnfile = value; }                         
                                if (parameter == "list" )               { listfile = value; }
@@ -134,7 +344,12 @@ bool ErrorCheck::checkInput(string input) {
                                if (parameter == "line" )                       { line = value; }
                                if (parameter == "label" )                      { label = value; }
                                if (parameter == "random" )                     { randomtree = value;   }
+                               if (parameter == "abund" )          { abund = value; }
 
+                               if (parameter == "comparegroups") { //stores groups to be compared
+                                       sharedGroups.clear(); //clears out old values
+                                       globaldata->splitAtDash(value, sharedGroups);
+                               }
                        }
                }
                
@@ -183,6 +398,12 @@ bool ErrorCheck::checkInput(string input) {
                }
                
                //check for valid method
+               if(commandName == "get.group") {
+                       if ((globaldata->getGroupFile() == "")) { cout << "You must read a group before you can use the get.group command." << endl; return false; }
+               }
+               if (commandName == "get.label" || commandName == "get.line") {
+                       if ((globaldata->getListFile() == "") && (globaldata->getRabundFile() == "") && (globaldata->getSabundFile() == "")) { cout << "You must read a list, sabund or rabund before you can use the get.label or get.line command." << endl; return false; }
+               }
                if (commandName == "cluster") {
                        if ((method == "furthest") || (method == "nearest") || (method == "average")) { }
                        else {cout << "Not a valid clustering method.  Valid clustering algorithms are furthest, nearest or average." << endl; return false; }
@@ -198,7 +419,9 @@ bool ErrorCheck::checkInput(string input) {
                                else if (globaldata->getGroupFile() == "") { cout << "You must read a list and a group, or a shared before you can use the collect.shared, rarefaction.shared or summary.shared commands." << endl; return false; }
                        }
                }
+
+               globaldata->clearAbund();
+
                return errorFree;
 }
 
@@ -276,6 +499,113 @@ void ErrorCheck::validateReadFiles() {
 }
 /*******************************************************/
 
+/******************************************************/
+//This function checks to see if the given paramter
+//is a valid paramter for the given command.
+bool ErrorCheck::validCommandParameter(string parameter, string commandName) {
+       try {
+               for(int i = 0; i < commandParameters[commandName].size(); i++)
+                       if(parameter.compare(commandParameters[commandName][i]) == 0)
+                               return true;
+               return false;
+       }
+               
+       catch(exception& e) {
+               cout << "Standard Error: " << e.what() << " has occurred in the ErrorCheck class Function validateReadFiles. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+               exit(1);
+       }
+       catch(...) {
+               cout << "An unknown error has occurred in the ErrorCheck class function validateReadFiles. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+               exit(1);
+       }
+}
+/*******************************************************/
+
+/******************************************************/
+//This function checks to see if the given paramter value
+//is convertable into an int if that parameter requires it.
+bool ErrorCheck::validParameterValue(string value, string parameter) {
+       try {
+               int pVal;
+               if(intParams.count(parameter) == 1)
+               {
+                       vector<double> bounds = intParams[parameter];
+                       bool valid = convertTest(value, pVal);
+                       if(!valid)
+                               return false;
+                       if(parameter.compare("precision") == 0)
+                       {
+                               double logNum = log10((double)pVal);
+                               double diff = (double)((int)logNum - logNum);
+                               if(diff != 0)
+                                       return false;
+                       }
+                       double a = bounds.at(0);
+                       double b = bounds.at(1);
+                       double c = bounds.at(2);
+                       double d = bounds.at(3);
+                       double e = bounds.at(4);
+                       bool a0 = pVal > a;
+                       bool a1 = pVal >= a;
+                       bool b0 = pVal < b;
+                       bool b1 = pVal <= b;
+                       
+                       if(c != 1)
+                       {
+                               if(a == piSent && b == piSent)
+                                       return true;
+                               if(a != piSent && b == piSent)
+                               {
+                                       if(d == 0)
+                                               return a0;
+                                       else
+                                               return a1;
+                               }
+                               else if(a == piSent && b != piSent)
+                               {
+                                       if(e == 0)
+                                               return b0;
+                                       else
+                                               return b1;
+                               }
+                               else
+                               {
+                                       if(d == 0 && e == 0)
+                                               return (a0 && b0);
+                                       else if(d == 0 && e == 1)
+                                               return (a0 && b1);
+                                       else if(d == 1 && e == 0)
+                                               return (a1 && b0);
+                                       else
+                                               return (a1 && b1);
+                               }
+                       }
+                       else
+                       {
+                               if(a == piSent && b == piSent)
+                                       return true;
+                               if(a != piSent && b == piSent)
+                                       return (pVal == a);
+                               else if(a == piSent && b != piSent)
+                                       return (pVal == b);
+                               else
+                                       return (pVal == a || pVal == b);
+                       }
+               }
+               return true;
+       }
+               
+       catch(exception& e) {
+               cout << "Standard Error: " << e.what() << " has occurred in the ErrorCheck class Function validateReadFiles. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+               exit(1);
+       }
+       catch(...) {
+               cout << "An unknown error has occurred in the ErrorCheck class function validateReadFiles. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+               exit(1);
+       }
+}              
+/*******************************************************/
+
 /******************************************************/
 //This function checks to make sure the user entered appropriate
 // format parameters on a distfile read
index 1b023e079cf8ab15c8539596dc72841be7edf7a3..8b3c0cafb0e6b787d5d408083828ab39757420bc 100644 (file)
@@ -27,6 +27,8 @@ class ErrorCheck {
                ValidCommands* validCommand;
                ValidParameters* validParameter;
                void validateReadFiles();
+               bool validCommandParameter(string, string);
+               bool validParameterValue(string, string);
                void validateReadDist();
                void validateReadPhil();
                void validateParseFiles();
@@ -34,9 +36,14 @@ class ErrorCheck {
                void clear();
                void refresh();
                string phylipfile, columnfile, listfile, rabundfile, sabundfile, namefile, groupfile, orderfile, fastafile, treefile, sharedfile, cutoff, format; 
-               string precision, method, fileroot, label, line, iters, jumble, freq, single, rarefaction, shared, summary, randomtree;
+               string precision, method, fileroot, label, line, iters, jumble, freq, single, rarefaction, shared, summary, randomtree, abund;
                string commandName, optionText;
                bool errorFree;
-               
+
+               vector<string> sharedGroups;
+               map <string, vector<string> > commandParameters;
+               map <string, vector<double> > intParams;
+               double piSent;
+
 };
 #endif
index eeb1f4d5c51d36d5f38942f6c0b328a7386eb20b..66a44f25b7246af237194e634eeeeb9514623899 100644 (file)
@@ -76,7 +76,6 @@ void GlobalData::parseGlobalData(string commandString, string optionText){
                        gGroupmap = NULL;
                        gTree.clear();
                        labels.clear(); lines.clear(); groups.clear();
-                       
                }
                
                //saves help request
@@ -109,9 +108,11 @@ void GlobalData::parseGlobalData(string commandString, string optionText){
                                if (key == "freq" )                     { freq = value;                 }
                                if (key == "method" )           { method = value;               }
                                if (key == "fileroot" )         { fileroot = value;             }
+                               if (key == "abund" )        { abund = value;        }
                                if (key == "random" )           { randomtree = value;   }
                                if (key == "groups" )           { groups = value;       }
                                if (key == "calc")                      { calc = value;         }
+
                                
                                if (key == "line") {//stores lines to be used in a set
                                        lines.clear();
@@ -127,11 +128,13 @@ void GlobalData::parseGlobalData(string commandString, string optionText){
                                        splitAtDash(value, labels);
                                        allLines = 0;
                                }
+
                                if (key == "groups") {//stores groups to be used in a vector
                                        Groups.clear();
                                        groups = value;
                                        splitAtDash(value, Groups);
                                }
+
                        }
                        
                        //saves the last parameter
@@ -155,6 +158,7 @@ void GlobalData::parseGlobalData(string commandString, string optionText){
                        if (key == "freq" )                     { freq = value;                 }
                        if (key == "method" )           { method = value;               }
                        if (key == "fileroot" )         { fileroot = value;             }
+                       if (key == "abund" )        { abund = value;        }
                        if (key == "random" )           { randomtree = value;   }
                        if (key == "groups" )           { groups = value;       }
                        if (key == "calc")                      { calc = value;         }
@@ -255,6 +259,7 @@ string GlobalData::getFileRoot()            {       return fileroot;        }
 string GlobalData::getIters()                  {       return iters;           }
 string GlobalData::getJumble()                 {       return jumble;          }
 string GlobalData::getFreq()                   {       return freq;            }
+string GlobalData::getAbund()           {   return abund;       }
 string GlobalData::getRandomTree()             {       return randomtree;      }
 void GlobalData::setListFile(string file)      {       listfile = file;        inputFileName = file;}
 void GlobalData::setRabundFile(string file)    {       rabundfile = file;      inputFileName = file;}
@@ -302,9 +307,10 @@ void GlobalData::clear() {
        freq                    =       "100";
        method                  =       "furthest";
        fileroot                =       "";
-       calc                    =       "";
+       abund           =   "10";
 }
-/*******************************************************/
+
+//*******************************************************/
 
 /******************************************************/
 void GlobalData::reset() {
@@ -319,6 +325,7 @@ void GlobalData::reset() {
        freq                    =       "100";
        method                  =       "furthest";
        calc                    =       "";
+       abund = "10";
 }
 /*******************************************************/
 
@@ -330,6 +337,3 @@ GlobalData::~GlobalData() {
        if(gorder != NULL)                      {       delete gorder;          }
 }
 /*******************************************************/
-
-/******************************************************/
-
index 277d351062fd67726f0ba05d53647d8c98b2a53c..b36545effa90467bbfeddab77c56351ebeea934a 100644 (file)
@@ -41,10 +41,9 @@ public:
        TreeMap* gTreemap;
        string inputFileName, helpRequest, commandName;
        bool allLines;
-       vector<string> Estimators; //holds estimators to be used
+       vector<string>  Estimators, Groups; //holds estimators to be used
        set<int> lines; //hold lines to be used
        set<string> labels; //holds labels to be used
-       vector<string> Groups;
        
        string getPhylipFile();
        string getColumnFile();
@@ -65,7 +64,9 @@ public:
        string getIters();
        string getJumble();
        string getFreq();
+       string getAbund();
        string getRandomTree();
+
        void setListFile(string);
        void setPhylipFile(string);
        void setColumnFile(string);
@@ -79,11 +80,16 @@ public:
        
        void setListVector(ListVector*);
        void setSparseMatrix(SparseMatrix*);
+       void clear(); 
+       void clearLabels();
+       void clearAbund();
+       
        void parseGlobalData(string, string);
                
 private:
        string phylipfile, columnfile, listfile, rabundfile, sabundfile, namefile, groupfile, orderfile, fastafile, treefile, sharedfile, line, label, randomtree, groups;
-       string cutoff, format, precision, method, fileroot, iters, jumble, freq, calc;
+       string cutoff, format, precision, method, fileroot, iters, jumble, freq, calc, abund;
+
        static GlobalData* _uniqueInstance;
        GlobalData( const GlobalData& ); // Disable copy constructor
        void operator=( const GlobalData& ); // Disable assignment operator
index b627c140461d19713f39e3907d4d1a14a02b4414..206df13651075afac626139b30a917e1ae43562a 100644 (file)
@@ -87,6 +87,25 @@ int HelpCommand::execute(){
                cout << "Example collect.shared(label=unique-.01-.03, line=0,5,10, freq=10, jumble=1, calc=sharedChao-sharedAce-sharedJabund-sharedSorensonAbund-sharedJclass-sharedSorClass-sharedJest-sharedSorEst-SharedThetaYC-SharedThetaN)." << "\n";
                cout << "The default values for jumble is 1 (meaning jumble, if it’s set to 0 then it will not jumble), freq is 100 and calc are sharedsobs-sharedChao-sharedAce-sharedJabund-sharedSorensonAbund-sharedJclass-sharedSorClass-sharedJest-sharedSorEst-SharedThetaYC-SharedThetaN." << "\n";
                cout << "The label and line parameters are used to analyze specific lines in your input." << "\n";
+               cout << "Note: No spaces between parameter labels (i.e. list), '=' and parameters (i.e.yourListfile)." << "\n" << "\n";
+       }else if (globaldata->helpRequest == "get.group") {
+               cout << "The get.group command can only be executed after a successful read.otu command of a group file." << "\n";
+               cout << "You may not use any parameters with the get.group command." << "\n";
+               cout << "The get.group command should be in the following format: " << "\n";
+               cout << "get.group()" << "\n";
+               cout << "Example get.group()." << "\n";
+       }else if (globaldata->helpRequest == "get.label") {
+               cout << "The get.label command can only be executed after a successful read.otu command." << "\n";
+               cout << "You may not use any parameters with the get.label command." << "\n";
+               cout << "The get.label command should be in the following format: " << "\n";
+               cout << "get.label()" << "\n";
+               cout << "Example get.label()." << "\n";
+       }else if (globaldata->helpRequest == "get.line") {
+               cout << "The get.line command can only be executed after a successful read.otu command." << "\n";
+               cout << "You may not use any parameters with the get.line command." << "\n";
+               cout << "The get.line command should be in the following format: " << "\n";
+               cout << "get.line()" << "\n";
+               cout << "Example get.line()." << "\n";
                cout << "Note: No spaces between parameter labels (i.e. freq), '=' and parameters (i.e.yourFreq)." << "\n" << "\n";
        }else if (globaldata->helpRequest == "rarefaction.single") {
                cout << "The rarefaction.single command can only be executed after a successful read.otu WTIH ONE EXECEPTION." << "\n";
index 7e4ced55244665b4c3540f71491ce6dd4f003517..df33e5d7a01ed9ca053cee3849bd5bd1448bda23 100644 (file)
@@ -35,6 +35,9 @@ RareFactCommand::RareFactCommand(){
                                }else if (globaldata->Estimators[i] == "chao") { 
                                        rDisplays.push_back(new RareDisplay(new Chao1(), new ThreeColumnFile(fileNameRoot+"r_chao")));
                                }else if (globaldata->Estimators[i] == "ace") { 
+                                       convert(globaldata->getAbund(), abund);
+                                       if(abund < 5)
+                                               abund = 10;
                                        rDisplays.push_back(new RareDisplay(new Ace(), new ThreeColumnFile(fileNameRoot+"r_ace")));
                                }else if (globaldata->Estimators[i] == "jack") { 
                                        rDisplays.push_back(new RareDisplay(new Jackknife(), new ThreeColumnFile(fileNameRoot+"r_jack")));
index c81eb6fea19a3808ec93f0cdda1c779719947585..058d7dd2b6e0c0513b0d5c9697c29c68a2da61a3 100644 (file)
@@ -52,7 +52,7 @@ private:
        InputData* input;
        ValidCalculators* validCalculator;
        Rarefact* rCurve;
-       int freq, nIters;
+       int freq, nIters, abund;
 };
 
 #endif
index 7a3ad4a1e57e7f3f5dac9539fb2c974cd4e14cbe..06cc9b027de971c65204e3254ef07cc1eacae320 100644 (file)
@@ -32,6 +32,9 @@ SummaryCommand::SummaryCommand(){
                                }else if(globaldata->Estimators[i] == "chao"){
                                        sumCalculators.push_back(new Chao1());
                                }else if(globaldata->Estimators[i] == "ace"){
+                                       convert(globaldata->getAbund(), abund);
+                                       if(abund < 5)
+                                               abund = 10;
                                        sumCalculators.push_back(new Ace());
                                }else if(globaldata->Estimators[i] == "jack"){
                                        sumCalculators.push_back(new Jackknife());
index 8e2d74b0b52252250cd5cede8a1bf9b10a689449..4c5144c3d2213808ea416f3bf15d95566c6fa21b 100644 (file)
@@ -49,5 +49,6 @@ private:
        SAbundVector* sabund;
        string outputFileName;
        ofstream outputFileHandle;
+       int abund;
 };
 #endif
index bf7df2d6a96d5c294ef662ae2f1bd19bc11ff9b5..8f5009ffc4f0306a5da950e75a541aaa56cfb572 100644 (file)
@@ -33,6 +33,19 @@ inline void convert(const string& s, T& x, bool failIfLeftoverChars = true){
        if (!(i >> x) || (failIfLeftoverChars && i.get(c)))
                throw BadConversion(s);
 }
+//**********************************************************************************************************************
+
+template<typename T>
+inline bool convertTest(const string& s, T& x, bool failIfLeftoverChars = true){
+       istringstream i(s);
+       char c;
+       if (!(i >> x) || (failIfLeftoverChars && i.get(c)))
+       {
+               cout << "'" << s << "' is unable to be converted into an integer.\n";
+               return false;
+       } 
+       return true;
+}
 
 //**********************************************************************************************************************
 
@@ -285,8 +298,12 @@ inline void splitAtComma(string& prefix, string& suffix){
        try {
                prefix = suffix.substr(0,suffix.find_first_of(','));
                if ((suffix.find_first_of(',')+2) <= suffix.length()) {  //checks to make sure you don't have comma at end of string
-                       suffix = suffix.substr(suffix.find_first_of(',')+2, suffix.length());
+                       suffix = suffix.substr(suffix.find_first_of(',')+1, suffix.length());
+                       string space = " ";
+                       while(suffix.at(0) == ' ')
+                               suffix = suffix.substr(1, suffix.length());
                }
+
        }
        catch(exception& e) {
                cout << "Standard Error: " << e.what() << " has occurred in the utilities class Function splitAtComma. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
index 79b09d38dbad7325c8bbbff8e352a17d0ddaeaba..e0d604543ec564f1e364426a9f61c613e97ffea0 100644 (file)
@@ -25,6 +25,9 @@ ValidCommands::ValidCommands() {
                commands["quit"]                                = "quit"; 
                commands["collect.single"]              = "collect.single"; 
                commands["collect.shared"]              = "collect.shared"; 
+               commands["get.group"]           = "get.group";
+               commands["get.label"]           = "get.label";
+               commands["get.line"]            = "get.line";
                commands["rarefaction.single"]  = "rarefaction.single"; 
                commands["rarefaction.shared"]  = "rarefaction.shared"; 
                commands["summary.single"]              = "summary.single"; 
index a82962f1e0096e406e7cc21d03dba08a3039ea3a..fca5c8e07fc50d9be08842e0787854431a6df4a9 100644 (file)
@@ -30,7 +30,7 @@ ValidParameters::ValidParameters() {
                parameters["format"]                    = "format"; 
                parameters["precision"]                 = "precision"; 
                parameters["label"]                             = "label"; 
-               parameters["line"]                              = "line"; 
+               parameters["line"]                              = "line";
                parameters["iters"]                             = "iters"; 
                parameters["jumble"]                    = "jumble"; 
                parameters["freq"]                              = "freq"; 
@@ -40,10 +40,11 @@ ValidParameters::ValidParameters() {
                parameters["shared"]                    = "shared"; 
                parameters["summary"]                   = "summary"; 
                parameters["sharedsummary"]             = "sharedsummary";
+               parameters["abund"]             = "abund";
                parameters["random"]                    = "random";
                parameters["groups"]                    = "groups";
                parameters["calc"]                              = "calc";
-               
+
        }
        catch(exception& e) {
                cout << "Standard Error: " << e.what() << " has occurred in the ValidParameters class Function ValidParameters. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";