Source code for vivarium.compartments.gfp_expression

import os
from vivarium.library.units import units

from vivarium.core.composition import simulate_compartment_in_experiment
from vivarium.data.proteins import GFP
from vivarium.data.chromosomes.gfp_chromosome import gfp_plasmid_config
from vivarium.states.chromosome import Chromosome, rna_bases, sequence_monomers
from vivarium.library.polymerize import generate_template
from vivarium.compartments.gene_expression import GeneExpression, plot_gene_expression_output
from vivarium.processes.transcription import UNBOUND_RNAP_KEY
from vivarium.processes.translation import UNBOUND_RIBOSOME_KEY
from vivarium.library.make_media import Media

from vivarium.processes.derive_globals import AVOGADRO

[docs]def degradation_sequences(sequence, promoters): return { promoter.last_terminator().product[0]: rna_bases(sequence_monomers( sequence, promoter.position, promoter.last_terminator().position)) for promoter_key, promoter in promoters.items()}
[docs]def generate_gfp_compartment(config): media = Media() PURE = { key: value * units.mmol / units.L for key, value in media.get_saved_media('PURE_Fuji_2014').items()} # TODO: deal with volume volume = 1e-15 * units.L mmol_to_counts = AVOGADRO.to('1/mmol') * volume.to('L') print(mmol_to_counts) PURE_counts = { key: int(value * mmol_to_counts) for key, value in PURE.items()} print(PURE) print(PURE_counts) plasmid = Chromosome(gfp_plasmid_config) sequences = plasmid.product_sequences() print(sequences) proteins = { UNBOUND_RNAP_KEY: PURE_counts[UNBOUND_RNAP_KEY], UNBOUND_RIBOSOME_KEY: PURE_counts[UNBOUND_RIBOSOME_KEY], 'GFP': 0, 'endoRNAse': 1} gfp_config = { 'transcription': { 'sequence': gfp_plasmid_config['sequence'], 'templates': gfp_plasmid_config['promoters'], 'genes': gfp_plasmid_config['genes'], 'promoter_affinities': { ('T7',): 0.001}, 'polymerase_occlusion': 30, 'elongation_rate': 50}, 'translation': { 'sequences': { 'GFP_RNA': GFP.sequence}, 'templates': { 'GFP_RNA': generate_template( 'GFP_RNA', len(GFP.sequence), ['GFP'])}, 'transcript_affinities': { 'GFP_RNA': 0.001}, 'elongation_rate': 22, 'polymerase_occlusion': 50}, 'degradation': { 'sequences': sequences, 'catalytic_rates': { # TODO: provide kcat for each RNA variety 'endoRNAse': 0}, 'michaelis_constants': { 'transcripts': { 'endoRNAse': { 'GFP_RNA': 1e-23}}}}, 'initial_state': { 'molecules': PURE_counts, 'transcripts': {'GFP_RNA': 0}, 'proteins': proteins}} return GeneExpression(gfp_config)
if __name__ == '__main__': out_dir = os.path.join('out', 'tests', 'gfp_expression_composite') if not os.path.exists(out_dir): os.makedirs(out_dir) # load the compartment gfp_expression_compartment = generate_gfp_compartment() # run simulation settings = { 'total_time': 100, } timeseries = simulate_compartment(gfp_expression_compartment, settings) plot_config = { 'name': 'gfp_expression', 'ports': { 'transcripts': 'transcripts', 'molecules': 'molecules', 'proteins': 'proteins'}} plot_gene_expression_output( timeseries, plot_config, out_dir)