cav_function.cpp
来自「ncbi源码」· C++ 代码 · 共 472 行 · 第 1/2 页
CPP
472 行
ERR_POST(Error << "slave should be unaligned at alnLoc " << alnLoc << " row " << (i+1)); return false; } } else { // aligned master if (!IsAligned(slaveChar)) { ERR_POST(Error << "slave should be aligned at alnLoc " << alnLoc << " row " << (i+1)); return false; } if (currentSlaveLoc != alignment->masterToSlave[currentMasterLoc]) { ERR_POST(Error << "wrong slave residue aligned to master at alnLoc " << alnLoc << " row " << (i+1)); return false; } } } } // check seequence lengths if (masterLoc != alignment->master->sequenceString.size() - 1 || slaveLoc != alignment->slave->sequenceString.size() - 1) { ERR_POST(Error << "bad sequence lengths at row " << (i+1)); return false; } } return true;}END_NCBI_SCOPE// leave the main function outside the NCBI namespace, just in case that might// cause any problems when linking it to C code...USING_NCBI_SCOPE;int CAV_DisplayMultiple( const void *asnDataBlock, unsigned int options, unsigned int paragraphWidth, double conservationThreshhold, const char *title, int nFeatures, const AlignmentFeature *features){ return CAV_DisplayMultiple(asnDataBlock, options, paragraphWidth, conservationThreshhold, title, nFeatures, features, NULL, NULL);}int CAV_DisplayMultiple( const void *asnDataBlock, unsigned int options, unsigned int paragraphWidth, double conservationThreshhold, const char *title, int nFeatures, const AlignmentFeature *alnFeatures, CNcbiOstream *outputStream, CNcbiOstream *diagnosticStream){ // make sure C++ output streams are sync'ed with C's stdio IOS_BASE::sync_with_stdio(true); // set up output streams (send all diagnostic messages to a different stream) CNcbiOstream *outStream; if (outputStream) outStream = outputStream; else outStream = &NcbiCout; if (diagnosticStream) SetDiagStream(diagnosticStream); else SetDiagStream(&NcbiCerr); if (options & CAV_DEBUG) SetDiagPostLevel(defaultDiagPostLevel = eDiag_Info); // show all messages else SetDiagPostLevel(defaultDiagPostLevel = eDiag_Error); // show only errors // check option consistency if (options & CAV_CONDENSED && !(options & CAV_TEXT || options & CAV_HTML)) { ERR_POST(Error << "Cannot do condensed display except with text/HTML output"); return CAV_ERROR_BAD_PARAMS; } if (options & CAV_FASTA_LOWERCASE && !(options & CAV_FASTA)) { ERR_POST(Error << "Cannot do fasta_lc option except with FASTA output"); return CAV_ERROR_BAD_PARAMS; } if (options & CAV_HTML_HEADER && !(options & CAV_HTML)) { ERR_POST(Error << "Cannot do HTML header without HTML output"); return CAV_ERROR_BAD_PARAMS; } // load input data into an input stream if (!asnDataBlock) { ERR_POST(Critical << "NULL asnDataBlock parameter"); return CAV_ERROR_BAD_ASN; } CNcbiIstrstream asnIstrstream(static_cast<const char*>(asnDataBlock), kMax_Int); // load asn data block const SeqEntryList *seqs; const SeqAnnotList *alns; int retval = LoadASNFromIstream(asnIstrstream, &seqs, &alns); if (retval != CAV_SUCCESS) { ERR_POST(Critical << "Couldn't get sequence and alignment ASN data"); return retval; } auto_ptr<const SeqEntryList> sequencesASN(seqs); auto_ptr<const SeqAnnotList> alignmentsASN(alns); // process asn data, then free it auto_ptr<SequenceSet> sequenceSet(new SequenceSet(*(sequencesASN.get()))); if (!sequenceSet.get() || sequenceSet->Status() != CAV_SUCCESS) { ERR_POST(Critical << "Error processing sequence data"); return sequenceSet->Status(); } auto_ptr<AlignmentSet> alignmentSet(new AlignmentSet(sequenceSet.get(), *(alignmentsASN.get()))); if (!alignmentSet.get() || alignmentSet->Status() != CAV_SUCCESS) { ERR_POST(Critical << "Error processing alignment data"); return alignmentSet->Status(); } sequencesASN.reset(); alignmentsASN.reset(); // create the alignment display structure auto_ptr<AlignmentDisplay> display(new AlignmentDisplay(sequenceSet.get(), alignmentSet.get())); if (!display.get() || display->Status() != CAV_SUCCESS) { ERR_POST(Critical << "Error creating alignment display"); return display->Status(); } // do verification if (options & CAV_DEBUG) { if (!VerifyAlignmentData(alignmentSet.get(), display.get())) { ERR_POST(Critical << "AlignmentDisplay failed verification"); return CAV_ERROR_DISPLAY; } else { ERR_POST(Info << "AlignmentDisplay passed verification"); } } // display alignment with given parameters ERR_POST(Info << "writing output..."); int from = (options & CAV_LEFTTAILS) ? 0 : display->GetFirstAlignedLoc(), to = (options & CAV_RIGHTTAILS) ? display->GetWidth()-1 : display->GetLastAlignedLoc(); if (options & CAV_SHOW_IDENTITY) conservationThreshhold = AlignmentDisplay::SHOW_IDENTITY; if (options & CAV_TEXT || options & CAV_HTML) { if (options & CAV_CONDENSED) retval = display->DumpCondensed(*outStream, options, from, to, paragraphWidth, conservationThreshhold, title, nFeatures, alnFeatures); else retval = display->DumpText(*outStream, options, from, to, paragraphWidth, conservationThreshhold, title, nFeatures, alnFeatures); } else if (options & CAV_FASTA) { retval = display->DumpFASTA(from, to, paragraphWidth, ((options & CAV_FASTA_LOWERCASE) > 0), *outStream); }// if (outStream != &NcbiCout) delete outStream; if (retval != CAV_SUCCESS) { ERR_POST(Error << "Error dumping display to output"); return retval; } return CAV_SUCCESS;}/** ---------------------------------------------------------------------------* $Log: cav_function.cpp,v $* Revision 1000.2 2004/06/01 19:41:19 gouriano* PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.4** Revision 1.4 2004/05/21 21:42:51 gorelenk* Added PCH ncbi_pch.hpp** Revision 1.3 2004/03/15 18:51:27 thiessen* prefer prefix vs. postfix ++/-- operators** 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/03/19 19:04:12 thiessen* move again** Revision 1.2 2003/03/19 16:06:28 thiessen* add <memory>** Revision 1.1 2003/03/19 05:33:43 thiessen* move to src/app/cddalignview** Revision 1.11 2003/03/18 22:35:06 thiessen* add C++ version of function that takes streams for output** Revision 1.10 2003/02/03 17:52:03 thiessen* move CVS Log to end of file** Revision 1.9 2003/01/21 18:01:07 thiessen* add condensed alignment display** Revision 1.8 2002/11/08 19:38:11 thiessen* add option for lowercase unaligned in FASTA** Revision 1.7 2002/02/08 19:53:17 thiessen* add annotation to text/HTML displays** Revision 1.6 2001/05/17 15:01:41 lavr* Typos corrected** Revision 1.5 2001/03/02 01:19:24 thiessen* add FASTA output** Revision 1.4 2001/02/15 19:23:44 thiessen* add identity coloring** Revision 1.3 2001/02/14 16:06:10 thiessen* add block and conservation coloring to HTML display** Revision 1.2 2001/01/29 23:55:10 thiessen* add AlignmentDisplay verification** Revision 1.1 2001/01/29 18:13:34 thiessen* split into C-callable library + main**/
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?