Beispiel #1
0
 void read_HMM_spec(size_t &no_states, size_t &alphabet_size, std::istream &in) {
   read_token_or_exit(in, "no_states");
   no_states = read_or_exit<size_t>(in, "number of states");
   
   read_token_or_exit(in, "alphabet_size");
   alphabet_size = read_or_exit<size_t>(in, "number of observables");
 }
  void Forwarder::read_data_structure_from_stream(std::ifstream &in) {
    read_token_or_exit(in, "orig_alphabet_size");
    orig_alphabet_size = read_or_exit<size_t>(in, "original alphabet size");

    read_token_or_exit(in, "orig_seq_length");
    orig_seq_length = read_or_exit<size_t>(in, "original alphabet size");

    read_token_or_exit(in, "nStates2alphabet_size");
    while(!read_token_or_tell(in, "symbol2pair")) {
      size_t no_states = read_or_exit<size_t>(in, "no_states");
      nStates2alphabet_size[no_states] = read_or_exit<size_t>(in, "alphabet_size");
    }
    
    for(size_t i = orig_alphabet_size; i < nStates2alphabet_size.begin()->second; ++i) {
      unsigned pair_symbol  = read_or_exit<unsigned>(in, "pair symbol");
      unsigned left_symbol  = read_or_exit<unsigned>(in, "left symbol");
      unsigned right_symbol = read_or_exit<unsigned>(in, "right symbol");
      symbol2pair[pair_symbol] = s_pair(left_symbol, right_symbol);
    }
  }
Beispiel #3
0
  void read_HMM(Matrix &result_pi, Matrix &result_A, Matrix &result_B, std::istream &in) {
    size_t no_states;
    size_t alphabet_size;
    read_HMM_spec(no_states, alphabet_size, in);
      
    read_token_or_exit(in, "pi");
    result_pi.reset(no_states, 1);
    for(size_t i = 0; i < no_states; ++i)
      result_pi(i, 0) = read_or_exit<double>(in, "initial probability");

    read_token_or_exit(in, "A");
    result_A.reset(no_states, no_states);
    for(size_t from = 0; from < no_states; ++from) {
      for(size_t to = 0; to < no_states; ++to)
	result_A(from, to) = read_or_exit<double>(in, "transition probability");
    }
      
    read_token_or_exit(in, "B");
    result_B.reset(no_states, alphabet_size);
    for(size_t i = 0; i < no_states; ++i) {
      for(size_t ob = 0; ob < alphabet_size; ++ob)
	result_B(i, ob) = read_or_exit<double>(in, "emission probability");
    }
  }