Пример #1
0
void alignSeqs(ProbabilisticModelPtr model, SequenceList seqs1, SequenceList seqs2, vector<std::string> names1, vector<std::string> names2, ostream & output, ostream & states_output)
{
    if(seqs1.size() != seqs2.size()) {
        cerr << "Both files must to have the same amount of sequences." << endl;
        exit(-1);
    }
    for(int i = 0; i < (int)seqs1.size(); i++)
    {
        Sequence s1,s2,path;
        std::stringstream aux1,aux2,aux3;
        vector<Matrix> a;
        model->pairDecodable()->viterbi(seqs1[i], seqs2[i], path, s1, s2, a);
        aux1 << names1[i] << "_" << names2[i] << "_al1" ;
        aux2 << names1[i] << "_" << names2[i] << "_al2" ;
        aux3 << names1[i] << "_" << names2[i] << "_path" ;
        SequenceEntry out1(model->alphabet());
        SequenceEntry out2(model->alphabet());
        SequenceEntry out3(model->pairDecodable()->getStateNames());
        out1.setName(aux1.str());
        out2.setName(aux2.str());
        out3.setName(aux3.str());
        out1.setSequence(s1);
        out2.setSequence(s2);
        out3.setSequence(path);
        output << out1;
        output << out2 << endl;
        states_output << out3 << endl;
    }
}
 unsigned int NRows(void) const { return sequences->size(); }