⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 alnvwr.cpp

📁 ncbi源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
        pos += screen_width;        if (pos + screen_width > aln_len) {            screen_width = aln_len - pos;        }    } while (pos < aln_len);}void CAlnMgrTestApp::View4(int scrn_width){    CAlnMap::TNumrow row, nrows = m_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++) {        m_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 = m_AV->GetAlnStop() + 1;    do {        for (row = 0; row < nrows; row++) {            cout << row                  << "\t"                 << m_AV->GetSeqId(row).AsFastaString()                 << "\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);}// print segmentsvoid CAlnMgrTestApp::View5(){    CAlnMap::TNumrow row;    for (row=0; row<m_AV->GetNumRows(); row++) {        cout << "Row: " << row << endl;        for (int seg=0; seg<m_AV->GetNumSegs(); seg++) {                        // seg            cout << "\t" << seg << ": ";            // aln coords            cout << m_AV->GetAlnStart(seg) << "-"                 << m_AV->GetAlnStop(seg) << " ";            // type            CAlnMap::TSegTypeFlags type = m_AV->GetSegType(row, seg);            if (type & CAlnMap::fSeq) {                // seq coords                cout << m_AV->GetStart(row, seg) << "-"                      << m_AV->GetStop(row, seg) << " (Seq)";            } else {                cout << "(Gap)";            }            if (type & CAlnMap::fNotAlignedToSeqOnAnchor) cout << "(NotAlignedToSeqOnAnchor)";            if (CAlnMap::IsTypeInsert(type)) cout << "(Insert)";            if (type & CAlnMap::fUnalignedOnRight) cout << "(UnalignedOnRight)";            if (type & CAlnMap::fUnalignedOnLeft) cout << "(UnalignedOnLeft)";            if (type & CAlnMap::fNoSeqOnRight) cout << "(NoSeqOnRight)";            if (type & CAlnMap::fNoSeqOnLeft) cout << "(NoSeqOnLeft)";            if (type & CAlnMap::fEndOnRight) cout << "(EndOnRight)";            if (type & CAlnMap::fEndOnLeft) cout << "(EndOnLeft)";            cout << NcbiEndl;        }    }    cout << "---------" << endl;}// print chunksvoid CAlnMgrTestApp::View6(){    CArgs args = GetArgs();    CAlnMap::TNumrow row;    CAlnMap::TSignedRange range(-1, m_AV->GetAlnStop()+1);    for (row=0; row<m_AV->GetNumRows(); row++) {        cout << "Row: " << row << endl;        //CAlnMap::TSignedRange range(m_AV->GetSeqStart(row) -1,        //m_AV->GetSeqStop(row) + 1);        CRef<CAlnMap::CAlnChunkVec> chunk_vec = m_AV->GetAlnChunks(row, range, args["cf"].AsInteger());            for (int i=0; i<chunk_vec->size(); i++) {            CConstRef<CAlnMap::CAlnChunk> chunk = (*chunk_vec)[i];            cout << "[row" << row << "|" << i << "]";            cout << chunk->GetAlnRange().GetFrom() << "-"                 << chunk->GetAlnRange().GetTo() << " ";            if (!chunk->IsGap()) {                cout << chunk->GetRange().GetFrom() << "-"                    << chunk->GetRange().GetTo();            } else {                cout << "(Gap)";            }            if (chunk->GetType() & CAlnMap::fSeq) cout << "(Seq)";            if (chunk->GetType() & CAlnMap::fNotAlignedToSeqOnAnchor) cout << "(NotAlignedToSeqOnAnchor)";            if (CAlnMap::IsTypeInsert(chunk->GetType())) cout << "(Insert)";            if (chunk->GetType() & CAlnMap::fUnalignedOnRight) cout << "(UnalignedOnRight)";            if (chunk->GetType() & CAlnMap::fUnalignedOnLeft) cout << "(UnalignedOnLeft)";            if (chunk->GetType() & CAlnMap::fNoSeqOnRight) cout << "(NoSeqOnRight)";            if (chunk->GetType() & CAlnMap::fNoSeqOnLeft) cout << "(NoSeqOnLeft)";            if (chunk->GetType() & CAlnMap::fEndOnRight) cout << "(EndOnRight)";            if (chunk->GetType() & CAlnMap::fEndOnLeft) cout << "(EndOnLeft)";            cout << NcbiEndl;        }    }    cout << "---------" << endl;}// alternative ways to get the sequencevoid CAlnMgrTestApp::View7(){    string buff;    CAlnMap::TNumseg seg;    CAlnMap::TNumrow row;    m_AV->SetGapChar('-');    m_AV->SetEndChar('.');    for (seg=0; seg<m_AV->GetNumSegs(); seg++) {        for (row=0; row<m_AV->GetNumRows(); row++) {            cout << "row " << row << ", seg " << seg << " ";            // if (m_AV->GetSegType(row, seg) & CAlnMap::fSeq) {                cout << "["                    << m_AV->GetStart(row, seg)                    << "-"                    << m_AV->GetStop(row, seg)                     << "]"                    << NcbiEndl;                for(int i=0; i<m_AV->GetLen(seg); i++) {                    cout << m_AV->GetResidue(row, m_AV->GetAlnStart(seg)+i);                }                cout << NcbiEndl;                cout << m_AV->GetSeqString(buff, row,                                           m_AV->GetStart(row, seg),                                           m_AV->GetStop(row, seg)) << NcbiEndl;                cout << m_AV->GetSegSeqString(buff, row, seg)                     << NcbiEndl;                //            } else {                //                cout << "-" << NcbiEndl;                //            }            cout << NcbiEndl;        }    }}// Demonstrate obtaining column vector in two alternative ways.// (Use numeric param n to choose alignment position)void CAlnMgrTestApp::View8(int aln_pos){    CAlnMap::TSignedRange rng;    rng.Set(aln_pos, aln_pos); // range covers only a single position        string buffer;        // obtain all individual residues    for (CAlnMap::TNumrow row=0; row<m_AV->GetNumRows(); row++) {        cout << m_AV->GetAlnSeqString(buffer, row, rng);    }    cout << NcbiEndl;        // get the column at once    string column;    column.resize(m_AV->GetNumRows());        cout << m_AV->GetColumnVector(column, aln_pos) << NcbiEndl;        // %ID    cout << m_AV->CalculatePercentIdentity(aln_pos) << NcbiEndl;}void CAlnMgrTestApp::View9(int row0, int row1){    vector<TSignedSeqPos> result;    CAlnMap::TRange aln_rng(0, m_AV->GetAlnStop()), rng0, rng1;    m_AV->GetResidueIndexMap(row0, row1, aln_rng, result, rng0, rng1);    size_t size = result.size();    cout << "(" << rng0.GetFrom() << "-" << rng0.GetTo() << ")" << endl;    cout << "(" << rng1.GetFrom() << "-" << rng1.GetTo() << ")" << endl;    for (size_t i = 0; i < size; i++) {        cout << result[i] << " ";    }    cout << endl;}//////// GetSeqPosFromAlnPosvoid CAlnMgrTestApp::GetSeqPosFromAlnPosDemo(){    cout << "["        << m_AV->GetSeqPosFromAlnPos(2, 1390, CAlnMap::eForward, false)        << "-"         << m_AV->GetSeqPosFromAlnPos(2, 1390, (CAlnMap::ESearchDirection)7, false)        << "]"        << NcbiEndl;}int CAlnMgrTestApp::Run(void){    CArgs args = GetArgs();    if ( args["log"] ) {        SetDiagStream( &args["log"].AsOutputFile() );    }    LoadDenseg();    cout << "-----" << endl;    if (args["a"]) {        m_AV->SetAnchor(args["a"].AsInteger());    }    int screen_width = args["w"].AsInteger();    int number       = args["n"].AsInteger();    int row0         = args["row0"].AsInteger();    int row1         = args["row1"].AsInteger();    m_AV->SetGapChar('-');    m_AV->SetEndChar('.');    if (args["v"]) {        switch (args["v"].AsInteger()) {        case 1: View1(); break;        case 2: View2(screen_width); break;        case 3: View3(screen_width); break;        case 4: View4(screen_width); break;        case 5: View5(); break;        case 6: View6(); break;        case 7: View7(); break;        case 8: View8(number); break;        case 9: View9(row0, row1); break;        }    }    return 0;}///////////////////////////////////////////////////////////////////////////////  MAINint main(int argc, const char* argv[]){    // Execute main application function    return CAlnMgrTestApp().AppMain(argc, argv, 0, eDS_Default, 0);}/** ===========================================================================** $Log: alnvwr.cpp,v $* Revision 1000.2  2004/06/01 19:40:58  gouriano* PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.22** Revision 1.22  2004/05/21 21:42:51  gorelenk* Added PCH ncbi_pch.hpp** Revision 1.21  2004/03/03 19:41:59  todorov* +GetResidueIndexMap** Revision 1.20  2004/02/12 22:51:27  todorov* +optinal seq-entry input file to read a local seq** Revision 1.19  2004/02/03 19:52:25  todorov* m_AV declared after m_OM so that its ref to scope is distroyed first** Revision 1.18  2004/01/16 22:11:48  ucko* Explicitly call DumpAsFasta() on Seq-ids intended to appear in FASTA format.** Revision 1.17  2004/01/07 17:37:36  vasilche* Fixed include path to genbank loader.* Moved split_cache application.** Revision 1.16  2003/12/19 19:37:26  todorov* +comments** Revision 1.15  2003/12/18 20:08:53  todorov* Demo GetColumnVector & CalculatePercentIdentity** Revision 1.14  2003/12/11 00:43:47  ucko* Fix typo in previous revision: call Close on the CObjectIStream rather* than the auto_ptr.** Revision 1.13  2003/12/10 23:58:07  todorov* Added CObjectIStream::Close before IStream::seekg** Revision 1.12  2003/12/09 16:13:34  todorov* code cleanup** Revision 1.11  2003/12/08 21:28:04  todorov* Forced Translation of Nucleotide Sequences** Revision 1.10  2003/09/26 15:30:07  todorov* +Print segments** Revision 1.9  2003/07/23 21:01:08  ucko* Revert use of (uncommitted) BLAST DB data loader.** Revision 1.8  2003/07/23 20:52:07  todorov* +width, +aln_starts for the inserts in GetWhole..** Revision 1.7  2003/07/17 22:48:17  todorov* View4 implemented in CAlnVec::GetWholeAlnSeqString** Revision 1.6  2003/07/17 21:06:44  todorov* -v is now required param** Revision 1.5  2003/07/14 20:25:18  todorov* Added another, even faster viewer** Revision 1.4  2003/07/08 19:27:46  todorov* Added an speed-optimized viewer** Revision 1.3  2003/06/04 18:20:40  todorov* read seq-submit** Revision 1.2  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.1  2003/04/03 21:17:48  todorov* Adding demo projects*** ===========================================================================*/

⌨️ 快捷键说明

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