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

📄 test_helper.cpp

📁 ncbi源码
💻 CPP
📖 第 1 页 / 共 4 页
字号:
            "TestEntry1a --------------------" << NcbiEndl;        auto_ptr<CObjectOStream>            out(CObjectOStream::Open(eSerial_AsnText, NcbiCout));        *out << *entry;    }    return *entry.Release();}/************************************************************************    1.2.1.3. Bio sequences for testing    Test entry = 1 top-level entry + 3 sub-entries    TSE        one annotation (Seq_feat), which refers to ids 12+1000i and 21+1000i    1 sub-entry        two Seq_ids: local and GI, (local id = 21+1000i)        one description        segmented sequence: references to            an interval, ( id= 11+1000i)            whole seq,   ( id= 12+1000i)            self         ( id= 21+1000i)        two annotations (Seq_feat)            both - for an interval,  local Seq_id = 11+1000i    2 sub-entry        two Seq_ids: local and GI, (local id = 22+1000i)        continuous sequence    3 sub-entry        two Seq_ids: local and GI, (local id = 23+1000i)        continuous sequence        conversion from one seq.data format to another************************************************************************/CSeq_entry& CDataGenerator::CreateTestEntry2(int index){    // create top level seq entry    CRef<CSeq_entry> entry(new CSeq_entry);    CBioseq_set& set = entry->SetSet();    // class = nucleic acid and coded proteins    set.SetClass(CBioseq_set::eClass_nuc_prot);    list< CRef<CSeq_entry> >& seq_set = set.SetSeq_set();    // Sub-entry Seq 21    {{        CRef<CSeq_entry> sub_entry(new CSeq_entry);        CBioseq& seq = sub_entry->SetSeq();        CBioseq::TId& id_list = seq.SetId();        // list of Ids (local + gi)        CRef<CSeq_id> id(new CSeq_id);        id->SetLocal().SetStr("seq"+NStr::IntToString(21+index*1000));        id_list.push_back(id);        id.Reset(new CSeq_id);        id->SetGi(21+index*1000);        id_list.push_back(id);        // Description (name)        list< CRef<CSeqdesc> >& descr1 = seq.SetDescr().Set();        CRef<CSeqdesc> desc1(new CSeqdesc);        desc1->SetName("D3 from bioseq 21-"+NStr::IntToString(index));        descr1.push_back(desc1);        // Instance (sequence data)        CSeq_inst& inst = seq.SetInst();        // representation class = segmented sequence        inst.SetRepr(CSeq_inst::eRepr_seg);        // molecule class in living organism = dna        inst.SetMol(CSeq_inst::eMol_dna);        // segments = list of Seq_locs        CSeg_ext::Tdata& seg_list = inst.SetExt().SetSeg();        // Seq_interval (gi)        CRef<CSeq_loc> loc(new CSeq_loc);        CSeq_interval& ref_loc = loc->SetInt();        ref_loc.SetId().SetGi(11+index*1000);        ref_loc.SetFrom(0);        ref_loc.SetTo(4);        seg_list.push_back(loc);        // whole sequence (gi)        loc = new CSeq_loc;        loc->SetWhole().SetGi(12+index*1000);        seg_list.push_back(loc);        // Seq_interval (gi)        loc = new CSeq_loc;        CSeq_interval& ref_loc2 = loc->SetInt();        // "simple" self-reference        ref_loc2.SetId().SetGi(21+index*1000);        ref_loc2.SetFrom(0);        ref_loc2.SetTo(9);        seg_list.push_back(loc);        // More complicated self-reference        loc = new CSeq_loc;        CSeq_interval& ref_loc3 = loc->SetInt();        ref_loc3.SetId().SetGi(21+index*1000);        ref_loc3.SetFrom(54);        ref_loc3.SetTo(60);        seg_list.push_back(loc);        inst.SetStrand(CSeq_inst::eStrand_ds);        // Annotations        list< CRef<CSeq_annot> >& annot_list = seq.SetAnnot();        CRef<CSeq_annot> annot(new CSeq_annot);        // list of features        list< CRef<CSeq_feat> >& ftable = annot->SetData().SetFtable();        {{            CRef<CSeq_feat> feat(new CSeq_feat);            // feature Id            feat->SetId().SetLocal().SetStr("F5: lcl|11");            // the specific data            CSeqFeatData& fdata = feat->SetData();            CCdregion& cdreg = fdata.SetCdregion();            cdreg.SetFrame(CCdregion::eFrame_one);            // genetic code used            list< CRef< CGenetic_code::C_E > >& gcode = cdreg.SetCode().Set();            CRef< CGenetic_code::C_E > ce(new CGenetic_code::C_E);            ce->SetId(215); // TSE=2; seq=1; feat=5            gcode.push_back(ce);            // feature location on the sequence: Seq_interval (local seq_Id)            CSeq_interval& floc = feat->SetLocation().SetInt();            floc.SetId().SetLocal().SetStr                ("seq"+NStr::IntToString(11+index*1000));            floc.SetFrom(20);            floc.SetTo(30);            // plus strand            floc.SetStrand(eNa_strand_plus);            ftable.push_back(feat);        }}        {{            CRef<CSeq_feat> feat(new CSeq_feat);            // feature Id            feat->SetId().SetLocal().SetStr("F6: gi|11");            // the specific data            CSeqFeatData& fdata = feat->SetData();            CCdregion& cdreg = fdata.SetCdregion();            cdreg.SetFrame(CCdregion::eFrame_one);            // genetic code used            list< CRef< CGenetic_code::C_E > >& gcode = cdreg.SetCode().Set();            CRef< CGenetic_code::C_E > ce(new CGenetic_code::C_E);            ce->SetId(216); // TSE=2; seq=1; feat=6            gcode.push_back(ce);            // feature location on the sequence: Seq_interval (gi seq_Id)            CSeq_interval& floc = feat->SetLocation().SetInt();            floc.SetId().SetGi(11+index*1000);            floc.SetFrom(5);            floc.SetTo(15);            ftable.push_back(feat);        }}        annot_list.push_back(annot);        // Add sub-entry        seq_set.push_back(sub_entry);    }}    // Sub-entry Seq 22    {{        CRef<CSeq_entry> sub_entry(new CSeq_entry);        CBioseq& seq = sub_entry->SetSeq();        CBioseq::TId& id_list = seq.SetId();        // list of Ids (local + gi)        CRef<CSeq_id> id(new CSeq_id);        id->SetLocal().SetStr            ("seq"+NStr::IntToString(22+index*1000));        id_list.push_back(id);        id.Reset(new CSeq_id);        id->SetGi(22+index*1000);        id_list.push_back(id);        // Instance (sequence data)        CSeq_inst& inst = seq.SetInst();        // representation class = continuous sequence        inst.SetRepr(CSeq_inst::eRepr_raw);        // molecule class in living organism = aa (amino acid)        inst.SetMol(CSeq_inst::eMol_aa);        // length of sequence in residues        inst.SetLength(20);        // seq data in Ncbieaa        inst.SetSeq_data().SetNcbieaa().Set("QGCGEQTMTLLAPTLAASRY");        // single strand        inst.SetStrand(CSeq_inst::eStrand_ss);        // Add sub-entry        seq_set.push_back(sub_entry);    }}    // Sub-entry Seq 23    {{        CRef<CSeq_entry> sub_entry(new CSeq_entry);        CBioseq& seq = sub_entry->SetSeq();        CBioseq::TId& id_list = seq.SetId();        // list of Ids (local + gi)        CRef<CSeq_id> id(new CSeq_id);        id->SetLocal().SetStr            ("seq"+NStr::IntToString(23+index*1000));        id_list.push_back(id);        id.Reset(new CSeq_id);        id->SetGi(23+index*1000);        id_list.push_back(id);        // Instance (sequence data)        CSeq_inst& inst = seq.SetInst();        // representation class = continuous sequence        inst.SetRepr(CSeq_inst::eRepr_raw);        // molecule class in living organism = dna        inst.SetMol(CSeq_inst::eMol_dna);        // length of sequence in residues        inst.SetLength(13);        // seq data in Iupacna        inst.SetSeq_data().SetIupacna().Set("ATGCAGCTGTACG");        // double strand        inst.SetStrand(CSeq_inst::eStrand_ds);        CRef<CSeq_data> packed_data(new CSeq_data);        // convert seq data to another format        // (NCBI2na = 2 bit nucleic acid code)        CSeqportUtil::Convert(inst.GetSeq_data(),                              packed_data,                              CSeq_data::e_Ncbi2na);        inst.SetSeq_data(*packed_data);        // Add sub-entry        seq_set.push_back(sub_entry);    }}    // Annotations    list< CRef<CSeq_annot> >& set_annot_list = set.SetAnnot();    CRef<CSeq_annot> annot(new CSeq_annot);    // list of features    list< CRef<CSeq_feat> >& ftable = annot->SetData().SetFtable();    {{        CRef<CSeq_feat> feat(new CSeq_feat);        // feature Id        feat->SetId().SetLocal().SetStr("F7: lcl|21 + gi|12");        // the specific data        CSeqFeatData& fdata = feat->SetData();        CCdregion& cdreg = fdata.SetCdregion();        cdreg.SetFrame(CCdregion::eFrame_one);        // genetic code used        list< CRef< CGenetic_code::C_E > >& gcode = cdreg.SetCode().Set();        CRef< CGenetic_code::C_E > ce(new CGenetic_code::C_E);        ce->SetId(207); // TSE=2; no seq; feat=7        gcode.push_back(ce);        // feature location on the sequence: Seq_interval (local seq_Id)        CSeq_interval& floc = feat->SetLocation().SetInt();        floc.SetId().SetLocal().SetStr            ("seq"+NStr::IntToString(21+index*1000));        floc.SetFrom(1);        floc.SetTo(20);        // product of process (seq_loc = whole, gi)        feat->SetProduct().SetWhole().SetGi(12+index*1000);        ftable.push_back(feat);    }}    set_annot_list.push_back(annot);    if ( sm_DumpEntries ) {        NcbiCout << "-------------------- "            "TestEntry2 --------------------" << NcbiEndl;        auto_ptr<CObjectOStream>            out(CObjectOStream::Open(eSerial_AsnText, NcbiCout));        *out << *entry;    }    return *entry.Release();}/************************************************************************    1.2.1.4. Bio sequences for testing    Test entry = 1 top-level entry    TSE        only contains references to other sequences************************************************************************/CSeq_entry& CDataGenerator::CreateConstructedEntry(int idx, int index){    CSeq_loc constr_loc;    list< CRef<CSeq_interval> >& int_list = constr_loc.SetPacked_int();    CRef<CSeq_interval> int_ref(new CSeq_interval);    int_ref->SetId().SetGi(11+idx*1000);    int_ref->SetFrom(5);    int_ref->SetTo(10);    if (index == 2) {        int_ref->SetStrand(eNa_strand_minus);    }    int_list.push_back(int_ref);    int_ref.Reset(new CSeq_interval);    int_ref->SetId().SetGi(12+idx*1000);    int_ref->SetFrom(0);    int_ref->SetTo(20);    int_list.push_back(int_ref);    CRef<CBioseq> constr_seq(new CBioseq(constr_loc,        "constructed"+NStr::IntToString(index)));    CRef<CSeq_entry> constr_entry(new CSeq_entry);    constr_entry->SetSeq(*constr_seq);    if ( sm_DumpEntries ) {        NcbiCout << "-------------------- "            "ConstructedEntry --------------------" << NcbiEndl;        auto_ptr<CObjectOStream>            out(CObjectOStream::Open(eSerial_AsnText, NcbiCout));        *out << *constr_entry;    }    return *constr_entry.Release();}/************************************************************************    1.2.1.4. Bio sequences for testing    Test entry = 1 top-level entry    TSE        Construct bioseq by excluding the seq-loc************************************************************************//*CSeq_entry& CDataGenerator::CreateConstructedExclusionEntry(int idx, int index){    CSeq_loc loc;    CSeq_loc_mix::Tdata& mix = loc.SetMix().Set();    CRef<CSeq_loc> sl;    sl.Reset(new CSeq_loc);    sl->SetPnt().SetId().SetGi(11+idx*1000);    sl->SetPnt().SetPoint(0);    mix.push_back(sl);    sl.Reset(new CSeq_loc);    sl->SetInt().SetId().SetGi(11+idx*1000);    sl->SetInt().SetFrom(0);    sl->SetInt().SetTo(4);    mix.push_back(sl);    sl.Reset(new CSeq_loc);    sl->SetInt().SetId().SetGi(11+idx*1000);    sl->SetInt().SetFrom(10);    sl->SetInt().SetTo(15);    mix.push_back(sl);    sl.Reset(new CSeq_loc);    sl->SetInt().SetId().SetGi(11+idx*1000);    sl->SetInt().SetFrom(10);    sl->SetInt().SetTo(12);    mix.push_back(sl);    sl.Reset(new CSeq_loc);    sl->SetInt().SetId().SetGi(11+idx*1000);    sl->SetInt().SetFrom(13);    sl->SetInt().SetTo(15);    mix.push_back(sl);    sl.Reset(new CSeq_loc);    sl->SetInt().SetId().SetGi(11+idx*1000);    sl->SetInt().SetFrom(8);    sl->SetInt().SetTo(18);    mix.push_back(sl);    sl.Reset(new CSeq_loc);    sl->SetPnt().SetId().SetGi(11+idx*1000);    sl->SetPnt().SetPoint(20);    mix.push_back(sl);    sl.Reset(new CSeq_loc);    sl->SetPnt().SetId().SetGi(11+idx*1000);    sl->SetPnt().SetPoint(39);    mix.push_back(sl);    CRef<CBioseq> constr_ex_seq(&CBioseq::ConstructExcludedSequence(loc, 40,        "construct_exclusion"+NStr::IntToString(index)));    CRef<CSeq_entry> constr_ex_entry(new CSeq_entry);    constr_ex_entry->SetSeq(*constr_ex_seq);    return *constr_ex_entry.Release();}*/CSeq_annot& CDataGenerator::CreateAnnotation1(int index){    CRef<CSeq_annot> annot(new CSeq_annot);    list< CRef<CSeq_feat> >& ftable = annot->SetData().SetFtable();    {{        CRef<CSeq_feat> feat(new CSeq_feat);        feat->SetId().SetLocal().SetStr("attached feature");        CSeqFeatData& fdata = feat->SetData();        CCdregion& cdreg = fdata.SetCdregion();        cdreg.SetFrame(CCdregion::eFrame_one);        list< CRef< CGenetic_code::C_E > >& gcode = cdreg.SetCode().Set();        CRef< CGenetic_code::C_E > ce(new CGenetic_code::C_E);        ce->SetId(999);        gcode.push_back(ce);        feat->SetComment() = "Feature attached after indexing the entry";        //feat->SetLocation().SetWhole().SetGi(11+index*1000);        CSeq_interval& interval = feat->SetLocation().SetInt();        interval.SetId().SetGi(11+index*1000);        interval.SetFrom(1);        interval.SetTo(9);        interval.SetStrand(eNa_strand_unknown);        ftable.push_back(feat);    }}    if ( sm_DumpEntries ) {        NcbiCout << "-------------------- "            "Annotation1 --------------------" << NcbiEndl;        auto_ptr<CObjectOStream>            out(CObjectOStream::Open(eSerial_AsnText, NcbiCout));        *out << *annot;    }    return *annot.Release();}

⌨️ 快捷键说明

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