main() { int b[100]; printf("%d %d\n" , a ,b[55] ); aho( b ); }
int main (){ char t[MAXS]; char texto[MAXT]; int N; scanf("%d", &N); for (int i = 0; i < MAX; i++) indice[i].clear(); cnt = 1; memset (sig, 0, sizeof (sig)); for (int i = 0; i < N; i++){ scanf("%s", t); add (t, i); } aho(); scanf("%s", texto); busca (texto); return 0; }
void testRCInsertAcAutomaton() { PointerACAutomaton<KmerAffect> aho(true); aho.insert("ACAGTC", "V", true, 0, "##-##"); aho.build_failure_functions(); // Will insert AC-GT → ACAGT, ACCGT, ACGGT, ACTGT // and CA-TC → CAATC, CACTC, CAGTC, CATTC // plus the revcomps: // Will insert GA-TG → GAATG, GACTG, GAGTG, GATTG // and AC-GT → ACAGT, ACCGT, ACGGT, ACTGT pointer_state<KmerAffect> *state = aho.goto_state("ACCGT"); TAP_TEST_EQUAL(state->informations.size(), 1, TEST_AC_GET, ""); TAP_TEST_EQUAL(state->informations.front(), AFFECT_AMBIGUOUS, TEST_AC_GET, ""); TAP_TEST(state->is_final, TEST_AC_FINAL, ""); TAP_TEST(! aho.goto_state("CAAT")->is_final, TEST_AC_FINAL, ""); TAP_TEST(aho.goto_state("CAAT")->informations.size() == 1, TEST_AC_GET, ""); TAP_TEST(aho.goto_state("CAAT")->informations.front() == AFFECT_UNKNOWN, TEST_AC_GET, ""); TAP_TEST(aho.goto_state("GAGTG")->informations.front() == AFFECT_V_BWD, TEST_AC_GET, ""); TAP_TEST(aho.goto_state("GAGTG")->is_final, TEST_AC_FINAL, ""); TAP_TEST(aho.goto_state("GAGTG")->transitions[A] == aho.goto_state("GA"), TEST_AC_TRANSITIONS, ""); vector<KmerAffect> results = aho.getResults("ACCGTgaatgCATTCA"); vector<KmerAffect> expected = {AFFECT_AMBIGUOUS, AFFECT_UNKNOWN, AFFECT_UNKNOWN, AFFECT_UNKNOWN, AFFECT_UNKNOWN, AFFECT_V_BWD, AFFECT_UNKNOWN, AFFECT_UNKNOWN, AFFECT_UNKNOWN, AFFECT_UNKNOWN, AFFECT_V, AFFECT_UNKNOWN, AFFECT_UNKNOWN, AFFECT_UNKNOWN, AFFECT_UNKNOWN, AFFECT_UNKNOWN }; TAP_TEST(results.size() == expected.size(), TEST_AC_GET_RESULTS, ""); TAP_TEST(results == expected, TEST_AC_GET_RESULTS, ""); }
int main (int argc, char **argv) { findPatternFlag = 0; std::string patternFile = "", patternStr = ""; int c, color_flag = 0, help_flag = 0, edit_flag = 0, pattern_flag = 0, emax; while (1) { static struct option long_options[] = { {"help", no_argument, 0, 'h'}, {"edit", required_argument, 0, 'e'}, {"pattern", required_argument, 0, 'p'}, {"color", no_argument, 0, 'c'}, {0, 0, 0, 0} }; // getopt_long guarda o indice da opcao aqui int option_index = 0; c = getopt_long (argc, argv, "che:p:", long_options, &option_index); // detecta o fim das opcoes if (c == -1) { break; } switch (c) { case 'c': color_flag = 1; break; case 'h': help_flag = 1; break; case 'e': emax = atoi(optarg); edit_flag = 1; break; case 'p': // optarg eh o argumento da option; patternFile = std::string(optarg); pattern_flag = 1; break; default: abort(); } } if (pattern_flag) { // pegando os padroes do arquivo wildcard = glob(patternFile); for(std::vector<std::string>::iterator itPF = wildcard.begin(); itPF != wildcard.end(); ++itPF) { getPatterns(*itPF); } } for (int i = 1; i < argc; i++) { if(!equalsToOptions(argv[i])) { if((pattern_flag == 0) && (patternStr.compare("") == 0)) { // nao achou a patternFlag e pattern continua vazio patternStr = std::string(argv[i]); } else { /* um pouco mais lento que o normal, mas ja garante o caso de wildcards */ wildcard = glob(std::string(argv[i])); for(int w = 0; w < wildcard.size(); w++) { textFiles.push_back(wildcard[w]); } } } else { // pula o proximo ja que toda opt tem argumento, exceto a color if (!(((tracoc.compare(argv[i])) == 0) || ((color.compare(argv[i])) == 0))) { i++; } } } // se o usuario n tiver utilizado -h, --help if(!help_flag) { // percorrendo pelo vector de arquivos texto for(std::vector<std::string>::iterator it = textFiles.begin() ; it != textFiles.end(); ++it) { // pegando o texto dentro do arquivo std::string file_string; char tab2[1024]; strcpy(tab2, (*it).c_str()); std::ifstream myfile (tab2); if (myfile.is_open()) { FsmAho fsmAho; Boyer_Moore bm_in; while (!myfile.eof()) { getline (myfile,file_string); // caso seja -e, --edit if(edit_flag) { bool ret = false; if(pattern_flag) { for (std::set<std::string>::iterator itP = patterns_set.begin(); itP != patterns_set.end(); ++itP) { if (color_flag) { std::vector<int> sell_ret = sellers(file_string, *itP, emax); if (sell_ret.size() > 0){ printColorResultAho(sell_ret, file_string); break; } } else { if(sellers_bool(file_string, *itP, emax)) { printf("%s\n", file_string.c_str()); break; } } } } else { if(color_flag){ std::vector<int> sell_ret = sellers(file_string, patternStr, emax); if(sell_ret.size() > 0) printColorResultAho(sell_ret, file_string); } else { if(sellers_bool(file_string, patternStr, emax)) { printf("%s\n", file_string.c_str()); } } } } // caso seja -p, --patterns else if(pattern_flag) { if(fsmAho.g.size() == 0){ fsmAho = returnFsmAho(patterns_set); } if(color_flag) { std::vector<int> aho_r = aho_c(file_string, fsmAho); if(aho_r.size() > 0) { printColorResultAho(aho_r, file_string); } } else { if(aho(file_string, fsmAho)) printf("%s\n", file_string.c_str()); } } // caso nao seja --edit else { if(!bm_in.isInitialized()) { bm_in.init(patternStr, patternStr.length()); } if (color_flag) { std::vector<int> bm_r = bm_in.search_c(file_string, patternStr); if(bm_r.size() > 0) printColorResult(bm_r, file_string, patternStr); } else { if(bm_in.search(file_string, patternStr)) { printf("%s\n", file_string.c_str()); } } } } myfile.close(); } else { printf("Unable to open text file\n"); } } } else { // opcao -h, --help foi escolhida showHelp(); } exit (0); }
int main() { aho(65536); return 0; }
/* This test check the integrity of the getMultiResults function in AbstractACAutomaton class and its inherited classes. */ void testGetMultiResults(){ map<KmerAffect,int> results; PointerACAutomaton<KmerAffect> aho(false); const string errorOccurence = "KmerAffect doesn't have the good number of occurences."; const string errorSize = "Map has too many Kmers."; seqtype seq = "TTTTAATTAAGGGGCTACCCCCAATGTCCGTGGAGCTCTGGGGGGTTA"; affect_t affect[10]; seqtype seqs[10]; char c = 'a'; for(int i = 0; i < 10; ++i){ affect[i].c = c; c++; } seqs[0] = "AGCTCT"; seqs[1] = "TTTT"; seqs[2] = "AATT"; seqs[3] = "CGTGG"; seqs[4] = "CAATGTC"; seqs[5] = "AGGG"; seqs[6] = "GGGG"; seqs[7] = "TTAA"; seqs[8] = "GCTAC"; seqs[9] = "CCCC"; for(int i = 0;i < 10; ++i){ aho.insert(seqs[i], KmerAffect(affect[i])); } aho.build_failure_functions(); results = aho.getMultiResults(seq); /* Best situation: every sequences is found at least once in automaton. */ TAP_TEST(results.size() <= 11, TEST_AC_OCCURENCES, errorSize); TAP_TEST_EQUAL(results.at(aho.get(seqs[0])), 1, TEST_AC_OCCURENCES, errorOccurence); TAP_TEST_EQUAL(results.at(aho.get(seqs[1])), 1, TEST_AC_OCCURENCES, errorOccurence); TAP_TEST_EQUAL(results.at(aho.get(seqs[2])), 1, TEST_AC_OCCURENCES, errorOccurence); TAP_TEST_EQUAL(results.at(aho.get(seqs[3])), 1, TEST_AC_OCCURENCES, errorOccurence); TAP_TEST_EQUAL(results.at(aho.get(seqs[4])), 1, TEST_AC_OCCURENCES, errorOccurence); TAP_TEST_EQUAL(results.at(aho.get(seqs[5])), 1, TEST_AC_OCCURENCES, errorOccurence); TAP_TEST_EQUAL(results.at(aho.get(seqs[6])), 4, TEST_AC_OCCURENCES, errorOccurence); TAP_TEST_EQUAL(results.at(aho.get(seqs[7])), 2, TEST_AC_OCCURENCES, errorOccurence); TAP_TEST_EQUAL(results.at(aho.get(seqs[8])), 1, TEST_AC_OCCURENCES, errorOccurence); TAP_TEST_EQUAL(results.at(aho.get(seqs[9])), 2, TEST_AC_OCCURENCES, errorOccurence); /* Situation: Only one K-mer is in the sequence, appearing once. */ seqtype seq2 = "AAAAAAAAAAAAAAAAAATTCAAAAAAAAA"; results = aho.getMultiResults(seq2); TAP_TEST(results.size() <= 2, TEST_AC_OCCURENCES, errorSize); TAP_TEST_EQUAL(results.at(aho.get(seqs[2])), 1, TEST_AC_OCCURENCES, errorOccurence); /* Situation: Only one K-mer is the sequence, appearing many times. */ seqtype seq3 = "GCTACGCTACGCTACGCTACGCTA"; results = aho.getMultiResults(seq3); TAP_TEST(results.size() <= 2, TEST_AC_OCCURENCES, errorSize); TAP_TEST_EQUAL(results.at(aho.get(seqs[8])), 4, TEST_AC_OCCURENCES, errorOccurence); /* Situation: No K-mer appear in the sequence. */ seqtype seq4 = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; results = aho.getMultiResults(seq4); TAP_TEST(results.size() <= 1, TEST_AC_OCCURENCES, errorSize); /* If there is K-mers in automaton doesn't match the sequence, the map must return only unknown K-mers. */ pair<KmerAffect, int> singleResult = *(results.begin()); KmerAffect unknownKmerAffect = singleResult.first; TAP_TEST_EQUAL(unknownKmerAffect, AFFECT_UNKNOWN, TEST_AC_OCCURENCES, "Unknown Kmer not found"); }
int main() { int b=AA*2; aho(); }
void B::bbho(){ aho(); }
void bho(){ aho(); }
int main() { aho( "aho" ); }