Program that runs and searches the COVID19 genome
static DNATrie gTrie;
int main(int argc, char const* argv[])
{
FILE* gfp = NULL;
char readBuf[2048] = {0};
std::vector<GenomeArgument> genArgs;
if (argc < 3) {
usage_print();
std::exit(1);
}
// test make sure file can be opened
gfp = std::fopen(argv[1], "r");
if (gfp == NULL) {
fprintf(stderr, "ERR: Genome file at '%s' cannot be opened.\n", argv[1]);
std::exit(2);
}
GenomeArgument::populate(argv + 2, argc - 2, genArgs);
for (std::vector<GenomeArgument>::iterator it = genArgs.begin(); it != genArgs.end(); it++) {
gTrie << it->seq;
size_t sizeToRead = it->sSize;
if (sizeToRead >= 2048) {
std::fprintf(stderr, "The genome argument '%s' is too large to search for.\n", it->seq);
std::exit(3);
}
if (searchedSizes.find(sizeToRead) == searchedSizes.end()) {
while (fgets(readBuf, sizeToRead + 1, gfp) != NULL) {
gTrie << readBuf;
}
std::rewind(gfp);
searchedSizes.insert(sizeToRead);
}
it->check(gTrie);
std::printf("The genome sequence '%s' appears in COVID-19 %ld times\n", it->seq, it->fSize);
}
return 0;
}