377326650FAF16E0007ABB8B /* concensuscommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 377326630FAF16E0007ABB8B /* concensuscommand.cpp */; };
378C1B030FB0644E004D63F5 /* filterseqscommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 378C1AEE0FB0644D004D63F5 /* filterseqscommand.cpp */; };
378C1B040FB0644E004D63F5 /* goodscoverage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 378C1AF00FB0644D004D63F5 /* goodscoverage.cpp */; };
- 378C1B050FB0644E004D63F5 /* readclustal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 378C1AF20FB0644D004D63F5 /* readclustal.cpp */; };
- 378C1B060FB0644E004D63F5 /* readfasta.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 378C1AF40FB0644D004D63F5 /* readfasta.cpp */; };
- 378C1B070FB0644E004D63F5 /* readnexus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 378C1AF60FB0644D004D63F5 /* readnexus.cpp */; };
- 378C1B090FB0644E004D63F5 /* readseqsphylip.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 378C1AFB0FB0644D004D63F5 /* readseqsphylip.cpp */; };
378C1B0A0FB0644E004D63F5 /* sequencedb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 378C1AFD0FB0644D004D63F5 /* sequencedb.cpp */; };
378C1B0B0FB0644E004D63F5 /* sharedjackknife.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 378C1AFF0FB0644D004D63F5 /* sharedjackknife.cpp */; };
378C1B0C0FB0644E004D63F5 /* sharedmarczewski.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 378C1B010FB0644D004D63F5 /* sharedmarczewski.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 */; };
- 379643ED0FB9B5A80081FDB6 /* readseqs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 379643EB0FB9B5A80081FDB6 /* readseqs.cpp */; };
3799A9500FD6A58C00E33EDE /* distancedb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3799A94C0FD6A58C00E33EDE /* distancedb.cpp */; };
3799A9510FD6A58C00E33EDE /* seqsummarycommand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3799A94E0FD6A58C00E33EDE /* seqsummarycommand.cpp */; };
37AD4CE40F28AEA300AA2D49 /* sharedlistvector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 37AD4CE30F28AEA300AA2D49 /* sharedlistvector.cpp */; };
21E859D70FC4632E005E1A48 /* matrixoutputcommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = matrixoutputcommand.cpp; sourceTree = SOURCE_ROOT; };
370B88050F8A4EE4005AB382 /* getoturepcommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = getoturepcommand.h; sourceTree = SOURCE_ROOT; };
370B88060F8A4EE4005AB382 /* getoturepcommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = getoturepcommand.cpp; sourceTree = SOURCE_ROOT; };
- 371B30B20FD7EE67000414CA /* screenseqscommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = screenseqscommand.cpp; sourceTree = SOURCE_ROOT; };
- 371B30B30FD7EE67000414CA /* screenseqscommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = screenseqscommand.h; sourceTree = SOURCE_ROOT; };
+ 371B30B20FD7EE67000414CA /* screenseqscommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = screenseqscommand.cpp; sourceTree = "<group>"; };
+ 371B30B30FD7EE67000414CA /* screenseqscommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = screenseqscommand.h; 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; };
374610820F40652400460C57 /* unweighted.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = unweighted.cpp; sourceTree = SOURCE_ROOT; };
3746109B0F40657600460C57 /* unifracunweightedcommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = unifracunweightedcommand.h; sourceTree = SOURCE_ROOT; };
3746109C0F40657600460C57 /* unifracunweightedcommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = unifracunweightedcommand.cpp; sourceTree = SOURCE_ROOT; };
- 3749271B0FD58C840031C06B /* getsabundcommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = getsabundcommand.h; sourceTree = SOURCE_ROOT; };
- 3749271C0FD58C840031C06B /* getsabundcommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = getsabundcommand.cpp; sourceTree = SOURCE_ROOT; };
- 3749273D0FD5956B0031C06B /* getrabundcommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = getrabundcommand.h; sourceTree = SOURCE_ROOT; };
- 3749273E0FD5956B0031C06B /* getrabundcommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = getrabundcommand.cpp; sourceTree = SOURCE_ROOT; };
+ 3749271B0FD58C840031C06B /* getsabundcommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = getsabundcommand.h; sourceTree = "<group>"; };
+ 3749271C0FD58C840031C06B /* getsabundcommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = getsabundcommand.cpp; sourceTree = "<group>"; };
+ 3749273D0FD5956B0031C06B /* getrabundcommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = getrabundcommand.h; sourceTree = "<group>"; };
+ 3749273E0FD5956B0031C06B /* getrabundcommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = getrabundcommand.cpp; sourceTree = "<group>"; };
37519A690F80E6EB00FED5E8 /* sharedanderbergs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sharedanderbergs.h; sourceTree = SOURCE_ROOT; };
37519A6A0F80E6EB00FED5E8 /* sharedanderbergs.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sharedanderbergs.cpp; sourceTree = SOURCE_ROOT; };
37519A9F0F810D0200FED5E8 /* venncommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = venncommand.h; sourceTree = SOURCE_ROOT; };
378C1AEF0FB0644D004D63F5 /* filterseqscommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = filterseqscommand.h; sourceTree = SOURCE_ROOT; };
378C1AF00FB0644D004D63F5 /* goodscoverage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = goodscoverage.cpp; sourceTree = SOURCE_ROOT; };
378C1AF10FB0644D004D63F5 /* goodscoverage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = goodscoverage.h; sourceTree = SOURCE_ROOT; };
- 378C1AF20FB0644D004D63F5 /* readclustal.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = readclustal.cpp; sourceTree = SOURCE_ROOT; };
- 378C1AF30FB0644D004D63F5 /* readclustal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = readclustal.h; sourceTree = SOURCE_ROOT; };
- 378C1AF40FB0644D004D63F5 /* readfasta.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = readfasta.cpp; sourceTree = SOURCE_ROOT; };
- 378C1AF50FB0644D004D63F5 /* readfasta.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = readfasta.h; sourceTree = SOURCE_ROOT; };
- 378C1AF60FB0644D004D63F5 /* readnexus.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = readnexus.cpp; sourceTree = SOURCE_ROOT; };
- 378C1AF70FB0644D004D63F5 /* readnexus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = readnexus.h; sourceTree = SOURCE_ROOT; };
- 378C1AF80FB0644D004D63F5 /* readnexusal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = readnexusal.h; sourceTree = SOURCE_ROOT; };
- 378C1AFB0FB0644D004D63F5 /* readseqsphylip.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = readseqsphylip.cpp; sourceTree = SOURCE_ROOT; };
- 378C1AFC0FB0644D004D63F5 /* readseqsphylip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = readseqsphylip.h; sourceTree = SOURCE_ROOT; };
378C1AFD0FB0644D004D63F5 /* sequencedb.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sequencedb.cpp; sourceTree = SOURCE_ROOT; };
378C1AFE0FB0644D004D63F5 /* sequencedb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sequencedb.h; sourceTree = SOURCE_ROOT; };
378C1AFF0FB0644D004D63F5 /* sharedjackknife.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sharedjackknife.cpp; sourceTree = SOURCE_ROOT; };
379294880F2E258500B9034A /* parsimony.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = parsimony.h; sourceTree = SOURCE_ROOT; };
379294890F2E258500B9034A /* parsimony.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = parsimony.cpp; sourceTree = SOURCE_ROOT; };
3792948D0F2E271100B9034A /* treecalculator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = treecalculator.h; sourceTree = SOURCE_ROOT; };
- 379643EB0FB9B5A80081FDB6 /* readseqs.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = readseqs.cpp; sourceTree = SOURCE_ROOT; };
- 379643EC0FB9B5A80081FDB6 /* readseqs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = readseqs.h; sourceTree = SOURCE_ROOT; };
- 3799A94C0FD6A58C00E33EDE /* distancedb.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = distancedb.cpp; sourceTree = SOURCE_ROOT; };
- 3799A94D0FD6A58C00E33EDE /* distancedb.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = distancedb.hpp; sourceTree = SOURCE_ROOT; };
- 3799A94E0FD6A58C00E33EDE /* seqsummarycommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = seqsummarycommand.cpp; sourceTree = SOURCE_ROOT; };
- 3799A94F0FD6A58C00E33EDE /* seqsummarycommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = seqsummarycommand.h; sourceTree = SOURCE_ROOT; };
+ 3799A94C0FD6A58C00E33EDE /* distancedb.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = distancedb.cpp; sourceTree = "<group>"; };
+ 3799A94D0FD6A58C00E33EDE /* distancedb.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = distancedb.hpp; sourceTree = "<group>"; };
+ 3799A94E0FD6A58C00E33EDE /* seqsummarycommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = seqsummarycommand.cpp; sourceTree = "<group>"; };
+ 3799A94F0FD6A58C00E33EDE /* seqsummarycommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = seqsummarycommand.h; sourceTree = "<group>"; };
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; };
3796441D0FB9B9650081FDB6 /* read */ = {
isa = PBXGroup;
children = (
- 378C1AF30FB0644D004D63F5 /* readclustal.h */,
- 378C1AF20FB0644D004D63F5 /* readclustal.cpp */,
375AA1340F9E433D008EF9B8 /* readcolumn.h */,
375AA1330F9E433D008EF9B8 /* readcolumn.cpp */,
- 378C1AF50FB0644D004D63F5 /* readfasta.h */,
- 378C1AF40FB0644D004D63F5 /* readfasta.cpp */,
37D928130F21331F001D4494 /* readmatrix.hpp */,
- 378C1AF70FB0644D004D63F5 /* readnexus.h */,
- 378C1AF60FB0644D004D63F5 /* readnexus.cpp */,
- 378C1AF80FB0644D004D63F5 /* readnexusal.h */,
375AA1360F9E433D008EF9B8 /* readotu.h */,
375AA1350F9E433D008EF9B8 /* readotu.cpp */,
375AA1380F9E433D008EF9B8 /* readphylip.h */,
375AA1370F9E433D008EF9B8 /* readphylip.cpp */,
- 378C1AFC0FB0644D004D63F5 /* readseqsphylip.h */,
- 378C1AFB0FB0644D004D63F5 /* readseqsphylip.cpp */,
- 379643EB0FB9B5A80081FDB6 /* readseqs.cpp */,
- 379643EC0FB9B5A80081FDB6 /* readseqs.h */,
37AD4DC80F28F3DD00AA2D49 /* readtree.h */,
37AD4DC90F28F3DD00AA2D49 /* readtree.cpp */,
);
377326650FAF16E0007ABB8B /* concensuscommand.cpp in Sources */,
378C1B030FB0644E004D63F5 /* filterseqscommand.cpp in Sources */,
378C1B040FB0644E004D63F5 /* goodscoverage.cpp in Sources */,
- 378C1B050FB0644E004D63F5 /* readclustal.cpp in Sources */,
- 378C1B060FB0644E004D63F5 /* readfasta.cpp in Sources */,
- 378C1B070FB0644E004D63F5 /* readnexus.cpp in Sources */,
- 378C1B090FB0644E004D63F5 /* readseqsphylip.cpp in Sources */,
378C1B0A0FB0644E004D63F5 /* sequencedb.cpp in Sources */,
378C1B0B0FB0644E004D63F5 /* sharedjackknife.cpp in Sources */,
378C1B0C0FB0644E004D63F5 /* sharedmarczewski.cpp in Sources */,
37C753CE0FB3415200DBD02E /* distancecommand.cpp in Sources */,
- 379643ED0FB9B5A80081FDB6 /* readseqs.cpp in Sources */,
378DC5CF0FBDE1C8003B8607 /* aligncommand.cpp in Sources */,
373C68A40FC1C07D00137ACD /* alignment.cpp in Sources */,
373C68A50FC1C07D00137ACD /* alignmentcell.cpp in Sources */,
AlignCommand::AlignCommand(){
try {
globaldata = GlobalData::getInstance();
- if(globaldata->getFastaFile() == "" && globaldata->getPhylipFile() == "" && globaldata->getNexusFile() == "" && globaldata->getClustalFile() == ""){
+ if(globaldata->getFastaFile() == ""){
cout << "you forgot a template file" << endl;
}
openInputFile(globaldata->getCandidateFile(), in);
convert(globaldata->getProcessors(), processors);
convert(globaldata->getCutOff(), cutoff);
+ //open file
+ string filename = globaldata->getFastaFile();
+ openInputFile(filename, in);
+
+
int i;
if (isTrue(countends) == true) {
for (i=0; i<globaldata->Estimators.size(); i++) {
int DistanceCommand::execute(){
try {
- //read file
- string filename = globaldata->inputFileName;
-
- if(globaldata->getFastaFile() != "") {
- readSeqs = new ReadFasta(filename); }
- else if(globaldata->getNexusFile() != "") {
- readSeqs = new ReadNexus(filename); }
- else if(globaldata->getClustalFile() != "") {
- readSeqs = new ReadClustal(filename); }
- else if(globaldata->getPhylipFile() != "") {
- readSeqs = new ReadPhylip(filename); }
-
- readSeqs->read();
- seqDB = readSeqs->getDB();
-
+ //reads fasta file and fills sequenceDB
+ if(globaldata->getFastaFile() != "") { seqDB = new SequenceDB(in); }
+ else { cout << "Error no fasta file." << endl; return 0; }
+
int numSeqs = seqDB->getNumSeqs();
cutoff += 0.005;
for(int i=startLine;i<endLine;i++){
for(int j=0;j<i;j++){
- distCalculator->calcDist(align->get(i), align->get(j));
+ distCalculator->calcDist(*(align->get(i)), *(align->get(j)));
double dist = distCalculator->getDist();
if(dist <= cutoff){
- distFile << align->get(i).getName() << ' ' << align->get(j).getName() << ' ' << dist << endl;
+ distFile << align->get(i)->getName() << ' ' << align->get(j)->getName() << ' ' << dist << endl;
}
}
#include "validcalculator.h"
#include "dist.h"
#include "sequencedb.h"
-#include "readfasta.h"
-#include "readnexus.h"
-#include "readclustal.h"
-#include "readseqsphylip.h"
-
class DistanceCommand : public Command {
ValidCalculators* validCalculator;
Dist* distCalculator;
SequenceDB* seqDB;
- ReadSeqs* readSeqs;
ofstream out;
+ ifstream in;
string outputFileName;
string countends;
int processors;
if (parameter == "name" ) { namefile = value; }
if (parameter == "order" ) { orderfile = value; }
if (parameter == "fasta" ) { fastafile = value; }
- if (parameter == "nexus" ) { nexusfile = value; }
- if (parameter == "clustal" ) { clustalfile = value; }
if (parameter == "tree" ) { treefile = value; }
if (parameter == "group" ) { groupfile = value; }
if (parameter == "shared" ) { sharedfile = value; }
if (parameter == "group" ) { groupfile = value; }
if (parameter == "shared" ) { sharedfile = value; }
if (parameter == "fasta" ) { fastafile = value; }
- if (parameter == "nexus" ) { nexusfile = value; }
- if (parameter == "clustal" ) { clustalfile = value; }
if (parameter == "tree" ) { treefile = value; }
if (parameter == "cutoff" ) { cutoff = value; }
if (parameter == "precision" ) { precision = value; }
if (fastafile == "") {
cout << "You must enter either a fasta file before you can use the filter.seqs or dist.seqs command." << endl; return false;
}
- validateSeqsFiles();
+ validateReadFiles();
}
if (commandName == "align.seqs") {
if ((fastafile == "") || (candidatefile == "")) {
cout << "You must enter fasta and a candidate file to use the align.seqs command." << endl; return false;
}
- validateSeqsFiles();
+ validateReadFiles();
+
+ ifstream filehandle;
+ int ableToOpen = openInputFile(candidatefile, filehandle);
+ filehandle.close();
+ //unable to open
+ if (ableToOpen == 1) { return false; }
}
if ((commandName == "bin.seqs")) {
}
/*******************************************************/
-/******************************************************/
-//This function checks to make sure the user entered appropriate
-// format parameters on a distfile read
-void ErrorCheck::validateSeqsFiles() {
- try {
- ifstream filehandle;
- int ableToOpen;
-
- //checks to make sure only one file type is given
- if (phylipfile != "") {
- if ((nexusfile != "") || (fastafile != "") || (clustalfile != "")) {
- cout << "You may enter ONLY ONE of the following: phylip, fasta, nexus or clustal." << endl; errorFree = false; }
- else {
- ableToOpen = openInputFile(phylipfile, filehandle);
- filehandle.close();
- if (ableToOpen == 1) { //unable to open
- errorFree = false;
- }
- }
- }else if (nexusfile != "") {
- if ((phylipfile != "") || (fastafile != "") || (clustalfile != "")) {
- cout << "You may enter ONLY ONE of the following: phylip, fasta, nexus or clustal." << endl; errorFree = false; }
- else {
- ableToOpen = openInputFile(nexusfile, filehandle);
- filehandle.close();
- if (ableToOpen == 1) { //unable to open
- errorFree = false;
- }
- }
- }else if (fastafile != "") {
- if ((phylipfile != "") || (nexusfile != "") || (clustalfile != "")) {
- cout << "You may enter ONLY ONE of the following: phylip, fasta, nexus or clustal." << endl; errorFree = false; }
- else {
- ableToOpen = openInputFile(fastafile, filehandle);
- filehandle.close();
- if (ableToOpen == 1) { //unable to open
- errorFree = false;
- }
- }
- }else if (clustalfile != "") {
- if ((phylipfile != "") || (nexusfile != "") || (fastafile != "")) {
- cout << "You may enter ONLY ONE of the following: phylip, fasta, nexus or clustal." << endl; errorFree = false; }
- else {
- ableToOpen = openInputFile(clustalfile, filehandle);
- filehandle.close();
- if (ableToOpen == 1) { //unable to open
- errorFree = false;
- }
- }
- }else if (candidatefile != "") {
- ableToOpen = openInputFile(candidatefile, filehandle);
- filehandle.close();
- if (ableToOpen == 1) { //unable to open
- errorFree = false;
- }
- }
-
-
- }
- catch(exception& e) {
- cout << "Standard Error: " << e.what() << " has occurred in the ErrorCheck class Function validateSeqsFiles. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
- exit(1);
- }
- catch(...) {
- cout << "An unknown error has occurred in the ErrorCheck class function validateSeqsFiles. 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 bin.seq command
//unable to open
if (ableToOpen == 1) { errorFree = false; }
}
-
-
-
}
catch(exception& e) {
cout << "Standard Error: " << e.what() << " has occurred in the ErrorCheck class Function validateBinFiles. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
orderfile = "";
sharedfile = "";
fastafile = "";
- nexusfile = "";
- clustalfile = "";
candidatefile = "";
line = "";
label = "";
void validateParseFiles();
void validateTreeFiles();
void validateBinFiles();
- void validateSeqsFiles();
void clear();
void refresh();
- string phylipfile, columnfile, listfile, rabundfile, sabundfile, namefile, groupfile, orderfile, fastafile, nexusfile, clustalfile, treefile, sharedfile, cutoff, format;
+ 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, abund, sorted, trump, soft, filter, scale, countends, processors, size;
string candidatefile, search, ksize, align, match, mismatch, gapopen, gapextend;
string commandName, optionText;
#include "command.hpp"
#include "globaldata.hpp"
-#include "readfasta.h"
-#include "readnexus.h"
-#include "readclustal.h"
-#include "readseqsphylip.h"
-
+#include "sequence.hpp"
class FilterSeqsCommand : public Command {
GlobalData* globaldata;
vector<int> a, t, g, c, gap;
+
};
#endif
if (key == "rabund" ) { rabundfile = value; inputFileName = value; fileroot = value; format = "rabund"; }
if (key == "sabund" ) { sabundfile = value; inputFileName = value; fileroot = value; format = "sabund"; }
if (key == "fasta" ) { fastafile = value; inputFileName = value; fileroot = value; format = "fasta"; }
- if (key == "nexus" ) { nexusfile = value; inputFileName = value; fileroot = value; format = "nexus"; }
- if (key == "clustal" ) { clustalfile = value; inputFileName = value; fileroot = value; format = "clustal"; }
if (key == "tree" ) { treefile = value; inputFileName = value; fileroot = value; format = "tree"; }
if (key == "shared" ) { sharedfile = value; inputFileName = value; fileroot = value; format = "sharedfile"; }
if (key == "name" ) { namefile = value; }
if (key == "rabund" ) { rabundfile = value; inputFileName = value; fileroot = value; format = "rabund"; }
if (key == "sabund" ) { sabundfile = value; inputFileName = value; fileroot = value; format = "sabund"; }
if (key == "fasta" ) { fastafile = value; inputFileName = value; fileroot = value; format = "fasta"; }
- if (key == "nexus" ) { nexusfile = value; inputFileName = value; fileroot = value; format = "nexus"; }
- if (key == "clustal" ) { clustalfile = value; inputFileName = value; fileroot = value; format = "clustal"; }
if (key == "tree" ) { treefile = value; inputFileName = value; fileroot = value; format = "tree"; }
if (key == "shared" ) { sharedfile = value; inputFileName = value; fileroot = value; format = "sharedfile"; }
if (key == "name" ) { namefile = value; }
string GlobalData::getTreeFile() { return treefile; }
string GlobalData::getSharedFile() { return sharedfile; }
string GlobalData::getFastaFile() { return fastafile; }
-string GlobalData::getNexusFile() { return nexusfile; }
-string GlobalData::getClustalFile() { return clustalfile; }
string GlobalData::getCutOff() { return cutoff; }
string GlobalData::getFormat() { return format; }
string GlobalData::getPrecision() { return precision; }
groupfile = "";
orderfile = "";
fastafile = "";
- nexusfile = "";
- clustalfile = "";
treefile = "";
sharedfile = "";
candidatefile = "";
string getGroupFile();
string getOrderFile();
string getFastaFile();
- string getNexusFile();
- string getClustalFile();
string getTreeFile();
string getSharedFile();
string getCutOff();
private:
- string phylipfile, columnfile, listfile, rabundfile, sabundfile, namefile, groupfile, orderfile, fastafile, nexusfile, clustalfile, treefile, sharedfile, line, label, randomtree, groups, cutoff, format, precision, method, fileroot, iters, jumble, freq, calc, abund, step, form, sorted, trump, soft, hard, scale, countends, processors, candidatefile, search, ksize, align, match, size, mismatch, gapopen, gapextend, minLength, maxLength, startPos, endPos, maxAmbig, maxHomoPolymer;
+ string phylipfile, columnfile, listfile, rabundfile, sabundfile, namefile, groupfile, orderfile, fastafile, treefile, sharedfile, line, label, randomtree, groups, cutoff, format, precision, method, fileroot, iters, jumble, freq, calc, abund, step, form, sorted, trump, soft, hard, scale, countends, processors, candidatefile, search, ksize, align, match, size, mismatch, gapopen, gapextend, minLength, maxLength, startPos, endPos, maxAmbig, maxHomoPolymer;
static GlobalData* _uniqueInstance;
+++ /dev/null
-/*
- * readclustal.cpp
- * Mothur
- *
- * Created by Thomas Ryabin on 4/24/09.
- * Copyright 2009 Schloss Lab UMASS Amherst. All rights reserved.
- *
- */
-
-#include "readclustal.h"
-#include <iostream>
-#include <fstream>
-
-/*******************************************************************************/
-ReadClustal::ReadClustal(string file) : ReadSeqs(file){
- try {
- }
- catch(exception& e) {
- cout << "Standard Error: " << e.what() << " has occurred in the ReadTree class Function ReadTree. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
- exit(1);
- }
- catch(...) {
- cout << "An unknown error has occurred in the ReadTree class function ReadTree. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
- exit(1);
- }
-}
-/*******************************************************************************/
-ReadClustal::~ReadClustal(){
-// for(int i = 0; i < sequencedb.getNumSeqs(); i++)
-// delete sequencedb.get(i);
-}
-/*******************************************************************************/
-void ReadClustal::read() {
- string temp;
- string name;
- string sequence;
- string firstName = "";
- for(int i = 0; i < 6; i++)
- filehandle >> temp;
-
- int count = 0;
- int numSeqs = 0;
- int lastSeqLength = 0;
- bool firstDone = false;
-
- while(!filehandle.eof()) {
- filehandle >> name;
- if(numSeqs != 0) {
- if(count == numSeqs)
- count = 0;
- }
- else if(!firstDone && firstName.compare("") == 0)
- firstName = name;
- else if(!firstDone && firstName.compare(name) == 0) {
- numSeqs = count;
- firstDone = true;
- count = 0;
- }
-
- if(name.find_first_of("*") == -1) {
- filehandle >> sequence;
- lastSeqLength = sequence.length();
- if(!firstDone) {
- Sequence newSeq(name, sequence);
- sequencedb.add(newSeq);
- }
- else
- sequencedb.set(count, sequencedb.get(count).getUnaligned() + sequence);
-
- count++;
- }
- }
- if(count == 1)
- sequencedb.set(0, sequencedb.get(0).getUnaligned().substr(0, sequencedb.get(0).getUnaligned().length() - lastSeqLength));
-
- filehandle.close();
-}
-
-/*********************************************************************************/
-SequenceDB* ReadClustal::getDB() {
- return &sequencedb;
-}
+++ /dev/null
-#ifndef READCLUSTAL_H
-#define READCLUSTAL_H
-
-/*
- * readclustal.h
- * Mothur
- *
- * Created by Thomas Ryabin on 4/24/09.
- * Copyright 2009 Schloss Lab UMASS Amherst. All rights reserved.
- *
- */
-
-#include "readseqs.h"
-#include "globaldata.hpp"
-#include "sequencedb.h"
-#include "mothur.h"
-
-/**********************************************************************************/
-
-class ReadClustal : public ReadSeqs {
-
- public:
- ReadClustal(string);
- ~ReadClustal();
- void read();
- SequenceDB* getDB();
-};
-
-#endif
\ No newline at end of file
+++ /dev/null
-/*
- * readfasta.cpp
- * Mothur
- *
- * Created by Thomas Ryabin on 4/21/09.
- * Copyright 2009 Schloss Lab UMASS Amherst. All rights reserved.
- *
- */
-
-#include "readfasta.h"
-#include <iostream>
-#include <fstream>
-
-/*******************************************************************************/
-ReadFasta::ReadFasta(string file) : ReadSeqs(file) {}
-/*******************************************************************************/
-ReadFasta::~ReadFasta(){
- //for(int i = 0; i < sequencedb.getNumSeqs(); i++)
- //delete sequencedb.get(i);
-}
-/*******************************************************************************/
-void ReadFasta::read() {
- try {
- /*string name = "";
- string sequence = "";
- string temp;
- int count = 0;
-
- while(!filehandle.eof()){
- if(count == 0)
- filehandle >> temp;
- if(temp.substr(0,1).compare(">") == 0) {
- if(count != 0) {
- Sequence newSequence(name, sequence);
- sequencedb.add(newSequence);
- sequence = "";
- }
- else
- count++;
- name = temp.substr(1,temp.length()-1);
- }
- else {
- sequence += temp;
- }
-
- filehandle >> temp;
- gobble(filehandle);
-
- if(filehandle.eof())
- sequence += temp;
-
- }
- Sequence newSequence(name, sequence);
- sequencedb.add(newSequence); */
-
- string name, sequence, line;
- sequence = "";
- int c;
- string temp;
-
-
- //read through file
- while ((c = filehandle.get()) != EOF) {
- name = ""; sequence = "";
- //is this a name
- if (c == '>') {
- name = readName(filehandle);
- sequence = readSequence(filehandle);
- }else { cout << "Error fasta in your file. Please correct." << endl; }
-
- //input sequence info into sequencedb
- Sequence newSequence(name, sequence);
- sequencedb.add(newSequence);
-
- //takes care of white space
- gobble(filehandle);
- }
-
- filehandle.close();
- }
- catch(exception& e) {
- cout << "Standard Error: " << e.what() << " has occurred in the ReadFasta class Function read. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
- exit(1);
- }
- catch(...) {
- cout << "An unknown error has occurred in the ReadFasta class function read. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
- exit(1);
- }
-}
-
-/*********************************************************************************/
-SequenceDB* ReadFasta::getDB() {
- return &sequencedb;
-}
-/*******************************************************************************/
-string ReadFasta::readName(ifstream& in) {
- try{
- string name = "";
- int c;
- string temp;
-
- while ((c = in.get()) != EOF) {
- //if c is not a line return
- if (c != 10) {
- name += c;
- }else { break; }
- }
-
- return name;
- }
- catch(exception& e) {
- cout << "Standard Error: " << e.what() << " has occurred in the ReadFasta class Function readName. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
- exit(1);
- }
- catch(...) {
- cout << "An unknown error has occurred in the ReadFasta class function readName. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
- exit(1);
- }
-}
-
-/*******************************************************************************/
-string ReadFasta::readSequence(ifstream& in) {
- try{
- string sequence = "";
- string line;
- int pos, c;
-
- while (!in.eof()) {
- //save position in file in case next line is a new name.
- pos = in.tellg();
- line = "";
- in >> line;
- //if you are at a new name
- if (line[0] == '>') {
- //put file pointer back since you are now at a new name
- in.seekg(pos, ios::beg);
- c = in.get(); //because you put it back to a newline char
- break;
- }else { sequence += line; }
- }
-
- return sequence;
- }
- catch(exception& e) {
- cout << "Standard Error: " << e.what() << " has occurred in the ReadFasta class Function readSequence. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
- exit(1);
- }
- catch(...) {
- cout << "An unknown error has occurred in the ReadFasta class function readSequence. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
- exit(1);
- }
-}
-/*******************************************************************************/
-
+++ /dev/null
-#ifndef READFASTA_H
-#define READFASTA_H
-
-/*
- * readfasta.h
- * Mothur
- *
- * Created by Thomas Ryabin on 4/21/09.
- * Copyright 2009 Schloss Lab UMASS Amherst. All rights reserved.
- *
- */
-
-#include "readseqs.h"
-#include "globaldata.hpp"
-#include "sequencedb.h"
-#include "mothur.h"
-
-/**********************************************************************************/
-
-class ReadFasta : public ReadSeqs {
-
- public:
- ReadFasta(string);
- ~ReadFasta();
- void read();
- SequenceDB* getDB();
- private:
- string readName(ifstream&);
- string readSequence(ifstream&);
-
-};
-
-#endif
\ No newline at end of file
+++ /dev/null
-#ifndef READNEXUSALN_H
-#define READNEXUSALN_H
-
-/*
- * readnexusaln.h
- * Mothur
- *
- * Created by Thomas Ryabin on 4/22/09.
- * Copyright 2009 Schloss Lab UMASS Amherst. All rights reserved.
- *
- */
-
-#include "globaldata.hpp"
-#include "sequencedb.h"
-//#include "utilities.hpp"
-
-/**********************************************************************************/
-
-class ReadNexus {
-
- public:
- ReadNexus(string);
- ~ReadNexus();
- void read();
-
- private:
- GlobalData* globaldata;
- string nexusFile;
- ifstream filehandle;
- SequenceDB sequencedb;
- int readOk; // readOk = 0 means success, readOk = 1 means error(s).
-
-
-};
-
-#endif
\ No newline at end of file
+++ /dev/null
-#ifndef READSEQS_H
-#define READSEQS_H
-
-/*
- * readseqs.h
- * Mothur
- *
- * Created by Thomas Ryabin on 5/11/09.
- * Copyright 2009Schloss Lab UMASS Amherst. All rights reserved.
- *
- */
-
-#include "globaldata.hpp"
-#include "sequencedb.h"
-#include "mothur.h"
-
-/**********************************************************************************/
-
-class ReadSeqs {
-
- public:
- ReadSeqs(string);
- ~ReadSeqs();
- virtual void read();
- virtual SequenceDB* getDB();
-
- protected:
- GlobalData* globaldata;
- string seqFile;
- ifstream filehandle;
- SequenceDB sequencedb;
- int readOk; // readOk = 0 means success, readOk = 1 means error(s).
-};
-
-#endif
+++ /dev/null
-/*
- * readphylip.cpp
- * Mothur
- *
- * Created by Thomas Ryabin on 4/24/09.
- * Copyright 2009 Schloss Lab UMASS Amherst. All rights reserved.
- *
- */
-
-#include "readseqsphylip.h"
-#include <iostream>
-#include <fstream>
-
-/*******************************************************************************/
-bool ReadPhylip::isSeq(string seq) {
- string validChars[] = {"A","G","C","T","U","N","-"};
-
- for(int i = 0; i < seq.length(); i++) {
- bool valid = false;
- string c = seq.substr(i,1);
- for(int k = 0; k < 7; k++)
- if(c.compare(validChars[k]) == 0) {
- valid = true;
- k = 7;
- }
- if(!valid)
- return false;
- }
-
- return true;
-}
-
-/*******************************************************************************/
-ReadPhylip::ReadPhylip(string file) : ReadSeqs(file) { }
-/*******************************************************************************/
-ReadPhylip::~ReadPhylip(){
-// for(int i = 0; i < sequencedb.getNumSeqs(); i++)
-// delete sequencedb.get(i);
-}
-/*******************************************************************************/
-void ReadPhylip::read() {
- string temp;
- string name;
- string sequence;
-
- int count = 0;
- int letterCount = 0;
- int numCols = 0;
- filehandle >> temp;
- int numSeqs = atoi(temp.c_str());
- filehandle >> temp;
- int numLetters = atoi(temp.c_str());
-
- bool firstDone = false;
- bool last = false;
- filehandle >> name;
-
- while(!filehandle.eof()) {
- if(!firstDone) {
- sequence = "";
- if(count == 0) {
- filehandle >> temp;
- while(isSeq(temp)) {
- sequence += temp;
- numCols++;
- filehandle >> temp;
- }
- letterCount += sequence.length();
- }
- else {
- for(int i = 0; i < numCols; i++) {
- filehandle >> temp;
- sequence += temp;
- }
- if(count < numSeqs-1)
- filehandle >> temp;
- }
- Sequence newSeq(name, sequence);
- sequencedb.add(newSeq);
- if(count < numSeqs-1)
- name = temp;
- }
- else {
- sequence = "";
- for(int i = 0; i < numCols; i++) {
- filehandle >> temp;
- sequence += temp;
- if(count == 0)
- letterCount += temp.length();
- if(letterCount == numLetters && count == 0) {
- numCols = i + 1;
- i = numCols;
- }
- }
- if(!(last && count == 0))
- sequencedb.set(count, sequencedb.get(count).getUnaligned() + sequence);
- if(letterCount == numLetters && count == 0)
- last = true;
- }
-
- count++;
-
- if(count == numSeqs) {
- firstDone = true;
- count = 0;
- }
- }
- filehandle.close();
-}
-
-/*********************************************************************************/
-SequenceDB* ReadPhylip::getDB() {
- return &sequencedb;
-}
*/
#include "screenseqscommand.h"
+#include "sequence.hpp"
//***************************************************************************************************************
#include "mothur.h"
#include "command.hpp"
#include "globaldata.hpp"
-#include "readfasta.h"
-#include "readnexus.h"
-#include "readclustal.h"
-#include "readseqsphylip.h"
-
class ScreenSeqsCommand : public Command {
*/
#include "seqsummarycommand.h"
+#include "sequence.hpp"
//***************************************************************************************************************
#include "mothur.h"
#include "command.hpp"
#include "globaldata.hpp"
-#include "readfasta.h"
-#include "readnexus.h"
-#include "readclustal.h"
-#include "readseqsphylip.h"
+
class SeqSummaryCommand : public Command {
/***********************************************************************/
SequenceDB::SequenceDB() {}
+/***********************************************************************/
+//the clear function free's the memory
+SequenceDB::~SequenceDB() { clear(); }
/***********************************************************************/
SequenceDB::SequenceDB(int newSize) {
- data.resize(newSize);
+ data.resize(newSize, NULL);
}
/***********************************************************************/
-SequenceDB::SequenceDB(ifstream&) {}
+SequenceDB::SequenceDB(ifstream& filehandle) {
+ try{
+ string name, sequence, line;
+ sequence = "";
+ int c;
+ string temp;
+
+
+ //read through file
+ while ((c = filehandle.get()) != EOF) {
+ name = ""; sequence = "";
+ //is this a name
+ if (c == '>') {
+ name = readName(filehandle);
+ sequence = readSequence(filehandle);
+ }else { cout << "Error fasta in your file. Please correct." << endl; }
+
+ //input sequence info into sequencedb
+ Sequence* newSequence = new Sequence(name, sequence);
+ data.push_back(newSequence);
+
+ //takes care of white space
+ gobble(filehandle);
+ }
+
+ filehandle.close();
+
+ }
+ catch(exception& e) {
+ cout << "Standard Error: " << e.what() << " has occurred in the SequenceDB class Function SequenceDB. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+ exit(1);
+ }
+ catch(...) {
+ cout << "An unknown error has occurred in the SequenceDB class function SequenceDB. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+ exit(1);
+ }
+}
+/*******************************************************************************/
+string SequenceDB::readName(ifstream& in) {
+ try{
+ string name = "";
+ int c;
+ string temp;
+
+ while ((c = in.get()) != EOF) {
+ //if c is not a line return
+ if (c != 10) {
+ name += c;
+ }else { break; }
+ }
+
+ return name;
+ }
+ catch(exception& e) {
+ cout << "Standard Error: " << e.what() << " has occurred in the SequenceDB class Function readName. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+ exit(1);
+ }
+ catch(...) {
+ cout << "An unknown error has occurred in the SequenceDB class function readName. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+ exit(1);
+ }
+}
+
+/*******************************************************************************/
+string SequenceDB::readSequence(ifstream& in) {
+ try{
+ string sequence = "";
+ string line;
+ int pos, c;
+
+ while (!in.eof()) {
+ //save position in file in case next line is a new name.
+ pos = in.tellg();
+ line = "";
+ in >> line;
+ //if you are at a new name
+ if (line[0] == '>') {
+ //put file pointer back since you are now at a new name
+ in.seekg(pos, ios::beg);
+ c = in.get(); //because you put it back to a newline char
+ break;
+ }else { sequence += line; }
+ }
+
+ return sequence;
+ }
+ catch(exception& e) {
+ cout << "Standard Error: " << e.what() << " has occurred in the SequenceDB class Function readSequence. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+ exit(1);
+ }
+ catch(...) {
+ cout << "An unknown error has occurred in the SequenceDB class function readSequence. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+ exit(1);
+ }
+}
/***********************************************************************/
/***********************************************************************/
void SequenceDB::set(int index, string newUnaligned) {
- Sequence newSeq(data[index].getName(), newUnaligned);
- data[index] = newSeq;
+ try {
+ if (data[index] != NULL) { delete data[index]; } //free memory
+
+ Sequence* newSeq = new Sequence(data[index]->getName(), newUnaligned);
+ data[index] = newSeq;
+ }
+ catch(exception& e) {
+ cout << "Standard Error: " << e.what() << " has occurred in the SequenceDB class Function set. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+ exit(1);
+ }
+ catch(...) {
+ cout << "An unknown error has occurred in the SequenceDB class function set. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+ exit(1);
+ }
}
/***********************************************************************/
-void SequenceDB::set(int index, Sequence newSeq) {
- data[index] = newSeq;
+void SequenceDB::set(int index, Sequence* newSeq) {
+ try {
+ if (data[index] != NULL) { delete data[index]; } //free memory
+ data[index] = newSeq;
+ }
+ catch(exception& e) {
+ cout << "Standard Error: " << e.what() << " has occurred in the SequenceDB class Function set. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+ exit(1);
+ }
+ catch(...) {
+ cout << "An unknown error has occurred in the SequenceDB class function set. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+ exit(1);
+ }
}
/***********************************************************************/
-Sequence SequenceDB::get(int index) {
+Sequence* SequenceDB::get(int index) {
return data[index];
}
/***********************************************************************/
-void SequenceDB::changeSize(int newSize) {
- data.resize(newSize);
+void SequenceDB::resize(int newSize) {
+ try {
+ int size = data.size();
+
+ for (int i = size; i > newSize; i--) { delete data[i]; }
+ data.resize(newSize);
+ }
+ catch(exception& e) {
+ cout << "Standard Error: " << e.what() << " has occurred in the SequenceDB class Function resize. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+ exit(1);
+ }
+ catch(...) {
+ cout << "An unknown error has occurred in the SequenceDB class function resize. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+ exit(1);
+ }
}
/***********************************************************************/
void SequenceDB::clear() {
- data.clear();
+ try {
+ for (int i = 0; i < data.size(); i++) { delete data[i]; }
+ data.clear();
+ }
+ catch(exception& e) {
+ cout << "Standard Error: " << e.what() << " has occurred in the SequenceDB class Function clear. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+ exit(1);
+ }
+ catch(...) {
+ cout << "An unknown error has occurred in the SequenceDB class function clear. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+ exit(1);
+ }
}
/***********************************************************************/
/***********************************************************************/
void SequenceDB::print(ostream& out) {
- for(int i = 0; i < data.size(); i++)
- data[i].printSequence(out);
+ try {
+ for(int i = 0; i < data.size(); i++) {
+ data[i]->printSequence(out);
+ }
+ }
+ catch(exception& e) {
+ cout << "Standard Error: " << e.what() << " has occurred in the SequenceDB class Function print. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+ exit(1);
+ }
+ catch(...) {
+ cout << "An unknown error has occurred in the SequenceDB class function print. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+ exit(1);
+ }
}
/***********************************************************************/
-void SequenceDB::add(Sequence newSequence) {
+void SequenceDB::push_back(Sequence* newSequence) {
try {
data.push_back(newSequence);
}
catch(exception& e) {
- cout << "Standard Error: " << e.what() << " has occurred in the RAbundVector class Function push_back. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+ cout << "Standard Error: " << e.what() << " has occurred in the SequenceDB class Function add. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
exit(1);
}
catch(...) {
- cout << "An unknown error has occurred in the RAbundVector class function push_back. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
+ cout << "An unknown error has occurred in the SequenceDB class function add. Please contact Pat Schloss at pschloss@microbio.umass.edu." << "\n";
exit(1);
}
-}
\ No newline at end of file
+}
+
+/***********************************************************************/
+
SequenceDB();
SequenceDB(int); //makes data that size
SequenceDB(ifstream&); //reads file to fill data
-// ~SequenceDB(); //loops through data and delete each sequence
+ SequenceDB(const SequenceDB& sdb) : data(sdb.data) {};
+ ~SequenceDB(); //loops through data and delete each sequence
int getNumSeqs();
void set(int, string); //unaligned - should also set length
- void set(int, Sequence); //unaligned - should also set length
- Sequence get(int); //returns sequence name at that location
- void add(Sequence); //adds unaligned sequence
- void changeSize(int); //resizes data
+ void set(int, Sequence*); //unaligned - should also set length
+ Sequence* get(int); //returns sequence name at that location
+ void push_back(Sequence*); //adds unaligned sequence
+ void resize(int); //resizes data
void clear(); //clears data - remeber to loop through and delete the sequences inside or you will have a memory leak
int size(); //returns datas size
void print(ostream&); //loops through data using sequence class print
private:
- vector<Sequence> data;
+ vector<Sequence*> data;
+ string readName(ifstream&);
+ string readSequence(ifstream&);
};
string filterseqsArray[] = {"fasta", "trump", "soft", "hard", "vertical"};
commandParameters["filter.seqs"] = addParameters(filterseqsArray, sizeof(filterseqsArray)/sizeof(string));
- string summaryseqsArray[] = {"fasta","phylip","clustal","nexus"};
+ string summaryseqsArray[] = {"fasta"};
commandParameters["summary.seqs"] = addParameters(summaryseqsArray, sizeof(summaryseqsArray)/sizeof(string));
string screenseqsArray[] = {"fasta", "start", "end", "maxambig", "maxhomop", "minlength", "maxlength", "name", "group"};