Source code for silvio.extensions.records.gene.crafted_gene

"""
Gene crafted by the user itself.
"""

from __future__ import annotations

from Bio.Seq import Seq

from .gene import Gene



[docs]class CraftedGene (Gene) : _name: str _orf: Seq _prom: Seq def __init__ ( self, name:str, orf:Seq, prom:Seq ) : super().__init__() self._name = name self._orf = orf self._prom = prom # def clone ( self ) -> CraftedGene : # return CraftedGene( # name=self._name, # orf=self._orf, # Can pass because Seq is immutable. # prom=self._prom, # Can pass because Seq is immutable. # ) @property def name ( self ) -> str : return self._name @property def orf ( self ) -> Seq : return self._orf @property def prom ( self ) -> Seq : return self._prom
[docs] def make_variant ( self, orf_loc:int, orf_sub:Seq ) -> CraftedGene : """ TODO: Maybe its better to clone-then-mutate. """ new_orf = self._orf[:orf_loc-1] + orf_sub + self._orf[orf_loc:] # orf_loc starts at 1 return CraftedGene( name=self._name, orf=new_orf, prom=self._prom, # Can pass because Seq is immutable. )