Exemple #1
0
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;
}
Exemple #3
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);
}
Exemple #5
0
int main()
{
	aho(65536);

	return 0;
}
Exemple #6
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");
}
Exemple #7
0
int main() {
    int b=AA*2;
    aho();
}
Exemple #8
0
void B::bbho(){
    aho();
}
Exemple #9
0
 void bho(){
     aho();
 }
Exemple #10
0
int main() {
    aho( "aho" );
}