Esempio n. 1
0
//  ----------------------------------------------------------------------------
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);
    }
}
Esempio n. 2
0
//	----------------------------------------------------------------------------
string CFeatTableEdit::xCurrentTranscriptId(
    const CSeq_feat& cds)
//	----------------------------------------------------------------------------
{
    // format: mLocusTagPrefix|mrna.<locus tag of gene>[_numeric disambiguation]
    CConstRef<CSeq_feat> pGene = xGetGeneParent(cds);
    if (!pGene) {
        return "";
    }
    string locusTag = pGene->GetNamedQual("locus_tag");
    string disAmbig = "";
    map<string, int>::iterator it = mMapProtIdCounts.find(locusTag);
    if (it != mMapProtIdCounts.end()  &&  mMapProtIdCounts[locusTag] != 0) {
        disAmbig = string("_") + NStr::IntToString(mMapProtIdCounts[locusTag]);
    }
    return (mLocusTagPrefix + "|mrna." + locusTag + disAmbig);
}
Esempio n. 3
0
//	----------------------------------------------------------------------------
string CFeatTableEdit::xNextProteinId(
    const CSeq_feat& cds)
//	----------------------------------------------------------------------------
{
    // format: mLocusTagPrefix|<locus tag of gene>[_numeric disambiguation]
    CConstRef<CSeq_feat> pGene = xGetGeneParent(cds);
    if (!pGene) {
        return "";
    }
    string locusTag = pGene->GetNamedQual("locus_tag");
    string disAmbig = "";
    map<string, int>::iterator it = mMapProtIdCounts.find(locusTag);
    if (it == mMapProtIdCounts.end()) {
        mMapProtIdCounts[locusTag] = 0;
    }
    else {
        ++mMapProtIdCounts[locusTag];
        disAmbig = string("_") + NStr::IntToString(mMapProtIdCounts[locusTag]);
    }
    return (mLocusTagPrefix + "|" + locusTag + disAmbig);
}