jweinst1
3/12/2020 - 3:17 AM

Program that runs and searches the COVID19 genome

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;
}