if(globaldata->getFastaFile() == "") { cout << "You must enter a fasta formatted file" << endl; }
trump = globaldata->getTrump()[0];
- vertical =
+// vertical =
// readSeqs->read();
// db = readSeqs->getDB();
// numSeqs = db->size();
void FilterSeqsCommand::doHard() {
-// string hardName = globaldata->getHard();
-// string hardFilter = "";
-//
-// ifstream fileHandle;
-// openInputFile(hardName, fileHandle);
-//
-// fileHandle >> hardFilter;
-//
-// if(hardFilter.length() != filter.length()){
-// cout << "The hard filter is not the same length as the alignment: Hard filter will not be applied." << endl;
-// }
-// else{
-// filter = hardFilter;
-// }
+ string hardName = globaldata->getHard();
+ string hardFilter = "";
+
+ ifstream fileHandle;
+ openInputFile(hardName, fileHandle);
+
+ fileHandle >> hardFilter;
+
+ if(hardFilter.length() != filter.length()){
+ cout << "The hard filter is not the same length as the alignment: Hard filter will not be applied." << endl;
+ }
+ else{
+ filter = hardFilter;
+ }
}
/**************************************************************************************/
-void FilterSeqsCommand::doTrump() {
+void FilterSeqsCommand::doTrump(Sequence seq) {
- for(int i = 0; i < numSeqs; i++) {
- string curAligned = db->get(i).getAligned();;
-
- for(int j = 0; j < alignmentLength; j++) {
- if(curAligned[j] == trump){
- filter[j] = '0';
- }
- }
- }
+// for(int i = 0; i < numSeqs; i++) {
+// string curAligned = db->get(i).getAligned();;
+//
+// for(int j = 0; j < alignmentLength; j++) {
+// if(curAligned[j] == trump){
+// filter[j] = '0';
+// }
+// }
+// }
}
/**************************************************************************************/
-void FilterSeqsCommand::doVertical() {
+void FilterSeqsCommand::doVertical(Sequence seq) {
// vector<int> counts(alignmentLength, 0);
//
/**************************************************************************************/
-void FilterSeqsCommand::doSoft() {
+void FilterSeqsCommand::doSoft(Sequence seq) {
// int softThreshold = numSeqs * (float)atoi(globaldata->getSoft().c_str()) / 100.0;
//
int FilterSeqsCommand::execute() {
try {
-
ifstream inFASTA;
openInputFile(globaldata->getFastaFile(), inFASTA);
- Sequence currSequence(inFASTA);
- alignmentLength = currSequence.getAlignLength();
-
- //while
-
-
- if(globaldata->getHard().compare("") != 0) { doHard(); } // has to be applied first!
- if(globaldata->getTrump().compare("") != 0) { doTrump(); }
- if(isTrue(globaldata->getVertical())) { doVertical(); }
- if(globaldata->getSoft().compare("") != 0) { doSoft(); }
-
-
-
-
-
-
+ Sequence testSeq(inFASTA);
+ alignmentLength = testSeq.getAlignLength();
+ inFASTA.seekg(0);
+ int numSeqs = 0;
+
+ if(globaldata->getHard().compare("") != 0) { doHard(); }
+ else { filter = string(alignmentLength, '1'); }
+ while(!inFASTA.eof()){
+ Sequence seq(inFASTA);
+ if(globaldata->getTrump().compare("") != 0) { doTrump(seq); }
+ if(isTrue(globaldata->getVertical()) == 1) { doVertical(seq); }
+// if(globaldata->getSoft().compare("") != 0) { doSoft(seq); }
+ numSeqs++;
+ }
ofstream outfile;
string filterFile = getRootName(globaldata->inputFileName) + "filter";
string filteredFasta = getRootName(globaldata->inputFileName) + "filter.fasta";
openOutputFile(filteredFasta, outfile);
- for(int i=0;i<numSeqs;i++){
- string curAligned = db->get(i).getAligned();
- outfile << '>' << db->get(i).getName() << endl;
- for(int j=0;j<alignmentLength;j++){
- if(filter[j] == '1'){
- outfile << curAligned[j];
- }
- }
- outfile << endl;
- }
- outfile.close();
+// for(int i=0;i<numSeqs;i++){
+// string curAligned = db->get(i).getAligned();
+// outfile << '>' << db->get(i).getName() << endl;
+// for(int j=0;j<alignmentLength;j++){
+// if(filter[j] == '1'){
+// outfile << curAligned[j];
+// }
+// }
+// outfile << endl;
+// }
+// outfile.close();
int filteredLength = 0;
for(int i=0;i<alignmentLength;i++){