GFtbox Tutorial pages: Difference between revisions

From BanghamLab
Jump to navigation Jump to search
No edit summary
 
(82 intermediate revisions by 3 users not shown)
Line 1: Line 1:
[[GFtbox|''GFtbox'' Details]]
[[GFtbox|''GFtbox'' Details]]<br>
__NOTOC__
[[Notes from a new user|Notes from a new user]]<br>
[[Running example models and using a cluster|Running example models and using a cluster]]<br>
[[GFtbox Example pages|Examples from our papers]]<br>
[[Types of morphogens and factors| Types of morphogens and factors are given here]]<br>
([[Full freshly minted interaction function|A newly created interaction function is shown here - the green comments are another ready reference.]])<br>
[[Ready Reference Manual|'''''Ready Reference''''' Manual]]<br><br>
 
 
The models shown in these tutorials illustrate features of the GFtbox software. They are not designed to understand the Growing Polarised Tissue Framework which is better done with [[GFtbox Example pages|Examples from our papers]].<br><br>
Viewing these pages. Some versions of ''Firefox'' and ''Explorer'' do not create satisfactory prints even though you can view the pages with no problems. ''Chrome'' does appear to produce good printouts.
=Three ways to use ''GFtbox''=
=Three ways to use ''GFtbox''=
1) '''Doing everything from the Graphical User Interface (GUI)'''. [[GFtbox Tutorial pages#1 Modelling using the Graphical User Interface| See here for the best way to start working with ''GFtbox'']]<br><br>
1) [[GFtbox Tutorial pages#1 Modelling using the Graphical User Interface| '''Do everything from the Graphical User Interface (GUI).''']]<br><br>
2) '''Do only some things''' from the GUI.  [[GFtbox Tutorial pages#2 Modelling using a combination of GUI and interaction function|See here for the best way to develop ideas on the growth of shape.]] Use the GUI to generate the mesh (canvas) and create growth factors (morphogens - in other words declare the variables) but capturing your ideas on how the regulatory processes work in, what we call, the interaction function.<br><br>
2)   [[GFtbox Tutorial pages#2 Modelling using a combination of GUI and interaction function|'''Do only some things from the GUI.''']] Use the GUI to generate the mesh (canvas) and create growth factors, but capturing your ideas on how the regulatory processes work by writing Matlab code in what we call the interaction function.<br><br>  
For an introduction to the [[GFtbox Tutorial pages#Output and Results| '''output and results''', see here.]]<br><br>
3) [[GFtbox Tutorial pages#3 Running models without the GUI|'''Without the GUI.''']] For example, run many examples (instances) of a pre-existing project on a cluster. This is the best way to explore the parameter space of a model for comparison with biological observations. We use this extensively once we have roughed out the basic ideas of a model interactively.  
3) '''Without the GUI'''.  [[GFtbox Tutorial pages#3 Running models without the GUI|Running models without the GUI, see here.]] For example, run many examples (instances) of a pre-existing project on a cluster. This is the best way to explore the parameter space of a model for comparison with biological observations. We use this extensively once we have roughed out the basic ideas interactively.  
=Hints and Tips=
#[[Ready Reference Manual|Ready Reference Manual]] worth printing it includes details on taking snapshots and movies (and solving problems)
#[[Ready Reference Manual#Snapshots|Multiple Figures for publication]] '''colours and viewpoints.'''
#[[Ready Reference Manual#Movies|Movies for publication and web]] '''codecs compression and Powerpoint.'''
#<span style="color: "Alabama Crimson">'''Quality and accuracy'''</span>
##[[Mesh: tradeoff |Mesh: tradeoff]] between memory/speed and accuracy. '''Increasing the number of vertices in specific regions'''
##[[Time: tradeoff|Time: tradeoff]] between speed and accuracy. '''Checking that time steps are small enough'''.
##[[Tolerances: tradeoff|Tolerances: tradeoff]] between speed and accuracy. '''Checking that tolerances are tight enough.'''
#Measuring model growth
##[[Measuring using interaction function subroutines| '''Measuring''' using interaction function subroutines]]
#[[DemoCutting intraction function|Mesh: cutting and flattening]]  '''Dissecting a mesh and flattening the parts'''
='''1''' Modelling using the Graphical User Interface=
='''1''' Modelling using the Graphical User Interface=
== Isotropic growth==
== Isotropic growth==
'''How to use the tutorial.''' Open GFtbox and attempt to repeat the results shown.
===1 A===
===1 A===
{| border="0" cellpadding="5" cellspacing="3"
{| border="0" cellpadding="5" cellspacing="3"
|- valign="top"
|- valign="top"
|width="700pt"|[[In the beginning Uniform|For tutorial on uniform growth click here.]]<br><br>Consider a disc shaped canvas (tissue) in which the '''specified growth is uniform''', isotropic and on both sides.<br><br>'''Into what shape will the disc grow?'''<br><br>This model is as simple as it gets. Notice that, during growth, the mesh is automatically subdivided. Notice also that the final surface is not quite flat. This is because, to allow it to deform in 3D, it is not flat initially. There are options to initialise a flat mesh and others to force it to remain flat - see options on the GUI (hover over controls to get prompts).<br><br>
|width="700pt"|[[In the beginning Uniform|Tutorial on uniform growth.]]<br><br>Consider a disc shaped canvas (tissue) in which the '''specified growth is uniform''', isotropic and on both sides.<br><br>'''Into what shape will the disc grow?'''<br><br>This model is as simple as it gets. Notice that, during growth, the mesh is automatically subdivided. Notice also that the final surface is not quite flat. This is because, to allow it to deform in 3D, it is not flat initially. There are options to initialise a flat mesh and others to force it to remain flat - see options on the GUI (hover over controls to get prompts).<br><br>
In the absence of a polariser (there is no polariser in this example) growth will be isotropic, in other words growth in the plane of the canvas will be the average of what is specified for ''Kapar'' and ''Kaper'' (''A'' side) and ''Kbpar'' and ''Kbper'' (''B'' side).<br>
In the absence of a polariser (there is no polariser in this example) growth will be isotropic, in other words growth in the plane of the canvas will be the average of what is specified for ''Kapar'' and ''Kaper'' (''A'' side) and ''Kbpar'' and ''Kbper'' (''B'' side).<br>
|width="300pt"|<wikiflv width="300" height="300" logo="false"  loop="true" background="white">GPT_tut_uniform_20110527-0003.flv|GPT_tut_uniform_20110527-0003_Last.png</wikiflv>
|width="200pt"|<wikiflv width="300" height="300" logo="false"  loop="true" background="white">GPT_tut_uniform_20110527-0003.flv|GPT_tut_uniform_20110527-0003_Last.png</wikiflv>
|}
|}
===1 B===
===1 B===
{| border="0" cellpadding="5" cellspacing="3"
{| border="0" cellpadding="5" cellspacing="3"
|- valign="top"
|- valign="top"
|width="700pt"|[[In the beginning non-uniform|For tutorial on non-uniform growth click here]]<br><br>Consider a disc shaped canvas (tissue) in which the''' non-uniform specified growth''' increases in proportion to the distance from the centre.<br><br>'''Into what shape will the disc grow?'''<br><br>Already we are into the realms of modelling biological systems. Compare this result with the discussion of Lily petals and Gaussian curvature ([http://www.pnas.org/content/early/2011/03/14/1007808108.abstract Lianga and Mahadevana],[http://www.americanscientist.org/issues/feature/leaves-flowers-and-garbage-bags-making-waves Sharon, Marder and Swinney],[http://rico-coen.jic.ac.uk/uploads/0/0f/Nath_Science.pdf Nath, Crawford, Carpenter and Coen] ).
|width="700pt"|[[In the beginning non-uniform|Tutorial on non-uniform growth.]]<br><br>Consider a disc shaped canvas (tissue) in which the''' non-uniform specified growth''' increases in proportion to the distance from the centre.<br><br>'''Into what shape will the disc grow?'''<br><br>Already we are into the realms of modelling biological systems. Compare this result with the discussion of Lily petals and Gaussian curvature ([http://www.pnas.org/content/early/2011/03/14/1007808108.abstract Lianga and Mahadevana],[http://www.americanscientist.org/issues/feature/leaves-flowers-and-garbage-bags-making-waves Sharon, Marder and Swinney],[http://rico-coen.jic.ac.uk/uploads/0/0f/Nath_Science.pdf Nath, Crawford, Carpenter and Coen] ).
|width="200pt"|<wikiflv width="300" height="300" logo="false"  loop="true" background="white">GPT_tut_uniform_20110527-0006.flv|GPT_tut_uniform_20110527-0006_First.png</wikiflv>
|width="200pt"|<wikiflv width="300" height="300" logo="false"  loop="true" background="white">GPT_tut_uniform_20110527-0006.flv|GPT_tut_uniform_20110527-0006_First.png</wikiflv>
<small>Note: this model should have many more finite elements</small>
|}
|}


Line 27: Line 47:
{| border="0" cellpadding="5" cellspacing="3"
{| border="0" cellpadding="5" cellspacing="3"
|- valign="top"
|- valign="top"
|width="700pt"|[[In the beginning Growing a cone|For tutorial on uniform growth non-uniform polariser click here]]<br><br>
|width="700pt"|[[In the beginning Growing a cone|Tutorial on uniform growth with non-uniform polariser.]]<br><br>
In the presence of polariser, ''GFtbox'' growth will be anisotropic, in other words growth in the plane of the canvas can be different parallel and perpendicular to the axis of the polariser: ''Kapar'' and ''Kaper'' (''A'' side) and ''Kbpar'' and ''Kbper'' (''B'' side).<br><br>
In the presence of polariser, ''GFtbox'' growth will be anisotropic, in other words growth in the plane of the canvas can be different parallel and perpendicular to the axis of the polariser: ''Kapar'' and ''Kaper'' (''A'' side) and ''Kbpar'' and ''Kbper'' (''B'' side).<br><br>
We now''' add polariser'''.  Start with example A - uniform growth - and add a radial polarising gradient.<br><br>Arrows show the direction of the gradient. They are turned on using the Panel:Plot option:Pol. grad. tick box. The gradient defines local directions and local growth can be specifed either parallel to (''Kpar'') or perpendicular to (''Kper'') that direction.<br><br>
We now''' add polariser'''.  Start with example A - uniform growth - and add a radial polarising gradient.<br><br>Arrows show the direction of the gradient. They are turned on using the Panel:Plot option:Pol. grad. tick box. The gradient defines local directions and local growth can be specifed either parallel to (''Kpar'') or perpendicular to (''Kper'') that direction.<br><br>
Given a '''uniform pattern of specified growth parallel''' to the polariser and '''zero specified growth perpendicular''' to the polariser.<br><br> '''What will be the final shape?'''
Given a '''uniform pattern of specified growth parallel''' to the polariser and '''zero specified growth perpendicular''' to the polariser.<br><br> '''What will be the final shape?'''<br>
|width="200pt"|<wikiflv width="300" height="300" logo="false"  loop="true" background="white">GPT_in_the_beginning_2_20110510-0003.flv|GPT_in_the_beginning_2_20110510-0003_First.png</wikiflv><small>Note: the gradient of the polariser, green to cyan, is shown using the arrows. Specified growth rate parallel to the arrows, red, is uniform.</small>
<small>Note: the gradient of the polariser, green to cyan, is shown using the arrows. Specified growth rate parallel to the arrows, red, is uniform.</small>
 
|width="200pt"|<wikiflv width="300" height="300" logo="false"  loop="true" background="white">GPT_in_the_beginning_2_20110510-0003.flv|GPT_in_the_beginning_2_20110510-0003_First.png</wikiflv>
|}
|}


='''2''' Modelling using a combination of GUI and interaction function=
='''2''' Modelling using a combination of GUI and interaction function=
Interaction functions - programmatic modelling. <br><br>
'''How to use these tutorials.''' Use a combination of the GUI to set up the Mesh structure and editing the associated interaction function to repeat the results shown. Full listings of the interaction functions are given from which you can copy the key, editable, elements.<br><br>
The '''full specification''' of a ''GFtbox'' model is stored in a combination of the mesh data structure ('''Mesh''') and the '''interaction function'''. The Mesh stores all the physical properties of the system: spatial structure, mechanical properties, etc. It is usually set up using the GUI. The Mesh is stored on disc as a Matlab data file (.mat) and in memory as a data structure (m). The '''interaction function''' (a Matlab program file ''.m'') contains all the details of the growth regulation system: morphogen concentrations, signal interactions etc.  
The '''full specification''' of a ''GFtbox'' model is stored in a combination of the mesh data structure ('''Mesh''') and the '''interaction function'''. The Mesh stores all the physical properties of the system: spatial structure, mechanical properties, etc. It is usually set up using the GUI. The Mesh is stored on disc as a Matlab data file (.mat) and in memory as a data structure (m). The '''interaction function''' (a Matlab program file ''.m'') contains all the details of the growth regulation system: morphogen concentrations, signal interactions etc.  
<br><br>
<br><br>
Line 41: Line 63:


===2 A===
===2 A===
Basic interaction function
'''Basic interaction function'''
The '''Mesh''' was setup using the GUI and code articulating the regulatory model was edited into the ''''interaction function''' as follows:
The patterns of morphogens A and B are set up by <br>
 
        id_a_p(m.nodes(:,1) < -0.03) = 1;
        id_b_p(m.nodes(:,2) < -0.01) = 1;
 
where ''id_a_p'' is the A morphogen. ''m.node(:,1)'' refers to the ''x'' coordinates of all nodes (vertices) in the mesh<br>
The expression ''(m.nodes(:,1) < -0.03)'' means find all vertices with ''x'' coordinates that are less than -0.03.<br><br>
Similarly, ''(m.nodes(:,2) < -0.01)'' means find all vertices with ''y'' coordinates that are less than -0.01.<br><br>
 
And the pattern of polariser (P) is set up by<br>       
 
        P((m.nodes(:,1) < -0.05) & (m.nodes(:,2) > 0.03)) = 1;
Where ''(m.nodes(:,1) < -0.05) & (m.nodes(:,2) > 0.03)'' means find all vertices with ''x,y'' coordinates that are less than -0.05 and greater than 0.03 respectively<br><br>
Thus the full code describing the model is:
     if (Steps(m)==0) && m.globalDynamicProps.doinit  % Initialisation code.
     if (Steps(m)==0) && m.globalDynamicProps.doinit  % Initialisation code.
         id_a_p(m.nodes(:,1)<-0.03)=1; % setup region for A where identity factor A is represented by id_a_p
         id_a_p(m.nodes(:,1) < -0.03) = 1; % setup region for A where identity factor A is represented by id_a_p
         id_b_p(m.nodes(:,2)<-0.01)=1; % setup region for B
         id_b_p(m.nodes(:,2) < -0.01) = 1; % setup region for B
     else
     else
         % @@KRN Growth Regulatory Network
         % @@KRN Growth Regulatory Network
Line 56: Line 91:
{| border="0" cellpadding="15" cellspacing="3"
{| border="0" cellpadding="15" cellspacing="3"
|- valign="top"
|- valign="top"
|width="400pt"|[[Tutorial on the basic interaction function|For tutorial on a basic interaction function click here]]<br><br>
|width="400pt"|[[Tutorial on the basic interaction function|Tutorial on a basic interaction function.]]<br><br>
The tutorial explains how the code shown above appears in the interaction function. <br><br>To create the interaction function, first create and save a project (see above) then click Panel:Interaction function:Edit. The interaction function will contain all the default variables and any patterns of variables (''Kapar'', etc.) that have already been set through the GUI.
The tutorial explains how the code shown above appears in the interaction function. <br><br>
To create the interaction function, first create and save a project (see above) then click Panel:Interaction function:Edit. The interaction function will contain all the default variables and any patterns of variables (''Kapar'', etc.) that have already been set through the GUI.
[[Types of morphogens and factors| Types of morphogens and factors are given here]].
[[Types of morphogens and factors| Types of morphogens and factors are given here]].
|width="200pt"|<wikiflv width="300" height="300" logo="false" loop="true">GPT_why_matlab-2011-05-05-0005.flv|GPT_why_matlab-2011-05-05-0005_First.png‎</wikiflv>
|width="200pt"|<wikiflv width="300" height="300" logo="false" loop="true">GPT_why_matlab-2011-05-05-0005.flv|GPT_why_matlab-2011-05-05-0005_First.png‎</wikiflv>
|-align="top"
|-align="top"
|Details
|
||<center>Play and the mesh will grow and subdivide. Normally we do not want to see the mesh. Red is growth rate</center>  
||<center>Play and the mesh will grow and subdivide. Normally we do not want to see the mesh. Red is growth rate</center>  
|}
|}
===2 B===
===2 B===
Interaction function in detail ([[Full freshly minted interaction function|A newly created, empty, interaction function is shown here.]])<br><br>
'''Interaction function in detail'''<br><br>
([[Full freshly minted interaction function|A newly created interaction function is shown here - this one has two, user specified morphogens: ''id_a'' and ''id_b''.]])<br><br>
There are two submodels. An identical growth pattern and polariser pattern is specified in both, but only the specified growth in the second is anisotropic and so uses the axiality specified by the polariser gradient. The gradient is zero in the region where the polariser is held at a constant value of one - and therefore growth in the region without arrows is isotropic.<br><br>
 
{| border="0" cellpadding="15" cellspacing="3"
{| border="0" cellpadding="15" cellspacing="3"
|- valign="top"
|- valign="top"
|width="400pt"|[[Tutorial on the interaction function details|Tutorial on the interaction function details click here]]<br><br>
|width="400pt"|[[Tutorial on the interaction function details|Tutorial on the interaction function details.]]<br><br>
[[Types of morphogens and factors| Types of morphogens and factors are given here]].
[[Types of morphogens and factors| Types of morphogens and factors are given here]].<br><br>
|width="200pt"|<wikiflv width="300" height="300" logo="false" loop="true">GPT_why_matlab-2011-05-05-0005.flv|GPT_why_matlab-2011-05-05-0005_First.png‎</wikiflv><br>
Submodel 1
<center>Play submodel 1</center>
|width="200pt"|<wikiflv width="300" height="300" logo="false" loop="true">GPT_tut_interaction_example_20110601-0002.flv|GPT_tut_interaction_example_20110601-0002.png‎</wikiflv><br>
|- valign="top"
|- valign="top"
|Submodel 2
|Submodel 2. Growth in the region that has no arrows is isotropic and, as result, the outgrowth is blunt.
|width="200pt"|<wikiflv width="300" height="300" logo="false" loop="true">GPT_why_matlab-2011-05-05-0005.flv|GPT_why_matlab-2011-05-05-0005_First.png‎</wikiflv><br>
|width="200pt"|<wikiflv width="300" height="300" logo="false"loop="true">
<center>Play submodel 2</center>
GPT_tut_interaction_example_20110601-0007.flv|GPT_tut_interaction_example_20110601-0006_Last.png‎</wikiflv><br>
|}
|}
=Output and Results=
 
===2 C Illustrating two independent ways to form shapes and the use of submodels. ===
===2 C Illustrating independent ways to form shapes and the use of submodels. ===
Conclusion: interesting shapes can be generated either by '''patterns of differential growth''' or''' patterns of local growth axe'''s. <br><br>
Conclusion: interesting shapes can be generated either by '''patterns of differential growth''' or''' patterns of local growth axe'''s. <br><br>
[[Tutorial on two romatic hearts|Tutorial on two romatic hearts click here]]<br><br>
[[Tutorial on different ways of specifying the growth of shapes|Tutorial on different ways of specifying the growth of shapes.]]<br><br>
{| border="0" cellpadding="15" cellspacing="3"
{| border="0" cellpadding="15" cellspacing="3"
|- valign="top"
|- valign="top"
|width="400pt"|Submodel 1.'''Uniform specified polariser''' (no polariser gradient). Creating a shape using a specified pattern of isotropic growth.<br><br>
|width="400pt"|Submodel 1. Uniform specified polariser ('''no polariser gradient'''). Creating a shape using a specified pattern of isotropic growth.<br><br>
'''Result''': simple patterns can readily produce blobby shapes. <br><br>
'''Result''': simple patterns of differential growth can readily produce blobby shapes. <br><br>
|width="200pt"|<wikiflv width="300" height="300" logo="false" loop="true">GPT_TwoWayHeart_20110531-0001.flv|GPT_TwoWayHeart_20110531-0001_Last.png‎</wikiflv><br>
|width="200pt"|<wikiflv width="300" height="300" logo="false" loop="true">GPT_TwoWayHeart_20110531-0001.flv|GPT_TwoWayHeart_20110531-0001_Last.png‎</wikiflv><br>
<center>Play submodel 1. Pattern of isotropic specified growth (no polariser)</center>
<center>Play submodel 1. Pattern of isotropic specified growth (no polariser)</center>
|- valign="top"
|- valign="top"
|Submodel 2.'''Uniform specified growth'''. Creating a shape using a specified pattern of diffusable polariser.<br><br>
|Submodel 2.'''Uniform specified growth'''. Creating a shape using a specified pattern of diffusable polariser.<br><br>
'''Result''': simple patterns can readily produce sharp shapes. <br><br>
'''Result''': simple patterns organising a diffusable polariser can readily produce sharp shapes. <br><br>
{| border="0" cellpadding="15" cellspacing="3"
|- valign="bottom"
|width="150pt"|[[Image:Heartdrawingtransparent.png|Heartdrawing]] 
|width="150pt"| [[Image:Heartshaped.jpg|200px|Heartdrawing]]<br>
|}
<br>Outputs from these models bear only a romantic relation to hearts, flowers and lepidoptra.<br>
|width="200pt"|<wikiflv width="300" height="300" logo="false" loop="true">GPT_TwoWayHeart_20110531-0002.flv|GPT_TwoWayHeart_20110531-0002_Last.png‎</wikiflv><br>
|width="200pt"|<wikiflv width="300" height="300" logo="false" loop="true">GPT_TwoWayHeart_20110531-0002.flv|GPT_TwoWayHeart_20110531-0002_Last.png‎</wikiflv><br>
<center>Play submodel 2. Pattern of specified polariser levels (green-cyan). Polariser can diffuse and the gradient is arrowed. Uniform specified growth (red).</center>
<center>Play submodel 2. Pattern of specified polariser levels (green-cyan). Polariser can diffuse and the gradient is arrowed. Uniform specified growth (red).</center>
|}
|}
 
===2 D===
='''3''' Running models without the GUI=
'''Retaining strain and cutting the mesh'''<br><br>
Having developed the concepts underpinning a pattern of growth in an interaction function it is often desirable to explore a range of model parameters. Given that each run of the model can take between 5 minutes and hour it is appropriate to run the models in parallel on a computing cluster.  (Each node of the cluster to be used by ''GFtbox'' needs to be licensed to run Matlab - however for the purpose of running on a cluster without the GUI we are exploring the possibility of making ''GFtbox'' compatible with [http://www.gnu.org/software/octave/ Octave].)<br><br>
There are two submodels. They are the same except that in the first strain is not retained from step to step whereas in the second strain is fully retained. The shape changes during growth look similar, the difference is only revealed when the mesh is cut. The behaviour of plant tissue can be similar. <br><br>
[[Tutorial on retaining residual strain and cutting|Tutorial on retaining residual strain and cutting]]
{| border="0" cellpadding="15" cellspacing="3"
|- valign="top"
|width="400pt"|
[[Image:GPT_RetainStrainAndCut_20110603-000050-0005.png|300px|none]]Strain not retained after each step. In plant tissue terms this would appear to be equivalent to there being a homeostatic mechanism that operates such as to re-strengthen the cell walls after they have been weakened to the point that they yield under turgor pressure during growth.
|width="120pt"|<wikiflv width="300" height="300" logo="false" loop="true">GPT_RetainStrainAndCut_20110603-0006.flv|GPT_RetainStrainAndCut_20110603-0006.png‎</wikiflv><br>
<center>Play submodel 1</center>
<br>
|- valign="top"
|width="200pt"| [[Image:GPT_RetainStrainAndCut_20110603-000050-0003.png|300px|none]]Retaining the strain from step to step allows the growth on the inside to force the mesh as a whole to grow more than when strain is not retained.
|width="200pt"|<wikiflv width="300" height="300" logo="false" loop="true">GPT_RetainStrainAndCut_20110603-0004.flv|GPT_RetainStrainAndCut_20110603-0004.png‎</wikiflv>
<center>Whilst the frame rate relates directly to growth rate, the relaxation rate after cutting does not. After cutting the computation has to be done in smaller steps and the rate at which the sides bend back shown here is too slow.</center>
|}
<!--
===2 E===
'''Patterning and growth'''<br><br>
There are two submodels. They have the same growth and polarity regulation networks but different patterns of regulatory genes. In the first the pattern evolves deterministically, in the second the patterning is based on a reaction diffusion system (c.f. Turing). <br><br>
[[Tutorial on the patterning interaction function|Tutorial on the patterning interaction function]]
{| border="1" cellpadding="15" cellspacing="3"
|- valign="top"
|width="400pt"|something here
|width="200pt"|<wikiflv width="300" height="300" logo="false" loop="true">GPT_tut_interaction_example_20110601-0002.flv|GPT_tut_interaction_example_20110601-0002.png‎</wikiflv><br>
<center>Play submodel 1</center>
|- valign="top"
|width="400pt"|something here
|width="200pt"|<wikiflv width="300" height="300" logo="false" loop="true">GPT_tut_interaction_example_20110601-0007.flv|GPT_tut_interaction_example_20110601-0006_Last.png‎</wikiflv><br>
<center>Play submodel 2</center>
|}
-->
='''3''' Cluster runs and batch mode: running models without the GUI=
Having developed the concepts underpinning a pattern of growth in an interaction function it is often desirable to explore a range of model parameters. Given that each run of the model can take between 5 minutes and hour it is appropriate to run the models in batch mode on the desktop or, better, in parallel on a computing cluster.  (Each node of the cluster to be used by ''GFtbox'' needs to be licensed to run Matlab - however for the purpose of running on a cluster without the GUI we are exploring the possibility of making ''GFtbox'' compatible with [http://www.gnu.org/software/octave/ Octave].)<br><br>
'''Batch mode and cluster runs.'''<br>
'''How to use these tutorials.'''  First ensure that your model is working as you would expect using the GUI. Then run the model from the Matlab command line. Finally, run the models in batch mode or submit the project to the linux computing cluster with one or more ranges of parameters.
For further details [[Running example models and using a cluster|Running example models and using a cluster]]<br>
='''4''' Comparing resultant shapes with observed organ shapes=
===4 A===
[[Tutorial on mapping results into shape space|Tutorial on mapping results into shape space]]
{| border="1" cellpadding="15" cellspacing="3"
|- valign="top"
|width="400pt"|[[Image:wikiModelShapespace.png|400px|none]]
|width="200pt"|<wikiflv width="300" height="300" logo="false" loop="true">GPT_tut_interaction_example_20110601-0002.flv|GPT_tut_interaction_example_20110601-0002.png‎</wikiflv><br>
<left>(Marks) The shape of growing ''Arabidopsis'' leaves projected into a shape space represented by the two principal components. (Lines) The shape of a computational model of a growing ''Arabidopsis'' leaf projected into the same space.</center>
|}

Latest revision as of 06:34, 13 June 2014

GFtbox Details
Notes from a new user
Running example models and using a cluster
Examples from our papers
Types of morphogens and factors are given here
(A newly created interaction function is shown here - the green comments are another ready reference.)
Ready Reference Manual


The models shown in these tutorials illustrate features of the GFtbox software. They are not designed to understand the Growing Polarised Tissue Framework which is better done with Examples from our papers.

Viewing these pages. Some versions of Firefox and Explorer do not create satisfactory prints even though you can view the pages with no problems. Chrome does appear to produce good printouts.

Three ways to use GFtbox

1) Do everything from the Graphical User Interface (GUI).

2) Do only some things from the GUI. Use the GUI to generate the mesh (canvas) and create growth factors, but capturing your ideas on how the regulatory processes work by writing Matlab code in what we call the interaction function.

3) Without the GUI. For example, run many examples (instances) of a pre-existing project on a cluster. This is the best way to explore the parameter space of a model for comparison with biological observations. We use this extensively once we have roughed out the basic ideas of a model interactively.

Hints and Tips

  1. Ready Reference Manual worth printing it includes details on taking snapshots and movies (and solving problems)
  2. Multiple Figures for publication colours and viewpoints.
  3. Movies for publication and web codecs compression and Powerpoint.
  4. Quality and accuracy
    1. Mesh: tradeoff between memory/speed and accuracy. Increasing the number of vertices in specific regions
    2. Time: tradeoff between speed and accuracy. Checking that time steps are small enough.
    3. Tolerances: tradeoff between speed and accuracy. Checking that tolerances are tight enough.
  5. Measuring model growth
    1. Measuring using interaction function subroutines
  6. Mesh: cutting and flattening Dissecting a mesh and flattening the parts

1 Modelling using the Graphical User Interface

Isotropic growth

How to use the tutorial. Open GFtbox and attempt to repeat the results shown.

1 A

Tutorial on uniform growth.

Consider a disc shaped canvas (tissue) in which the specified growth is uniform, isotropic and on both sides.

Into what shape will the disc grow?

This model is as simple as it gets. Notice that, during growth, the mesh is automatically subdivided. Notice also that the final surface is not quite flat. This is because, to allow it to deform in 3D, it is not flat initially. There are options to initialise a flat mesh and others to force it to remain flat - see options on the GUI (hover over controls to get prompts).

In the absence of a polariser (there is no polariser in this example) growth will be isotropic, in other words growth in the plane of the canvas will be the average of what is specified for Kapar and Kaper (A side) and Kbpar and Kbper (B side).

<wikiflv width="300" height="300" logo="false" loop="true" background="white">GPT_tut_uniform_20110527-0003.flv|GPT_tut_uniform_20110527-0003_Last.png</wikiflv>

1 B

Tutorial on non-uniform growth.

Consider a disc shaped canvas (tissue) in which the non-uniform specified growth increases in proportion to the distance from the centre.

Into what shape will the disc grow?

Already we are into the realms of modelling biological systems. Compare this result with the discussion of Lily petals and Gaussian curvature (Lianga and Mahadevana,Sharon, Marder and Swinney,Nath, Crawford, Carpenter and Coen ).
<wikiflv width="300" height="300" logo="false" loop="true" background="white">GPT_tut_uniform_20110527-0006.flv|GPT_tut_uniform_20110527-0006_First.png</wikiflv>

Adding polariser

1 C

Tutorial on uniform growth with non-uniform polariser.

In the presence of polariser, GFtbox growth will be anisotropic, in other words growth in the plane of the canvas can be different parallel and perpendicular to the axis of the polariser: Kapar and Kaper (A side) and Kbpar and Kbper (B side).

We now add polariser. Start with example A - uniform growth - and add a radial polarising gradient.

Arrows show the direction of the gradient. They are turned on using the Panel:Plot option:Pol. grad. tick box. The gradient defines local directions and local growth can be specifed either parallel to (Kpar) or perpendicular to (Kper) that direction.

Given a uniform pattern of specified growth parallel to the polariser and zero specified growth perpendicular to the polariser.

What will be the final shape?
Note: the gradient of the polariser, green to cyan, is shown using the arrows. Specified growth rate parallel to the arrows, red, is uniform.

<wikiflv width="300" height="300" logo="false" loop="true" background="white">GPT_in_the_beginning_2_20110510-0003.flv|GPT_in_the_beginning_2_20110510-0003_First.png</wikiflv>

2 Modelling using a combination of GUI and interaction function

How to use these tutorials. Use a combination of the GUI to set up the Mesh structure and editing the associated interaction function to repeat the results shown. Full listings of the interaction functions are given from which you can copy the key, editable, elements.

The full specification of a GFtbox model is stored in a combination of the mesh data structure (Mesh) and the interaction function. The Mesh stores all the physical properties of the system: spatial structure, mechanical properties, etc. It is usually set up using the GUI. The Mesh is stored on disc as a Matlab data file (.mat) and in memory as a data structure (m). The interaction function (a Matlab program file .m) contains all the details of the growth regulation system: morphogen concentrations, signal interactions etc.

When a new project is first edited the interaction function is generated automatically. Thereafter, it is automatically kept in synchrony with the GUI. It is divided into several sections. Some are generated automatically and should not be edited. Others are set aside for the user to specify the model. To ensure that the automatic and manual edits are synchronised always invoke the Editor from the GUI (Panel: Interaction Function: Edit).

2 A

Basic interaction function The patterns of morphogens A and B are set up by

       id_a_p(m.nodes(:,1) < -0.03) = 1; 
       id_b_p(m.nodes(:,2) < -0.01) = 1; 

where id_a_p is the A morphogen. m.node(:,1) refers to the x coordinates of all nodes (vertices) in the mesh
The expression (m.nodes(:,1) < -0.03) means find all vertices with x coordinates that are less than -0.03.

Similarly, (m.nodes(:,2) < -0.01) means find all vertices with y coordinates that are less than -0.01.

And the pattern of polariser (P) is set up by

       P((m.nodes(:,1) < -0.05) & (m.nodes(:,2) > 0.03)) = 1;

Where (m.nodes(:,1) < -0.05) & (m.nodes(:,2) > 0.03) means find all vertices with x,y coordinates that are less than -0.05 and greater than 0.03 respectively

Thus the full code describing the model is:

   if (Steps(m)==0) && m.globalDynamicProps.doinit  % Initialisation code.
       id_a_p(m.nodes(:,1) < -0.03) = 1; % setup region for A where identity factor A is represented by id_a_p
       id_b_p(m.nodes(:,2) < -0.01) = 1; % setup region for B
   else
       % @@KRN Growth Regulatory Network
       kapar_p(:) = id_a_l .* inh(1,id_b_l); % growth rate
       kaper_p(:) = kapar_p; % isotropic growth
       kbpar_p(:) = kapar_p; % same on both sides of the sheet
       kbper_p(:) = kapar_p; % same
       knor_p(:)  = 0;       % thickness not growing
   end
Tutorial on a basic interaction function.

The tutorial explains how the code shown above appears in the interaction function.

To create the interaction function, first create and save a project (see above) then click Panel:Interaction function:Edit. The interaction function will contain all the default variables and any patterns of variables (Kapar, etc.) that have already been set through the GUI. Types of morphogens and factors are given here.

<wikiflv width="300" height="300" logo="false" loop="true">GPT_why_matlab-2011-05-05-0005.flv|GPT_why_matlab-2011-05-05-0005_First.png‎</wikiflv>
Play and the mesh will grow and subdivide. Normally we do not want to see the mesh. Red is growth rate

2 B

Interaction function in detail

(A newly created interaction function is shown here - this one has two, user specified morphogens: id_a and id_b.)

There are two submodels. An identical growth pattern and polariser pattern is specified in both, but only the specified growth in the second is anisotropic and so uses the axiality specified by the polariser gradient. The gradient is zero in the region where the polariser is held at a constant value of one - and therefore growth in the region without arrows is isotropic.

Tutorial on the interaction function details.

Types of morphogens and factors are given here.

Submodel 1

<wikiflv width="300" height="300" logo="false" loop="true">GPT_tut_interaction_example_20110601-0002.flv|GPT_tut_interaction_example_20110601-0002.png‎</wikiflv>
Submodel 2. Growth in the region that has no arrows is isotropic and, as result, the outgrowth is blunt. <wikiflv width="300" height="300" logo="false"loop="true">

GPT_tut_interaction_example_20110601-0007.flv|GPT_tut_interaction_example_20110601-0006_Last.png‎</wikiflv>

2 C Illustrating independent ways to form shapes and the use of submodels.

Conclusion: interesting shapes can be generated either by patterns of differential growth or patterns of local growth axes.

Tutorial on different ways of specifying the growth of shapes.

Submodel 1. Uniform specified polariser (no polariser gradient). Creating a shape using a specified pattern of isotropic growth.

Result: simple patterns of differential growth can readily produce blobby shapes.

<wikiflv width="300" height="300" logo="false" loop="true">GPT_TwoWayHeart_20110531-0001.flv|GPT_TwoWayHeart_20110531-0001_Last.png‎</wikiflv>
Play submodel 1. Pattern of isotropic specified growth (no polariser)
Submodel 2.Uniform specified growth. Creating a shape using a specified pattern of diffusable polariser.

Result: simple patterns organising a diffusable polariser can readily produce sharp shapes.

Heartdrawing Heartdrawing


Outputs from these models bear only a romantic relation to hearts, flowers and lepidoptra.

<wikiflv width="300" height="300" logo="false" loop="true">GPT_TwoWayHeart_20110531-0002.flv|GPT_TwoWayHeart_20110531-0002_Last.png‎</wikiflv>
Play submodel 2. Pattern of specified polariser levels (green-cyan). Polariser can diffuse and the gradient is arrowed. Uniform specified growth (red).

2 D

Retaining strain and cutting the mesh

There are two submodels. They are the same except that in the first strain is not retained from step to step whereas in the second strain is fully retained. The shape changes during growth look similar, the difference is only revealed when the mesh is cut. The behaviour of plant tissue can be similar.

Tutorial on retaining residual strain and cutting

GPT RetainStrainAndCut 20110603-000050-0005.png
Strain not retained after each step. In plant tissue terms this would appear to be equivalent to there being a homeostatic mechanism that operates such as to re-strengthen the cell walls after they have been weakened to the point that they yield under turgor pressure during growth.
<wikiflv width="300" height="300" logo="false" loop="true">GPT_RetainStrainAndCut_20110603-0006.flv|GPT_RetainStrainAndCut_20110603-0006.png‎</wikiflv>
Play submodel 1


GPT RetainStrainAndCut 20110603-000050-0003.png
Retaining the strain from step to step allows the growth on the inside to force the mesh as a whole to grow more than when strain is not retained.
<wikiflv width="300" height="300" logo="false" loop="true">GPT_RetainStrainAndCut_20110603-0004.flv|GPT_RetainStrainAndCut_20110603-0004.png‎</wikiflv>
Whilst the frame rate relates directly to growth rate, the relaxation rate after cutting does not. After cutting the computation has to be done in smaller steps and the rate at which the sides bend back shown here is too slow.

3 Cluster runs and batch mode: running models without the GUI

Having developed the concepts underpinning a pattern of growth in an interaction function it is often desirable to explore a range of model parameters. Given that each run of the model can take between 5 minutes and hour it is appropriate to run the models in batch mode on the desktop or, better, in parallel on a computing cluster. (Each node of the cluster to be used by GFtbox needs to be licensed to run Matlab - however for the purpose of running on a cluster without the GUI we are exploring the possibility of making GFtbox compatible with Octave.)

Batch mode and cluster runs.
How to use these tutorials. First ensure that your model is working as you would expect using the GUI. Then run the model from the Matlab command line. Finally, run the models in batch mode or submit the project to the linux computing cluster with one or more ranges of parameters. For further details Running example models and using a cluster

4 Comparing resultant shapes with observed organ shapes

4 A

Tutorial on mapping results into shape space

WikiModelShapespace.png
<wikiflv width="300" height="300" logo="false" loop="true">GPT_tut_interaction_example_20110601-0002.flv|GPT_tut_interaction_example_20110601-0002.png‎</wikiflv>
<left>(Marks) The shape of growing Arabidopsis leaves projected into a shape space represented by the two principal components. (Lines) The shape of a computational model of a growing Arabidopsis leaf projected into the same space.