Skip to content

API Reference

biokb_taxtree.db.models

Database models for the biokb_taxtree application.

Defines the SQLAlchemy ORM models representing the database schema for taxonomy tree data.

Class_

Bases: Base

Model representing class.

Attributes:

Name Type Description
id int

Primary key, ID of the class.

name str

Name of the class.

Source code in src/biokb_taxtree/db/models.py
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
class Class_(Base):
    """Model representing class.

    Attributes:
        id (int): Primary key, ID of the class.
        name (str): Name of the class.
    """

    __tablename__ = Base._prefix + "class_"

    id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True)
    name: Mapped[str] = mapped_column(
        String(255), nullable=False, comment="Name of the class", index=True
    )
    # relationships
    ranked_lineages: Mapped[list[RankedLineage]] = relationship(back_populates="class_")

Domain

Bases: Base

Model representing domain.

Attributes:

Name Type Description
id int

Primary key, ID of the domain.

name str

Name of the domain.

Source code in src/biokb_taxtree/db/models.py
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
class Domain(Base):
    """Model representing domain.

    Attributes:
        id (int): Primary key, ID of the domain.
        name (str): Name of the domain.
    """

    __tablename__ = Base._prefix + "domain"

    id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True)
    name: Mapped[str] = mapped_column(
        String(255), nullable=False, comment="Name of the domain", index=True
    )
    # relationships
    ranked_lineages: Mapped[list[RankedLineage]] = relationship(back_populates="domain")

Family

Bases: Base

Model representing family.

Attributes:

Name Type Description
id int

Primary key, ID of the family.

name str

Name of the family.

Source code in src/biokb_taxtree/db/models.py
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
class Family(Base):
    """Model representing family.

    Attributes:
        id (int): Primary key, ID of the family.
        name (str): Name of the family.
    """

    __tablename__ = Base._prefix + "family"

    id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True)
    name: Mapped[str] = mapped_column(
        String(255), nullable=False, comment="Name of the family", index=True
    )
    # relationships
    ranked_lineages: Mapped[list[RankedLineage]] = relationship(back_populates="family")

Genus

Bases: Base

Model representing genus.

Attributes:

Name Type Description
id int

Primary key, ID of the genus.

name str

Name of the genus.

Source code in src/biokb_taxtree/db/models.py
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
class Genus(Base):
    """Model representing genus.

    Attributes:
        id (int): Primary key, ID of the genus.
        name (str): Name of the genus.
    """

    __tablename__ = Base._prefix + "genus"

    id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True)
    name: Mapped[str] = mapped_column(
        String(255), nullable=False, comment="Name of the genus", index=True
    )
    # relationships
    ranked_lineages: Mapped[list[RankedLineage]] = relationship(back_populates="genus")

Kingdom

Bases: Base

Model representing kingdom.

Attributes:

Name Type Description
id int

Primary key, ID of the kingdom.

name str

Name of the kingdom.

Source code in src/biokb_taxtree/db/models.py
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
class Kingdom(Base):
    """Model representing kingdom.

    Attributes:
        id (int): Primary key, ID of the kingdom.
        name (str): Name of the kingdom.
    """

    __tablename__ = Base._prefix + "kingdom"

    id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True)
    name: Mapped[str] = mapped_column(
        String(255), nullable=False, comment="Name of the kingdom", index=True
    )
    # relationships
    ranked_lineages: Mapped[list[RankedLineage]] = relationship(
        back_populates="kingdom"
    )

Name

Bases: Base

Model representing a name associated with a taxonomy node.

Attributes:

Name Type Description
id int

Primary key.

name_txt str

Text of the name.

unique_name Optional[str]

Unique variant of this name if not unique.

name_class str

Class of the name (e.g., synonym, common name).

tax_id int

Foreign key to the associated Node.

node Node

Relationship to the associated Node.

Source code in src/biokb_taxtree/db/models.py
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
class Name(Base):
    """Model representing a name associated with a taxonomy node.

    Attributes:
        id (int): Primary key.
        name_txt (str): Text of the name.
        unique_name (Optional[str]): Unique variant of this name if not unique.
        name_class (str): Class of the name (e.g., synonym, common name).
        tax_id (int): Foreign key to the associated Node.
        node (Node): Relationship to the associated Node.
    """

    __tablename__ = Base._prefix + "name"

    id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True)

    name_txt: Mapped[str] = mapped_column(
        String(500),
        index=True,
        nullable=False,
        comment="Organism name text (e.g., Escherichia coli, E. coli, etc.)",
    )
    unique_name: Mapped[str | None] = mapped_column(
        String(255), nullable=True, comment="Unique variant of this name if not unique"
    )
    name_class: Mapped[NameClassEnum] = mapped_column(
        Enum(
            NameClassEnum,
            native_enum=False,
            values_callable=lambda x: [e.value for e in x],
        ),
        nullable=False,
        index=True,
        comment="Class of the name (e.g., synonym, common name)",
    )

    # foreign keys
    tax_id: Mapped[int] = mapped_column(
        ForeignKey(Base._prefix + "node.tax_id"), nullable=False
    )
    # relationships
    node: Mapped[Node] = relationship(back_populates="names")

    @property
    def rank(self) -> Optional[str]:
        """Get the taxonomic rank of this name based on its associated node."""
        return self.node.rank if self.node else None

    def __repr__(self) -> str:
        return (
            f"<{self.__class__.__name__} ("
            f"name_txt={self.name_txt}, "
            f"unique_name={self.unique_name}, "
            f"name_class={self.name_class}, "
            f"tax_id={self.tax_id})>"
        )

rank property

Get the taxonomic rank of this name based on its associated node.

Node

Bases: Base

Model representing a taxonomy node in the GenBank taxonomy database.

Attributes:

Name Type Description
tax_id int

Node ID in GenBank taxonomy database (primary key).

parent_tax_id int

Parent node ID in GenBank taxonomy database.

rank str

Rank of this node (e.g., superkingdom, kingdom).

embl_code Optional[str]

Locus-name prefix; not unique.

division_id int

Taxonomy database division ID.

inherited_div_flag bool

1 if node inherits division from parent.

genetic_code_id int

GenBank genetic code ID.

inherited_gc_flag bool

1 if node inherits genetic code from parent.

mitochondrial_genetic_code_id int

GenBank mitochondrial genetic code ID.

inherited_mgc_flag bool

1 if node inherits mitochondrial gencode from parent.

genbank_hidden_flag bool

1 if name is suppressed in GenBank entry lineage.

hidden_subtree_root_flag bool

1 if this subtree has no sequence data yet.

comments Optional[str]

Free-text comments and citations.

plastid_genetic_code_id Optional[int]

GenBank plastid genetic code ID.

inherited_pgc_flag Optional[bool]

1 if node inherits plastid gencode from parent.

specified_species Optional[bool]

1 if species in the node's lineage has formal name.

hydrogenosome_genetic_code_id Optional[int]

GenBank hydrogenosome genetic code ID.

inherited_hgc_flag Optional[bool]

1 if node inherits hydrogenosome gencode from parent.

tree_id int

Sorted tree ID.

tree_parent_id Optional[int]

Sorted tree parent ID.

level int

Level in the tree.

right_tree_id int

Right tree ID.

is_leaf bool

Is leaf (has no children).

names List[Name]

Relationship to associated names.

ranked_lineage RankedLineage

Relationship to associated ranked lineage.

Source code in src/biokb_taxtree/db/models.py
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
class Node(Base):
    """Model representing a taxonomy node in the GenBank taxonomy database.


    Attributes:
        tax_id (int): Node ID in GenBank taxonomy database (primary key).
        parent_tax_id (int): Parent node ID in GenBank taxonomy database.
        rank (str): Rank of this node (e.g., superkingdom, kingdom).
        embl_code (Optional[str]): Locus-name prefix; not unique.
        division_id (int): Taxonomy database division ID.
        inherited_div_flag (bool): 1 if node inherits division from parent.
        genetic_code_id (int): GenBank genetic code ID.
        inherited_gc_flag (bool): 1 if node inherits genetic code from parent.
        mitochondrial_genetic_code_id (int): GenBank mitochondrial genetic code ID.
        inherited_mgc_flag (bool): 1 if node inherits mitochondrial gencode from parent.
        genbank_hidden_flag (bool): 1 if name is suppressed in GenBank entry lineage.
        hidden_subtree_root_flag (bool): 1 if this subtree has no sequence data yet.
        comments (Optional[str]): Free-text comments and citations.
        plastid_genetic_code_id (Optional[int]): GenBank plastid genetic code ID.
        inherited_pgc_flag (Optional[bool]): 1 if node inherits plastid gencode from parent.
        specified_species (Optional[bool]): 1 if species in the node's lineage has formal name.
        hydrogenosome_genetic_code_id (Optional[int]): GenBank hydrogenosome genetic code ID.
        inherited_hgc_flag (Optional[bool]): 1 if node inherits hydrogenosome gencode from parent.
        tree_id (int): Sorted tree ID.
        tree_parent_id (Optional[int]): Sorted tree parent ID.
        level (int): Level in the tree.
        right_tree_id (int): Right tree ID.
        is_leaf (bool): Is leaf (has no children).
        names (List[Name]): Relationship to associated names.
        ranked_lineage (RankedLineage): Relationship to associated ranked lineage."""

    __tablename__ = Base._prefix + "node"

    tax_id: Mapped[int] = mapped_column(
        primary_key=True, comment="node id in GenBank taxonomy database", unique=True
    )
    parent_tax_id: Mapped[int] = mapped_column(
        comment=" parent node id in GenBank taxonomy database", index=True
    )
    rank: Mapped[str] = mapped_column(
        String(20), comment="rank of this node (superkingdom, kingdom, ...) "
    )
    embl_code: Mapped[Optional[str]] = mapped_column(
        String(2), comment="locus-name prefix; not unique"
    )
    division_id: Mapped[int] = mapped_column(comment="taxonomy database division id")
    inherited_div_flag: Mapped[bool] = mapped_column(
        comment="1 if node inherits division from parent"
    )
    genetic_code_id: Mapped[int] = mapped_column(comment="GenBank genetic code id")
    inherited_gc_flag: Mapped[bool] = mapped_column(
        comment="1 if node inherits genetic code from parent"
    )
    mitochondrial_genetic_code_id: Mapped[int] = mapped_column(
        comment="GenBank genetic code id"
    )
    inherited_mgc_flag: Mapped[bool] = mapped_column(
        comment="1 if node inherits mitochondrial gencode from parent"
    )
    genbank_hidden_flag: Mapped[bool] = mapped_column(
        comment="1 if name is suppressed in GenBank entry lineage"
    )
    hidden_subtree_root_flag: Mapped[bool] = mapped_column(
        comment="1 if this subtree has no sequence data yet"
    )
    comments: Mapped[Optional[str]] = mapped_column(
        Text, comment="free-text comments and citations"
    )
    plastid_genetic_code_id: Mapped[Optional[int]] = mapped_column(
        comment="GenBank genetic code id"
    )
    inherited_pgc_flag: Mapped[Optional[bool]] = mapped_column(
        comment="1 if node inherits plastid gencode from parent"
    )
    specified_species: Mapped[Optional[bool]] = mapped_column(
        comment="1 if species in the node's lineage has formal name"
    )
    hydrogenosome_genetic_code_id: Mapped[Optional[int]] = mapped_column(
        comment="GenBank genetic code id"
    )
    inherited_hgc_flag: Mapped[Optional[bool]] = mapped_column(
        comment="1 if node inherits hydrogenosome gencode from parent"
    )
    tree_id: Mapped[int] = mapped_column(comment="Sorted tree ID", index=True)
    tree_parent_id: Mapped[Optional[int]] = mapped_column(
        comment="Sorted tree ID", index=True
    )
    level: Mapped[int] = mapped_column(comment="Level in the tree")
    right_tree_id: Mapped[int] = mapped_column(comment="Level in the tree", index=True)
    is_leaf: Mapped[bool] = mapped_column(
        comment="Is leaf (has no children)", index=True
    )

    # relationships
    names: Mapped[list["Name"]] = relationship(back_populates="node")
    ranked_lineage: Mapped["RankedLineage"] = relationship(back_populates="node")

    def __repr__(self) -> str:
        return (
            f"<{self.__class__.__name__} ("
            f"tax_id={self.tax_id}, "
            f"parent_tax_id={self.parent_tax_id}, "
            f"names= {[x.name_txt for x in self.names]})>"
        )

Order

Bases: Base

Model representing order.

Attributes:

Name Type Description
id int

Primary key, ID of the order.

name str

Name of the order.

Source code in src/biokb_taxtree/db/models.py
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
class Order(Base):
    """Model representing order.

    Attributes:
        id (int): Primary key, ID of the order.
        name (str): Name of the order.
    """

    __tablename__ = Base._prefix + "order"

    id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True)
    name: Mapped[str] = mapped_column(
        String(255), nullable=False, comment="Name of the order", index=True
    )
    # relationships
    ranked_lineages: Mapped[list[RankedLineage]] = relationship(back_populates="order")

Phylum

Bases: Base

Model representing phylum.

Attributes:

Name Type Description
id int

Primary key, ID of the phylum.

name str

Name of the phylum.

Source code in src/biokb_taxtree/db/models.py
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
class Phylum(Base):
    """Model representing phylum.

    Attributes:
        id (int): Primary key, ID of the phylum.
        name (str): Name of the phylum.
    """

    __tablename__ = Base._prefix + "phylum"

    id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True)
    name: Mapped[str] = mapped_column(
        String(255), nullable=False, comment="Name of the phylum", index=True
    )
    # relationships
    ranked_lineages: Mapped[list[RankedLineage]] = relationship(back_populates="phylum")

RankedLineage

Bases: Base

Model representing the ranked lineage of a taxonomy node.

Attributes:

Name Type Description
id int

Primary key.

tax_name str

Scientific name of the organism.

species Optional[str]

Name of a species (coincide with organism name for species-level nodes).

genus Optional[str]

Genus name.

family Optional[str]

Family name.

order Optional[str]

Order name.

class_ Optional[str]

Class name.

phylum Optional[str]

Phylum name.

kingdom Optional[str]

Kingdom name.

domain Optional[str]

Domain name.

tax_id int

Foreign key to the associated Node.

node Node

Relationship to the associated Node.

Source code in src/biokb_taxtree/db/models.py
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
class RankedLineage(Base):
    """Model representing the ranked lineage of a taxonomy node.

    Attributes:
        id (int): Primary key.
        tax_name (str): Scientific name of the organism.
        species (Optional[str]): Name of a species (coincide with organism name for species-level nodes).
        genus (Optional[str]): Genus name.
        family (Optional[str]): Family name.
        order (Optional[str]): Order name.
        class_ (Optional[str]): Class name.
        phylum (Optional[str]): Phylum name.
        kingdom (Optional[str]): Kingdom name.
        domain (Optional[str]): Domain name.
        tax_id (int): Foreign key to the associated Node.
        node (Node): Relationship to the associated Node.
    """

    __tablename__ = Base._prefix + "ranked_lineage"

    id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True)

    tax_name: Mapped[str] = mapped_column(
        String(255), comment="scientific name of the organism"
    )
    species: Mapped[Optional[str]] = mapped_column(
        String(255),
        comment="name of a species (coincide with organism name for species-level nodes)",
    )

    # foreign keys
    tax_id: Mapped[int] = mapped_column(
        ForeignKey(Base._prefix + "node.tax_id"),
        nullable=False,
        unique=True,
        comment="node id",
    )
    # many to one relationship
    node: Mapped[Node] = relationship(
        back_populates="ranked_lineage", single_parent=True
    )
    # foreign key relationships
    domain_id: Mapped[Optional[int]] = mapped_column(
        ForeignKey(Base._prefix + "domain.id"), nullable=True
    )
    domain: Mapped[Optional["Domain"]] = relationship(back_populates="ranked_lineages")
    kingdom_id: Mapped[Optional[int]] = mapped_column(
        ForeignKey(Base._prefix + "kingdom.id"), nullable=True
    )
    kingdom: Mapped[Optional["Kingdom"]] = relationship(
        back_populates="ranked_lineages",
    )
    phylum_id: Mapped[Optional[int]] = mapped_column(
        ForeignKey(Base._prefix + "phylum.id"), nullable=True
    )
    phylum: Mapped[Optional["Phylum"]] = relationship(
        back_populates="ranked_lineages",
    )
    class__id: Mapped[Optional[int]] = mapped_column(
        ForeignKey(Base._prefix + "class_.id"), nullable=True
    )
    class_: Mapped[Optional["Class_"]] = relationship(
        back_populates="ranked_lineages",
    )
    order_id: Mapped[Optional[int]] = mapped_column(
        ForeignKey(Base._prefix + "order.id"), nullable=True
    )
    order: Mapped[Optional["Order"]] = relationship(
        back_populates="ranked_lineages",
    )
    family_id: Mapped[Optional[int]] = mapped_column(
        ForeignKey(Base._prefix + "family.id"), nullable=True
    )
    family: Mapped[Optional["Family"]] = relationship(
        back_populates="ranked_lineages",
    )
    genus_id: Mapped[Optional[int]] = mapped_column(
        ForeignKey(Base._prefix + "genus.id"), nullable=True
    )
    genus: Mapped[Optional["Genus"]] = relationship(
        back_populates="ranked_lineages",
    )

    def __repr__(self) -> str:
        return (
            f"<{self.__class__.__name__} ("
            f"tax_name={self.tax_name}, "
            f"species={self.species}, "
            f"genus={self.genus.name if self.genus else None}, "
            f"family={self.family.name if self.family else None}, "
            f"order={self.order.name if self.order else None}, "
            f"class_={self.class_.name if self.class_ else None}, "
            f"phylum={self.phylum.name if self.phylum else None}, "
            f"kingdom={self.kingdom.name if self.kingdom else None}, "
            f"domain={self.domain.name if self.domain else None})>"
        )