ecoli.processes.rna_degradation

RNA Degradation

Mathematical formulations

  • dr/dt = Kb - kcatEndoRNase * EndoRNase * r/Km / (1 + Sum(r/Km))

where

  • r = RNA counts

  • Kb = RNA production given a RNAP synthesis rate

  • kcatEndoRNase = enzymatic activity for EndoRNases

  • Km = Michaelis-Menten constants fitted to recapitulate first-order

  • RNA decay: kd * r = kcatEndoRNase * EndoRNase * r/Km / (1 + sum(r/Km))

This sub-model encodes molecular simulation of RNA degradation as two main steps guided by RNases, “endonucleolytic cleavage” and “exonucleolytic digestion”:

  1. Compute total counts of RNA to be degraded (D) and total capacity for endo-cleavage (C) at each time point

  2. Evaluate C and D. If C > D, then define a fraction of active endoRNases

  3. Dissect RNA degraded into different species (mRNA, tRNA, and rRNA) by accounting endoRNases specificity

  4. Update RNA fragments (assumption: fragments are represented as a pool of nucleotides) created because of endonucleolytic cleavage

  5. Compute total capacity of exoRNases and determine fraction of nucleotides that can be digested

  6. Update pool of metabolites (H and H2O) created because of exonucleolytic digestion

class ecoli.processes.rna_degradation.RnaDegradation(parameters=None)[source]

Bases: PartitionedProcess

RNA Degradation PartitionedProcess

_calculate_total_n_to_degrade(timestep, specificity, total_kcat_endornase)[source]

Calculate the total number of RNAs to degrade for a specific class of RNAs, based on the specificity of endoRNases on that specific class and the total kcat value of the endoRNases.

Parameters:
  • specificity – Sum of fraction of active endoRNases for all RNAs in a given class

  • total_kcat_endornase – The summed kcat of all existing endoRNases

Returns:

Total number of RNAs to degrade for the given class of RNAs

_get_rnas_to_degrade(n_total_rnas_to_degrade, rna_deg_probs, rna_counts)[source]

Distributes the total count of RNAs to degrade for each class of RNAs into individual RNAs, based on the given degradation probabilities of individual RNAs. The upper bound is set by the current count of the specific RNA.

Parameters:
  • n_total_rnas_to_degrade – Total number of RNAs to degrade for the given class of RNAs (integer, scalar)

  • rna_deg_probs – Degradation probabilities of each RNA (vector of equal length to the total number of different RNAs)

  • rna_counts – Current counts of each RNA molecule (vector of equal length to the total number of different RNAs)

Returns:

Vector of equal length to rna_counts, specifying the number of molecules to degrade for each RNA

calculate_request(timestep, states)[source]
defaults: Dict[str, Any]
{   'Kcat_endoRNases': array([], dtype=object),
    'Kms': array([], dtype=object),
    'all_rna_ids': [],
    'cell_density': 1100.0 [g/L],
    'charged_trna_names': [],
    'cistron_ids': [],
    'cistron_tu_mapping_matrix': [],
    'degrade_misc': False,
    'emit_unique': False,
    'endoRNase_ids': [],
    'exoRNase_ids': [],
    'is_mRNA': array([], dtype=float64),
    'is_miscRNA': array([], dtype=float64),
    'is_rRNA': array([], dtype=float64),
    'is_tRNA': array([], dtype=float64),
    'kcat_exoRNase': array([], dtype=object),
    'mature_rna_cistron_indexes': [],
    'mature_rna_ids': [],
    'n_avogadro': 0.0,
    'n_total_RNAs': 0,
    'nmp_ids': [],
    'nt_counts': array([], shape=(1, 0), dtype=float64),
    'polymerized_ntp_ids': [],
    'ppi_id': 'ppi',
    'proton_id': 'h+',
    'ribosome30S': 'ribosome30S',
    'ribosome50S': 'ribosome50S',
    'rna_deg_rates': [],
    'rna_ids': [],
    'rna_lengths': array([], dtype=float64),
    'rrfa_idx': 0,
    'rrla_idx': 0,
    'rrsa_idx': 0,
    'seed': 0,
    'uncharged_trna_indexes': [],
    'water_id': 'h2o'}
evolve_state(timestep, states)[source]
name = 'ecoli-rna-degradation'
ports_schema()[source]
topology
{   'RNAs': ('unique', 'RNA'),
    'active_ribosome': ('unique', 'active_ribosome'),
    'bulk': ('bulk',),
    'listeners': ('listeners',),
    'timestep': ('timestep',)}