# TXTL Tutorial

txtl_tutorial.m - basic usage of the TXTL modeling toolbox

Vipul Singhal, 28 July 2017

This file contains a simple tutorial of the TXTL modeling toolbox. You will learn about setting up a negative autoregulation circuit, simulating it, plotting the results, creating variations of the circuit, and understanding the object structure of the models.

## Contents

- Initializing the toolbox
- Negative Autoregulation - A simple example
- plot the result
- Model Structure
- Plotting individual species
- EMACS editor support (ignore)

## Initializing the toolbox

Use this command to add the subdirectories needed to your matlab path. To be run each time you begin a new TXTL toolbox session.

    txtl_init;

## Negative Autoregulation - A simple example

Here we demonstrate the setup of a genetic circuit where a transcription factor represses its own expression.

Set up the standard TXTL tubes These load up the RNAP, Ribosome and degradation enzyme concentrations ``E30VNPRL'' refers to a configuration file

    tube1 = txtl_extract('E30VNPRL');
    tube2 = txtl_buffer('E30VNPRL');

    % Now set up a tube that will contain our DNA
    tube3 = txtl_newtube('gene_expression');

    % Define the DNA strands, and all the relevant reactions
    txtl_add_dna(tube3, 'ptet(50)', 'utr1(20)', 'tetR(1200)', 1, 'plasmid');
    txtl_add_dna(tube3, 'ptet(50)', 'utr1(20)', 'deGFP(1000)', 1, 'plasmid');

    % Mix the contents of the individual tubes
    Mobj = txtl_combine([tube1, tube2, tube3]);

    % Run a simulaton
    %
    % At this point, the entire experiment is set up and loaded into 'Mobj'.
    % So now we just use standard Simbiology and MATLAB commands to run
    % and plot our results!

    cs = getconfigset(Mobj);
    set(cs.RuntimeOptions, 'StatesToLog', 'all');
    tic
    [simData] = txtl_runsim(Mobj,14*60*60);
    toc
    t_ode = simData.Time;
    x_ode = simData.Data;

    Error using SimBiology.Model/addparameter
    NAME TX_elong_glob is being used by another SimBiology parameter object. Specify a different NAME. Type 'help SimBiology.Model.addparameter' for more information.

    Error in txtl_transcription (line 70)
        addparameter(tube, 'TX_elong_glob',tube.Userdata.ReactionConfig.Transcription_Rate);

    Error in txtl_prom_ptet (line 92)
        txtl_transcription(mode, tube, dna, rna, RNAP, RNAPbound);

    Error in txtl_add_dna (line 203)
            eval(['txtl_prom_' promoterName '(mode, tube, dna, rna, listOfSpecies,prom_spec, utr_spec, cds_spec)']);

    Error in txtl_runsim (line 161)
            txtl_add_dna(modelObj, m.DNAinfo{i}{1}, m.DNAinfo{i}{2}, ...

    Error in txtl_tutorial (line 45)
    [simData] = txtl_runsim(Mobj,14*60*60);

## plot the result

The following function plots the proteins, RNA and resources in the toolbox. In the next section we delve deeper into the object oriented structure of the model, and how to plot arbitrary species in the model.

    txtl_plot(simData,Mobj);

## Model Structure

The model is organized as a model object, with sub objects specifying Parameters, Reactions, Species, etc. Type in

    Mobj

There is one comaprtment, 2 events, 73 parameters, 47 Reactions, no rules and 43 Species in the toolbox. We can explore further by typing, for example,

    Mobj.Species

We see that there are 43 species in the model, and they have somewhat different syntax for specification. Proteins, RNA and DNA generally follow the convention protein CDS, RNA 5'UTR--CDS, DNA promoter--5' UTR--CDS, with variations possible. There are also simply named `core' species like RNAP, Ribo, RNase, etc. Finally we denote bound complexes with a colon, for example, Species 1:Species 2.

We also see that each of them has certain other associated properties. You can explore further by accessing individual species using their index, and using the `get' and `set' commands to get and set the properties of the species. For example, try typing

    Mobj.Species(1)

This gives you the first species in the model. You can find out what properties as associated with this species by typing in

    get(Mobj.Species(1))

and then using the set command to set its initial concentration to 50 units:

    set(Mobj.Species(1), 'InitialAmount', 50)

Learn more about the get and set commands by typing in

    help get
    help set

You may read more about how model objects are arranged in Simbiology by working through the Tutorial. Feel free to browse the reactions and other subproperties by individually typing in commands like

    Mobj.reactions
    get(Mobj.Reactions)
    get(Mobj.Reactions(1))
    Mobj.Reactions(1).ReactionRate
    Mobj.Reactions(1).KineticLaw
    get(Mobj.Reactions(1).KineticLaw)

and so on.

## Plotting individual species

You can also plot the trajectories of any of the species in the model. Use the function findspecies to get the index of the species object of interest. For example, if you want to plot the trajectory of the dimerized tetR protein, you could type in

    tetRindex = findspecies(Mobj, 'protein tetRdimer');
    figure
    plot(simData.Time/3600, simData.data(:,tetRindex));
    title('Dimerized tetR concentration')
    ylabel('concentration, AU')
    xlabel('time, AU')
    curraxis = axis;
    axis([curraxis(1:2) 0 curraxis(4)])
    %

## EMACS editor support (ignore)

Automatically use matlab mode in emacs (keep at end of file) Local variables: mode: matlab End: