📄 asn2flat.cpp
字号:
} m_FFGenerator->Reset(); return true;}CObjectIStream* CAsn2FlatApp::x_OpenIStream(const CArgs& args){ // determine the file serialization format. // use user specifications (if available) otherwise the defualt // is AsnText. ESerialDataFormat serial = eSerial_AsnText; if ( args["serial"] ) { const string& val = args["serial"].AsString(); if ( val == "text" ) { serial = eSerial_AsnText; } else if ( val == "binary" ) { serial = eSerial_AsnBinary; } else if ( val == "XML" ) { serial = eSerial_Xml; } } // open the input file, or standard input if no file specified. return args["i"] ? CObjectIStream::Open(args["i"].AsString(), serial) : CObjectIStream::Open(serial, cin);}CFlatFileGenerator* CAsn2FlatApp::x_CreateFlatFileGenerator(const CArgs& args){ TFormat format = x_GetFormat(args); TMode mode = x_GetMode(args); TStyle style = x_GetStyle(args); TFlags flags = x_GetFlags(args); TView view = x_GetView(args); CFlatFileConfig cfg(format, mode, style, flags, view); return new CFlatFileGenerator(cfg);}CAsn2FlatApp::TFormat CAsn2FlatApp::x_GetFormat(const CArgs& args){ const string& format = args["format"].AsString(); if ( format == "genbank" ) { return CFlatFileConfig::eFormat_GenBank; } else if ( format == "embl" ) { return CFlatFileConfig::eFormat_EMBL; } else if ( format == "ddbj" ) { return CFlatFileConfig::eFormat_DDBJ; } else if ( format == "gbseq" ) { return CFlatFileConfig::eFormat_GBSeq; } else if ( format == "ftable" ) { return CFlatFileConfig::eFormat_FTable; } else if ( format == "gff" ) { return CFlatFileConfig::eFormat_GFF; } // default return CFlatFileConfig::eFormat_GenBank;}CAsn2FlatApp::TMode CAsn2FlatApp::x_GetMode(const CArgs& args){ const string& mode = args["mode"].AsString(); if ( mode == "release" ) { return CFlatFileConfig::eMode_Release; } else if ( mode == "entrez" ) { return CFlatFileConfig::eMode_Entrez; } else if ( mode == "gbench" ) { return CFlatFileConfig::eMode_GBench; } else if ( mode == "dump" ) { return CFlatFileConfig::eMode_Dump; } // default return CFlatFileConfig::eMode_GBench;}CAsn2FlatApp::TStyle CAsn2FlatApp::x_GetStyle(const CArgs& args){ const string& style = args["style"].AsString(); if ( style == "normal" ) { return CFlatFileConfig::eStyle_Normal; } else if ( style == "segment" ) { return CFlatFileConfig::eStyle_Segment; } else if ( style == "master" ) { return CFlatFileConfig::eStyle_Master; } else if ( style == "contig" ) { return CFlatFileConfig::eStyle_Contig; } // default return CFlatFileConfig::eStyle_Normal;}CAsn2FlatApp::TFlags CAsn2FlatApp::x_GetFlags(const CArgs& args){ return args["flags"].AsInteger();}CAsn2FlatApp::TView CAsn2FlatApp::x_GetView(const CArgs& args){ const string& view = args["view"].AsString(); if ( view == "all" ) { return CFlatFileConfig::fViewAll; } else if ( view == "prot" ) { return CFlatFileConfig::fViewProteins; } else if ( view == "nuc" ) { return CFlatFileConfig::fViewNucleotides; } // default return CFlatFileConfig::fViewNucleotides;}TSeqPos CAsn2FlatApp::x_GetFrom(const CArgs& args){ return args["from"] ? static_cast<TSeqPos>(args["from"].AsInteger() - 1) : CRange<TSeqPos>::GetWholeFrom(); }TSeqPos CAsn2FlatApp::x_GetTo(const CArgs& args){ return args["to"] ? static_cast<TSeqPos>(args["to"].AsInteger() - 1) : CRange<TSeqPos>::GetWholeTo();}void CAsn2FlatApp::x_GetLocation(const CSeq_entry_Handle& entry, const CArgs& args, CSeq_loc& loc){ _ASSERT(entry); CBioseq_Handle h = x_DeduceTarget(entry); if ( !h ) { NCBI_THROW(CFlatException, eInvalidParam, "Cannot deduce target bioseq."); } TSeqPos length = h.GetInst_Length(); TSeqPos from = x_GetFrom(args); TSeqPos to = min(x_GetTo(args), length); if ( from == CRange<TSeqPos>::GetWholeFrom() && to == length ) { // whole loc.SetWhole().Assign(*h.GetSeqId()); } else { // interval loc.SetInt().SetId().Assign(*h.GetSeqId()); loc.SetInt().SetFrom(from); loc.SetInt().SetTo(to); }}// if the 'from' or 'to' flags are specified try to guess the bioseq.CBioseq_Handle CAsn2FlatApp::x_DeduceTarget(const CSeq_entry_Handle& entry){ if ( entry.IsSeq() ) { return entry.GetSeq(); } _ASSERT(entry.IsSet()); CBioseq_set_Handle bsst = entry.GetSet(); if ( !bsst.IsSetClass() ) { NCBI_THROW(CFlatException, eInvalidParam, "Cannot deduce target bioseq."); } _ASSERT(bsst.IsSetClass()); switch ( bsst.GetClass() ) { case CBioseq_set::eClass_nuc_prot: // return the nucleotide for ( CSeq_entry_CI it(entry); it; ++it ) { if ( it->IsSeq() ) { CBioseq_Handle h = it->GetSeq(); if ( h && CSeq_inst::IsNa(h.GetInst_Mol()) ) { return h; } } } break; case CBioseq_set::eClass_gen_prod_set: // return the genomic for ( CSeq_entry_CI it(bsst); it; ++it ) { if ( it->IsSeq() && it->GetSeq().GetInst_Mol() == CSeq_inst::eMol_dna ) { return it->GetSeq(); } } break; case CBioseq_set::eClass_segset: // return the segmented bioseq for ( CSeq_entry_CI it(bsst); it; ++it ) { if ( it->IsSeq() ) { return it->GetSeq(); } } break; default: break; } NCBI_THROW(CFlatException, eInvalidParam, "Cannot deduce target bioseq.");}END_NCBI_SCOPEUSING_NCBI_SCOPE;///////////////////////////////////////////////////////////////////////////////// Mainint main(int argc, const char** argv){ return CAsn2FlatApp().AppMain(argc, argv, 0, eDS_Default, 0);}/** ===========================================================================** $Log: asn2flat.cpp,v $* Revision 1000.1 2004/06/01 18:27:20 gouriano* PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.9** Revision 1.9 2004/05/21 21:41:38 gorelenk* Added PCH ncbi_pch.hpp** Revision 1.8 2004/05/19 14:48:36 shomrat* Implemented batch processing** Revision 1.7 2004/04/22 16:04:37 shomrat* Support partial region** Revision 1.6 2004/03/31 19:23:47 shomrat* name changes** Revision 1.5 2004/03/25 21:07:54 shomrat* Use handles** Revision 1.4 2004/03/05 18:51:45 shomrat* use view instead of filter** Revision 1.3 2004/02/11 22:58:26 shomrat* using flags from flag file** Revision 1.2 2004/01/20 20:41:53 ucko* Don't try to return auto_ptrs, or construct them with "=".** Revision 1.1 2004/01/14 15:03:29 shomrat* Initial Revision*** ===========================================================================*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -