Beispiel #1
0
int GBKernelComputation::calc()
{
  // First find the skeleton
  for (int i = 0; i < gb.length(); i++) new_pairs(i);

  // Debug code
  GBMatrix *mm = new GBMatrix(G);
  for (int p = 0; p < syzygies.length(); p++)
    mm->append(GR->gbvector_copy(syzygies[p]));
  buffer o;
  Matrix *m = mm->to_matrix();
  if (M2_gbTrace >= 5)
    {
      o << "skeleton = " << newline;
      m->text_out(o);
      emit(o.str());
    }

  // Sort the skeleton now?

  // Now reduce each one of these elements
  for (int j = 0; j < syzygies.length(); j++)
    {
      gbvector *v = s_pair(syzygies[j]);
      reduce(v, syzygies[j]);
    }
  return COMP_DONE;
}
  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);
    }
  }