gpt4 book ai didi

c++ - ncbi C++异常(在函数GetSeqEntry()中)

转载 作者:行者123 更新时间:2023-12-03 07:25:58 26 4
gpt4 key购买 nike

Windows10上的NCBI

我在命令行中输入以下命令并想要获得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

然后在第649行中搜索GetSeqEntry()
  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 }

我怎么解决这个问题?

最佳答案

新版本的psiblast 2.8.0+存在相同的问题

序列中的终止密码(*,#或+)符号似乎破坏了psiblasts正确读取序列的能力。只需用空格(-)替换它们似乎可以解决此问题。

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

关于c++ - ncbi C++异常(在函数GetSeqEntry()中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49111632/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com