1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
//
// proteindb.cpp
// Mothur
//
// Created by Sarah Westcott on 6/3/21.
// Copyright © 2021 Schloss Lab. All rights reserved.
//
#include "proteindb.hpp"
/***********************************************************************/
ProteinDB::ProteinDB() : StorageDatabase() { }
/***********************************************************************/
//the clear function free's the memory
ProteinDB::~ProteinDB() { data.clear(); }
/***********************************************************************/
ProteinDB::ProteinDB(int newSize) : StorageDatabase() { data.resize(newSize, Protein()); }
/***********************************************************************/
ProteinDB::ProteinDB(ifstream& filehandle) : StorageDatabase() {
try{
//read through file
while (!filehandle.eof()) {
Protein newProteinSequence(filehandle); gobble(filehandle);
if (newProteinSequence.getName() != "") {
if (length == 0) { length = newProteinSequence.getAligned().size(); }
if (length != newProteinSequence.getAligned().size()) { samelength = false; }
data.push_back(newProteinSequence);
}
}
filehandle.close();
}
catch(exception& e) {
m->errorOut(e, "ProteinDB", "ProteinDB");
exit(1);
}
}
/***********************************************************************/
int ProteinDB::getNumSeqs() { return data.size(); }
/***********************************************************************/
Protein ProteinDB::getProt(int index) {
if ((index >= 0) && (index < data.size()) ) { return data[index]; }
else { m->mothurOut("[ERROR]: invalid database index, please correct.\n"); m->setControl_pressed(true); Protein p; return p; }
}
/***********************************************************************/
void ProteinDB::push_back(Protein newProteinSequence) {
try {
if (length == 0) { length = newProteinSequence.getAligned().size(); }
if (length != newProteinSequence.getAligned().size()) { samelength = false; }
data.push_back(newProteinSequence);
}
catch(exception& e) {
m->errorOut(e, "ProteinDB", "push_back");
exit(1);
}
}
/***********************************************************************/
void ProteinDB::print(string outputFileName) {
try {
ofstream out; util.openOutputFile(outputFileName, out);
for (int i = 0; i < data.size(); i++) {
data[i].printProtein(out);
}
out.close();
}
catch(exception& e) {
m->errorOut(e, "ProteinDB", "print");
exit(1);
}
}
/***********************************************************************/
|