qualifiers.cpp
来自「ncbi源码」· C++ 代码 · 共 730 行 · 第 1/2 页
CPP
730 行
if ( s_IsNote(flags) ) { m_Suffix = (m_Value->GetSubtype() == COrgMod::eSubtype_other ? &kEOL : &kSemicolon); if ( name != "orgmod_note" ) { x_AddFQ(q, "note", name + ": " + subname); } else { x_AddFQ(q, "note", subname); } } else { x_AddFQ(q, name, subname); }}void CFlatOrganelleQVal::Format(TFlatQuals& q, const string& name, CBioseqContext&, IFlatQVal::TFlags) const{ const string& organelle = CBioSource::GetTypeInfo_enum_EGenome()->FindName(m_Value, true); switch (m_Value) { case CBioSource::eGenome_chloroplast: case CBioSource::eGenome_chromoplast: case CBioSource::eGenome_cyanelle: case CBioSource::eGenome_apicoplast: case CBioSource::eGenome_leucoplast: case CBioSource::eGenome_proplastid: x_AddFQ(q, name, "plastid:" + organelle); break; case CBioSource::eGenome_kinetoplast: x_AddFQ(q, name, "mitochondrion:kinetoplast"); break; case CBioSource::eGenome_mitochondrion: case CBioSource::eGenome_plastid: case CBioSource::eGenome_nucleomorph: x_AddFQ(q, name, organelle); break; case CBioSource::eGenome_macronuclear: case CBioSource::eGenome_proviral: case CBioSource::eGenome_virion: x_AddFQ(q, organelle, kEmptyStr, CFormatQual::eEmpty); break; case CBioSource::eGenome_plasmid: case CBioSource::eGenome_transposon: x_AddFQ(q, organelle, kEmptyStr); break; case CBioSource::eGenome_insertion_seq: x_AddFQ(q, "insertion_seq", kEmptyStr); break; default: break; } }void CFlatPubSetQVal::Format(TFlatQuals& q, const string& name, CBioseqContext& ctx, IFlatQVal::TFlags) const{ ITERATE (vector< CRef<CReferenceItem> >, it, ctx.GetReferences()) { if ((*it)->Matches(*m_Value)) { x_AddFQ(q, name, '[' + NStr::IntToString((*it)->GetSerial()) + ']', CFormatQual::eUnquoted); } }}void CFlatSeqIdQVal::Format(TFlatQuals& q, const string& name, CBioseqContext& ctx, IFlatQVal::TFlags) const{ // XXX - add link in HTML mode string id_str; if ( m_Value->IsGi() ) { if ( m_GiPrefix ) { id_str = "GI:"; } m_Value->GetLabel(&id_str, CSeq_id::eContent); } else { id_str = m_Value->GetSeqIdString(true); } x_AddFQ(q, name, id_str);}void CFlatSubSourceQVal::Format(TFlatQuals& q, const string& name, CBioseqContext& ctx, IFlatQVal::TFlags flags) const{ string subname = m_Value->CanGetName() ? m_Value->GetName() : kEmptyStr; if ( s_StringIsJustQuotes(subname) ) { subname = kEmptyStr; } if ( s_IsNote(flags) ) { bool note = false; if ( m_Value->GetSubtype() == CSubSource::eSubtype_other ) { m_Suffix = &kEOL; note = true; } else { m_Suffix = &kSemicolon; } x_AddFQ(q, "note", note ? subname : name + ": " + subname); } else { CSubSource::TSubtype subtype = m_Value->GetSubtype(); if ( subtype == CSubSource::eSubtype_germline || subtype == CSubSource::eSubtype_rearranged || subtype == CSubSource::eSubtype_transgenic || subtype == CSubSource::eSubtype_environmental_sample ) { x_AddFQ(q, name, kEmptyStr, CFormatQual::eEmpty); } else { x_AddFQ(q, name, subname); } }}void CFlatXrefQVal::Format(TFlatQuals& q, const string& name, CBioseqContext& ctx, IFlatQVal::TFlags flags) const{ // XXX - add link in HTML mode? ITERATE (TXref, it, m_Value) { if ( !m_Quals.Empty() && x_XrefInGeneXref(**it) ) { continue; } string s((*it)->GetDb()); const CObject_id& id = (*it)->GetTag(); switch ( id.Which() ) { case CObject_id::e_Id: s += ':' + NStr::IntToString(id.GetId()); break; case CObject_id::e_Str: s += ':' + id.GetStr(); break; default: break; } x_AddFQ(q, name, s); }}bool CFlatXrefQVal::x_XrefInGeneXref(const CDbtag& dbtag) const{ if ( !m_Quals->HasQual(eFQ_gene_xref) ) { return false; } typedef TQuals::const_iterator TQCI; pair<TQCI, TQCI> gxrefs = m_Quals->GetQuals(eFQ_gene_xref); for ( TQCI it = gxrefs.first; it != gxrefs.second; ++it ) { const CFlatXrefQVal* xrefqv = dynamic_cast<const CFlatXrefQVal*>(it->second.GetPointerOrNull()); if ( xrefqv != 0 ) { ITERATE (TXref, dbt, xrefqv->m_Value) { if ( dbtag.Match(**dbt) ) { return true; } } } } return false;}void CFlatModelEvQVal::Format(TFlatQuals& q, const string& name, CBioseqContext& ctx, IFlatQVal::TFlags flags) const{ const string* method = 0; if ( m_Value->HasField("Method") ) { const CUser_field& uf = m_Value->GetField("Method"); if ( uf.GetData().IsStr() ) { method = &uf.GetData().GetStr(); } } size_t nm = 0; if ( m_Value->HasField("mRNA") ) { const CUser_field& field = m_Value->GetField("mRNA"); if ( field.GetData().IsFields() ) { ITERATE (CUser_field::C_Data::TFields, it1, field.GetData().GetFields()) { const CUser_field& uf = **it1; if ( !uf.CanGetData() || !uf.GetData().IsFields() ) { continue; } ITERATE (CUser_field::C_Data::TFields, it2, uf.GetData().GetFields()) { if ( !(*it2)->CanGetLabel() ) { continue; } const CObject_id& oid = (*it2)->GetLabel(); if ( oid.IsStr() ) { if ( oid.GetStr() == "accession" ) { ++nm; } } } } } } CNcbiOstrstream text; text << "Derived by automated computational analysis"; if ( method != 0 && !method->empty() ) { text << " using gene prediction method: " << *method; } text << "."; if ( nm > 0 ) { text << " Supporting evidence includes similarity to: " << nm << " mRNA"; if ( nm > 1 ) { text << "s"; } } x_AddFQ(q, name, CNcbiOstrstreamToString(text));}void CFlatGoQVal::Format(TFlatQuals& q, const string& name, CBioseqContext& ctx, IFlatQVal::TFlags flags) const{ _ASSERT(m_Value->GetData().IsFields()); bool is_ftable = ctx.Config().IsFormatFTable(); if ( s_IsNote(flags) ) { static const string sfx = ";"; m_Prefix = &kEOL; m_Suffix = &sfx; x_AddFQ(q, "note", name + ": " + s_GetGOText(*m_Value, is_ftable)); } else { x_AddFQ(q, name, s_GetGOText(*m_Value, is_ftable)); }}void CFlatAnticodonQVal::Format(TFlatQuals& q, const string& name, CBioseqContext& ctx, IFlatQVal::TFlags flags) const{ if ( !m_Anticodon->IsInt() || !m_Aa.empty() ) { return; } CSeq_loc::TRange range = m_Anticodon->GetTotalRange(); CNcbiOstrstream text; text << "(pos:" << range.GetFrom() + 1 << ".." << range.GetTo() + 1 << ",aa:" << m_Aa << ")"; x_AddFQ(q, name, CNcbiOstrstreamToString(text), CFormatQual::eUnquoted);}void CFlatTrnaCodonsQVal::Format(TFlatQuals& q, const string& name, CBioseqContext& ctx, IFlatQVal::TFlags flags) const{ // !!!}void CFlatProductQVal::Format(TFlatQuals& q, const string& n, CBioseqContext& ctx, TFlags) const{ // !!! /* if ( ctx.DropIllegalQuals() ) { if ( !s_LegalQualForFeature(eFQ_product, m_Subtype) */}END_SCOPE(objects)END_NCBI_SCOPE/** ===========================================================================** $Log: qualifiers.cpp,v $* Revision 1000.1 2004/06/01 19:45:20 gouriano* PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.15** Revision 1.15 2004/05/21 21:42:54 gorelenk* Added PCH ncbi_pch.hpp** Revision 1.14 2004/05/06 17:58:52 shomrat* CFlatQual -> CFormatQual** Revision 1.13 2004/04/27 15:13:16 shomrat* fixed SubSource formatting** Revision 1.12 2004/04/22 15:57:06 shomrat* Changes in context** Revision 1.11 2004/04/07 14:28:44 shomrat* Fixed GO quals formatting for FTable format** Revision 1.10 2004/03/30 20:32:53 shomrat* Fixed go and modelev qual formatting** Revision 1.9 2004/03/25 20:46:19 shomrat* implement CFlatPubSetQVal formatting** Revision 1.8 2004/03/18 15:43:27 shomrat* Fixes to quals formatting** Revision 1.7 2004/03/08 21:01:44 shomrat* GI prefix flag for Seq-id quals** Revision 1.6 2004/03/08 15:24:27 dicuccio* FIxed dereference of string pointer** Revision 1.5 2004/03/05 18:47:32 shomrat* Added qualifier classes** Revision 1.4 2004/02/11 16:55:38 shomrat* changes in formatting of OrgMod and SubSource quals** Revision 1.3 2004/01/14 16:18:07 shomrat* uncomment code** Revision 1.2 2003/12/18 17:43:35 shomrat* context.hpp moved** Revision 1.1 2003/12/17 20:24:04 shomrat* Initial Revision (adapted from flat lib)** Revision 1.4 2003/06/02 16:06:42 dicuccio* Rearranged src/objects/ subtree. This includes the following shifts:* - src/objects/asn2asn --> arc/app/asn2asn* - src/objects/testmedline --> src/objects/ncbimime/test* - src/objects/objmgr --> src/objmgr* - src/objects/util --> src/objmgr/util* - src/objects/alnmgr --> src/objtools/alnmgr* - src/objects/flat --> src/objtools/flat* - src/objects/validator --> src/objtools/validator* - src/objects/cddalignview --> src/objtools/cddalignview* In addition, libseq now includes six of the objects/seq... libs, and libmmdb* replaces the three libmmdb? libs.** Revision 1.3 2003/03/21 18:49:17 ucko* Turn most structs into (accessor-requiring) classes; replace some* formerly copied fields with pointers to the original data.** Revision 1.2 2003/03/11 15:37:51 kuznets* iterate -> ITERATE** Revision 1.1 2003/03/10 16:39:09 ucko* Initial check-in of new flat-file generator*** ===========================================================================*/
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?