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

📄 asn2flat.cpp

📁 ncbi源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    }    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 + -