/// Overloaded method to attempt to read non-FASTA input types virtual CRef<CSeq_entry> ReadOneSeq(ILineErrorListener * pMessageListener) { const string line = NStr::TruncateSpaces_Unsafe(*++GetLineReader()); if ( !line.empty() && isalnum(line.data()[0]&0xff) ) { try { CRef<CSeq_id> id(new CSeq_id(line, (CSeq_id::fParse_AnyRaw | CSeq_id::fParse_ValidLocal))); if (id->IsLocal() && !NStr::StartsWith(line, "lcl|") ) { // Expected to throw an exception. id.Reset(new CSeq_id(line)); } CRef<CBioseq> bioseq(x_CreateBioseq(id)); CRef<CSeq_entry> retval(new CSeq_entry()); retval->SetSeq(*bioseq); return retval; } catch (const CSeqIdException& e) { if (NStr::Find(e.GetMsg(), "Malformatted ID") != NPOS) { // This is probably just plain fasta, so just // defer to CFastaReader } else { throw; } } catch (const exception&) { throw; } catch (...) { // in case of other exceptions, just defer to CFastaReader } } // end if ( !line.empty() ... // If all fails, fall back to parent's implementation GetLineReader().UngetLine(); return CFastaReader::ReadOneSeq(pMessageListener); }
CRef<CDense_seg> CAlnVec::CreateConsensus(int& consensus_row, const CSeq_id& consensus_id) const { CRef<CBioseq> bioseq(new CBioseq); CRef<CDense_seg> ds = CreateConsensus(consensus_row, *bioseq, consensus_id); // add bioseq to the scope CRef<CSeq_entry> entry(new CSeq_entry()); entry->SetSeq(*bioseq); GetScope().AddTopLevelSeqEntry(*entry); return ds; }
void SequenceTable::addSequences(CSeq_entry& seqEntry) { if (seqEntry.IsSet()) { list< CRef< CSeq_entry > >& seqSet = seqEntry.SetSet().SetSeq_set(); list< CRef< CSeq_entry > >::iterator it = seqSet.begin(); for (; it != seqSet.end(); it++) addSequences(*(*it)); } else { CRef< CBioseq > bioseq(&(seqEntry.SetSeq())); addSequence(bioseq); } }