dbsource_item.cpp
来自「ncbi源码」· C++ 代码 · 共 523 行 · 第 1/2 页
CPP
523 行
switch (sp.GetClass()) { case CSP_block::eClass_standard: m_DBSource.push_back("class: standard."); break; case CSP_block::eClass_prelim: m_DBSource.push_back("class: preliminary."); break; default: break; } // laid out slightly differently from the C version, but I think that's // a bug in the latter (which runs some things together) if (sp.CanGetExtra_acc() && !sp.GetExtra_acc().empty() ) { m_DBSource.push_back("extra_accessions:" + NStr::Join(sp.GetExtra_acc(), ",")); } if (sp.GetImeth()) { m_DBSource.push_back("seq starts with Met"); } if (sp.CanGetPlasnm() && !sp.GetPlasnm().empty() ) { m_DBSource.push_back("plasmid:" + NStr::Join(sp.GetPlasnm(), ",")); } if (sp.CanGetCreated()) { string s("created: "); sp.GetCreated().GetDate(&s, "%3N %D %Y"); m_DBSource.push_back(s + '.'); } if (sp.CanGetSequpd()) { string s("sequence updated: "); sp.GetSequpd().GetDate(&s, "%3N %D %Y"); m_DBSource.push_back(s + '.'); } if (sp.CanGetAnnotupd()) { string s("annotation updated: "); sp.GetAnnotupd().GetDate(&s, "%3N %D %Y"); m_DBSource.push_back(s + '.'); } if (sp.CanGetSeqref() && !sp.GetSeqref().empty() ) { list<string> xrefs; ITERATE (CSP_block::TSeqref, it, sp.GetSeqref()) { const char* s = 0; switch ((*it)->Which()) { case CSeq_id::e_Genbank: s = "genbank accession "; break; case CSeq_id::e_Embl: s = "embl accession "; break; case CSeq_id::e_Pir: s = "pir locus "; break; case CSeq_id::e_Swissprot: s = "swissprot accession "; break; case CSeq_id::e_Gi: s = "gi: "; break; case CSeq_id::e_Ddbj: s = "ddbj accession "; break; case CSeq_id::e_Prf: s = "prf accession "; break; case CSeq_id::e_Pdb: s = "pdb accession "; break; case CSeq_id::e_Tpg: s = "genbank third party accession "; break; case CSeq_id::e_Tpe: s = "embl third party accession "; break; case CSeq_id::e_Tpd: s = "ddbj third party accession "; break; default: break; } if ( s ) { string acc = (*it)->GetSeqIdString(true); xrefs.push_back(s + acc); } } if ( !xrefs.empty() ) { m_DBSource.push_back("xrefs: " + NStr::Join(xrefs, ", ")); } } if (sp.CanGetDbref() && !sp.GetDbref().empty() ) { list<string> xrefs; ITERATE (CSP_block::TDbref, it, sp.GetDbref()) { const CObject_id& tag = (*it)->GetTag(); string id = (tag.IsStr() ? tag.GetStr() : NStr::IntToString(tag.GetId())); if ((*it)->GetDb() == "MIM") { xrefs.push_back ("MIM <a href=\"" "http://www.ncbi.nlm.nih.gov/entrez/dispomim.cgi?id=" + id + "\">" + id + "</a>"); } else { xrefs.push_back((*it)->GetDb() + id); // no space(!) } } m_DBSource.push_back ("xrefs (non-sequence databases): " + NStr::Join(xrefs, ", ")); }}void CDBSourceItem::x_AddPRFBlock(CBioseqContext& ctx){ CSeqdesc_CI dsc(ctx.GetHandle(), CSeqdesc::e_Prf); if ( !dsc ) { return; } x_SetObject(*dsc); const CPRF_block& prf = dsc->GetPrf(); if (prf.CanGetExtra_src()) { const CPRF_ExtraSrc& es = prf.GetExtra_src(); if (es.CanGetHost()) { m_DBSource.push_back("host: " + es.GetHost()); } if (es.CanGetPart()) { m_DBSource.push_back("part: " + es.GetPart()); } if (es.CanGetState()) { m_DBSource.push_back("state: " + es.GetState()); } if (es.CanGetStrain()) { m_DBSource.push_back("strain: " + es.GetStrain()); } if (es.CanGetTaxon()) { m_DBSource.push_back("taxonomy: " + es.GetTaxon()); } } NON_CONST_ITERATE (list<string>, it, m_DBSource) { *it += (&*it == &m_DBSource.back() ? '.' : ';'); }}void CDBSourceItem::x_AddPDBBlock(CBioseqContext& ctx){ CSeqdesc_CI dsc(ctx.GetHandle(), CSeqdesc::e_Pdb); if ( !dsc ) { return; } x_SetObject(*dsc); const CPDB_block& pdb = dsc->GetPdb(); {{ string s("deposition: "); DateToString(pdb.GetDeposition(), s); m_DBSource.push_back(s); }} m_DBSource.push_back("class: " + pdb.GetClass()); if (!pdb.GetSource().empty() ) { m_DBSource.push_back("source: " + NStr::Join(pdb.GetSource(), ", ")); } if (pdb.CanGetExp_method()) { m_DBSource.push_back("Exp. method: " + pdb.GetExp_method()); } if (pdb.CanGetReplace()) { const CPDB_replace& rep = pdb.GetReplace(); if ( !rep.GetIds().empty() ) { m_DBSource.push_back ("ids replaced: " + NStr::Join(pdb.GetSource(), ", ")); } string s("replacement date: "); DateToString(rep.GetDate(), s); m_DBSource.push_back(s); } NON_CONST_ITERATE (list<string>, it, m_DBSource) { *it += (&*it == &m_DBSource.back() ? '.' : ';'); }}string CDBSourceItem::x_FormatDBSourceID(const CSeq_id& id) { switch ( id.Which() ) { case CSeq_id::e_Local: {{ const CObject_id& oi = id.GetLocal(); return (oi.IsStr() ? oi.GetStr() : NStr::IntToString(oi.GetId())); }} case CSeq_id::e_Gi: {{ return "gi: " + NStr::IntToString(id.GetGi()); }} case CSeq_id::e_Pdb: {{ const CPDB_seq_id& pdb = id.GetPdb(); string s("pdb: "), sep; if ( !pdb.GetMol().Get().empty() ) { s += "molecule " + pdb.GetMol().Get(); sep = ","; } if (pdb.GetChain() > 0) { s += sep + "chain " + NStr::IntToString(pdb.GetChain()); sep = ","; } if (pdb.CanGetRel()) { s += sep + "release "; DateToString(pdb.GetRel(), s); sep = ","; } return s; }} default: {{ const CTextseq_id* tsid = id.GetTextseq_Id(); if ( !tsid ) { return kEmptyStr; } string s, sep, comma; switch (id.Which()) { case CSeq_id::e_Embl: s = "embl "; comma = ","; break; case CSeq_id::e_Other: s = "REFSEQ: "; break; case CSeq_id::e_Swissprot: s = "swissprot: "; comma = ","; break; case CSeq_id::e_Pir: s = "pir: "; break; case CSeq_id::e_Prf: s = "prf: "; break; default: break; } if ( tsid->CanGetName() ) { s += "locus " + tsid->GetName(); sep = " "; } else { comma.erase(); } if (tsid->CanGetAccession()) { string acc = tsid->GetAccession(); if (tsid->CanGetVersion()) { acc += '.' + NStr::IntToString(tsid->GetVersion()); } s += comma + sep + "accession " + acc; sep = " "; } if (tsid->CanGetRelease()) { s += sep + "release " + tsid->GetRelease(); } if (id.IsSwissprot()) { s += ';'; } return s; }} }}END_SCOPE(objects)END_NCBI_SCOPE/** ===========================================================================** $Log: dbsource_item.cpp,v $* Revision 1000.1 2004/06/01 19:44:02 gouriano* PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.6** Revision 1.6 2004/05/21 21:42:54 gorelenk* Added PCH ncbi_pch.hpp** Revision 1.5 2004/04/22 15:55:04 shomrat* Changes in context** Revision 1.4 2004/03/25 20:36:31 shomrat* Use handles** Revision 1.3 2004/03/16 19:07:25 vasilche* Use CConstRef<CSeq_id> to store returned CConstRef<CSeq_id>.** Revision 1.2 2003/12/18 17:43:32 shomrat* context.hpp moved** Revision 1.1 2003/12/17 20:19:33 shomrat* Initial Revision (adapted from flat lib)*** ===========================================================================*/
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?