alnmrg.cpp

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

CPP
504
字号
            if (CType<CSeq_align>::Match(i)) {                m_Mix->Add(*(CType<CSeq_align>::Get(i)), m_AddFlags);            }        }    } else if (asn_type == "Seq-align-set") {        CRef<CSeq_align_set> sas(new CSeq_align_set);        in->Read(Begin(*sas), CObjectIStream::eNoFileHeader);        *binout << *sas;        for (i = Begin(*sas); i; ++i) {            if (CType<CSeq_align>::Match(i)) {                m_Mix->Add(*(CType<CSeq_align>::Get(i)), m_AddFlags);            }        }    } else if (asn_type == "Seq-annot") {        CRef<CSeq_annot> san(new CSeq_annot);        in->Read(Begin(*san), CObjectIStream::eNoFileHeader);        *binout << *san;        for (i = Begin(*san); i; ++i) {            if (CType<CSeq_align>::Match(i)) {                m_Mix->Add(*(CType<CSeq_align>::Get(i)), m_AddFlags);            }        }    } else if (asn_type == "Dense-seg") {        CRef<CDense_seg> ds(new CDense_seg);        in->Read(Begin(*ds), CObjectIStream::eNoFileHeader);        *binout << *ds;        m_Mix->Add(*ds, m_AddFlags);    } else {        cerr << "Cannot read: " << asn_type;        return;    }}void CAlnMrgApp::SetOptions(void){    CArgs args = GetArgs();    if ( args["log"] ) {        SetDiagStream( &args["log"].AsOutputFile() );    }    m_MergeFlags = 0;    m_AddFlags = 0;    if (args["gapjoin"]  &&  args["gapjoin"].AsBoolean()) {        m_MergeFlags |= CAlnMix::fGapJoin;    }    if (args["mingap"]  &&  args["mingap"].AsBoolean()) {        m_MergeFlags |= CAlnMix::fMinGap;    }    if (args["gen2est"]  &&  args["gen2est"].AsBoolean()) {        m_MergeFlags |= CAlnMix::fGen2EST | CAlnMix::fTruncateOverlaps;    }    if (args["minusstrand"]  &&  args["minusstrand"].AsBoolean()) {        m_MergeFlags |= CAlnMix::fNegativeStrand;    }    if (args["queryseqmergeonly"]  &&  args["queryseqmergeonly"].AsBoolean()) {        m_MergeFlags |= CAlnMix::fQuerySeqMergeOnly;    }    if (args["fillunaln"]  &&  args["fillunaln"].AsBoolean()) {        m_MergeFlags |= CAlnMix::fFillUnalignedRegions;    }    if (args["truncateoverlaps"]  &&  args["truncateoverlaps"].AsBoolean()) {        m_MergeFlags |= CAlnMix::fTruncateOverlaps;    }    if (args["forcetranslation"]  &&  args["forcetranslation"].AsBoolean()) {        m_AddFlags |= CAlnMix::fForceTranslation;    }    if (args["calcscore"]  &&  args["calcscore"].AsBoolean()) {        m_AddFlags |= CAlnMix::fCalcScore;    }    if (args["noobjmgr"]  &&  args["noobjmgr"].AsBoolean()) {        m_AddFlags |= CAlnMix::fDontUseObjMgr;    }}void CAlnMrgApp::PrintMergedAlignment(void){    auto_ptr<CObjectOStream> asn_out         (CObjectOStream::Open(eSerial_AsnText, cout));    *asn_out << m_Mix->GetDenseg();}void CAlnMrgApp::View4(int scrn_width){    CAlnVec av(m_Mix->GetDenseg(), GetScope());    CAlnMap::TNumrow row, nrows = av.GetNumRows();    vector<string> buffer(nrows);    vector<CAlnMap::TSeqPosList> insert_aln_starts(nrows);    vector<CAlnMap::TSeqPosList> insert_starts(nrows);    vector<CAlnMap::TSeqPosList> insert_lens(nrows);    vector<CAlnMap::TSeqPosList> scrn_lefts(nrows);    vector<CAlnMap::TSeqPosList> scrn_rights(nrows);        // Fill in the vectors for each row    for (row = 0; row < nrows; row++) {        av.GetWholeAlnSeqString            (row,             buffer[row],             &insert_aln_starts[row],             &insert_starts[row],             &insert_lens[row],             scrn_width,             &scrn_lefts[row],             &scrn_rights[row]);    }            // Visualization    TSeqPos pos = 0, aln_len = av.GetAlnStop() + 1;    do {        for (row = 0; row < nrows; row++) {            cout << av.GetSeqId(row)                 << "\t"                  << scrn_lefts[row].front()                 << "\t"                 << buffer[row].substr(pos, scrn_width)                 << "\t"                 << scrn_rights[row].front()                 << endl;            scrn_lefts[row].pop_front();            scrn_rights[row].pop_front();        }        cout << endl;        pos += scrn_width;        if (pos + scrn_width > aln_len) {            scrn_width = aln_len - pos;        }    } while (pos < aln_len);}int CAlnMrgApp::Run(void){    SetOptions();    m_Mix = new CAlnMix(GetScope());    LoadInputAlignments();    m_Mix->Merge(m_MergeFlags);    PrintMergedAlignment();    return 0;}///////////////////////////////////////////////////////////////////////////////  MAINint main(int argc, const char* argv[]){    // Execute main application function    return CAlnMrgApp().AppMain(argc, argv, 0, eDS_Default, 0);}/** ===========================================================================** $Log: alnmrg.cpp,v $* Revision 1000.3  2004/06/01 19:40:52  gouriano* PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.20** Revision 1.20  2004/05/21 21:42:51  gorelenk* Added PCH ncbi_pch.hpp** Revision 1.19  2004/01/07 17:37:35  vasilche* Fixed include path to genbank loader.* Moved split_cache application.** Revision 1.18  2003/12/22 20:28:11  ucko* Added missing call to GetScope.** Revision 1.17  2003/12/22 18:33:48  ucko* Simplify format autodetection behavior by means of Read(..., eNoFileHeader);* fixes problems observed with GCC 2.95.** Revision 1.16  2003/12/20 03:39:12  ucko* Reorder data members of CAlnMrgApp: m_Mix should follow m_ObjMgr so* it's destroyed first by default, so that the scope will no longer be* live by the time m_ObjMgr is destroyed.** Revision 1.15  2003/12/19 19:38:34  todorov* Demon creation of scope outside alnmix** Revision 1.14  2003/12/08 21:28:04  todorov* Forced Translation of Nucleotide Sequences** Revision 1.13  2003/11/20 23:58:07  todorov* Added CObjectIStream::Close before IStream::seekg** Revision 1.12  2003/09/08 20:41:42  todorov* binint fixed. binout added** Revision 1.11  2003/09/08 19:33:12  todorov* - unused var** Revision 1.10  2003/09/08 17:05:57  todorov* ability to read binary files** Revision 1.9  2003/09/04 19:05:46  todorov* Removed view. Should be optional** Revision 1.8  2003/08/20 14:43:01  todorov* Support for NA2AA Densegs** Revision 1.7  2003/07/24 16:26:09  ucko* Undouble CAlnMix:: prefix in one place.** Revision 1.6  2003/07/23 16:14:18  todorov* +trunacteoverlaps** Revision 1.5  2003/06/26 22:00:25  todorov* + fFillUnalignedRegions** Revision 1.4  2003/06/24 19:23:37  todorov* objmgr usage optional** Revision 1.3  2003/06/02 16:06:41  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.2  2003/05/15 19:09:18  todorov* Optional mixing of the query sequence only** Revision 1.1  2003/04/03 21:17:48  todorov* Adding demo projects*** ===========================================================================*/

⌨️ 快捷键说明

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