// ---------------------------------------------------------------------------- void CFeatTableEdit::GenerateLocusTags() // ---------------------------------------------------------------------------- { CRef<CGb_qual> pLocusTag; SAnnotSelector selGenes; selGenes.IncludeFeatSubtype(CSeqFeatData::eSubtype_gene); CFeat_CI itGenes(mHandle, selGenes); for ( ; itGenes; ++itGenes) { string locusTagVal = itGenes->GetNamedQual("locus_tag"); if (!locusTagVal.empty()) { continue; } CSeq_feat_EditHandle feh(mpScope->GetObjectHandle( (itGenes)->GetOriginalFeature())); feh.AddQualifier("locus_tag", xNextLocusTag()); } SAnnotSelector selOther; selOther.ExcludeFeatSubtype(CSeqFeatData::eSubtype_gene); CFeat_CI itOther(mHandle, selOther); for ( ; itOther; ++itOther) { const CSeq_feat& feat = itOther->GetOriginalFeature(); CSeq_feat_EditHandle feh(mpScope->GetObjectHandle( (itOther)->GetOriginalFeature())); feh.RemoveQualifier("locus_tag"); CConstRef<CSeq_feat> pGeneParent = xGetGeneParent(feat); if (!pGeneParent) { continue; } string locusTag = pGeneParent->GetNamedQual("locus_tag"); feh.AddQualifier("locus_tag", locusTag); } }
// ---------------------------------------------------------------------------- void CFeatTableEdit::GenerateOrigProteinAndOrigTranscriptIds() // ---------------------------------------------------------------------------- { // that's for cds's. SAnnotSelector sel; sel.IncludeFeatSubtype(CSeqFeatData::eSubtype_cdregion); CFeat_CI it(mHandle, sel); for ( ; it; ++it) { const CSeq_feat& cds = it->GetOriginalFeature(); string proteinId = cds.GetNamedQual("protein_id"); string transcriptId = cds.GetNamedQual("transcript_id"); CConstRef<CSeq_feat> pParentRna = xGetMrnaParent(cds); if (!pParentRna) { continue; } CRef<CSeq_feat> pEditedRna(new CSeq_feat); pEditedRna->Assign(*pParentRna); CRef<CGb_qual> pOrigProteinId(new CGb_qual); pOrigProteinId->SetQual("orig_protein_id"); pOrigProteinId->SetVal(proteinId); pEditedRna->SetQual().push_back(pOrigProteinId); CRef<CGb_qual> pOrigTranscriptId(new CGb_qual); pOrigTranscriptId->SetQual("orig_transcript_id"); pOrigTranscriptId->SetVal(transcriptId); pEditedRna->SetQual().push_back(pOrigTranscriptId); CSeq_feat_EditHandle feh(mpScope->GetObjectHandle(*pParentRna)); feh.Replace(*pEditedRna); } }
// ---------------------------------------------------------------------------- void CFeatTableEdit::GenerateProteinAndTranscriptIds() // ---------------------------------------------------------------------------- { // that's for cds's. SAnnotSelector sel; sel.IncludeFeatSubtype(CSeqFeatData::eSubtype_cdregion); CFeat_CI it(mHandle, sel); for ( ; it; ++it) { const CSeq_feat& cds = it->GetOriginalFeature(); string proteinId = xNextProteinId(cds); string transcriptId = xCurrentTranscriptId(cds); if (proteinId.empty()) { continue; } CRef<CSeq_feat> pEditedCds(new CSeq_feat); pEditedCds->Assign(cds); CRef<CGb_qual> pProteinId(new CGb_qual); pProteinId->SetQual("protein_id"); pProteinId->SetVal(proteinId); pEditedCds->SetQual().push_back(pProteinId); CRef<CGb_qual> pTranscriptId(new CGb_qual); pTranscriptId->SetQual("transcript_id"); pTranscriptId->SetVal(transcriptId); pEditedCds->SetQual().push_back(pTranscriptId); CSeq_feat_EditHandle feh(mpScope->GetObjectHandle(cds)); feh.Replace(*pEditedCds); } }
// ---------------------------------------------------------------------------- void CFeatTableEdit::EliminateBadQualifiers() // ---------------------------------------------------------------------------- { typedef CSeq_feat::TQual QUALS; CFeat_CI it(mHandle); for ( ; it; ++it) { CSeq_feat_EditHandle feh(mpScope->GetObjectHandle( (it)->GetOriginalFeature())); const QUALS& quals = (*it).GetQual(); vector<string> badQuals; for (QUALS::const_iterator qual = quals.begin(); qual != quals.end(); ++qual) { string qualVal = (*qual)->GetQual(); CSeqFeatData::EQualifier qualType = CSeqFeatData::GetQualifierType(qualVal); if (qualType == CSeqFeatData::eQual_bad) { badQuals.push_back(qualVal); } } for (vector<string>::const_iterator badIt = badQuals.begin(); badIt != badQuals.end(); ++badIt) { feh.RemoveQualifier(*badIt); } } }
int main (){ int start,end,lamda; int i,c; for(;;) {printf("1.input data\n2.Print data\n3.Quit\n\tYour Choice : "); scanf("%d",&c); switch(c) { case 1: printf("start point : ");scanf("%d",&start); printf("end point : ");scanf("%d",&end); printf("lamda : ");scanf("%d",&lamda); break; case 2: printf("%c %c\n",'C','F'); for (i = start ; i <= end; i += lamda) printf("%d %.2f\n",i,feh(i)); break; case 3:return;} } return 0;}
// ------------------------------------------------------------------------- void CFeatTableEdit::InferParentMrnas() // ------------------------------------------------------------------------- { SAnnotSelector sel; sel.IncludeFeatSubtype(CSeqFeatData::eSubtype_cdregion); CFeat_CI it(mHandle, sel); for ( ; it; ++it) { const CSeq_feat& cds = it->GetOriginalFeature(); CRef<CSeq_feat> pRna = edit::MakemRNAforCDS(cds, *mpScope); if (!pRna) { continue; } //find proper name for rna string rnaId(xNextFeatId()); pRna->SetId().SetLocal().SetStr(rnaId); //add rna xref to cds CSeq_feat_EditHandle feh(mpScope->GetObjectHandle(cds)); feh.AddFeatXref(rnaId); //add new rna to feature table mEditHandle.AddFeat(*pRna); } }
// ---------------------------------------------------------------------------- void CFeatTableEdit::InferPartials() // ---------------------------------------------------------------------------- { edit::CLocationEditPolicy editPolicy( edit::CLocationEditPolicy::ePartialPolicy_eSetForBadEnd, edit::CLocationEditPolicy::ePartialPolicy_eSetForBadEnd, false, //extend 5' false, //extend 3' edit::CLocationEditPolicy::eMergePolicy_NoChange); SAnnotSelector sel; sel.IncludeFeatSubtype(CSeqFeatData::eSubtype_cdregion); CFeat_CI it(mHandle, sel); for ( ; it; ++it) { const CSeq_feat& cds = it->GetOriginalFeature(); CRef<CSeq_feat> pEditedCds(new CSeq_feat); pEditedCds->Assign(cds); editPolicy.ApplyPolicyToFeature(*pEditedCds, *mpScope); CSeq_feat_EditHandle feh(mpScope->GetObjectHandle(cds)); feh.Replace(*pEditedCds); } }
// --------------------------------------------------------------------------- void CFeatTableEdit::InferParentGenes() // --------------------------------------------------------------------------- { SAnnotSelector sel; sel.IncludeFeatSubtype(CSeqFeatData::eSubtype_mRNA); CFeat_CI it(mHandle, sel); for ( ; it; ++it) { const CSeq_feat& rna = it->GetOriginalFeature(); CRef<CSeq_feat> pGene = xMakeGeneForMrna(rna); if (!pGene) { continue; } //find proper name for gene string geneId(xNextFeatId()); pGene->SetId().SetLocal().SetStr(geneId); //add gene xref to rna CSeq_feat_EditHandle feh(mpScope->GetObjectHandle(rna)); feh.AddFeatXref(geneId); //add new gene to feature table mEditHandle.AddFeat(*pGene); } }