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 + -
显示快捷键?