исключение ncbi C ++ (в функции GetSeqEntry ())

NCBI на windows10

Я ввожу следующую команду в командной строке и хочу получить pssm:

psiblast -in_msa 1.sequence.txt -db nr -comp_based_stats 0 -out_ascii_pssm seqpssm.txt

но я получил исключение C ++:

Error: NCBI C++ Exception:
T0 "..\..\..\..\..\..\src\objtools\readers\aln_reader.cpp", line 649: Error: ncbi::CAlnReader::GetSeqEntry() - CAlnReader::GetSeqEntry(): Seq_entry is not available until after Read() (m_Pos = 0)

1.sequence.txt:

>VACUOLARMORPHOGENESISPROTEINVAM7;SWP:P32912;PDB:1KMDA
KMSEKLRIKVDDVKINPKYVLYGVSTPNKRLYKRYSEFWKLKTRLERDVGS
TIPYDFPEKPGVLDRRWQRRYDDPEMIDERRIGLERFLNELYNDRFDSRWR
DTKIAQDFLQLSKPN

И я ищу GetSeqEntry () в строке 649

  642 CRef<CSeq_entry> CAlnReader::GetSeqEntry(const TFastaFlags fasta_flags)
643 {
644     if (m_Entry) {
645         return m_Entry;
646     } else if ( !m_ReadDone ) {
647         NCBI_THROW2(CObjReaderParseException, eFormat,
648                    "CAlnReader::GetSeqEntry(): "649                    "Seq_entry is not available until after Read()", 0);
650     }
651     m_Entry = new CSeq_entry();
652
653     CRef<CSeq_align> seq_align = GetSeqAlign(fasta_flags);
654     const CDense_seg& denseg = seq_align->GetSegs().GetDenseg();
655     _ASSERT(denseg.GetIds().size() == m_Dim);
656
657     CRef<CSeq_annot> seq_annot (new CSeq_annot);
658     seq_annot->SetData().SetAlign().push_back(seq_align);
659
660     m_Entry->SetSet().SetClass(CBioseq_set::eClass_pop_set);
661     m_Entry->SetSet().SetAnnot().push_back(seq_annot);
662
663     CBioseq_set::TSeq_set& seq_set = m_Entry->SetSet().SetSeq_set();
664
665     typedef CDense_seg::TDim TNumrow;
666     for (TNumrow row_i = 0; row_i < m_Dim; row_i++) {
667         const string& seq_str     = m_SeqVec[row_i];
668         const size_t& seq_str_len = seq_str.size();
669
670         CRef<CSeq_entry> seq_entry (new CSeq_entry);
671
672         // seq-id(s)
673         CBioseq::TId& ids = seq_entry->SetSeq().SetId();
674         ids.push_back(denseg.GetIds()[row_i]);
675 /*
676         CSeq_id::ParseFastaIds(ids, m_Ids[row_i], true);
677         if (ids.empty()) {
678             ids.push_back(CRef<CSeq_id>(new CSeq_id(CSeq_id::e_Local,
679                                                     m_Ids[row_i])));
680         }

Как я могу решить эту проблему?

0

Решение

У меня была такая же проблема с новой версией psiblast 2.8.0+

Кажется, символы для стоп-кодонов в ваших последовательностях (*, # или +) нарушают вашу способность псибластов правильно читать последовательности. Простая замена их пробелами (-), кажется, исправляет это.

sed -i -r "s/[\*\+\#]/-/g" <alignment_file>
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]