genbank_formatter.cpp

来自「ncbi源码」· C++ 代码 · 共 757 行 · 第 1/2 页

CPP
757
字号
    Wrap(l, "AUTHORS", auth, eSubp);}void CGenbankFormatter::x_Consortium(list<string>& l, const CReferenceItem& ref, CBioseqContext& ctx) const{    Wrap(l, "CONSRTM", ref.GetConsortium(), eSubp);}void CGenbankFormatter::x_Title(list<string>& l, const CReferenceItem& ref, CBioseqContext& ctx) const{    string title = ref.GetTitle();    if ( NStr::EndsWith(title, ".") ) {        title.erase(title.length() - 1);    }        Wrap(l, "TITLE",   title,   eSubp);}void CGenbankFormatter::x_Journal(list<string>& l, const CReferenceItem& ref, CBioseqContext& ctx) const{    string journal;    x_FormatRefJournal(journal, ref);    Wrap(l, "JOURNAL", journal, eSubp);}void CGenbankFormatter::x_Medline(list<string>& l, const CReferenceItem& ref, CBioseqContext& ctx) const{    if ( ref.GetMUID() != 0 ) {        Wrap(l, GetWidth(), "MEDLINE", NStr::IntToString(ref.GetMUID()), eSubp);    }}void CGenbankFormatter::x_Pubmed(list<string>& l, const CReferenceItem& ref, CBioseqContext& ctx) const{    if ( ref.GetPMID() != 0 ) {        Wrap(l, " PUBMED", NStr::IntToString(ref.GetPMID()), eSubp);    }}void CGenbankFormatter::x_Remark(list<string>& l, const CReferenceItem& ref, CBioseqContext& ctx) const{    Wrap(l, "REMARK", ref.GetRemark(), eSubp);}/////////////////////////////////////////////////////////////////////////////// COMMENTvoid CGenbankFormatter::FormatComment(const CCommentItem& comment, IFlatTextOStream& text_os){    list<string> l;    if ( !comment.IsFirst() ) {        Wrap(l, kEmptyStr, comment.GetComment(), eSubp);    } else {        Wrap(l, "COMMENT", comment.GetComment());    }    text_os.AddParagraph(l);}/////////////////////////////////////////////////////////////////////////////// FEATURES// Fetures Headervoid CGenbankFormatter::FormatFeatHeader(const CFeatHeaderItem& fh, IFlatTextOStream& text_os){    list<string> l;    Wrap(l, "FEATURES", "Location/Qualifiers", eFeatHead);    text_os.AddParagraph(l);}void CGenbankFormatter::FormatFeature(const CFeatureItemBase& f, IFlatTextOStream& text_os){     CConstRef<CFlatFeature> feat = f.Format();    list<string>        l;    Wrap(l, feat->GetKey(), feat->GetLoc().GetString(), eFeat);    ITERATE (vector<CRef<CFormatQual> >, it, feat->GetQuals()) {        string qual = '/' + (*it)->GetName(), value = (*it)->GetValue();        switch ((*it)->GetStyle()) {        case CFormatQual::eEmpty:            value = qual;            qual.erase();            break;        case CFormatQual::eQuoted:            qual += "=\"";  value += '"';            break;        case CFormatQual::eUnquoted:            qual += '=';            break;        }        // Call NStr::Wrap directly to avoid unwanted line breaks right        // before the start of the value (in /translation, e.g.)        NStr::Wrap(value, GetWidth(), l,                   /*DoHTML() ? NStr::fWrap_HTMLPre : */0, GetFeatIndent(),                   GetFeatIndent() + qual);    }    text_os.AddParagraph(l);}/////////////////////////////////////////////////////////////////////////////// BASE COUNTvoid CGenbankFormatter::FormatBasecount(const CBaseCountItem& bc, IFlatTextOStream& text_os){    list<string> l;    CNcbiOstrstream bc_line;    bc_line.setf(IOS_BASE::right, IOS_BASE::adjustfield);    bc_line        << setw(7) << bc.GetA() << " a"        << setw(7) << bc.GetC() << " c"        << setw(7) << bc.GetG() << " g"        << setw(7) << bc.GetT() << " t";    if ( bc.GetOther() > 0 ) {        bc_line << setw(7) << bc.GetOther() << " others";    }    Wrap(l, "BASE COUNT", CNcbiOstrstreamToString(bc_line));    text_os.AddParagraph(l);}/////////////////////////////////////////////////////////////////////////////// SEQUENCEvoid CGenbankFormatter::FormatSequence(const CSequenceItem& seq, IFlatTextOStream& text_os){    list<string> l;    CNcbiOstrstream seq_line;    const CSeqVector& vec = seq.GetSequence();    TSeqPos base_count = seq.GetFrom();    CSeqVector::const_iterator iter = vec.begin();    while ( iter ) {        seq_line.setf(IOS_BASE::right, IOS_BASE::adjustfield);        seq_line << setw(9) << base_count;        for ( TSeqPos count = 0; count < 60  &&  iter; ++count, ++iter, ++base_count ) {            if ( count % 10 == 0 ) {                seq_line << ' ';            }            seq_line << (char)tolower(*iter);        }        seq_line << '\n';    }    NStr::Split(CNcbiOstrstreamToString(seq_line), "\n", l);    text_os.AddParagraph(l);}/////////////////////////////////////////////////////////////////////////////// DBSOURCEvoid CGenbankFormatter::FormatDBSource(const CDBSourceItem& dbs, IFlatTextOStream& text_os){    list<string> l;    if ( !dbs.GetDBSource().empty() ) {        string tag = "DBSOURCE";        ITERATE (list<string>, it, dbs.GetDBSource()) {            Wrap(l, tag, *it);            tag.erase();        }        if ( !l.empty() ) {            text_os.AddParagraph(l);        }    }        }/////////////////////////////////////////////////////////////////////////////// WGSvoid CGenbankFormatter::FormatWGS(const CWGSItem& wgs, IFlatTextOStream& text_os){    string tag;    switch ( wgs.GetType() ) {    case CWGSItem::eWGS_Projects:        tag = "WGS";        break;    case CWGSItem::eWGS_ScaffoldList:        tag = "WGS_SCAFLD";        break;    case CWGSItem::eWGS_ContigList:        tag = "WGS_CONTIG";        break;    default:        return;    }    list<string> l;    if ( wgs.GetFirstID() == wgs.GetLastID() ) {        Wrap(l, tag, wgs.GetFirstID());    } else {        Wrap(l, tag, wgs.GetFirstID() + "-" + wgs.GetLastID());    }    text_os.AddParagraph(l);}/////////////////////////////////////////////////////////////////////////////// PRIMARYvoid CGenbankFormatter::FormatPrimary(const CPrimaryItem& primary, IFlatTextOStream& text_os){    list<string> l;    Wrap(l, "PRIMARY", primary.GetString());    text_os.AddParagraph(l);}/////////////////////////////////////////////////////////////////////////////// GENOMEvoid CGenbankFormatter::FormatGenome(const CGenomeItem& genome, IFlatTextOStream& text_os){    // !!!}/////////////////////////////////////////////////////////////////////////////// CONTIGvoid CGenbankFormatter::FormatContig(const CContigItem& contig, IFlatTextOStream& text_os){    list<string> l;    string assembly = CFlatSeqLoc(contig.GetLoc(), *contig.GetContext(),         CFlatSeqLoc::eType_assembly).GetString();    Wrap(l, "CONTIG", assembly);    text_os.AddParagraph(l);}/////////////////////////////////////////////////////////////////////////////// ORIGINvoid CGenbankFormatter::FormatOrigin(const COriginItem& origin, IFlatTextOStream& text_os){    list<string> l;    if ( origin.GetOrigin().empty() ) {        l.push_back("ORIGIN      ");    } else {        Wrap(l, "ORIGIN", origin.GetOrigin());    }    text_os.AddParagraph(l);}END_SCOPE(objects)END_NCBI_SCOPE/** ===========================================================================** $Log: genbank_formatter.cpp,v $* Revision 1000.2  2004/06/01 19:44:37  gouriano* PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.14** Revision 1.14  2004/05/21 21:42:54  gorelenk* Added PCH ncbi_pch.hpp** Revision 1.13  2004/05/06 17:53:12  shomrat* CFlatQual -> CFormatQual** Revision 1.12  2004/04/22 15:59:59  shomrat* Changes in context** Revision 1.11  2004/04/13 16:47:53  shomrat* Journal formatting moved to base class** Revision 1.10  2004/03/26 17:25:36  shomrat* fixes to reference formatting** Revision 1.9  2004/03/18 15:40:28  shomrat* Fixes to COMMENT formatting** Revision 1.8  2004/03/10 21:29:01  shomrat* Fix VERSION formatting when empty** Revision 1.7  2004/03/05 18:46:05  shomrat* fixed formatting of empty qualifier** Revision 1.6  2004/02/19 18:13:12  shomrat* Added formatting of Contig and Origin** Revision 1.5  2004/01/14 16:16:39  shomrat* removed const; using ctrl_items** Revision 1.4  2003/12/19 00:14:44  ucko* Eliminate remaining uses of LEFT and RIGHT manipulators.** Revision 1.3  2003/12/18 21:23:41  ucko* Avoid using LEFT and RIGHT manipulators lacking in GCC 2.9x.** Revision 1.2  2003/12/18 17:43:34  shomrat* context.hpp moved** Revision 1.1  2003/12/17 20:22:12  shomrat* Initial Revision (adapted from flat lib)*** ===========================================================================*/

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?