Skip to content

db.parents(id) stops at level 2? #204

@dariober

Description

@dariober

I'm applying db.parents(id) to features that have up to 3 parents, e.g. the nesting is id -> protein_match -> mRNA -> gene. It appears that the 3rd level, gene, is not returned. Am I missing something? Here's an example:

import gffutils

txt="""\
chr1 AUGUSTUS gene 68330 73621 1 - . ID=g1903;
chr1 AUGUSTUS mRNA 68330 73621 1 - . ID=g1903.t1;Parent=g1903;
chr1 Pfam protein_match 73372 73618 1 - . ID=g1903.t1.d1;Parent=g1903.t1;
chr1 Pfam protein_hmm_match 73372 73618 1 - . ID=g1903.t1.d1.1;Parent=g1903.t1.d1;
"""

db = gffutils.create_db(txt.replace(' ', '\t'), ':memory:', from_string=True)

Show the features:

for x in db.all_features():
    print(x)

chr1 AUGUSTUS gene              68330 73621 1 - . ID=g1903;
chr1 AUGUSTUS mRNA              68330 73621 1 - . ID=g1903.t1;Parent=g1903;
chr1 Pfam     protein_match     73372 73618 1 - . ID=g1903.t1.d1;Parent=g1903.t1;
chr1 Pfam     protein_hmm_match 73372 73618 1 - . ID=g1903.t1.d1.1;Parent=g1903.t1.d1;

Now, db.parents('g1903.t1.d1.1') returns as parents protein_match and the mRNA, but not the gene:

pp = db.parents('g1903.t1.d1.1')

for p in pp:
    print(p)

chr1	AUGUSTUS	mRNA	68330	73621	1	-	.	ID=g1903.t1;Parent=g1903;
chr1	Pfam	protein_match	73372	73618	1	-	.	ID=g1903.t1.d1;Parent=g1903.t1;

Shouldn't gene also be retrieved as a parent? Thanks!

This is with gffutils 0.11.1

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions