}
catch(exception& e) {
- errorOut(e, "KmerDB", "KmerDB");
+ m->errorOut(e, "KmerDB", "KmerDB");
exit(1);
}
}
/**************************************************************************************************/
+KmerDB::KmerDB() : Database() {}
+/**************************************************************************************************/
KmerDB::~KmerDB(){}
return topMatches;
}
catch(exception& e) {
- errorOut(e, "KmerDB", "findClosestSequences");
+ m->errorOut(e, "KmerDB", "findClosestSequences");
exit(1);
}
}
}
catch(exception& e) {
- errorOut(e, "KmerDB", "generateDB");
+ m->errorOut(e, "KmerDB", "generateDB");
exit(1);
}
count++;
}
catch(exception& e) {
- errorOut(e, "KmerDB", "addSequence");
+ m->errorOut(e, "KmerDB", "addSequence");
exit(1);
}
}
}
catch(exception& e) {
- errorOut(e, "KmerDB", "readKmerDB");
+ m->errorOut(e, "KmerDB", "readKmerDB");
+ exit(1);
+ }
+}
+
+/**************************************************************************************************/
+int KmerDB::getCount(int kmer) {
+ try {
+ if (kmer < 0) { return 0; } //if user gives negative number
+ else if (kmer > maxKmer) { return 0; } //or a kmer that is bigger than maxkmer
+ else { return kmerLocations[kmer].size(); } // kmer is in vector range
+ }
+ catch(exception& e) {
+ m->errorOut(e, "KmerDB", "getCount");
exit(1);
}
}
+/**************************************************************************************************/
+vector<int> KmerDB::getSequencesWithKmer(int kmer) {
+ try {
+
+ vector<int> seqs;
+
+ if (kmer < 0) { } //if user gives negative number
+ else if (kmer > maxKmer) { } //or a kmer that is bigger than maxkmer
+ else { seqs = kmerLocations[kmer]; }
+
+ return seqs;
+ }
+ catch(exception& e) {
+ m->errorOut(e, "KmerDB", "getSequencesWithKmer");
+ exit(1);
+ }
+}
+#ifdef USE_MPI
+/**************************************************************************************************/
+int KmerDB::MPISend(int receiver) {
+ try {
+
+ //send kmerSize - int
+ MPI_Send(&kmerSize, 1, MPI_INT, receiver, 2001, MPI_COMM_WORLD);
+
+ return 0;
+ }
+ catch(exception& e) {
+ m->errorOut(e, "KmerDB", "MPISend");
+ exit(1);
+ }
+}
+/**************************************************************************************************/
+int KmerDB::MPIRecv(int sender) {
+ try {
+ MPI_Status status;
+
+ //receive kmerSize - int
+ MPI_Recv(&kmerSize, 1, MPI_INT, sender, 2001, MPI_COMM_WORLD, &status);
+
+ //set maxKmer
+ int power4s[14] = { 1, 4, 16, 64, 256, 1024, 4096, 16384, 65536, 262144, 1048576, 4194304, 16777216, 67108864 };
+ count = 0;
+ maxKmer = power4s[kmerSize];
+ kmerLocations.resize(maxKmer+1);
+
+ return 0;
+ }
+ catch(exception& e) {
+ m->errorOut(e, "KmerDB", "MPIRecv");
+ exit(1);
+ }
+}
+#endif
+/**************************************************************************************************/
+
/**************************************************************************************************/
+
+