<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://cmpdartsvr3.cmp.uea.ac.uk/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jrk</id>
	<title>BanghamLab - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://cmpdartsvr3.cmp.uea.ac.uk/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jrk"/>
	<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Special:Contributions/Jrk"/>
	<updated>2026-05-14T10:36:14Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Software&amp;diff=6973</id>
		<title>Software</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Software&amp;diff=6973"/>
		<updated>2021-12-10T10:49:28Z</updated>

		<summary type="html">&lt;p&gt;Jrk: Fixing the formatting.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;!-- ===[[BanghamLabSVN|&amp;lt;span style=&amp;quot;color: Navy&amp;quot;&amp;gt;Copy of BanghamLab source code&amp;lt;/span&amp;gt;]]=== --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: DarkGreen&amp;quot;&amp;gt;&#039;&#039;&#039;Current activity: a collaboration&#039;&#039;&#039; with the [http://rico-coen.jic.ac.uk/index.php/Main_Page CoenLab] with the aim of understanding how patterns of gene activity in biological organs influence the developing shape. The BanghamLab is focussed on the conceptual underpinning: concepts captured in computational growth models, experimental data visualisation and analysis.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Notes on documenting our software&amp;lt;/span&amp;gt;=== &lt;br /&gt;
&lt;br /&gt;
[[Tricks for documenting software|Notes for Lab members on how to contribute to this Wiki and where to put downloads. ]]&lt;br /&gt;
&amp;lt;br&amp;gt;Matlab tip: searching a large data structure for a particular field. Clear the command window. Evaluate the structure to list all the fields, then use the usual control-f search tool on the command window.&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;&#039;&#039;&#039;Computational biology&#039;&#039;&#039;&amp;lt;/span&amp;gt;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Quantitative understanding of growing shapes: &#039;&#039;&#039;GFtbox&#039;&#039;&#039;&amp;lt;/span&amp;gt;==&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:#A52A2A;&amp;quot;&amp;gt;We developed &#039;&#039;GFtbox&#039;&#039; to allow us to model the growth of complex shapes with the ultimate goal: to understand the relationships between genes, growth and form.&amp;lt;/span&amp;gt;====&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400&amp;quot;| [[Image:Journal.pbio.1000537.g009.png|350px|Growth of a flower]] Example of a growing snapdragon flower and some mutants ( [http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1000537 Green et al 2011]). Growth is specified by factors (genes) according to the Growing Polarised Tissue Framework. Colours represent putative gene activity, arrows the polariser gradient and spots clones.&lt;br /&gt;
|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;313&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot; position=&amp;quot;right&amp;quot; autoplay=&#039;true&#039;&amp;gt;GPT_Snapdragon_2010_Green_et_al-0002_1.flv|GPT_Snapdragon_2010_Green_et_al-0002.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;!--|&amp;lt;wikiflv width=&amp;quot;280&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;Journal.pbio.1000537.s025_1.flv|Journal.pbio.1000537.g009.png&amp;lt;/wikiflv&amp;gt;--&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;GPT_thumbnail2.png|120px|GFtbox&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|&lt;br /&gt;
For modelling the growth of shapes.  &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Ready Reference Manual|&#039;&#039;&#039;&#039;&#039;Ready Reference&#039;&#039;&#039;&#039;&#039; Manual]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(PC, Mac, Linux, uses Matlab&amp;lt;br&amp;gt;no Mathworks toolboxes needed&amp;lt;br&amp;gt;[http://www.mathworks.com/products/matlab/tryit.html Matlab 30 day free trial] and &amp;lt;br&amp;gt;[http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Ready Reference Manual ancillary functions|&#039;&#039;&#039;&#039;&#039;Ready Reference&#039;for ancillary functions: in &#039;&#039;&#039;interaction function&#039;&#039;&#039; and external functions&#039;&#039;&#039;&#039; Manual]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[GFtbox|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt; Background&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Tutorial pages|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt; Start here&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Example pages|&#039;&#039;&#039;&#039;&#039;Examples&#039;&#039;&#039;&#039;&#039;: from publications]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/JIC-Enrico-Coen/GrowthToolbox &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download GFTbox&#039;&#039;&#039;&#039;&#039; from GitHub&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/JIC-Enrico-Coen &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download GFTbox models&#039;&#039;&#039;&#039;&#039; from GitHub&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Viewing and measuring volume images: &#039;&#039;&#039;VolViewer&#039;&#039;&#039;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;VolViewer-logo.png|120px|VolViewer&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For viewing and measuring &#039;&#039;&#039;volume images&#039;&#039;&#039; on both normal and &#039;&#039;&#039;stereo&#039;&#039;&#039; screens. Typical images from: confocal microscope and Optical Projection Tomography (OPT) images&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[VolViewer#Description|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[VolViewer#User Documentation|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[VolViewer#Download| &#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Output from VolViewer has appeared in:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://www.cell.com/cell_picture_show-plantbio Cell: Online Gallery] | [http://www.amazon.co.uk/Handbook-Plant-Science-Keith-Roberts/dp/0470057238/ref=sr_1_19?s=books&amp;amp;ie=UTF8&amp;amp;qid=1289321357&amp;amp;sr=1-19 Front cover: Handbook of Plant Science] | [http://www.plantcell.org/content/18/9.toc Front cover: The Plant Cell] |  [http://www.americanscientist.org/issues/pub/2013/1/3d-carnivorous-plants American Scientist] | [http://www.rms.org.uk/Resources/Royal%20Microscopical%20Society/infocus/Edgar%20article.pdf  Royal Microscopical Society: Infocus Magazine] | [http://www.bioptonics.com/Home.htm Bundled with the Bioptonic 3001 scanner: Bioptonics Viewer] | [http://www.dailymail.co.uk/sciencetech/article-2215052/The-complexity-intricacy-Mother-Nature-revealed-incredible-pictures-plants--seen-inside.html The Daily Mail] | [http://www.guardian.co.uk/science/gallery/2007/sep/04/fruitflybrain#/?picture=330675671&amp;amp;index=1 The Guardian newspaper: 3D Fruit fly] | [http://qt.nokia.com/qt-in-use/ambassadors/project?id=a0F20000006LZ2pEAG Qt Ambassador program] | [http://www.triffidnurseries.co.uk/special3.php Triffid Nurseries website]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  VolViewer is used as a &#039;&#039;&#039;stand-alone&#039;&#039;&#039; app. or as a &#039;&#039;&#039;viewport for other systems&#039;&#039;&#039;, e.g. Matlab programs. VolViewer uses [http://www.opengl.org/ OpenGL] and [http://qt.nokia.com/products/ Qt] to provide a user friendly application to interactively explore and quantify multi-dimensional biological images. It has been successfully used in our lab to explore and quantify confocal microscopy and  optical projection tomography images. Written by Jerome Avondo it is open-source and is also compatible with the Open Microscopy Environment ([http://openmicroscopy.org/site OME]) (Chris Allen and Avondo, et. al. &#039;&#039;OMERO: flexible, model-driven data management for experimental biology&#039;&#039;  Nature Methods 9, 245–253 (2012))&amp;lt;br&amp;gt; [[image:Silique.PNG|360px]]).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Analysing shapes in 2D and 3D: &#039;&#039;&#039;AAMToolbox&#039;&#039;&#039;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;AAMToolbox_logo.jpg|120px|AAMToolbox&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For analysing populations of shapes and colours within the shapes using principal component analysis. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[AAMToolbox Details|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorials on the Shape modelling toolbox|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[AAMToolbox Download|&amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download revised Nov2012&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(PC, Mac, Linux, uses Matlab&amp;lt;br&amp;gt;no Mathworks toolboxes needed&amp;lt;br&amp;gt;[http://www.mathworks.com/products/matlab/tryit.html Matlab 30 day free trial] and &amp;lt;br&amp;gt;[http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  The AAMToolbox enables the user analyse the shape and colour of collections of similar objects. Originally developed to analyse face shapes for lipreading ([http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=982900 Matthews &#039;&#039;et al&#039;&#039;. 2002][http://www2.cmp.uea.ac.uk/~sjc/matthews-pami-01.pdf version of pdf]), we have used it extensively for analysing the shapes of leaves ([http://www.pnas.org/content/102/29/10221.short Langlade &#039;&#039;et al&#039;&#039; 2005.],[http://www.tandfonline.com/doi/abs/10.2976/1.2836738 Bensmihen &#039;&#039;et al.&#039;&#039; 2010]) and petals ([http://www.sciencemag.org/content/313/5789/963.short Whibley &#039;&#039;et al&#039;&#039; 2006],[http://www.mssaleshops.info/content/21/10/2999.short Feng &#039;&#039;et al&#039;&#039;. 2010]). The analysis can be applied to art, for example, finding systematic differences between portraits by Rembrandt and Modigliani.&lt;br /&gt;
|}&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Analysing the shapes of clones: &#039;&#039;&#039;SectorAnalysisToolbox&#039;&#039;&#039;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;Sector analysis icon.jpg|120px|SectorAnalysisToolbox&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For analysing the shapes of marked cell clones. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[SectorAnalysisToolbox Details|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[SectorAnalysisToolbox Documentation|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_Science_Paper_2012/SectorAnalysisToolbox.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(PC, Mac, Linux, uses Matlab&amp;lt;br&amp;gt;no Mathworks toolboxes needed&amp;lt;br&amp;gt;[http://www.mathworks.com/products/matlab/tryit.html Matlab 30 day free trial] and &amp;lt;br&amp;gt;[http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  The SectorAnalysisToolbox enables the user analyse the shapes of marked clones in a sheet of tissue.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;&#039;&#039;&#039;Algorithms&#039;&#039;&#039;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;MSERs, extrema, connected-set filters and sieves==&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;The algorithm finding MSER&#039;s starts with a connected-set opening or &#039;o&#039; sieve&amp;lt;/span&amp;gt;====&lt;br /&gt;
[[Comparison of Matlab MSER&#039;s and &#039;o&#039; sieve|Comparison of Matlab MSER&#039;s and &#039;o&#039; sieve]] Essentially, no difference.&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| [[Image:Cameraman_iso_topview.jpg|300px|link=AAMToolbox Details|MSERs]] Cameraman image. Superimposed red spots are maximal extrema and blue spots are minima. Irregular cyan, blue and yellow regions illustrate regions associated with maxima and the magenta region is a minimum.&lt;br /&gt;
|[[Image:cameraman_iso_tree.jpg|300px|link=AAMToolbox Details|MSERs over scale-space]]&amp;lt;br&amp;gt;Isometric view of the cameraman image with superimposed maxima (red) and minima (blue). The trees trace the maxima through increasing scale-space. Large spots have been identified as stable extrema.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color: 	#C364C5;&amp;quot;&amp;gt;Finding interest points, features and segmenting images. &amp;lt;/span&amp;gt;===&lt;br /&gt;
#[[MSER and Sieve Details|&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;&#039;&#039;&#039;Technical briefing&#039;&#039;&#039;&amp;lt;/span&amp;gt;]] &amp;lt;span style=&amp;quot;color: 	#C364C5;&amp;quot;&amp;gt;MSER&#039;s incorporate &#039;o&#039; sieves.&lt;br /&gt;
#[[MSER&#039;s and Connected sets|&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;&#039;&#039;&#039;The twist&#039;&#039;&#039;: from restricted median filters to sieves and MSER&#039;s&amp;lt;/span&amp;gt;]]&lt;br /&gt;
#One dimensional sieves (measure length)&lt;br /&gt;
##[[Types of 1D sieve|Types of 1D sieve]]&lt;br /&gt;
##[[First applied to hydrophobicity plots|First applied to hydrophobicity plots]] but lets exploit their idempotency.&lt;br /&gt;
#Two dimensional sieves (measure areas)&lt;br /&gt;
##Properties&lt;br /&gt;
##Relation to MSER&#039;s&lt;br /&gt;
#Three dimensional sieves (measure volumes)&lt;br /&gt;
##[[Segment by volume|Segment by volume]] instant gratification.&lt;br /&gt;
&amp;lt;!--[[siv Download|&amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [[Software#MSERs extrema connected-set filters and sieves|&amp;lt;span style=&amp;quot;color:Green;&amp;quot;&amp;gt;&#039;&#039;&#039;MORE&#039;&#039;&#039;&amp;lt;/span&amp;gt;]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;Art, extrema of light and shade: &#039;&#039;&#039;&#039;&#039;PhotoArtMaster&#039;&#039;&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Art created using ArtMaster, and ArtMaster itself was featured in an exhibit at the London Victoria and Albert (V&amp;amp;A) Museum exhibition &amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;&#039;Cheating? How to make Perfect Work of Art&#039; (2003).&amp;lt;/span&amp;gt; The exhibition centered on the idea of [http://en.wikipedia.org/wiki/Hockney%E2%80%93Falco_thesis Hockney&#039;s] that  advances in realism and accuracy in the history of Western art since the Renaissance were primarily the result of optical aids such as the camera obscura, camera lucida, and curved mirrors. My exhibit used a touch screen (rare in those days) and ArtMaster to help visitors create &#039;paintings&#039; from photographs. [http://www.sciencemuseum.org.uk/visitmuseum/galleries/turing.aspx finding its name]. (It is entirely different in principle from the software more recently used by Hockney to paint with an iPad.)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=100% style=&amp;quot;background-color:#ffffff;&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|[[Image:DegasLightAndShade.jpg|400px]][[Image:Emma_face_Art_C.jpg|300px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Illustration of PhotoArtMaster used to find and &#039;paint&#039; with regions of light and shade crisply segmented from a photograph. Likewise, on the right, edges.&lt;br /&gt;
|}&lt;br /&gt;
=====PhotoArtMaster=====&lt;br /&gt;
Saturday 07/06/2014: Inspired Photographer of the Year 2013 Tony Bennett when asked whether his photograph  [http://www.bbc.co.uk/programmes/galleries/p020hd8s Mists and Reflections] had been Photoshopped replied something like &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;A digital camera delivers an unemotional &#039;&#039;raw&#039;&#039; image of pixels that you have to manipulate to &#039;&#039;create your photograph&#039;&#039;&amp;quot; Photographers manipulate as little as possible. &amp;lt;br&amp;gt;&lt;br /&gt;
However there is &#039;&#039;&#039;another path one that creates pictures&#039;&#039;&#039;. For this you need another piece of software: PhotoArtMaster (ArtMaster). Professional Photographer said &#039;&#039;&amp;quot;&#039;&#039;&#039;Forget any comparison whatsoever with the art filters in Photoshop - this software reaches out and enters different stratospheres&#039;&#039;&#039;&amp;quot;&#039;&#039; [[Professional Photographer]].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Early versions of PhotoArtMaster are still &#039;&#039;&#039;available from Amazon&#039;&#039;&#039; at low prices (I&#039;m not sure where they come from.)&lt;br /&gt;
[http://www.amazon.co.uk/s/ref=nb_sb_noss?url=search-alias%3Daps&amp;amp;field-keywords=photoartmaster] . Some help for both the early versions and the latest version can be found in [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/a4a_2_screensize.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;this document&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]).&lt;br /&gt;
=====Links to third party PhotoArtMastered pictures=====&lt;br /&gt;
*[https://picasaweb.google.com/113257474829608374943/InTheStyleOf Oliver Bangham] Colouful rounded shapes from, yes, my brother.&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Wimbledon_%28film%29 The entry sequence of the comedy film &#039;Wimbledon&#039;]&lt;br /&gt;
&lt;br /&gt;
====The final version of the Windows ArtMaster2.0 [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSource_ArtMaster/ArtMaster2.0Release.zip &amp;lt;span style=&amp;quot;color: #B31B1B&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;is downloadable here&#039;&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt;]  with no support.====&lt;br /&gt;
Unzip into (for example) the &amp;quot;Program Files&amp;quot; directory then set your system environment to include: &#039;&#039;C:\Program Files\Pam2.0 Release\jre\bin;C:\Program Files\Pam2.0 Release\bin;&#039;&#039; (You may need help for this. I right clicked &#039;computer&#039; from the &#039;Start&#039; menu, then selected &#039;Advanced system settings&#039;, then &#039;Environment Variables&#039; and finally slid through the System variables until I found and selected &#039;Path&#039;. This allowed me to edit the path by adding &#039;;C:\Program Files\Pam2.0 Release\jre\bin;C:\Program Files\Pam2.0 Release\bin&#039; to the end). Rather detailed help using the software is available in [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/a4a_2_screensize.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;this essay&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/Art_For_All_a4a_3_web2.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;The sieve algorithms underpinning PhotoArtMaster software&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;] are described in an extract of the &lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/a4a_2_screensize.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;essay&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]. These documents were written to support our Fo2Pix company. PhotoArtMaster originally  sold &amp;gt;65,000 licences but ill health forced the closure of Fo2Pix.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=100% style=&amp;quot;background-color:#ffffff;&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|[[Image:Trees_1.jpg|600px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Illustration of PhotoArtMaster used to find and &#039;paint&#039; with regions of colour crisply segmented from a photograph. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [[Documentation_of_Connected_Set_Filters_or_Sieves|Art test page]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
[[Documentation_of_Connected_Set_Filters_or_Sieves]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Reaction-diffusion and morphogenesis==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=100% style=&amp;quot;background-color:#000000;&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&lt;br /&gt;
[[Image:tentacles_morphogenesis.png|600px]]&lt;br /&gt;
|}&lt;br /&gt;
Illustration of morphogenesis inspired by Turing&#039;s paper. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/GPT_ReactionDiffusionTentacles_20121211.zip &amp;lt;span style=&amp;quot;color: Navy&amp;quot;&amp;gt;Example using growth toolbox GPT_ReactionDiffusionTentacles_20121211.zip&amp;lt;/span&amp;gt;]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===1 A===&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Open source systems to which we have contributed=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;OMERO==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;OMERO_DIAGRAM.jpg|100px|OMERO&amp;lt;/imgicon&amp;gt;&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For working with the OME image database. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;See [http://www.openmicroscopy.org/site/products/omero &#039;&#039;Details&#039;&#039;], [http://www.openmicroscopy.org/site/support/omero4/downloads &#039;&#039;Download&#039;&#039;]&amp;lt;br&amp;gt; [http://dmbi.nbi.bbsrc.ac.uk/index.php/OMEROWorkshop OMERO Workshop] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  [http://openmicroscopy.org/site/support/omero4 Open Microscopy Environment Remote Objects (OMERO).] for visualising, managing, and annotating scientific image data. See also our [http://dmbi.nbi.bbsrc.ac.uk/index.php/OMEROWorkshop OMERO Workshop] training course we ran in April 2011.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Tools and Utilities=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;BioformatsConverter==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;BioformatsConverterZip.png|100px|BioformatsConverter&amp;lt;/imgicon&amp;gt;&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For converting microscope manufacturer proprietary file formats. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;See [[BioformatsConverter|&#039;&#039;Details&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| This tool allows for the batch conversion of microscope manufacturer proprietary file formats, to the open source OME-TIFF standard. Uses the [http://www.loci.wisc.edu/software/bio-formats Bioformats] library.&lt;br /&gt;
|}&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Dependency Checking Tool==&lt;br /&gt;
&lt;br /&gt;
Tool for recursively finding what further functions a function depends on. See [[myDepFun|&#039;&#039;Details&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;PIN Point==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|[[File:PinPoint.jpg]]&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|Tool for analysing PIN Signal in cells.&lt;br /&gt;
&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/PinPoint.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sample Project&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;In development&amp;lt;/span&amp;gt;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;MTtbox&amp;lt;/span&amp;gt;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;MTtboxA.jpg|100px|BioformatsConverter&amp;lt;/imgicon&amp;gt;&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For modelling the behaviour of microtubules within a cell. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
See [[MTtbox documentation|&#039;&#039;Details&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| In development. The idea is to be able to model the behaviour of growing microtubules and factors as they react chemically and diffuse within the different cell compartments.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The icon shows a spherical cell sliced open to show concentric components: cell wall (magenta), plasma-membrane (yellow), cytoplasm (green) and vacuole (yellow). Microtubules (blue) grow in 3D within the cytoplasm.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Historical&amp;lt;/span&amp;gt;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Robot arm:  still in production after 30 years (serving local industry)&amp;lt;/span&amp;gt;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|[[Image:2014-06-10 14.22.20 small robot.jpg|400px|]] &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For teaching &#039;&#039;&#039;production control&#039;&#039;&#039; and &#039;&#039;&#039;interrupt programming&#039;&#039;&#039;. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1983 and we are in a world of &#039;&#039;&#039;Apple II and BBC B computers&#039;&#039;&#039; - the &#039;&#039;6502&#039;&#039; processor reigns. Particularly good for real-time control it responded very fast to hardware interrupts from, for example, the timer. To illustrate timer interrupts what better than digital servo-motors? Set up the on-board timers to produce a stream of  &#039;heartbeat&#039; of pulses, one every 20 ms out of the parallel port and control up to eight motors.  Pulse widths, from 1 to 2 ms, control the position of each motor arm. Derek Fulton and I made some loose lab. money by writing a series of articles showing exactly how to build and, in particular, control this robot arm.[[Publications#.28G.29_Computer_control.2C_measurement_and_commercial_software |Bangham et al.]]. &lt;br /&gt;
Our copyright, I took it to a local company LJ-Electronics ([http://www.ljcreate.com/products/product.asp?id=314&amp;amp;program=195&amp;amp;curr=2 now LJ-Creative]) who incorporated it detail for detail into their product line. Originally, they called it the Emu. Still in production: &#039;&#039;&#039;Lovely outcome.&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Historical=&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Software&amp;diff=6972</id>
		<title>Software</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Software&amp;diff=6972"/>
		<updated>2021-12-10T10:44:28Z</updated>

		<summary type="html">&lt;p&gt;Jrk: Updating the URLs for GFtbox and GFtbox models.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;!-- ===[[BanghamLabSVN|&amp;lt;span style=&amp;quot;color: Navy&amp;quot;&amp;gt;Copy of BanghamLab source code&amp;lt;/span&amp;gt;]]=== --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: DarkGreen&amp;quot;&amp;gt;&#039;&#039;&#039;Current activity: a collaboration&#039;&#039;&#039; with the [http://rico-coen.jic.ac.uk/index.php/Main_Page CoenLab] with the aim of understanding how patterns of gene activity in biological organs influence the developing shape. The BanghamLab is focussed on the conceptual underpinning: concepts captured in computational growth models, experimental data visualisation and analysis.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Notes on documenting our software&amp;lt;/span&amp;gt;=== &lt;br /&gt;
&lt;br /&gt;
[[Tricks for documenting software|Notes for Lab members on how to contribute to this Wiki and where to put downloads. ]]&lt;br /&gt;
&amp;lt;br&amp;gt;Matlab tip: searching a large data structure for a particular field. Clear the command window. Evaluate the structure to list all the fields, then use the usual control-f search tool on the command window.&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;&#039;&#039;&#039;Computational biology&#039;&#039;&#039;&amp;lt;/span&amp;gt;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Quantitative understanding of growing shapes: &#039;&#039;&#039;GFtbox&#039;&#039;&#039;&amp;lt;/span&amp;gt;==&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:#A52A2A;&amp;quot;&amp;gt;We developed &#039;&#039;GFtbox&#039;&#039; to allow us to model the growth of complex shapes with the ultimate goal: to understand the relationships between genes, growth and form.&amp;lt;/span&amp;gt;====&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400&amp;quot;| [[Image:Journal.pbio.1000537.g009.png|350px|Growth of a flower]] Example of a growing snapdragon flower and some mutants ( [http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1000537 Green et al 2011]). Growth is specified by factors (genes) according to the Growing Polarised Tissue Framework. Colours represent putative gene activity, arrows the polariser gradient and spots clones.&lt;br /&gt;
|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;313&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot; position=&amp;quot;right&amp;quot; autoplay=&#039;true&#039;&amp;gt;GPT_Snapdragon_2010_Green_et_al-0002_1.flv|GPT_Snapdragon_2010_Green_et_al-0002.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;!--|&amp;lt;wikiflv width=&amp;quot;280&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;Journal.pbio.1000537.s025_1.flv|Journal.pbio.1000537.g009.png&amp;lt;/wikiflv&amp;gt;--&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;GPT_thumbnail2.png|120px|GFtbox&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|&lt;br /&gt;
For modelling the growth of shapes.  &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Ready Reference Manual|&#039;&#039;&#039;&#039;&#039;Ready Reference&#039;&#039;&#039;&#039;&#039; Manual]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(PC, Mac, Linux, uses Matlab&amp;lt;br&amp;gt;no Mathworks toolboxes needed&amp;lt;br&amp;gt;[http://www.mathworks.com/products/matlab/tryit.html Matlab 30 day free trial] and &amp;lt;br&amp;gt;[http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Ready Reference Manual ancillary functions|&#039;&#039;&#039;&#039;&#039;Ready Reference&#039;for ancillary functions: in &#039;&#039;&#039;interaction function&#039;&#039;&#039; and external functions&#039;&#039;&#039;&#039; Manual]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[GFtbox|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt; Background&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Tutorial pages|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt; Start here&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Example pages|&#039;&#039;&#039;&#039;&#039;Examples&#039;&#039;&#039;&#039;&#039;: from publications]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/JIC-Enrico-Coen/GrowthToolbox &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download GFTbox&#039;&#039;&#039;&#039;&#039; from GitHub&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/JIC-Enrico-Coen &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download GFTbox models&#039;&#039;&#039;&#039;&#039; from GitHub&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Viewing and measuring volume images: &#039;&#039;&#039;VolViewer&#039;&#039;&#039;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;VolViewer-logo.png|120px|VolViewer&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For viewing and measuring &#039;&#039;&#039;volume images&#039;&#039;&#039; on both normal and &#039;&#039;&#039;stereo&#039;&#039;&#039; screens. Typical images from: confocal microscope and Optical Projection Tomography (OPT) images&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[VolViewer#Description|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[VolViewer#User Documentation|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[VolViewer#Download| &#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Output from VolViewer has appeared in:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://www.cell.com/cell_picture_show-plantbio Cell: Online Gallery] | [http://www.amazon.co.uk/Handbook-Plant-Science-Keith-Roberts/dp/0470057238/ref=sr_1_19?s=books&amp;amp;ie=UTF8&amp;amp;qid=1289321357&amp;amp;sr=1-19 Front cover: Handbook of Plant Science] | [http://www.plantcell.org/content/18/9.toc Front cover: The Plant Cell] |  [http://www.americanscientist.org/issues/pub/2013/1/3d-carnivorous-plants American Scientist] | [http://www.rms.org.uk/Resources/Royal%20Microscopical%20Society/infocus/Edgar%20article.pdf  Royal Microscopical Society: Infocus Magazine] | [http://www.bioptonics.com/Home.htm Bundled with the Bioptonic 3001 scanner: Bioptonics Viewer] | [http://www.dailymail.co.uk/sciencetech/article-2215052/The-complexity-intricacy-Mother-Nature-revealed-incredible-pictures-plants--seen-inside.html The Daily Mail] | [http://www.guardian.co.uk/science/gallery/2007/sep/04/fruitflybrain#/?picture=330675671&amp;amp;index=1 The Guardian newspaper: 3D Fruit fly] | [http://qt.nokia.com/qt-in-use/ambassadors/project?id=a0F20000006LZ2pEAG Qt Ambassador program] | [http://www.triffidnurseries.co.uk/special3.php Triffid Nurseries website]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  VolViewer is used as a &#039;&#039;&#039;stand-alone&#039;&#039;&#039; app. or as a &#039;&#039;&#039;viewport for other systems&#039;&#039;&#039;, e.g. Matlab programs. VolViewer uses [http://www.opengl.org/ OpenGL] and [http://qt.nokia.com/products/ Qt] to provide a user friendly application to interactively explore and quantify multi-dimensional biological images. It has been successfully used in our lab to explore and quantify confocal microscopy and  optical projection tomography images. Written by Jerome Avondo it is open-source and is also compatible with the Open Microscopy Environment ([http://openmicroscopy.org/site OME]) (Chris Allen and Avondo, et. al. &#039;&#039;OMERO: flexible, model-driven data management for experimental biology&#039;&#039;  Nature Methods 9, 245–253 (2012))&amp;lt;br&amp;gt; [[image:Silique.PNG|360px]]).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Analysing shapes in 2D and 3D: &#039;&#039;&#039;AAMToolbox&#039;&#039;&#039;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;AAMToolbox_logo.jpg|120px|AAMToolbox&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For analysing populations of shapes and colours within the shapes using principal component analysis. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[AAMToolbox Details|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorials on the Shape modelling toolbox|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[AAMToolbox Download|&amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download revised Nov2012&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(PC, Mac, Linux, uses Matlab&amp;lt;br&amp;gt;no Mathworks toolboxes needed&amp;lt;br&amp;gt;[http://www.mathworks.com/products/matlab/tryit.html Matlab 30 day free trial] and &amp;lt;br&amp;gt;[http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  The AAMToolbox enables the user analyse the shape and colour of collections of similar objects. Originally developed to analyse face shapes for lipreading ([http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=982900 Matthews &#039;&#039;et al&#039;&#039;. 2002][http://www2.cmp.uea.ac.uk/~sjc/matthews-pami-01.pdf version of pdf]), we have used it extensively for analysing the shapes of leaves ([http://www.pnas.org/content/102/29/10221.short Langlade &#039;&#039;et al&#039;&#039; 2005.],[http://www.tandfonline.com/doi/abs/10.2976/1.2836738 Bensmihen &#039;&#039;et al.&#039;&#039; 2010]) and petals ([http://www.sciencemag.org/content/313/5789/963.short Whibley &#039;&#039;et al&#039;&#039; 2006],[http://www.mssaleshops.info/content/21/10/2999.short Feng &#039;&#039;et al&#039;&#039;. 2010]). The analysis can be applied to art, for example, finding systematic differences between portraits by Rembrandt and Modigliani.&lt;br /&gt;
|}&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Analysing the shapes of clones: &#039;&#039;&#039;SectorAnalysisToolbox&#039;&#039;&#039;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;Sector analysis icon.jpg|120px|SectorAnalysisToolbox&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For analysing the shapes of marked cell clones. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[SectorAnalysisToolbox Details|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[SectorAnalysisToolbox Documentation|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_Science_Paper_2012/SectorAnalysisToolbox.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(PC, Mac, Linux, uses Matlab&amp;lt;br&amp;gt;no Mathworks toolboxes needed&amp;lt;br&amp;gt;[http://www.mathworks.com/products/matlab/tryit.html Matlab 30 day free trial] and &amp;lt;br&amp;gt;[http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  The SectorAnalysisToolbox enables the user analyse the shapes of marked clones in a sheet of tissue.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;&#039;&#039;&#039;Algorithms&#039;&#039;&#039;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;MSERs, extrema, connected-set filters and sieves==&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;The algorithm finding MSER&#039;s starts with a connected-set opening or &#039;o&#039; sieve&amp;lt;/span&amp;gt;====&lt;br /&gt;
[[Comparison of Matlab MSER&#039;s and &#039;o&#039; sieve|Comparison of Matlab MSER&#039;s and &#039;o&#039; sieve]] Essentially, no difference.&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| [[Image:Cameraman_iso_topview.jpg|300px|link=AAMToolbox Details|MSERs]] Cameraman image. Superimposed red spots are maximal extrema and blue spots are minima. Irregular cyan, blue and yellow regions illustrate regions associated with maxima and the magenta region is a minimum.&lt;br /&gt;
|[[Image:cameraman_iso_tree.jpg|300px|link=AAMToolbox Details|MSERs over scale-space]]&amp;lt;br&amp;gt;Isometric view of the cameraman image with superimposed maxima (red) and minima (blue). The trees trace the maxima through increasing scale-space. Large spots have been identified as stable extrema.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color: 	#C364C5;&amp;quot;&amp;gt;Finding interest points, features and segmenting images. &amp;lt;/span&amp;gt;===&lt;br /&gt;
#[[MSER and Sieve Details|&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;&#039;&#039;&#039;Technical briefing&#039;&#039;&#039;&amp;lt;/span&amp;gt;]] &amp;lt;span style=&amp;quot;color: 	#C364C5;&amp;quot;&amp;gt;MSER&#039;s incorporate &#039;o&#039; sieves.&lt;br /&gt;
#[[MSER&#039;s and Connected sets|&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;&#039;&#039;&#039;The twist&#039;&#039;&#039;: from restricted median filters to sieves and MSER&#039;s&amp;lt;/span&amp;gt;]]&lt;br /&gt;
#One dimensional sieves (measure length)&lt;br /&gt;
##[[Types of 1D sieve|Types of 1D sieve]]&lt;br /&gt;
##[[First applied to hydrophobicity plots|First applied to hydrophobicity plots]] but lets exploit their idempotency.&lt;br /&gt;
#Two dimensional sieves (measure areas)&lt;br /&gt;
##Properties&lt;br /&gt;
##Relation to MSER&#039;s&lt;br /&gt;
#Three dimensional sieves (measure volumes)&lt;br /&gt;
##[[Segment by volume|Segment by volume]] instant gratification.&lt;br /&gt;
&amp;lt;!--[[siv Download|&amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [[Software#MSERs extrema connected-set filters and sieves|&amp;lt;span style=&amp;quot;color:Green;&amp;quot;&amp;gt;&#039;&#039;&#039;MORE&#039;&#039;&#039;&amp;lt;/span&amp;gt;]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;Art, extrema of light and shade: &#039;&#039;&#039;&#039;&#039;PhotoArtMaster&#039;&#039;&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Art created using ArtMaster, and ArtMaster itself was featured in an exhibit at the London Victoria and Albert (V&amp;amp;A) Museum exhibition &amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;&#039;Cheating? How to make Perfect Work of Art&#039; (2003).&amp;lt;/span&amp;gt; The exhibition centered on the idea of [http://en.wikipedia.org/wiki/Hockney%E2%80%93Falco_thesis Hockney&#039;s] that  advances in realism and accuracy in the history of Western art since the Renaissance were primarily the result of optical aids such as the camera obscura, camera lucida, and curved mirrors. My exhibit used a touch screen (rare in those days) and ArtMaster to help visitors create &#039;paintings&#039; from photographs. [http://www.sciencemuseum.org.uk/visitmuseum/galleries/turing.aspx finding its name]. (It is entirely different in principle from the software more recently used by Hockney to paint with an iPad.)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=100% style=&amp;quot;background-color:#ffffff;&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|[[Image:DegasLightAndShade.jpg|400px]][[Image:Emma_face_Art_C.jpg|300px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Illustration of PhotoArtMaster used to find and &#039;paint&#039; with regions of light and shade crisply segmented from a photograph. Likewise, on the right, edges.&lt;br /&gt;
|}&lt;br /&gt;
=====PhotoArtMaster=====&lt;br /&gt;
Saturday 07/06/2014: Inspired Photographer of the Year 2013 Tony Bennett when asked whether his photograph  [http://www.bbc.co.uk/programmes/galleries/p020hd8s Mists and Reflections] had been Photoshopped replied something like &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;A digital camera delivers an unemotional &#039;&#039;raw&#039;&#039; image of pixels that you have to manipulate to &#039;&#039;create your photograph&#039;&#039;&amp;quot; Photographers manipulate as little as possible. &amp;lt;br&amp;gt;&lt;br /&gt;
However there is &#039;&#039;&#039;another path one that creates pictures&#039;&#039;&#039;. For this you need another piece of software: PhotoArtMaster (ArtMaster). Professional Photographer said &#039;&#039;&amp;quot;&#039;&#039;&#039;Forget any comparison whatsoever with the art filters in Photoshop - this software reaches out and enters different stratospheres&#039;&#039;&#039;&amp;quot;&#039;&#039; [[Professional Photographer]].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Early versions of PhotoArtMaster are still &#039;&#039;&#039;available from Amazon&#039;&#039;&#039; at low prices (I&#039;m not sure where they come from.)&lt;br /&gt;
[http://www.amazon.co.uk/s/ref=nb_sb_noss?url=search-alias%3Daps&amp;amp;field-keywords=photoartmaster] . Some help for both the early versions and the latest version can be found in [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/a4a_2_screensize.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;this document&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]).&lt;br /&gt;
=====Links to third party PhotoArtMastered pictures=====&lt;br /&gt;
*[https://picasaweb.google.com/113257474829608374943/InTheStyleOf Oliver Bangham] Colouful rounded shapes from, yes, my brother.&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Wimbledon_%28film%29 The entry sequence of the comedy film &#039;Wimbledon&#039;]&lt;br /&gt;
&lt;br /&gt;
====The final version of the Windows ArtMaster2.0 [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSource_ArtMaster/ArtMaster2.0Release.zip &amp;lt;span style=&amp;quot;color: #B31B1B&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;is downloadable here&#039;&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt;]  with no support.====&lt;br /&gt;
Unzip into (for example) the &amp;quot;Program Files&amp;quot; directory then set your system environment to include: &#039;&#039;C:\Program Files\Pam2.0 Release\jre\bin;C:\Program Files\Pam2.0 Release\bin;&#039;&#039; (You may need help for this. I right clicked &#039;computer&#039; from the &#039;Start&#039; menu, then selected &#039;Advanced system settings&#039;, then &#039;Environment Variables&#039; and finally slid through the System variables until I found and selected &#039;Path&#039;. This allowed me to edit the path by adding &#039;;C:\Program Files\Pam2.0 Release\jre\bin;C:\Program Files\Pam2.0 Release\bin&#039; to the end). Rather detailed help using the software is available in [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/a4a_2_screensize.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;this essay&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/Art_For_All_a4a_3_web2.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;The sieve algorithms underpinning PhotoArtMaster software&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;] are described in an extract of the &lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/a4a_2_screensize.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;essay&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]. These documents were written to support our Fo2Pix company. PhotoArtMaster originally  sold &amp;gt;65,000 licences but ill health forced the closure of Fo2Pix.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=100% style=&amp;quot;background-color:#ffffff;&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|[[Image:Trees_1.jpg|600px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Illustration of PhotoArtMaster used to find and &#039;paint&#039; with regions of colour crisply segmented from a photograph. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [[Documentation_of_Connected_Set_Filters_or_Sieves|Art test page]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
[[Documentation_of_Connected_Set_Filters_or_Sieves]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Reaction-diffusion and morphogenesis==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=100% style=&amp;quot;background-color:#000000;&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&lt;br /&gt;
[[Image:tentacles_morphogenesis.png|600px]]&lt;br /&gt;
|}&lt;br /&gt;
Illustration of morphogenesis inspired by Turing&#039;s paper. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/GPT_ReactionDiffusionTentacles_20121211.zip &amp;lt;span style=&amp;quot;color: Navy&amp;quot;&amp;gt;Example using growth toolbox GPT_ReactionDiffusionTentacles_20121211.zip&amp;lt;/span&amp;gt;]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===1 A===&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Open source systems to which we have contributed=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;OMERO==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;OMERO_DIAGRAM.jpg|100px|OMERO&amp;lt;/imgicon&amp;gt;&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For working with the OME image database. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;See [http://www.openmicroscopy.org/site/products/omero &#039;&#039;Details&#039;&#039;], [http://www.openmicroscopy.org/site/support/omero4/downloads &#039;&#039;Download&#039;&#039;]&amp;lt;br&amp;gt; [http://dmbi.nbi.bbsrc.ac.uk/index.php/OMEROWorkshop OMERO Workshop] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  [http://openmicroscopy.org/site/support/omero4 Open Microscopy Environment Remote Objects (OMERO).] for visualising, managing, and annotating scientific image data. See also our [http://dmbi.nbi.bbsrc.ac.uk/index.php/OMEROWorkshop OMERO Workshop] training course we ran in April 2011.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Tools and Utilities=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;BioformatsConverter==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;BioformatsConverterZip.png|100px|BioformatsConverter&amp;lt;/imgicon&amp;gt;&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For converting microscope manufacturer proprietary file formats. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;See [[BioformatsConverter|&#039;&#039;Details&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| This tool allows for the batch conversion of microscope manufacturer proprietary file formats, to the open source OME-TIFF standard. Uses the [http://www.loci.wisc.edu/software/bio-formats Bioformats] library.&lt;br /&gt;
|}&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Dependency Checking Tool==&lt;br /&gt;
&lt;br /&gt;
Tool for recursively finding what further functions a function depends on. See [[myDepFun|&#039;&#039;Details&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;PIN Point==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|[[File:PinPoint.jpg]]&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|Tool for analysing PIN Signal in cells.&lt;br /&gt;
&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/PinPoint.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sample Project&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;In development&amp;lt;/span&amp;gt;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;MTtbox&amp;lt;/span&amp;gt;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;MTtboxA.jpg|100px|BioformatsConverter&amp;lt;/imgicon&amp;gt;&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For modelling the behaviour of microtubules within a cell. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
See [[MTtbox documentation|&#039;&#039;Details&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| In development. The idea is to be able to model the behaviour of growing microtubules and factors as they react chemically and diffuse within the different cell compartments.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The icon shows a spherical cell sliced open to show concentric components: cell wall (magenta), plasma-membrane (yellow), cytoplasm (green) and vacuole (yellow). Microtubules (blue) grow in 3D within the cytoplasm.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Historical&amp;lt;/span&amp;gt;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Robot arm:  still in production after 30 years (serving local industry)&amp;lt;/span&amp;gt;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|[[Image:2014-06-10 14.22.20 small robot.jpg|400px|]] &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For teaching &#039;&#039;&#039;production control&#039;&#039;&#039; and &#039;&#039;&#039;interrupt programming&#039;&#039;&#039;. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1983 and we are in a world of &#039;&#039;&#039;Apple II and BBC B computers&#039;&#039;&#039; - the &#039;&#039;6502&#039;&#039; processor reigns. Particularly good for real-time control it responded very fast to hardware interrupts from, for example, the timer. To illustrate timer interrupts what better than digital servo-motors? Set up the on-board timers to produce a stream of  &#039;heartbeat&#039; of pulses, one every 20 ms out of the parallel port and control up to eight motors.  Pulse widths, from 1 to 2 ms, control the position of each motor arm. Derek Fulton and I made some loose lab. money by writing a series of articles showing exactly how to build and, in particular, control this robot arm.[[Publications#.28G.29_Computer_control.2C_measurement_and_commercial_software |Bangham et al.]]. &lt;br /&gt;
Our copyright, I took it to a local company LJ-Electronics ([http://www.ljcreate.com/products/product.asp?id=314&amp;amp;program=195&amp;amp;curr=2 now LJ-Creative]) who incorporated it detail for detail into their product line. Originally, they called it the Emu. Still in production: &#039;&#039;&#039;Lovely outcome.&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Historical=&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Software&amp;diff=6971</id>
		<title>Software</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Software&amp;diff=6971"/>
		<updated>2019-12-03T16:05:09Z</updated>

		<summary type="html">&lt;p&gt;Jrk: Fixed URL for downloading GFtbox.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;!-- ===[[BanghamLabSVN|&amp;lt;span style=&amp;quot;color: Navy&amp;quot;&amp;gt;Copy of BanghamLab source code&amp;lt;/span&amp;gt;]]=== --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: DarkGreen&amp;quot;&amp;gt;&#039;&#039;&#039;Current activity: a collaboration&#039;&#039;&#039; with the [http://rico-coen.jic.ac.uk/index.php/Main_Page CoenLab] with the aim of understanding how patterns of gene activity in biological organs influence the developing shape. The BanghamLab is focussed on the conceptual underpinning: concepts captured in computational growth models, experimental data visualisation and analysis.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Notes on documenting our software&amp;lt;/span&amp;gt;=== &lt;br /&gt;
&lt;br /&gt;
[[Tricks for documenting software|Notes for Lab members on how to contribute to this Wiki and where to put downloads. ]]&lt;br /&gt;
&amp;lt;br&amp;gt;Matlab tip: searching a large data structure for a particular field. Clear the command window. Evaluate the structure to list all the fields, then use the usual control-f search tool on the command window.&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;&#039;&#039;&#039;Computational biology&#039;&#039;&#039;&amp;lt;/span&amp;gt;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Quantitative understanding of growing shapes: &#039;&#039;&#039;GFtbox&#039;&#039;&#039;&amp;lt;/span&amp;gt;==&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:#A52A2A;&amp;quot;&amp;gt;We developed &#039;&#039;GFtbox&#039;&#039; to allow us to model the growth of complex shapes with the ultimate goal: to understand the relationships between genes, growth and form.&amp;lt;/span&amp;gt;====&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400&amp;quot;| [[Image:Journal.pbio.1000537.g009.png|350px|Growth of a flower]] Example of a growing snapdragon flower and some mutants ( [http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1000537 Green et al 2011]). Growth is specified by factors (genes) according to the Growing Polarised Tissue Framework. Colours represent putative gene activity, arrows the polariser gradient and spots clones.&lt;br /&gt;
|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;313&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot; position=&amp;quot;right&amp;quot; autoplay=&#039;true&#039;&amp;gt;GPT_Snapdragon_2010_Green_et_al-0002_1.flv|GPT_Snapdragon_2010_Green_et_al-0002.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;!--|&amp;lt;wikiflv width=&amp;quot;280&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;Journal.pbio.1000537.s025_1.flv|Journal.pbio.1000537.g009.png&amp;lt;/wikiflv&amp;gt;--&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;GPT_thumbnail2.png|120px|GFtbox&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|&lt;br /&gt;
For modelling the growth of shapes.  &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Ready Reference Manual|&#039;&#039;&#039;&#039;&#039;Ready Reference&#039;&#039;&#039;&#039;&#039; Manual]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(PC, Mac, Linux, uses Matlab&amp;lt;br&amp;gt;no Mathworks toolboxes needed&amp;lt;br&amp;gt;[http://www.mathworks.com/products/matlab/tryit.html Matlab 30 day free trial] and &amp;lt;br&amp;gt;[http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Ready Reference Manual ancillary functions|&#039;&#039;&#039;&#039;&#039;Ready Reference&#039;for ancillary functions: in &#039;&#039;&#039;interaction function&#039;&#039;&#039; and external functions&#039;&#039;&#039;&#039; Manual]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[GFtbox|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt; Background&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Tutorial pages|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt; Start here&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Example pages|&#039;&#039;&#039;&#039;&#039;Examples&#039;&#039;&#039;&#039;&#039;: from publications]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://sourceforge.net/projects/gftbox/files/ &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download GFTbox&#039;&#039;&#039;&#039;&#039; from SourceForge&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download GFTbox project files:&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/JIC-Enrico-Coen/GFtbox_CarnivorousTraps_2019 &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Evolution of carnivorous traps from planar leaves through simple shifts in gene expression&#039;&#039;&#039;&#039;&#039; Whitewoods et al, in submission, 2019&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/JIC-Enrico-Coen/GFtbox-Utricularia-2018 &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Shaping of a three-dimensional carnivorous trap&#039;&#039;&#039;&#039;&#039; Lee et al, PLOS Biology 2019&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/JIC-Enrico-Coen/GFtbox-Fox-SpatiotemporalCoordination-2018 &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Spatiotemporal coordination&#039;&#039;&#039;&#039;&#039; Fox et al 2018&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_CurrentBiology_Rebocho_2017/GPT_Antirrhinum_CUP.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Antirrhinum CUP&#039;&#039;&#039;&#039;&#039; Rebocho et al 2017&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_Elife_Rebocho_2016/GPT_TissueConflicts.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Tissue Conflicts&#039;&#039;&#039;&#039;&#039; Rebocho et al 2016&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_PlantCell_Richardson_2016/GPT_HoodedBarleyWingModels.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Barley&#039;&#039;&#039;&#039;&#039; Richardson et al 2016&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_Dev_Eldridge_2016/Fruit_Shape_Brassicaceae.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Fruits&#039;&#039;&#039;&#039;&#039; Eldridge et al 2016&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_PLoS_SauretGueto_2013/GPT_Petal_PLoS_20130502.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Petals&#039;&#039;&#039;&#039;&#039; Sauret-Güeto et al 2013&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_Science_Paper_2012/GPT_ArabidopsisLeafModel_20120207.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Leaves&#039;&#039;&#039;&#039;&#039; Kuchen et al 2012&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_PLoS_Kennaway_2011/Kennaway-etal-2011.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Principles and concepts&#039;&#039;&#039;&#039;&#039; Kennaway et al 2011&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_PLoS_Green_2011/Green-etal-2010.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Snapdragon&#039;&#039;&#039;&#039;&#039; Green et al 2011, Cui et al 2010&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| &amp;lt;span style=&amp;quot;color:#AF002A;&amp;quot;&amp;gt; &#039;&#039;GFtbox&#039;&#039; is an implementation of the Growing Polarised Tissue Framework (GPT-framework) for understanding and modelling the relationship between gene activity and the growth of shapes such leaves, flowers and animal embryos ([http://www.ploscompbiol.org/article/info:doi/10.1371/journal.pcbi.1002071 Kennaway et al 2011]). &amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#AF002A;&amp;quot;&amp;gt;The GPT-framework was used to capture an understanding of (to model) the growing petal ([http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1001550 Sauret-Güeto et al 2013]), leaf ([http://www.sciencemag.org/content/335/6072/1092.abstract Kuchen et al 2012]) and Snapdragon flower [http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1000537 Green et al 2011]. The Snapdragon model was validated by comparing the results with other mutant and transgenic flowers [http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1000538 Cui et al 2010.]&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The key point is how &#039;&#039;&#039;outgrowths can be specified by genes&#039;&#039;&#039;. The icon shows an asymmetrical outgrowth. Conceptually, it is specifed by two independent patterns under genetic control: a pattern of growth and a pattern of organisers. The outgrowth arises from a region of extra overall growth. Growth is aligned along axes set by two interacting systems. Organisers at the ends of the mesh create a lengthwise gradient. This gradient interacts with the second due to putative organisers that generate polariser sinks in the region that becomes the tips of the palette outgrowth. ([http://www.ploscompbiol.org/article/info:doi/10.1371/journal.pcbi.1002071 Kennaway et al 2011]). These hypotheses need to be tested in biological systems.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Viewing and measuring volume images: &#039;&#039;&#039;VolViewer&#039;&#039;&#039;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;VolViewer-logo.png|120px|VolViewer&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For viewing and measuring &#039;&#039;&#039;volume images&#039;&#039;&#039; on both normal and &#039;&#039;&#039;stereo&#039;&#039;&#039; screens. Typical images from: confocal microscope and Optical Projection Tomography (OPT) images&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[VolViewer#Description|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[VolViewer#User Documentation|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[VolViewer#Download| &#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Output from VolViewer has appeared in:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://www.cell.com/cell_picture_show-plantbio Cell: Online Gallery] | [http://www.amazon.co.uk/Handbook-Plant-Science-Keith-Roberts/dp/0470057238/ref=sr_1_19?s=books&amp;amp;ie=UTF8&amp;amp;qid=1289321357&amp;amp;sr=1-19 Front cover: Handbook of Plant Science] | [http://www.plantcell.org/content/18/9.toc Front cover: The Plant Cell] |  [http://www.americanscientist.org/issues/pub/2013/1/3d-carnivorous-plants American Scientist] | [http://www.rms.org.uk/Resources/Royal%20Microscopical%20Society/infocus/Edgar%20article.pdf  Royal Microscopical Society: Infocus Magazine] | [http://www.bioptonics.com/Home.htm Bundled with the Bioptonic 3001 scanner: Bioptonics Viewer] | [http://www.dailymail.co.uk/sciencetech/article-2215052/The-complexity-intricacy-Mother-Nature-revealed-incredible-pictures-plants--seen-inside.html The Daily Mail] | [http://www.guardian.co.uk/science/gallery/2007/sep/04/fruitflybrain#/?picture=330675671&amp;amp;index=1 The Guardian newspaper: 3D Fruit fly] | [http://qt.nokia.com/qt-in-use/ambassadors/project?id=a0F20000006LZ2pEAG Qt Ambassador program] | [http://www.triffidnurseries.co.uk/special3.php Triffid Nurseries website]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  VolViewer is used as a &#039;&#039;&#039;stand-alone&#039;&#039;&#039; app. or as a &#039;&#039;&#039;viewport for other systems&#039;&#039;&#039;, e.g. Matlab programs. VolViewer uses [http://www.opengl.org/ OpenGL] and [http://qt.nokia.com/products/ Qt] to provide a user friendly application to interactively explore and quantify multi-dimensional biological images. It has been successfully used in our lab to explore and quantify confocal microscopy and  optical projection tomography images. Written by Jerome Avondo it is open-source and is also compatible with the Open Microscopy Environment ([http://openmicroscopy.org/site OME]) (Chris Allen and Avondo, et. al. &#039;&#039;OMERO: flexible, model-driven data management for experimental biology&#039;&#039;  Nature Methods 9, 245–253 (2012))&amp;lt;br&amp;gt; [[image:Silique.PNG|360px]]).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Analysing shapes in 2D and 3D: &#039;&#039;&#039;AAMToolbox&#039;&#039;&#039;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;AAMToolbox_logo.jpg|120px|AAMToolbox&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For analysing populations of shapes and colours within the shapes using principal component analysis. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[AAMToolbox Details|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorials on the Shape modelling toolbox|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[AAMToolbox Download|&amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download revised Nov2012&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(PC, Mac, Linux, uses Matlab&amp;lt;br&amp;gt;no Mathworks toolboxes needed&amp;lt;br&amp;gt;[http://www.mathworks.com/products/matlab/tryit.html Matlab 30 day free trial] and &amp;lt;br&amp;gt;[http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  The AAMToolbox enables the user analyse the shape and colour of collections of similar objects. Originally developed to analyse face shapes for lipreading ([http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=982900 Matthews &#039;&#039;et al&#039;&#039;. 2002][http://www2.cmp.uea.ac.uk/~sjc/matthews-pami-01.pdf version of pdf]), we have used it extensively for analysing the shapes of leaves ([http://www.pnas.org/content/102/29/10221.short Langlade &#039;&#039;et al&#039;&#039; 2005.],[http://www.tandfonline.com/doi/abs/10.2976/1.2836738 Bensmihen &#039;&#039;et al.&#039;&#039; 2010]) and petals ([http://www.sciencemag.org/content/313/5789/963.short Whibley &#039;&#039;et al&#039;&#039; 2006],[http://www.mssaleshops.info/content/21/10/2999.short Feng &#039;&#039;et al&#039;&#039;. 2010]). The analysis can be applied to art, for example, finding systematic differences between portraits by Rembrandt and Modigliani.&lt;br /&gt;
|}&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Analysing the shapes of clones: &#039;&#039;&#039;SectorAnalysisToolbox&#039;&#039;&#039;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;Sector analysis icon.jpg|120px|SectorAnalysisToolbox&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For analysing the shapes of marked cell clones. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[SectorAnalysisToolbox Details|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[SectorAnalysisToolbox Documentation|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_Science_Paper_2012/SectorAnalysisToolbox.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(PC, Mac, Linux, uses Matlab&amp;lt;br&amp;gt;no Mathworks toolboxes needed&amp;lt;br&amp;gt;[http://www.mathworks.com/products/matlab/tryit.html Matlab 30 day free trial] and &amp;lt;br&amp;gt;[http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  The SectorAnalysisToolbox enables the user analyse the shapes of marked clones in a sheet of tissue.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;&#039;&#039;&#039;Algorithms&#039;&#039;&#039;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;MSERs, extrema, connected-set filters and sieves==&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;The algorithm finding MSER&#039;s starts with a connected-set opening or &#039;o&#039; sieve&amp;lt;/span&amp;gt;====&lt;br /&gt;
[[Comparison of Matlab MSER&#039;s and &#039;o&#039; sieve|Comparison of Matlab MSER&#039;s and &#039;o&#039; sieve]] Essentially, no difference.&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| [[Image:Cameraman_iso_topview.jpg|300px|link=AAMToolbox Details|MSERs]] Cameraman image. Superimposed red spots are maximal extrema and blue spots are minima. Irregular cyan, blue and yellow regions illustrate regions associated with maxima and the magenta region is a minimum.&lt;br /&gt;
|[[Image:cameraman_iso_tree.jpg|300px|link=AAMToolbox Details|MSERs over scale-space]]&amp;lt;br&amp;gt;Isometric view of the cameraman image with superimposed maxima (red) and minima (blue). The trees trace the maxima through increasing scale-space. Large spots have been identified as stable extrema.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color: 	#C364C5;&amp;quot;&amp;gt;Finding interest points, features and segmenting images. &amp;lt;/span&amp;gt;===&lt;br /&gt;
#[[MSER and Sieve Details|&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;&#039;&#039;&#039;Technical briefing&#039;&#039;&#039;&amp;lt;/span&amp;gt;]] &amp;lt;span style=&amp;quot;color: 	#C364C5;&amp;quot;&amp;gt;MSER&#039;s incorporate &#039;o&#039; sieves.&lt;br /&gt;
#[[MSER&#039;s and Connected sets|&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;&#039;&#039;&#039;The twist&#039;&#039;&#039;: from restricted median filters to sieves and MSER&#039;s&amp;lt;/span&amp;gt;]]&lt;br /&gt;
#One dimensional sieves (measure length)&lt;br /&gt;
##[[Types of 1D sieve|Types of 1D sieve]]&lt;br /&gt;
##[[First applied to hydrophobicity plots|First applied to hydrophobicity plots]] but lets exploit their idempotency.&lt;br /&gt;
#Two dimensional sieves (measure areas)&lt;br /&gt;
##Properties&lt;br /&gt;
##Relation to MSER&#039;s&lt;br /&gt;
#Three dimensional sieves (measure volumes)&lt;br /&gt;
##[[Segment by volume|Segment by volume]] instant gratification.&lt;br /&gt;
&amp;lt;!--[[siv Download|&amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [[Software#MSERs extrema connected-set filters and sieves|&amp;lt;span style=&amp;quot;color:Green;&amp;quot;&amp;gt;&#039;&#039;&#039;MORE&#039;&#039;&#039;&amp;lt;/span&amp;gt;]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;Art, extrema of light and shade: &#039;&#039;&#039;&#039;&#039;PhotoArtMaster&#039;&#039;&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Art created using ArtMaster, and ArtMaster itself was featured in an exhibit at the London Victoria and Albert (V&amp;amp;A) Museum exhibition &amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;&#039;Cheating? How to make Perfect Work of Art&#039; (2003).&amp;lt;/span&amp;gt; The exhibition centered on the idea of [http://en.wikipedia.org/wiki/Hockney%E2%80%93Falco_thesis Hockney&#039;s] that  advances in realism and accuracy in the history of Western art since the Renaissance were primarily the result of optical aids such as the camera obscura, camera lucida, and curved mirrors. My exhibit used a touch screen (rare in those days) and ArtMaster to help visitors create &#039;paintings&#039; from photographs. [http://www.sciencemuseum.org.uk/visitmuseum/galleries/turing.aspx finding its name]. (It is entirely different in principle from the software more recently used by Hockney to paint with an iPad.)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=100% style=&amp;quot;background-color:#ffffff;&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|[[Image:DegasLightAndShade.jpg|400px]][[Image:Emma_face_Art_C.jpg|300px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Illustration of PhotoArtMaster used to find and &#039;paint&#039; with regions of light and shade crisply segmented from a photograph. Likewise, on the right, edges.&lt;br /&gt;
|}&lt;br /&gt;
=====PhotoArtMaster=====&lt;br /&gt;
Saturday 07/06/2014: Inspired Photographer of the Year 2013 Tony Bennett when asked whether his photograph  [http://www.bbc.co.uk/programmes/galleries/p020hd8s Mists and Reflections] had been Photoshopped replied something like &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;A digital camera delivers an unemotional &#039;&#039;raw&#039;&#039; image of pixels that you have to manipulate to &#039;&#039;create your photograph&#039;&#039;&amp;quot; Photographers manipulate as little as possible. &amp;lt;br&amp;gt;&lt;br /&gt;
However there is &#039;&#039;&#039;another path one that creates pictures&#039;&#039;&#039;. For this you need another piece of software: PhotoArtMaster (ArtMaster). Professional Photographer said &#039;&#039;&amp;quot;&#039;&#039;&#039;Forget any comparison whatsoever with the art filters in Photoshop - this software reaches out and enters different stratospheres&#039;&#039;&#039;&amp;quot;&#039;&#039; [[Professional Photographer]].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Early versions of PhotoArtMaster are still &#039;&#039;&#039;available from Amazon&#039;&#039;&#039; at low prices (I&#039;m not sure where they come from.)&lt;br /&gt;
[http://www.amazon.co.uk/s/ref=nb_sb_noss?url=search-alias%3Daps&amp;amp;field-keywords=photoartmaster] . Some help for both the early versions and the latest version can be found in [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/a4a_2_screensize.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;this document&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]).&lt;br /&gt;
=====Links to third party PhotoArtMastered pictures=====&lt;br /&gt;
*[https://picasaweb.google.com/113257474829608374943/InTheStyleOf Oliver Bangham] Colouful rounded shapes from, yes, my brother.&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Wimbledon_%28film%29 The entry sequence of the comedy film &#039;Wimbledon&#039;]&lt;br /&gt;
&lt;br /&gt;
====The final version of the Windows ArtMaster2.0 [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSource_ArtMaster/ArtMaster2.0Release.zip &amp;lt;span style=&amp;quot;color: #B31B1B&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;is downloadable here&#039;&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt;]  with no support.====&lt;br /&gt;
Unzip into (for example) the &amp;quot;Program Files&amp;quot; directory then set your system environment to include: &#039;&#039;C:\Program Files\Pam2.0 Release\jre\bin;C:\Program Files\Pam2.0 Release\bin;&#039;&#039; (You may need help for this. I right clicked &#039;computer&#039; from the &#039;Start&#039; menu, then selected &#039;Advanced system settings&#039;, then &#039;Environment Variables&#039; and finally slid through the System variables until I found and selected &#039;Path&#039;. This allowed me to edit the path by adding &#039;;C:\Program Files\Pam2.0 Release\jre\bin;C:\Program Files\Pam2.0 Release\bin&#039; to the end). Rather detailed help using the software is available in [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/a4a_2_screensize.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;this essay&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/Art_For_All_a4a_3_web2.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;The sieve algorithms underpinning PhotoArtMaster software&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;] are described in an extract of the &lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/a4a_2_screensize.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;essay&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]. These documents were written to support our Fo2Pix company. PhotoArtMaster originally  sold &amp;gt;65,000 licences but ill health forced the closure of Fo2Pix.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=100% style=&amp;quot;background-color:#ffffff;&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|[[Image:Trees_1.jpg|600px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Illustration of PhotoArtMaster used to find and &#039;paint&#039; with regions of colour crisply segmented from a photograph. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [[Documentation_of_Connected_Set_Filters_or_Sieves|Art test page]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
[[Documentation_of_Connected_Set_Filters_or_Sieves]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Reaction-diffusion and morphogenesis==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=100% style=&amp;quot;background-color:#000000;&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&lt;br /&gt;
[[Image:tentacles_morphogenesis.png|600px]]&lt;br /&gt;
|}&lt;br /&gt;
Illustration of morphogenesis inspired by Turing&#039;s paper. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/GPT_ReactionDiffusionTentacles_20121211.zip &amp;lt;span style=&amp;quot;color: Navy&amp;quot;&amp;gt;Example using growth toolbox GPT_ReactionDiffusionTentacles_20121211.zip&amp;lt;/span&amp;gt;]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===1 A===&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Open source systems to which we have contributed=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;OMERO==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;OMERO_DIAGRAM.jpg|100px|OMERO&amp;lt;/imgicon&amp;gt;&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For working with the OME image database. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;See [http://www.openmicroscopy.org/site/products/omero &#039;&#039;Details&#039;&#039;], [http://www.openmicroscopy.org/site/support/omero4/downloads &#039;&#039;Download&#039;&#039;]&amp;lt;br&amp;gt; [http://dmbi.nbi.bbsrc.ac.uk/index.php/OMEROWorkshop OMERO Workshop] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  [http://openmicroscopy.org/site/support/omero4 Open Microscopy Environment Remote Objects (OMERO).] for visualising, managing, and annotating scientific image data. See also our [http://dmbi.nbi.bbsrc.ac.uk/index.php/OMEROWorkshop OMERO Workshop] training course we ran in April 2011.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Tools and Utilities=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;BioformatsConverter==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;BioformatsConverterZip.png|100px|BioformatsConverter&amp;lt;/imgicon&amp;gt;&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For converting microscope manufacturer proprietary file formats. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;See [[BioformatsConverter|&#039;&#039;Details&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| This tool allows for the batch conversion of microscope manufacturer proprietary file formats, to the open source OME-TIFF standard. Uses the [http://www.loci.wisc.edu/software/bio-formats Bioformats] library.&lt;br /&gt;
|}&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Dependency Checking Tool==&lt;br /&gt;
&lt;br /&gt;
Tool for recursively finding what further functions a function depends on. See [[myDepFun|&#039;&#039;Details&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;PIN Point==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|[[File:PinPoint.jpg]]&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|Tool for analysing PIN Signal in cells.&lt;br /&gt;
&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/PinPoint.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sample Project&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;In development&amp;lt;/span&amp;gt;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;MTtbox&amp;lt;/span&amp;gt;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;MTtboxA.jpg|100px|BioformatsConverter&amp;lt;/imgicon&amp;gt;&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For modelling the behaviour of microtubules within a cell. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
See [[MTtbox documentation|&#039;&#039;Details&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| In development. The idea is to be able to model the behaviour of growing microtubules and factors as they react chemically and diffuse within the different cell compartments.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The icon shows a spherical cell sliced open to show concentric components: cell wall (magenta), plasma-membrane (yellow), cytoplasm (green) and vacuole (yellow). Microtubules (blue) grow in 3D within the cytoplasm.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Historical&amp;lt;/span&amp;gt;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Robot arm:  still in production after 30 years (serving local industry)&amp;lt;/span&amp;gt;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|[[Image:2014-06-10 14.22.20 small robot.jpg|400px|]] &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For teaching &#039;&#039;&#039;production control&#039;&#039;&#039; and &#039;&#039;&#039;interrupt programming&#039;&#039;&#039;. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1983 and we are in a world of &#039;&#039;&#039;Apple II and BBC B computers&#039;&#039;&#039; - the &#039;&#039;6502&#039;&#039; processor reigns. Particularly good for real-time control it responded very fast to hardware interrupts from, for example, the timer. To illustrate timer interrupts what better than digital servo-motors? Set up the on-board timers to produce a stream of  &#039;heartbeat&#039; of pulses, one every 20 ms out of the parallel port and control up to eight motors.  Pulse widths, from 1 to 2 ms, control the position of each motor arm. Derek Fulton and I made some loose lab. money by writing a series of articles showing exactly how to build and, in particular, control this robot arm.[[Publications#.28G.29_Computer_control.2C_measurement_and_commercial_software |Bangham et al.]]. &lt;br /&gt;
Our copyright, I took it to a local company LJ-Electronics ([http://www.ljcreate.com/products/product.asp?id=314&amp;amp;program=195&amp;amp;curr=2 now LJ-Creative]) who incorporated it detail for detail into their product line. Originally, they called it the Emu. Still in production: &#039;&#039;&#039;Lovely outcome.&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Historical=&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Software&amp;diff=6970</id>
		<title>Software</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Software&amp;diff=6970"/>
		<updated>2019-11-04T11:05:55Z</updated>

		<summary type="html">&lt;p&gt;Jrk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;!-- ===[[BanghamLabSVN|&amp;lt;span style=&amp;quot;color: Navy&amp;quot;&amp;gt;Copy of BanghamLab source code&amp;lt;/span&amp;gt;]]=== --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: DarkGreen&amp;quot;&amp;gt;&#039;&#039;&#039;Current activity: a collaboration&#039;&#039;&#039; with the [http://rico-coen.jic.ac.uk/index.php/Main_Page CoenLab] with the aim of understanding how patterns of gene activity in biological organs influence the developing shape. The BanghamLab is focussed on the conceptual underpinning: concepts captured in computational growth models, experimental data visualisation and analysis.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Notes on documenting our software&amp;lt;/span&amp;gt;=== &lt;br /&gt;
&lt;br /&gt;
[[Tricks for documenting software|Notes for Lab members on how to contribute to this Wiki and where to put downloads. ]]&lt;br /&gt;
&amp;lt;br&amp;gt;Matlab tip: searching a large data structure for a particular field. Clear the command window. Evaluate the structure to list all the fields, then use the usual control-f search tool on the command window.&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;&#039;&#039;&#039;Computational biology&#039;&#039;&#039;&amp;lt;/span&amp;gt;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Quantitative understanding of growing shapes: &#039;&#039;&#039;GFtbox&#039;&#039;&#039;&amp;lt;/span&amp;gt;==&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:#A52A2A;&amp;quot;&amp;gt;We developed &#039;&#039;GFtbox&#039;&#039; to allow us to model the growth of complex shapes with the ultimate goal: to understand the relationships between genes, growth and form.&amp;lt;/span&amp;gt;====&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400&amp;quot;| [[Image:Journal.pbio.1000537.g009.png|350px|Growth of a flower]] Example of a growing snapdragon flower and some mutants ( [http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1000537 Green et al 2011]). Growth is specified by factors (genes) according to the Growing Polarised Tissue Framework. Colours represent putative gene activity, arrows the polariser gradient and spots clones.&lt;br /&gt;
|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;313&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot; position=&amp;quot;right&amp;quot; autoplay=&#039;true&#039;&amp;gt;GPT_Snapdragon_2010_Green_et_al-0002_1.flv|GPT_Snapdragon_2010_Green_et_al-0002.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;!--|&amp;lt;wikiflv width=&amp;quot;280&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;Journal.pbio.1000537.s025_1.flv|Journal.pbio.1000537.g009.png&amp;lt;/wikiflv&amp;gt;--&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;GPT_thumbnail2.png|120px|GFtbox&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|&lt;br /&gt;
For modelling the growth of shapes.  &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Ready Reference Manual|&#039;&#039;&#039;&#039;&#039;Ready Reference&#039;&#039;&#039;&#039;&#039; Manual]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(PC, Mac, Linux, uses Matlab&amp;lt;br&amp;gt;no Mathworks toolboxes needed&amp;lt;br&amp;gt;[http://www.mathworks.com/products/matlab/tryit.html Matlab 30 day free trial] and &amp;lt;br&amp;gt;[http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Ready Reference Manual ancillary functions|&#039;&#039;&#039;&#039;&#039;Ready Reference&#039;for ancillary functions: in &#039;&#039;&#039;interaction function&#039;&#039;&#039; and external functions&#039;&#039;&#039;&#039; Manual]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[GFtbox|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt; Background&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Tutorial pages|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt; Start here&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Example pages|&#039;&#039;&#039;&#039;&#039;Examples&#039;&#039;&#039;&#039;&#039;: from publications]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/JIC-CSB/DArT_Toolshed &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download GFTbox&#039;&#039;&#039;&#039;&#039; from GitHub&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download GFTbox project files:&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/JIC-Enrico-Coen/GFtbox_CarnivorousTraps_2019 &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Evolution of carnivorous traps from planar leaves through simple shifts in gene expression&#039;&#039;&#039;&#039;&#039; Whitewoods et al, in submission, 2019&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/JIC-Enrico-Coen/GFtbox-Utricularia-2018 &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Shaping of a three-dimensional carnivorous trap&#039;&#039;&#039;&#039;&#039; Lee et al, PLOS Biology 2019&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/JIC-Enrico-Coen/GFtbox-Fox-SpatiotemporalCoordination-2018 &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Spatiotemporal coordination&#039;&#039;&#039;&#039;&#039; Fox et al 2018&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_CurrentBiology_Rebocho_2017/GPT_Antirrhinum_CUP.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Antirrhinum CUP&#039;&#039;&#039;&#039;&#039; Rebocho et al 2017&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_Elife_Rebocho_2016/GPT_TissueConflicts.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Tissue Conflicts&#039;&#039;&#039;&#039;&#039; Rebocho et al 2016&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_PlantCell_Richardson_2016/GPT_HoodedBarleyWingModels.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Barley&#039;&#039;&#039;&#039;&#039; Richardson et al 2016&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_Dev_Eldridge_2016/Fruit_Shape_Brassicaceae.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Fruits&#039;&#039;&#039;&#039;&#039; Eldridge et al 2016&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_PLoS_SauretGueto_2013/GPT_Petal_PLoS_20130502.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Petals&#039;&#039;&#039;&#039;&#039; Sauret-Güeto et al 2013&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_Science_Paper_2012/GPT_ArabidopsisLeafModel_20120207.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Leaves&#039;&#039;&#039;&#039;&#039; Kuchen et al 2012&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_PLoS_Kennaway_2011/Kennaway-etal-2011.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Principles and concepts&#039;&#039;&#039;&#039;&#039; Kennaway et al 2011&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_PLoS_Green_2011/Green-etal-2010.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Snapdragon&#039;&#039;&#039;&#039;&#039; Green et al 2011, Cui et al 2010&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| &amp;lt;span style=&amp;quot;color:#AF002A;&amp;quot;&amp;gt; &#039;&#039;GFtbox&#039;&#039; is an implementation of the Growing Polarised Tissue Framework (GPT-framework) for understanding and modelling the relationship between gene activity and the growth of shapes such leaves, flowers and animal embryos ([http://www.ploscompbiol.org/article/info:doi/10.1371/journal.pcbi.1002071 Kennaway et al 2011]). &amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#AF002A;&amp;quot;&amp;gt;The GPT-framework was used to capture an understanding of (to model) the growing petal ([http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1001550 Sauret-Güeto et al 2013]), leaf ([http://www.sciencemag.org/content/335/6072/1092.abstract Kuchen et al 2012]) and Snapdragon flower [http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1000537 Green et al 2011]. The Snapdragon model was validated by comparing the results with other mutant and transgenic flowers [http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1000538 Cui et al 2010.]&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The key point is how &#039;&#039;&#039;outgrowths can be specified by genes&#039;&#039;&#039;. The icon shows an asymmetrical outgrowth. Conceptually, it is specifed by two independent patterns under genetic control: a pattern of growth and a pattern of organisers. The outgrowth arises from a region of extra overall growth. Growth is aligned along axes set by two interacting systems. Organisers at the ends of the mesh create a lengthwise gradient. This gradient interacts with the second due to putative organisers that generate polariser sinks in the region that becomes the tips of the palette outgrowth. ([http://www.ploscompbiol.org/article/info:doi/10.1371/journal.pcbi.1002071 Kennaway et al 2011]). These hypotheses need to be tested in biological systems.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Viewing and measuring volume images: &#039;&#039;&#039;VolViewer&#039;&#039;&#039;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;VolViewer-logo.png|120px|VolViewer&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For viewing and measuring &#039;&#039;&#039;volume images&#039;&#039;&#039; on both normal and &#039;&#039;&#039;stereo&#039;&#039;&#039; screens. Typical images from: confocal microscope and Optical Projection Tomography (OPT) images&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[VolViewer#Description|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[VolViewer#User Documentation|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[VolViewer#Download| &#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Output from VolViewer has appeared in:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://www.cell.com/cell_picture_show-plantbio Cell: Online Gallery] | [http://www.amazon.co.uk/Handbook-Plant-Science-Keith-Roberts/dp/0470057238/ref=sr_1_19?s=books&amp;amp;ie=UTF8&amp;amp;qid=1289321357&amp;amp;sr=1-19 Front cover: Handbook of Plant Science] | [http://www.plantcell.org/content/18/9.toc Front cover: The Plant Cell] |  [http://www.americanscientist.org/issues/pub/2013/1/3d-carnivorous-plants American Scientist] | [http://www.rms.org.uk/Resources/Royal%20Microscopical%20Society/infocus/Edgar%20article.pdf  Royal Microscopical Society: Infocus Magazine] | [http://www.bioptonics.com/Home.htm Bundled with the Bioptonic 3001 scanner: Bioptonics Viewer] | [http://www.dailymail.co.uk/sciencetech/article-2215052/The-complexity-intricacy-Mother-Nature-revealed-incredible-pictures-plants--seen-inside.html The Daily Mail] | [http://www.guardian.co.uk/science/gallery/2007/sep/04/fruitflybrain#/?picture=330675671&amp;amp;index=1 The Guardian newspaper: 3D Fruit fly] | [http://qt.nokia.com/qt-in-use/ambassadors/project?id=a0F20000006LZ2pEAG Qt Ambassador program] | [http://www.triffidnurseries.co.uk/special3.php Triffid Nurseries website]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  VolViewer is used as a &#039;&#039;&#039;stand-alone&#039;&#039;&#039; app. or as a &#039;&#039;&#039;viewport for other systems&#039;&#039;&#039;, e.g. Matlab programs. VolViewer uses [http://www.opengl.org/ OpenGL] and [http://qt.nokia.com/products/ Qt] to provide a user friendly application to interactively explore and quantify multi-dimensional biological images. It has been successfully used in our lab to explore and quantify confocal microscopy and  optical projection tomography images. Written by Jerome Avondo it is open-source and is also compatible with the Open Microscopy Environment ([http://openmicroscopy.org/site OME]) (Chris Allen and Avondo, et. al. &#039;&#039;OMERO: flexible, model-driven data management for experimental biology&#039;&#039;  Nature Methods 9, 245–253 (2012))&amp;lt;br&amp;gt; [[image:Silique.PNG|360px]]).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Analysing shapes in 2D and 3D: &#039;&#039;&#039;AAMToolbox&#039;&#039;&#039;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;AAMToolbox_logo.jpg|120px|AAMToolbox&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For analysing populations of shapes and colours within the shapes using principal component analysis. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[AAMToolbox Details|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorials on the Shape modelling toolbox|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[AAMToolbox Download|&amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download revised Nov2012&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(PC, Mac, Linux, uses Matlab&amp;lt;br&amp;gt;no Mathworks toolboxes needed&amp;lt;br&amp;gt;[http://www.mathworks.com/products/matlab/tryit.html Matlab 30 day free trial] and &amp;lt;br&amp;gt;[http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  The AAMToolbox enables the user analyse the shape and colour of collections of similar objects. Originally developed to analyse face shapes for lipreading ([http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=982900 Matthews &#039;&#039;et al&#039;&#039;. 2002][http://www2.cmp.uea.ac.uk/~sjc/matthews-pami-01.pdf version of pdf]), we have used it extensively for analysing the shapes of leaves ([http://www.pnas.org/content/102/29/10221.short Langlade &#039;&#039;et al&#039;&#039; 2005.],[http://www.tandfonline.com/doi/abs/10.2976/1.2836738 Bensmihen &#039;&#039;et al.&#039;&#039; 2010]) and petals ([http://www.sciencemag.org/content/313/5789/963.short Whibley &#039;&#039;et al&#039;&#039; 2006],[http://www.mssaleshops.info/content/21/10/2999.short Feng &#039;&#039;et al&#039;&#039;. 2010]). The analysis can be applied to art, for example, finding systematic differences between portraits by Rembrandt and Modigliani.&lt;br /&gt;
|}&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Analysing the shapes of clones: &#039;&#039;&#039;SectorAnalysisToolbox&#039;&#039;&#039;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;Sector analysis icon.jpg|120px|SectorAnalysisToolbox&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For analysing the shapes of marked cell clones. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[SectorAnalysisToolbox Details|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[SectorAnalysisToolbox Documentation|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_Science_Paper_2012/SectorAnalysisToolbox.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(PC, Mac, Linux, uses Matlab&amp;lt;br&amp;gt;no Mathworks toolboxes needed&amp;lt;br&amp;gt;[http://www.mathworks.com/products/matlab/tryit.html Matlab 30 day free trial] and &amp;lt;br&amp;gt;[http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  The SectorAnalysisToolbox enables the user analyse the shapes of marked clones in a sheet of tissue.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;&#039;&#039;&#039;Algorithms&#039;&#039;&#039;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;MSERs, extrema, connected-set filters and sieves==&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;The algorithm finding MSER&#039;s starts with a connected-set opening or &#039;o&#039; sieve&amp;lt;/span&amp;gt;====&lt;br /&gt;
[[Comparison of Matlab MSER&#039;s and &#039;o&#039; sieve|Comparison of Matlab MSER&#039;s and &#039;o&#039; sieve]] Essentially, no difference.&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| [[Image:Cameraman_iso_topview.jpg|300px|link=AAMToolbox Details|MSERs]] Cameraman image. Superimposed red spots are maximal extrema and blue spots are minima. Irregular cyan, blue and yellow regions illustrate regions associated with maxima and the magenta region is a minimum.&lt;br /&gt;
|[[Image:cameraman_iso_tree.jpg|300px|link=AAMToolbox Details|MSERs over scale-space]]&amp;lt;br&amp;gt;Isometric view of the cameraman image with superimposed maxima (red) and minima (blue). The trees trace the maxima through increasing scale-space. Large spots have been identified as stable extrema.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color: 	#C364C5;&amp;quot;&amp;gt;Finding interest points, features and segmenting images. &amp;lt;/span&amp;gt;===&lt;br /&gt;
#[[MSER and Sieve Details|&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;&#039;&#039;&#039;Technical briefing&#039;&#039;&#039;&amp;lt;/span&amp;gt;]] &amp;lt;span style=&amp;quot;color: 	#C364C5;&amp;quot;&amp;gt;MSER&#039;s incorporate &#039;o&#039; sieves.&lt;br /&gt;
#[[MSER&#039;s and Connected sets|&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;&#039;&#039;&#039;The twist&#039;&#039;&#039;: from restricted median filters to sieves and MSER&#039;s&amp;lt;/span&amp;gt;]]&lt;br /&gt;
#One dimensional sieves (measure length)&lt;br /&gt;
##[[Types of 1D sieve|Types of 1D sieve]]&lt;br /&gt;
##[[First applied to hydrophobicity plots|First applied to hydrophobicity plots]] but lets exploit their idempotency.&lt;br /&gt;
#Two dimensional sieves (measure areas)&lt;br /&gt;
##Properties&lt;br /&gt;
##Relation to MSER&#039;s&lt;br /&gt;
#Three dimensional sieves (measure volumes)&lt;br /&gt;
##[[Segment by volume|Segment by volume]] instant gratification.&lt;br /&gt;
&amp;lt;!--[[siv Download|&amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [[Software#MSERs extrema connected-set filters and sieves|&amp;lt;span style=&amp;quot;color:Green;&amp;quot;&amp;gt;&#039;&#039;&#039;MORE&#039;&#039;&#039;&amp;lt;/span&amp;gt;]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;Art, extrema of light and shade: &#039;&#039;&#039;&#039;&#039;PhotoArtMaster&#039;&#039;&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Art created using ArtMaster, and ArtMaster itself was featured in an exhibit at the London Victoria and Albert (V&amp;amp;A) Museum exhibition &amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;&#039;Cheating? How to make Perfect Work of Art&#039; (2003).&amp;lt;/span&amp;gt; The exhibition centered on the idea of [http://en.wikipedia.org/wiki/Hockney%E2%80%93Falco_thesis Hockney&#039;s] that  advances in realism and accuracy in the history of Western art since the Renaissance were primarily the result of optical aids such as the camera obscura, camera lucida, and curved mirrors. My exhibit used a touch screen (rare in those days) and ArtMaster to help visitors create &#039;paintings&#039; from photographs. [http://www.sciencemuseum.org.uk/visitmuseum/galleries/turing.aspx finding its name]. (It is entirely different in principle from the software more recently used by Hockney to paint with an iPad.)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=100% style=&amp;quot;background-color:#ffffff;&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|[[Image:DegasLightAndShade.jpg|400px]][[Image:Emma_face_Art_C.jpg|300px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Illustration of PhotoArtMaster used to find and &#039;paint&#039; with regions of light and shade crisply segmented from a photograph. Likewise, on the right, edges.&lt;br /&gt;
|}&lt;br /&gt;
=====PhotoArtMaster=====&lt;br /&gt;
Saturday 07/06/2014: Inspired Photographer of the Year 2013 Tony Bennett when asked whether his photograph  [http://www.bbc.co.uk/programmes/galleries/p020hd8s Mists and Reflections] had been Photoshopped replied something like &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;A digital camera delivers an unemotional &#039;&#039;raw&#039;&#039; image of pixels that you have to manipulate to &#039;&#039;create your photograph&#039;&#039;&amp;quot; Photographers manipulate as little as possible. &amp;lt;br&amp;gt;&lt;br /&gt;
However there is &#039;&#039;&#039;another path one that creates pictures&#039;&#039;&#039;. For this you need another piece of software: PhotoArtMaster (ArtMaster). Professional Photographer said &#039;&#039;&amp;quot;&#039;&#039;&#039;Forget any comparison whatsoever with the art filters in Photoshop - this software reaches out and enters different stratospheres&#039;&#039;&#039;&amp;quot;&#039;&#039; [[Professional Photographer]].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Early versions of PhotoArtMaster are still &#039;&#039;&#039;available from Amazon&#039;&#039;&#039; at low prices (I&#039;m not sure where they come from.)&lt;br /&gt;
[http://www.amazon.co.uk/s/ref=nb_sb_noss?url=search-alias%3Daps&amp;amp;field-keywords=photoartmaster] . Some help for both the early versions and the latest version can be found in [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/a4a_2_screensize.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;this document&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]).&lt;br /&gt;
=====Links to third party PhotoArtMastered pictures=====&lt;br /&gt;
*[https://picasaweb.google.com/113257474829608374943/InTheStyleOf Oliver Bangham] Colouful rounded shapes from, yes, my brother.&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Wimbledon_%28film%29 The entry sequence of the comedy film &#039;Wimbledon&#039;]&lt;br /&gt;
&lt;br /&gt;
====The final version of the Windows ArtMaster2.0 [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSource_ArtMaster/ArtMaster2.0Release.zip &amp;lt;span style=&amp;quot;color: #B31B1B&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;is downloadable here&#039;&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt;]  with no support.====&lt;br /&gt;
Unzip into (for example) the &amp;quot;Program Files&amp;quot; directory then set your system environment to include: &#039;&#039;C:\Program Files\Pam2.0 Release\jre\bin;C:\Program Files\Pam2.0 Release\bin;&#039;&#039; (You may need help for this. I right clicked &#039;computer&#039; from the &#039;Start&#039; menu, then selected &#039;Advanced system settings&#039;, then &#039;Environment Variables&#039; and finally slid through the System variables until I found and selected &#039;Path&#039;. This allowed me to edit the path by adding &#039;;C:\Program Files\Pam2.0 Release\jre\bin;C:\Program Files\Pam2.0 Release\bin&#039; to the end). Rather detailed help using the software is available in [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/a4a_2_screensize.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;this essay&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/Art_For_All_a4a_3_web2.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;The sieve algorithms underpinning PhotoArtMaster software&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;] are described in an extract of the &lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/a4a_2_screensize.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;essay&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]. These documents were written to support our Fo2Pix company. PhotoArtMaster originally  sold &amp;gt;65,000 licences but ill health forced the closure of Fo2Pix.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=100% style=&amp;quot;background-color:#ffffff;&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|[[Image:Trees_1.jpg|600px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Illustration of PhotoArtMaster used to find and &#039;paint&#039; with regions of colour crisply segmented from a photograph. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [[Documentation_of_Connected_Set_Filters_or_Sieves|Art test page]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
[[Documentation_of_Connected_Set_Filters_or_Sieves]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Reaction-diffusion and morphogenesis==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=100% style=&amp;quot;background-color:#000000;&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&lt;br /&gt;
[[Image:tentacles_morphogenesis.png|600px]]&lt;br /&gt;
|}&lt;br /&gt;
Illustration of morphogenesis inspired by Turing&#039;s paper. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/GPT_ReactionDiffusionTentacles_20121211.zip &amp;lt;span style=&amp;quot;color: Navy&amp;quot;&amp;gt;Example using growth toolbox GPT_ReactionDiffusionTentacles_20121211.zip&amp;lt;/span&amp;gt;]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===1 A===&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Open source systems to which we have contributed=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;OMERO==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;OMERO_DIAGRAM.jpg|100px|OMERO&amp;lt;/imgicon&amp;gt;&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For working with the OME image database. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;See [http://www.openmicroscopy.org/site/products/omero &#039;&#039;Details&#039;&#039;], [http://www.openmicroscopy.org/site/support/omero4/downloads &#039;&#039;Download&#039;&#039;]&amp;lt;br&amp;gt; [http://dmbi.nbi.bbsrc.ac.uk/index.php/OMEROWorkshop OMERO Workshop] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  [http://openmicroscopy.org/site/support/omero4 Open Microscopy Environment Remote Objects (OMERO).] for visualising, managing, and annotating scientific image data. See also our [http://dmbi.nbi.bbsrc.ac.uk/index.php/OMEROWorkshop OMERO Workshop] training course we ran in April 2011.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Tools and Utilities=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;BioformatsConverter==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;BioformatsConverterZip.png|100px|BioformatsConverter&amp;lt;/imgicon&amp;gt;&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For converting microscope manufacturer proprietary file formats. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;See [[BioformatsConverter|&#039;&#039;Details&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| This tool allows for the batch conversion of microscope manufacturer proprietary file formats, to the open source OME-TIFF standard. Uses the [http://www.loci.wisc.edu/software/bio-formats Bioformats] library.&lt;br /&gt;
|}&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Dependency Checking Tool==&lt;br /&gt;
&lt;br /&gt;
Tool for recursively finding what further functions a function depends on. See [[myDepFun|&#039;&#039;Details&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;PIN Point==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|[[File:PinPoint.jpg]]&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|Tool for analysing PIN Signal in cells.&lt;br /&gt;
&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/PinPoint.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sample Project&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;In development&amp;lt;/span&amp;gt;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;MTtbox&amp;lt;/span&amp;gt;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;MTtboxA.jpg|100px|BioformatsConverter&amp;lt;/imgicon&amp;gt;&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For modelling the behaviour of microtubules within a cell. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
See [[MTtbox documentation|&#039;&#039;Details&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| In development. The idea is to be able to model the behaviour of growing microtubules and factors as they react chemically and diffuse within the different cell compartments.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The icon shows a spherical cell sliced open to show concentric components: cell wall (magenta), plasma-membrane (yellow), cytoplasm (green) and vacuole (yellow). Microtubules (blue) grow in 3D within the cytoplasm.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Historical&amp;lt;/span&amp;gt;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Robot arm:  still in production after 30 years (serving local industry)&amp;lt;/span&amp;gt;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|[[Image:2014-06-10 14.22.20 small robot.jpg|400px|]] &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For teaching &#039;&#039;&#039;production control&#039;&#039;&#039; and &#039;&#039;&#039;interrupt programming&#039;&#039;&#039;. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1983 and we are in a world of &#039;&#039;&#039;Apple II and BBC B computers&#039;&#039;&#039; - the &#039;&#039;6502&#039;&#039; processor reigns. Particularly good for real-time control it responded very fast to hardware interrupts from, for example, the timer. To illustrate timer interrupts what better than digital servo-motors? Set up the on-board timers to produce a stream of  &#039;heartbeat&#039; of pulses, one every 20 ms out of the parallel port and control up to eight motors.  Pulse widths, from 1 to 2 ms, control the position of each motor arm. Derek Fulton and I made some loose lab. money by writing a series of articles showing exactly how to build and, in particular, control this robot arm.[[Publications#.28G.29_Computer_control.2C_measurement_and_commercial_software |Bangham et al.]]. &lt;br /&gt;
Our copyright, I took it to a local company LJ-Electronics ([http://www.ljcreate.com/products/product.asp?id=314&amp;amp;program=195&amp;amp;curr=2 now LJ-Creative]) who incorporated it detail for detail into their product line. Originally, they called it the Emu. Still in production: &#039;&#039;&#039;Lovely outcome.&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Historical=&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Software&amp;diff=6969</id>
		<title>Software</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Software&amp;diff=6969"/>
		<updated>2019-11-04T11:05:10Z</updated>

		<summary type="html">&lt;p&gt;Jrk: Added a link to GFtbox models for a new paper.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;!-- ===[[BanghamLabSVN|&amp;lt;span style=&amp;quot;color: Navy&amp;quot;&amp;gt;Copy of BanghamLab source code&amp;lt;/span&amp;gt;]]=== --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: DarkGreen&amp;quot;&amp;gt;&#039;&#039;&#039;Current activity: a collaboration&#039;&#039;&#039; with the [http://rico-coen.jic.ac.uk/index.php/Main_Page CoenLab] with the aim of understanding how patterns of gene activity in biological organs influence the developing shape. The BanghamLab is focussed on the conceptual underpinning: concepts captured in computational growth models, experimental data visualisation and analysis.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Notes on documenting our software&amp;lt;/span&amp;gt;=== &lt;br /&gt;
&lt;br /&gt;
[[Tricks for documenting software|Notes for Lab members on how to contribute to this Wiki and where to put downloads. ]]&lt;br /&gt;
&amp;lt;br&amp;gt;Matlab tip: searching a large data structure for a particular field. Clear the command window. Evaluate the structure to list all the fields, then use the usual control-f search tool on the command window.&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;&#039;&#039;&#039;Computational biology&#039;&#039;&#039;&amp;lt;/span&amp;gt;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Quantitative understanding of growing shapes: &#039;&#039;&#039;GFtbox&#039;&#039;&#039;&amp;lt;/span&amp;gt;==&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:#A52A2A;&amp;quot;&amp;gt;We developed &#039;&#039;GFtbox&#039;&#039; to allow us to model the growth of complex shapes with the ultimate goal: to understand the relationships between genes, growth and form.&amp;lt;/span&amp;gt;====&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400&amp;quot;| [[Image:Journal.pbio.1000537.g009.png|350px|Growth of a flower]] Example of a growing snapdragon flower and some mutants ( [http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1000537 Green et al 2011]). Growth is specified by factors (genes) according to the Growing Polarised Tissue Framework. Colours represent putative gene activity, arrows the polariser gradient and spots clones.&lt;br /&gt;
|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;313&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot; position=&amp;quot;right&amp;quot; autoplay=&#039;true&#039;&amp;gt;GPT_Snapdragon_2010_Green_et_al-0002_1.flv|GPT_Snapdragon_2010_Green_et_al-0002.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;!--|&amp;lt;wikiflv width=&amp;quot;280&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;Journal.pbio.1000537.s025_1.flv|Journal.pbio.1000537.g009.png&amp;lt;/wikiflv&amp;gt;--&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;GPT_thumbnail2.png|120px|GFtbox&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|&lt;br /&gt;
For modelling the growth of shapes.  &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Ready Reference Manual|&#039;&#039;&#039;&#039;&#039;Ready Reference&#039;&#039;&#039;&#039;&#039; Manual]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(PC, Mac, Linux, uses Matlab&amp;lt;br&amp;gt;no Mathworks toolboxes needed&amp;lt;br&amp;gt;[http://www.mathworks.com/products/matlab/tryit.html Matlab 30 day free trial] and &amp;lt;br&amp;gt;[http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Ready Reference Manual ancillary functions|&#039;&#039;&#039;&#039;&#039;Ready Reference&#039;for ancillary functions: in &#039;&#039;&#039;interaction function&#039;&#039;&#039; and external functions&#039;&#039;&#039;&#039; Manual]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[GFtbox|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt; Background&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Tutorial pages|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt; Start here&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Example pages|&#039;&#039;&#039;&#039;&#039;Examples&#039;&#039;&#039;&#039;&#039;: from publications]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/JIC-CSB/DArT_Toolshed &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download GFTbox&#039;&#039;&#039;&#039;&#039; from GitHub&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download GFTbox project files:&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/JIC-Enrico-Coen/GFtbox-CarnivorousTraps-2019 &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Evolution of carnivorous traps from planar leaves through simple shifts in gene expression&#039;&#039;&#039;&#039;&#039; Whitewoods et al, in submission, 2019&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/JIC-Enrico-Coen/GFtbox-Utricularia-2018 &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Shaping of a three-dimensional carnivorous trap&#039;&#039;&#039;&#039;&#039; Lee et al, PLOS Biology 2019&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/JIC-Enrico-Coen/GFtbox-Fox-SpatiotemporalCoordination-2018 &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Spatiotemporal coordination&#039;&#039;&#039;&#039;&#039; Fox et al 2018&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_CurrentBiology_Rebocho_2017/GPT_Antirrhinum_CUP.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Antirrhinum CUP&#039;&#039;&#039;&#039;&#039; Rebocho et al 2017&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_Elife_Rebocho_2016/GPT_TissueConflicts.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Tissue Conflicts&#039;&#039;&#039;&#039;&#039; Rebocho et al 2016&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_PlantCell_Richardson_2016/GPT_HoodedBarleyWingModels.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Barley&#039;&#039;&#039;&#039;&#039; Richardson et al 2016&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_Dev_Eldridge_2016/Fruit_Shape_Brassicaceae.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Fruits&#039;&#039;&#039;&#039;&#039; Eldridge et al 2016&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_PLoS_SauretGueto_2013/GPT_Petal_PLoS_20130502.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Petals&#039;&#039;&#039;&#039;&#039; Sauret-Güeto et al 2013&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_Science_Paper_2012/GPT_ArabidopsisLeafModel_20120207.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Leaves&#039;&#039;&#039;&#039;&#039; Kuchen et al 2012&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_PLoS_Kennaway_2011/Kennaway-etal-2011.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Principles and concepts&#039;&#039;&#039;&#039;&#039; Kennaway et al 2011&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_PLoS_Green_2011/Green-etal-2010.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Snapdragon&#039;&#039;&#039;&#039;&#039; Green et al 2011, Cui et al 2010&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| &amp;lt;span style=&amp;quot;color:#AF002A;&amp;quot;&amp;gt; &#039;&#039;GFtbox&#039;&#039; is an implementation of the Growing Polarised Tissue Framework (GPT-framework) for understanding and modelling the relationship between gene activity and the growth of shapes such leaves, flowers and animal embryos ([http://www.ploscompbiol.org/article/info:doi/10.1371/journal.pcbi.1002071 Kennaway et al 2011]). &amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#AF002A;&amp;quot;&amp;gt;The GPT-framework was used to capture an understanding of (to model) the growing petal ([http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1001550 Sauret-Güeto et al 2013]), leaf ([http://www.sciencemag.org/content/335/6072/1092.abstract Kuchen et al 2012]) and Snapdragon flower [http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1000537 Green et al 2011]. The Snapdragon model was validated by comparing the results with other mutant and transgenic flowers [http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1000538 Cui et al 2010.]&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The key point is how &#039;&#039;&#039;outgrowths can be specified by genes&#039;&#039;&#039;. The icon shows an asymmetrical outgrowth. Conceptually, it is specifed by two independent patterns under genetic control: a pattern of growth and a pattern of organisers. The outgrowth arises from a region of extra overall growth. Growth is aligned along axes set by two interacting systems. Organisers at the ends of the mesh create a lengthwise gradient. This gradient interacts with the second due to putative organisers that generate polariser sinks in the region that becomes the tips of the palette outgrowth. ([http://www.ploscompbiol.org/article/info:doi/10.1371/journal.pcbi.1002071 Kennaway et al 2011]). These hypotheses need to be tested in biological systems.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Viewing and measuring volume images: &#039;&#039;&#039;VolViewer&#039;&#039;&#039;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;VolViewer-logo.png|120px|VolViewer&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For viewing and measuring &#039;&#039;&#039;volume images&#039;&#039;&#039; on both normal and &#039;&#039;&#039;stereo&#039;&#039;&#039; screens. Typical images from: confocal microscope and Optical Projection Tomography (OPT) images&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[VolViewer#Description|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[VolViewer#User Documentation|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[VolViewer#Download| &#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Output from VolViewer has appeared in:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://www.cell.com/cell_picture_show-plantbio Cell: Online Gallery] | [http://www.amazon.co.uk/Handbook-Plant-Science-Keith-Roberts/dp/0470057238/ref=sr_1_19?s=books&amp;amp;ie=UTF8&amp;amp;qid=1289321357&amp;amp;sr=1-19 Front cover: Handbook of Plant Science] | [http://www.plantcell.org/content/18/9.toc Front cover: The Plant Cell] |  [http://www.americanscientist.org/issues/pub/2013/1/3d-carnivorous-plants American Scientist] | [http://www.rms.org.uk/Resources/Royal%20Microscopical%20Society/infocus/Edgar%20article.pdf  Royal Microscopical Society: Infocus Magazine] | [http://www.bioptonics.com/Home.htm Bundled with the Bioptonic 3001 scanner: Bioptonics Viewer] | [http://www.dailymail.co.uk/sciencetech/article-2215052/The-complexity-intricacy-Mother-Nature-revealed-incredible-pictures-plants--seen-inside.html The Daily Mail] | [http://www.guardian.co.uk/science/gallery/2007/sep/04/fruitflybrain#/?picture=330675671&amp;amp;index=1 The Guardian newspaper: 3D Fruit fly] | [http://qt.nokia.com/qt-in-use/ambassadors/project?id=a0F20000006LZ2pEAG Qt Ambassador program] | [http://www.triffidnurseries.co.uk/special3.php Triffid Nurseries website]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  VolViewer is used as a &#039;&#039;&#039;stand-alone&#039;&#039;&#039; app. or as a &#039;&#039;&#039;viewport for other systems&#039;&#039;&#039;, e.g. Matlab programs. VolViewer uses [http://www.opengl.org/ OpenGL] and [http://qt.nokia.com/products/ Qt] to provide a user friendly application to interactively explore and quantify multi-dimensional biological images. It has been successfully used in our lab to explore and quantify confocal microscopy and  optical projection tomography images. Written by Jerome Avondo it is open-source and is also compatible with the Open Microscopy Environment ([http://openmicroscopy.org/site OME]) (Chris Allen and Avondo, et. al. &#039;&#039;OMERO: flexible, model-driven data management for experimental biology&#039;&#039;  Nature Methods 9, 245–253 (2012))&amp;lt;br&amp;gt; [[image:Silique.PNG|360px]]).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Analysing shapes in 2D and 3D: &#039;&#039;&#039;AAMToolbox&#039;&#039;&#039;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;AAMToolbox_logo.jpg|120px|AAMToolbox&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For analysing populations of shapes and colours within the shapes using principal component analysis. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[AAMToolbox Details|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorials on the Shape modelling toolbox|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[AAMToolbox Download|&amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download revised Nov2012&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(PC, Mac, Linux, uses Matlab&amp;lt;br&amp;gt;no Mathworks toolboxes needed&amp;lt;br&amp;gt;[http://www.mathworks.com/products/matlab/tryit.html Matlab 30 day free trial] and &amp;lt;br&amp;gt;[http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  The AAMToolbox enables the user analyse the shape and colour of collections of similar objects. Originally developed to analyse face shapes for lipreading ([http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=982900 Matthews &#039;&#039;et al&#039;&#039;. 2002][http://www2.cmp.uea.ac.uk/~sjc/matthews-pami-01.pdf version of pdf]), we have used it extensively for analysing the shapes of leaves ([http://www.pnas.org/content/102/29/10221.short Langlade &#039;&#039;et al&#039;&#039; 2005.],[http://www.tandfonline.com/doi/abs/10.2976/1.2836738 Bensmihen &#039;&#039;et al.&#039;&#039; 2010]) and petals ([http://www.sciencemag.org/content/313/5789/963.short Whibley &#039;&#039;et al&#039;&#039; 2006],[http://www.mssaleshops.info/content/21/10/2999.short Feng &#039;&#039;et al&#039;&#039;. 2010]). The analysis can be applied to art, for example, finding systematic differences between portraits by Rembrandt and Modigliani.&lt;br /&gt;
|}&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Analysing the shapes of clones: &#039;&#039;&#039;SectorAnalysisToolbox&#039;&#039;&#039;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;Sector analysis icon.jpg|120px|SectorAnalysisToolbox&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For analysing the shapes of marked cell clones. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[SectorAnalysisToolbox Details|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[SectorAnalysisToolbox Documentation|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_Science_Paper_2012/SectorAnalysisToolbox.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(PC, Mac, Linux, uses Matlab&amp;lt;br&amp;gt;no Mathworks toolboxes needed&amp;lt;br&amp;gt;[http://www.mathworks.com/products/matlab/tryit.html Matlab 30 day free trial] and &amp;lt;br&amp;gt;[http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  The SectorAnalysisToolbox enables the user analyse the shapes of marked clones in a sheet of tissue.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;&#039;&#039;&#039;Algorithms&#039;&#039;&#039;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;MSERs, extrema, connected-set filters and sieves==&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;The algorithm finding MSER&#039;s starts with a connected-set opening or &#039;o&#039; sieve&amp;lt;/span&amp;gt;====&lt;br /&gt;
[[Comparison of Matlab MSER&#039;s and &#039;o&#039; sieve|Comparison of Matlab MSER&#039;s and &#039;o&#039; sieve]] Essentially, no difference.&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| [[Image:Cameraman_iso_topview.jpg|300px|link=AAMToolbox Details|MSERs]] Cameraman image. Superimposed red spots are maximal extrema and blue spots are minima. Irregular cyan, blue and yellow regions illustrate regions associated with maxima and the magenta region is a minimum.&lt;br /&gt;
|[[Image:cameraman_iso_tree.jpg|300px|link=AAMToolbox Details|MSERs over scale-space]]&amp;lt;br&amp;gt;Isometric view of the cameraman image with superimposed maxima (red) and minima (blue). The trees trace the maxima through increasing scale-space. Large spots have been identified as stable extrema.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color: 	#C364C5;&amp;quot;&amp;gt;Finding interest points, features and segmenting images. &amp;lt;/span&amp;gt;===&lt;br /&gt;
#[[MSER and Sieve Details|&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;&#039;&#039;&#039;Technical briefing&#039;&#039;&#039;&amp;lt;/span&amp;gt;]] &amp;lt;span style=&amp;quot;color: 	#C364C5;&amp;quot;&amp;gt;MSER&#039;s incorporate &#039;o&#039; sieves.&lt;br /&gt;
#[[MSER&#039;s and Connected sets|&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;&#039;&#039;&#039;The twist&#039;&#039;&#039;: from restricted median filters to sieves and MSER&#039;s&amp;lt;/span&amp;gt;]]&lt;br /&gt;
#One dimensional sieves (measure length)&lt;br /&gt;
##[[Types of 1D sieve|Types of 1D sieve]]&lt;br /&gt;
##[[First applied to hydrophobicity plots|First applied to hydrophobicity plots]] but lets exploit their idempotency.&lt;br /&gt;
#Two dimensional sieves (measure areas)&lt;br /&gt;
##Properties&lt;br /&gt;
##Relation to MSER&#039;s&lt;br /&gt;
#Three dimensional sieves (measure volumes)&lt;br /&gt;
##[[Segment by volume|Segment by volume]] instant gratification.&lt;br /&gt;
&amp;lt;!--[[siv Download|&amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [[Software#MSERs extrema connected-set filters and sieves|&amp;lt;span style=&amp;quot;color:Green;&amp;quot;&amp;gt;&#039;&#039;&#039;MORE&#039;&#039;&#039;&amp;lt;/span&amp;gt;]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;Art, extrema of light and shade: &#039;&#039;&#039;&#039;&#039;PhotoArtMaster&#039;&#039;&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Art created using ArtMaster, and ArtMaster itself was featured in an exhibit at the London Victoria and Albert (V&amp;amp;A) Museum exhibition &amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;&#039;Cheating? How to make Perfect Work of Art&#039; (2003).&amp;lt;/span&amp;gt; The exhibition centered on the idea of [http://en.wikipedia.org/wiki/Hockney%E2%80%93Falco_thesis Hockney&#039;s] that  advances in realism and accuracy in the history of Western art since the Renaissance were primarily the result of optical aids such as the camera obscura, camera lucida, and curved mirrors. My exhibit used a touch screen (rare in those days) and ArtMaster to help visitors create &#039;paintings&#039; from photographs. [http://www.sciencemuseum.org.uk/visitmuseum/galleries/turing.aspx finding its name]. (It is entirely different in principle from the software more recently used by Hockney to paint with an iPad.)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=100% style=&amp;quot;background-color:#ffffff;&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|[[Image:DegasLightAndShade.jpg|400px]][[Image:Emma_face_Art_C.jpg|300px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Illustration of PhotoArtMaster used to find and &#039;paint&#039; with regions of light and shade crisply segmented from a photograph. Likewise, on the right, edges.&lt;br /&gt;
|}&lt;br /&gt;
=====PhotoArtMaster=====&lt;br /&gt;
Saturday 07/06/2014: Inspired Photographer of the Year 2013 Tony Bennett when asked whether his photograph  [http://www.bbc.co.uk/programmes/galleries/p020hd8s Mists and Reflections] had been Photoshopped replied something like &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;A digital camera delivers an unemotional &#039;&#039;raw&#039;&#039; image of pixels that you have to manipulate to &#039;&#039;create your photograph&#039;&#039;&amp;quot; Photographers manipulate as little as possible. &amp;lt;br&amp;gt;&lt;br /&gt;
However there is &#039;&#039;&#039;another path one that creates pictures&#039;&#039;&#039;. For this you need another piece of software: PhotoArtMaster (ArtMaster). Professional Photographer said &#039;&#039;&amp;quot;&#039;&#039;&#039;Forget any comparison whatsoever with the art filters in Photoshop - this software reaches out and enters different stratospheres&#039;&#039;&#039;&amp;quot;&#039;&#039; [[Professional Photographer]].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Early versions of PhotoArtMaster are still &#039;&#039;&#039;available from Amazon&#039;&#039;&#039; at low prices (I&#039;m not sure where they come from.)&lt;br /&gt;
[http://www.amazon.co.uk/s/ref=nb_sb_noss?url=search-alias%3Daps&amp;amp;field-keywords=photoartmaster] . Some help for both the early versions and the latest version can be found in [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/a4a_2_screensize.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;this document&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]).&lt;br /&gt;
=====Links to third party PhotoArtMastered pictures=====&lt;br /&gt;
*[https://picasaweb.google.com/113257474829608374943/InTheStyleOf Oliver Bangham] Colouful rounded shapes from, yes, my brother.&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Wimbledon_%28film%29 The entry sequence of the comedy film &#039;Wimbledon&#039;]&lt;br /&gt;
&lt;br /&gt;
====The final version of the Windows ArtMaster2.0 [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSource_ArtMaster/ArtMaster2.0Release.zip &amp;lt;span style=&amp;quot;color: #B31B1B&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;is downloadable here&#039;&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt;]  with no support.====&lt;br /&gt;
Unzip into (for example) the &amp;quot;Program Files&amp;quot; directory then set your system environment to include: &#039;&#039;C:\Program Files\Pam2.0 Release\jre\bin;C:\Program Files\Pam2.0 Release\bin;&#039;&#039; (You may need help for this. I right clicked &#039;computer&#039; from the &#039;Start&#039; menu, then selected &#039;Advanced system settings&#039;, then &#039;Environment Variables&#039; and finally slid through the System variables until I found and selected &#039;Path&#039;. This allowed me to edit the path by adding &#039;;C:\Program Files\Pam2.0 Release\jre\bin;C:\Program Files\Pam2.0 Release\bin&#039; to the end). Rather detailed help using the software is available in [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/a4a_2_screensize.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;this essay&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/Art_For_All_a4a_3_web2.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;The sieve algorithms underpinning PhotoArtMaster software&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;] are described in an extract of the &lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/a4a_2_screensize.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;essay&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]. These documents were written to support our Fo2Pix company. PhotoArtMaster originally  sold &amp;gt;65,000 licences but ill health forced the closure of Fo2Pix.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=100% style=&amp;quot;background-color:#ffffff;&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|[[Image:Trees_1.jpg|600px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Illustration of PhotoArtMaster used to find and &#039;paint&#039; with regions of colour crisply segmented from a photograph. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [[Documentation_of_Connected_Set_Filters_or_Sieves|Art test page]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
[[Documentation_of_Connected_Set_Filters_or_Sieves]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Reaction-diffusion and morphogenesis==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=100% style=&amp;quot;background-color:#000000;&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&lt;br /&gt;
[[Image:tentacles_morphogenesis.png|600px]]&lt;br /&gt;
|}&lt;br /&gt;
Illustration of morphogenesis inspired by Turing&#039;s paper. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/GPT_ReactionDiffusionTentacles_20121211.zip &amp;lt;span style=&amp;quot;color: Navy&amp;quot;&amp;gt;Example using growth toolbox GPT_ReactionDiffusionTentacles_20121211.zip&amp;lt;/span&amp;gt;]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===1 A===&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Open source systems to which we have contributed=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;OMERO==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;OMERO_DIAGRAM.jpg|100px|OMERO&amp;lt;/imgicon&amp;gt;&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For working with the OME image database. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;See [http://www.openmicroscopy.org/site/products/omero &#039;&#039;Details&#039;&#039;], [http://www.openmicroscopy.org/site/support/omero4/downloads &#039;&#039;Download&#039;&#039;]&amp;lt;br&amp;gt; [http://dmbi.nbi.bbsrc.ac.uk/index.php/OMEROWorkshop OMERO Workshop] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  [http://openmicroscopy.org/site/support/omero4 Open Microscopy Environment Remote Objects (OMERO).] for visualising, managing, and annotating scientific image data. See also our [http://dmbi.nbi.bbsrc.ac.uk/index.php/OMEROWorkshop OMERO Workshop] training course we ran in April 2011.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Tools and Utilities=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;BioformatsConverter==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;BioformatsConverterZip.png|100px|BioformatsConverter&amp;lt;/imgicon&amp;gt;&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For converting microscope manufacturer proprietary file formats. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;See [[BioformatsConverter|&#039;&#039;Details&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| This tool allows for the batch conversion of microscope manufacturer proprietary file formats, to the open source OME-TIFF standard. Uses the [http://www.loci.wisc.edu/software/bio-formats Bioformats] library.&lt;br /&gt;
|}&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Dependency Checking Tool==&lt;br /&gt;
&lt;br /&gt;
Tool for recursively finding what further functions a function depends on. See [[myDepFun|&#039;&#039;Details&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;PIN Point==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|[[File:PinPoint.jpg]]&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|Tool for analysing PIN Signal in cells.&lt;br /&gt;
&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/PinPoint.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sample Project&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;In development&amp;lt;/span&amp;gt;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;MTtbox&amp;lt;/span&amp;gt;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;MTtboxA.jpg|100px|BioformatsConverter&amp;lt;/imgicon&amp;gt;&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For modelling the behaviour of microtubules within a cell. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
See [[MTtbox documentation|&#039;&#039;Details&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| In development. The idea is to be able to model the behaviour of growing microtubules and factors as they react chemically and diffuse within the different cell compartments.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The icon shows a spherical cell sliced open to show concentric components: cell wall (magenta), plasma-membrane (yellow), cytoplasm (green) and vacuole (yellow). Microtubules (blue) grow in 3D within the cytoplasm.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Historical&amp;lt;/span&amp;gt;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Robot arm:  still in production after 30 years (serving local industry)&amp;lt;/span&amp;gt;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|[[Image:2014-06-10 14.22.20 small robot.jpg|400px|]] &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For teaching &#039;&#039;&#039;production control&#039;&#039;&#039; and &#039;&#039;&#039;interrupt programming&#039;&#039;&#039;. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1983 and we are in a world of &#039;&#039;&#039;Apple II and BBC B computers&#039;&#039;&#039; - the &#039;&#039;6502&#039;&#039; processor reigns. Particularly good for real-time control it responded very fast to hardware interrupts from, for example, the timer. To illustrate timer interrupts what better than digital servo-motors? Set up the on-board timers to produce a stream of  &#039;heartbeat&#039; of pulses, one every 20 ms out of the parallel port and control up to eight motors.  Pulse widths, from 1 to 2 ms, control the position of each motor arm. Derek Fulton and I made some loose lab. money by writing a series of articles showing exactly how to build and, in particular, control this robot arm.[[Publications#.28G.29_Computer_control.2C_measurement_and_commercial_software |Bangham et al.]]. &lt;br /&gt;
Our copyright, I took it to a local company LJ-Electronics ([http://www.ljcreate.com/products/product.asp?id=314&amp;amp;program=195&amp;amp;curr=2 now LJ-Creative]) who incorporated it detail for detail into their product line. Originally, they called it the Emu. Still in production: &#039;&#039;&#039;Lovely outcome.&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Historical=&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Software&amp;diff=6968</id>
		<title>Software</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Software&amp;diff=6968"/>
		<updated>2019-10-01T14:16:00Z</updated>

		<summary type="html">&lt;p&gt;Jrk: Added new GFtbox model: Utricularia, PLOS Biology, 2019.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;!-- ===[[BanghamLabSVN|&amp;lt;span style=&amp;quot;color: Navy&amp;quot;&amp;gt;Copy of BanghamLab source code&amp;lt;/span&amp;gt;]]=== --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: DarkGreen&amp;quot;&amp;gt;&#039;&#039;&#039;Current activity: a collaboration&#039;&#039;&#039; with the [http://rico-coen.jic.ac.uk/index.php/Main_Page CoenLab] with the aim of understanding how patterns of gene activity in biological organs influence the developing shape. The BanghamLab is focussed on the conceptual underpinning: concepts captured in computational growth models, experimental data visualisation and analysis.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Notes on documenting our software&amp;lt;/span&amp;gt;=== &lt;br /&gt;
&lt;br /&gt;
[[Tricks for documenting software|Notes for Lab members on how to contribute to this Wiki and where to put downloads. ]]&lt;br /&gt;
&amp;lt;br&amp;gt;Matlab tip: searching a large data structure for a particular field. Clear the command window. Evaluate the structure to list all the fields, then use the usual control-f search tool on the command window.&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;&#039;&#039;&#039;Computational biology&#039;&#039;&#039;&amp;lt;/span&amp;gt;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Quantitative understanding of growing shapes: &#039;&#039;&#039;GFtbox&#039;&#039;&#039;&amp;lt;/span&amp;gt;==&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:#A52A2A;&amp;quot;&amp;gt;We developed &#039;&#039;GFtbox&#039;&#039; to allow us to model the growth of complex shapes with the ultimate goal: to understand the relationships between genes, growth and form.&amp;lt;/span&amp;gt;====&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400&amp;quot;| [[Image:Journal.pbio.1000537.g009.png|350px|Growth of a flower]] Example of a growing snapdragon flower and some mutants ( [http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1000537 Green et al 2011]). Growth is specified by factors (genes) according to the Growing Polarised Tissue Framework. Colours represent putative gene activity, arrows the polariser gradient and spots clones.&lt;br /&gt;
|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;313&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot; position=&amp;quot;right&amp;quot; autoplay=&#039;true&#039;&amp;gt;GPT_Snapdragon_2010_Green_et_al-0002_1.flv|GPT_Snapdragon_2010_Green_et_al-0002.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;!--|&amp;lt;wikiflv width=&amp;quot;280&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;Journal.pbio.1000537.s025_1.flv|Journal.pbio.1000537.g009.png&amp;lt;/wikiflv&amp;gt;--&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;GPT_thumbnail2.png|120px|GFtbox&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|&lt;br /&gt;
For modelling the growth of shapes.  &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Ready Reference Manual|&#039;&#039;&#039;&#039;&#039;Ready Reference&#039;&#039;&#039;&#039;&#039; Manual]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(PC, Mac, Linux, uses Matlab&amp;lt;br&amp;gt;no Mathworks toolboxes needed&amp;lt;br&amp;gt;[http://www.mathworks.com/products/matlab/tryit.html Matlab 30 day free trial] and &amp;lt;br&amp;gt;[http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Ready Reference Manual ancillary functions|&#039;&#039;&#039;&#039;&#039;Ready Reference&#039;for ancillary functions: in &#039;&#039;&#039;interaction function&#039;&#039;&#039; and external functions&#039;&#039;&#039;&#039; Manual]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[GFtbox|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt; Background&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Tutorial pages|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt; Start here&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Example pages|&#039;&#039;&#039;&#039;&#039;Examples&#039;&#039;&#039;&#039;&#039;: from publications]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/JIC-CSB/DArT_Toolshed &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download GFTbox&#039;&#039;&#039;&#039;&#039; from GitHub&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download GFTbox project files:&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/JIC-Enrico-Coen/GFtbox-Utricularia-2018 &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Shaping of a three-dimensional carnivorous trap&#039;&#039;&#039;&#039;&#039; Lee et al, PLOS Biology 2019&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/JIC-Enrico-Coen/GFtbox-Fox-SpatiotemporalCoordination-2018 &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Spatiotemporal coordination&#039;&#039;&#039;&#039;&#039; Fox et al 2018&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_CurrentBiology_Rebocho_2017/GPT_Antirrhinum_CUP.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Antirrhinum CUP&#039;&#039;&#039;&#039;&#039; Rebocho et al 2017&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_Elife_Rebocho_2016/GPT_TissueConflicts.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Tissue Conflicts&#039;&#039;&#039;&#039;&#039; Rebocho et al 2016&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_PlantCell_Richardson_2016/GPT_HoodedBarleyWingModels.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Barley&#039;&#039;&#039;&#039;&#039; Richardson et al 2016&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_Dev_Eldridge_2016/Fruit_Shape_Brassicaceae.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Fruits&#039;&#039;&#039;&#039;&#039; Eldridge et al 2016&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_PLoS_SauretGueto_2013/GPT_Petal_PLoS_20130502.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Petals&#039;&#039;&#039;&#039;&#039; Sauret-Güeto et al 2013&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_Science_Paper_2012/GPT_ArabidopsisLeafModel_20120207.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Leaves&#039;&#039;&#039;&#039;&#039; Kuchen et al 2012&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_PLoS_Kennaway_2011/Kennaway-etal-2011.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Principles and concepts&#039;&#039;&#039;&#039;&#039; Kennaway et al 2011&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_PLoS_Green_2011/Green-etal-2010.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Snapdragon&#039;&#039;&#039;&#039;&#039; Green et al 2011, Cui et al 2010&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| &amp;lt;span style=&amp;quot;color:#AF002A;&amp;quot;&amp;gt; &#039;&#039;GFtbox&#039;&#039; is an implementation of the Growing Polarised Tissue Framework (GPT-framework) for understanding and modelling the relationship between gene activity and the growth of shapes such leaves, flowers and animal embryos ([http://www.ploscompbiol.org/article/info:doi/10.1371/journal.pcbi.1002071 Kennaway et al 2011]). &amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#AF002A;&amp;quot;&amp;gt;The GPT-framework was used to capture an understanding of (to model) the growing petal ([http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1001550 Sauret-Güeto et al 2013]), leaf ([http://www.sciencemag.org/content/335/6072/1092.abstract Kuchen et al 2012]) and Snapdragon flower [http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1000537 Green et al 2011]. The Snapdragon model was validated by comparing the results with other mutant and transgenic flowers [http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1000538 Cui et al 2010.]&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The key point is how &#039;&#039;&#039;outgrowths can be specified by genes&#039;&#039;&#039;. The icon shows an asymmetrical outgrowth. Conceptually, it is specifed by two independent patterns under genetic control: a pattern of growth and a pattern of organisers. The outgrowth arises from a region of extra overall growth. Growth is aligned along axes set by two interacting systems. Organisers at the ends of the mesh create a lengthwise gradient. This gradient interacts with the second due to putative organisers that generate polariser sinks in the region that becomes the tips of the palette outgrowth. ([http://www.ploscompbiol.org/article/info:doi/10.1371/journal.pcbi.1002071 Kennaway et al 2011]). These hypotheses need to be tested in biological systems.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Viewing and measuring volume images: &#039;&#039;&#039;VolViewer&#039;&#039;&#039;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;VolViewer-logo.png|120px|VolViewer&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For viewing and measuring &#039;&#039;&#039;volume images&#039;&#039;&#039; on both normal and &#039;&#039;&#039;stereo&#039;&#039;&#039; screens. Typical images from: confocal microscope and Optical Projection Tomography (OPT) images&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[VolViewer#Description|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[VolViewer#User Documentation|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[VolViewer#Download| &#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Output from VolViewer has appeared in:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://www.cell.com/cell_picture_show-plantbio Cell: Online Gallery] | [http://www.amazon.co.uk/Handbook-Plant-Science-Keith-Roberts/dp/0470057238/ref=sr_1_19?s=books&amp;amp;ie=UTF8&amp;amp;qid=1289321357&amp;amp;sr=1-19 Front cover: Handbook of Plant Science] | [http://www.plantcell.org/content/18/9.toc Front cover: The Plant Cell] |  [http://www.americanscientist.org/issues/pub/2013/1/3d-carnivorous-plants American Scientist] | [http://www.rms.org.uk/Resources/Royal%20Microscopical%20Society/infocus/Edgar%20article.pdf  Royal Microscopical Society: Infocus Magazine] | [http://www.bioptonics.com/Home.htm Bundled with the Bioptonic 3001 scanner: Bioptonics Viewer] | [http://www.dailymail.co.uk/sciencetech/article-2215052/The-complexity-intricacy-Mother-Nature-revealed-incredible-pictures-plants--seen-inside.html The Daily Mail] | [http://www.guardian.co.uk/science/gallery/2007/sep/04/fruitflybrain#/?picture=330675671&amp;amp;index=1 The Guardian newspaper: 3D Fruit fly] | [http://qt.nokia.com/qt-in-use/ambassadors/project?id=a0F20000006LZ2pEAG Qt Ambassador program] | [http://www.triffidnurseries.co.uk/special3.php Triffid Nurseries website]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  VolViewer is used as a &#039;&#039;&#039;stand-alone&#039;&#039;&#039; app. or as a &#039;&#039;&#039;viewport for other systems&#039;&#039;&#039;, e.g. Matlab programs. VolViewer uses [http://www.opengl.org/ OpenGL] and [http://qt.nokia.com/products/ Qt] to provide a user friendly application to interactively explore and quantify multi-dimensional biological images. It has been successfully used in our lab to explore and quantify confocal microscopy and  optical projection tomography images. Written by Jerome Avondo it is open-source and is also compatible with the Open Microscopy Environment ([http://openmicroscopy.org/site OME]) (Chris Allen and Avondo, et. al. &#039;&#039;OMERO: flexible, model-driven data management for experimental biology&#039;&#039;  Nature Methods 9, 245–253 (2012))&amp;lt;br&amp;gt; [[image:Silique.PNG|360px]]).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Analysing shapes in 2D and 3D: &#039;&#039;&#039;AAMToolbox&#039;&#039;&#039;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;AAMToolbox_logo.jpg|120px|AAMToolbox&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For analysing populations of shapes and colours within the shapes using principal component analysis. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[AAMToolbox Details|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorials on the Shape modelling toolbox|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[AAMToolbox Download|&amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download revised Nov2012&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(PC, Mac, Linux, uses Matlab&amp;lt;br&amp;gt;no Mathworks toolboxes needed&amp;lt;br&amp;gt;[http://www.mathworks.com/products/matlab/tryit.html Matlab 30 day free trial] and &amp;lt;br&amp;gt;[http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  The AAMToolbox enables the user analyse the shape and colour of collections of similar objects. Originally developed to analyse face shapes for lipreading ([http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=982900 Matthews &#039;&#039;et al&#039;&#039;. 2002][http://www2.cmp.uea.ac.uk/~sjc/matthews-pami-01.pdf version of pdf]), we have used it extensively for analysing the shapes of leaves ([http://www.pnas.org/content/102/29/10221.short Langlade &#039;&#039;et al&#039;&#039; 2005.],[http://www.tandfonline.com/doi/abs/10.2976/1.2836738 Bensmihen &#039;&#039;et al.&#039;&#039; 2010]) and petals ([http://www.sciencemag.org/content/313/5789/963.short Whibley &#039;&#039;et al&#039;&#039; 2006],[http://www.mssaleshops.info/content/21/10/2999.short Feng &#039;&#039;et al&#039;&#039;. 2010]). The analysis can be applied to art, for example, finding systematic differences between portraits by Rembrandt and Modigliani.&lt;br /&gt;
|}&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Analysing the shapes of clones: &#039;&#039;&#039;SectorAnalysisToolbox&#039;&#039;&#039;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;Sector analysis icon.jpg|120px|SectorAnalysisToolbox&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For analysing the shapes of marked cell clones. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[SectorAnalysisToolbox Details|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[SectorAnalysisToolbox Documentation|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_Science_Paper_2012/SectorAnalysisToolbox.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(PC, Mac, Linux, uses Matlab&amp;lt;br&amp;gt;no Mathworks toolboxes needed&amp;lt;br&amp;gt;[http://www.mathworks.com/products/matlab/tryit.html Matlab 30 day free trial] and &amp;lt;br&amp;gt;[http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  The SectorAnalysisToolbox enables the user analyse the shapes of marked clones in a sheet of tissue.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;&#039;&#039;&#039;Algorithms&#039;&#039;&#039;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;MSERs, extrema, connected-set filters and sieves==&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;The algorithm finding MSER&#039;s starts with a connected-set opening or &#039;o&#039; sieve&amp;lt;/span&amp;gt;====&lt;br /&gt;
[[Comparison of Matlab MSER&#039;s and &#039;o&#039; sieve|Comparison of Matlab MSER&#039;s and &#039;o&#039; sieve]] Essentially, no difference.&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| [[Image:Cameraman_iso_topview.jpg|300px|link=AAMToolbox Details|MSERs]] Cameraman image. Superimposed red spots are maximal extrema and blue spots are minima. Irregular cyan, blue and yellow regions illustrate regions associated with maxima and the magenta region is a minimum.&lt;br /&gt;
|[[Image:cameraman_iso_tree.jpg|300px|link=AAMToolbox Details|MSERs over scale-space]]&amp;lt;br&amp;gt;Isometric view of the cameraman image with superimposed maxima (red) and minima (blue). The trees trace the maxima through increasing scale-space. Large spots have been identified as stable extrema.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color: 	#C364C5;&amp;quot;&amp;gt;Finding interest points, features and segmenting images. &amp;lt;/span&amp;gt;===&lt;br /&gt;
#[[MSER and Sieve Details|&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;&#039;&#039;&#039;Technical briefing&#039;&#039;&#039;&amp;lt;/span&amp;gt;]] &amp;lt;span style=&amp;quot;color: 	#C364C5;&amp;quot;&amp;gt;MSER&#039;s incorporate &#039;o&#039; sieves.&lt;br /&gt;
#[[MSER&#039;s and Connected sets|&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;&#039;&#039;&#039;The twist&#039;&#039;&#039;: from restricted median filters to sieves and MSER&#039;s&amp;lt;/span&amp;gt;]]&lt;br /&gt;
#One dimensional sieves (measure length)&lt;br /&gt;
##[[Types of 1D sieve|Types of 1D sieve]]&lt;br /&gt;
##[[First applied to hydrophobicity plots|First applied to hydrophobicity plots]] but lets exploit their idempotency.&lt;br /&gt;
#Two dimensional sieves (measure areas)&lt;br /&gt;
##Properties&lt;br /&gt;
##Relation to MSER&#039;s&lt;br /&gt;
#Three dimensional sieves (measure volumes)&lt;br /&gt;
##[[Segment by volume|Segment by volume]] instant gratification.&lt;br /&gt;
&amp;lt;!--[[siv Download|&amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [[Software#MSERs extrema connected-set filters and sieves|&amp;lt;span style=&amp;quot;color:Green;&amp;quot;&amp;gt;&#039;&#039;&#039;MORE&#039;&#039;&#039;&amp;lt;/span&amp;gt;]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;Art, extrema of light and shade: &#039;&#039;&#039;&#039;&#039;PhotoArtMaster&#039;&#039;&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Art created using ArtMaster, and ArtMaster itself was featured in an exhibit at the London Victoria and Albert (V&amp;amp;A) Museum exhibition &amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;&#039;Cheating? How to make Perfect Work of Art&#039; (2003).&amp;lt;/span&amp;gt; The exhibition centered on the idea of [http://en.wikipedia.org/wiki/Hockney%E2%80%93Falco_thesis Hockney&#039;s] that  advances in realism and accuracy in the history of Western art since the Renaissance were primarily the result of optical aids such as the camera obscura, camera lucida, and curved mirrors. My exhibit used a touch screen (rare in those days) and ArtMaster to help visitors create &#039;paintings&#039; from photographs. [http://www.sciencemuseum.org.uk/visitmuseum/galleries/turing.aspx finding its name]. (It is entirely different in principle from the software more recently used by Hockney to paint with an iPad.)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=100% style=&amp;quot;background-color:#ffffff;&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|[[Image:DegasLightAndShade.jpg|400px]][[Image:Emma_face_Art_C.jpg|300px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Illustration of PhotoArtMaster used to find and &#039;paint&#039; with regions of light and shade crisply segmented from a photograph. Likewise, on the right, edges.&lt;br /&gt;
|}&lt;br /&gt;
=====PhotoArtMaster=====&lt;br /&gt;
Saturday 07/06/2014: Inspired Photographer of the Year 2013 Tony Bennett when asked whether his photograph  [http://www.bbc.co.uk/programmes/galleries/p020hd8s Mists and Reflections] had been Photoshopped replied something like &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;A digital camera delivers an unemotional &#039;&#039;raw&#039;&#039; image of pixels that you have to manipulate to &#039;&#039;create your photograph&#039;&#039;&amp;quot; Photographers manipulate as little as possible. &amp;lt;br&amp;gt;&lt;br /&gt;
However there is &#039;&#039;&#039;another path one that creates pictures&#039;&#039;&#039;. For this you need another piece of software: PhotoArtMaster (ArtMaster). Professional Photographer said &#039;&#039;&amp;quot;&#039;&#039;&#039;Forget any comparison whatsoever with the art filters in Photoshop - this software reaches out and enters different stratospheres&#039;&#039;&#039;&amp;quot;&#039;&#039; [[Professional Photographer]].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Early versions of PhotoArtMaster are still &#039;&#039;&#039;available from Amazon&#039;&#039;&#039; at low prices (I&#039;m not sure where they come from.)&lt;br /&gt;
[http://www.amazon.co.uk/s/ref=nb_sb_noss?url=search-alias%3Daps&amp;amp;field-keywords=photoartmaster] . Some help for both the early versions and the latest version can be found in [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/a4a_2_screensize.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;this document&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]).&lt;br /&gt;
=====Links to third party PhotoArtMastered pictures=====&lt;br /&gt;
*[https://picasaweb.google.com/113257474829608374943/InTheStyleOf Oliver Bangham] Colouful rounded shapes from, yes, my brother.&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Wimbledon_%28film%29 The entry sequence of the comedy film &#039;Wimbledon&#039;]&lt;br /&gt;
&lt;br /&gt;
====The final version of the Windows ArtMaster2.0 [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSource_ArtMaster/ArtMaster2.0Release.zip &amp;lt;span style=&amp;quot;color: #B31B1B&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;is downloadable here&#039;&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt;]  with no support.====&lt;br /&gt;
Unzip into (for example) the &amp;quot;Program Files&amp;quot; directory then set your system environment to include: &#039;&#039;C:\Program Files\Pam2.0 Release\jre\bin;C:\Program Files\Pam2.0 Release\bin;&#039;&#039; (You may need help for this. I right clicked &#039;computer&#039; from the &#039;Start&#039; menu, then selected &#039;Advanced system settings&#039;, then &#039;Environment Variables&#039; and finally slid through the System variables until I found and selected &#039;Path&#039;. This allowed me to edit the path by adding &#039;;C:\Program Files\Pam2.0 Release\jre\bin;C:\Program Files\Pam2.0 Release\bin&#039; to the end). Rather detailed help using the software is available in [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/a4a_2_screensize.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;this essay&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/Art_For_All_a4a_3_web2.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;The sieve algorithms underpinning PhotoArtMaster software&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;] are described in an extract of the &lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/a4a_2_screensize.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;essay&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]. These documents were written to support our Fo2Pix company. PhotoArtMaster originally  sold &amp;gt;65,000 licences but ill health forced the closure of Fo2Pix.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=100% style=&amp;quot;background-color:#ffffff;&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|[[Image:Trees_1.jpg|600px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Illustration of PhotoArtMaster used to find and &#039;paint&#039; with regions of colour crisply segmented from a photograph. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [[Documentation_of_Connected_Set_Filters_or_Sieves|Art test page]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
[[Documentation_of_Connected_Set_Filters_or_Sieves]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Reaction-diffusion and morphogenesis==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=100% style=&amp;quot;background-color:#000000;&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&lt;br /&gt;
[[Image:tentacles_morphogenesis.png|600px]]&lt;br /&gt;
|}&lt;br /&gt;
Illustration of morphogenesis inspired by Turing&#039;s paper. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/GPT_ReactionDiffusionTentacles_20121211.zip &amp;lt;span style=&amp;quot;color: Navy&amp;quot;&amp;gt;Example using growth toolbox GPT_ReactionDiffusionTentacles_20121211.zip&amp;lt;/span&amp;gt;]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===1 A===&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Open source systems to which we have contributed=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;OMERO==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;OMERO_DIAGRAM.jpg|100px|OMERO&amp;lt;/imgicon&amp;gt;&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For working with the OME image database. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;See [http://www.openmicroscopy.org/site/products/omero &#039;&#039;Details&#039;&#039;], [http://www.openmicroscopy.org/site/support/omero4/downloads &#039;&#039;Download&#039;&#039;]&amp;lt;br&amp;gt; [http://dmbi.nbi.bbsrc.ac.uk/index.php/OMEROWorkshop OMERO Workshop] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  [http://openmicroscopy.org/site/support/omero4 Open Microscopy Environment Remote Objects (OMERO).] for visualising, managing, and annotating scientific image data. See also our [http://dmbi.nbi.bbsrc.ac.uk/index.php/OMEROWorkshop OMERO Workshop] training course we ran in April 2011.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Tools and Utilities=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;BioformatsConverter==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;BioformatsConverterZip.png|100px|BioformatsConverter&amp;lt;/imgicon&amp;gt;&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For converting microscope manufacturer proprietary file formats. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;See [[BioformatsConverter|&#039;&#039;Details&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| This tool allows for the batch conversion of microscope manufacturer proprietary file formats, to the open source OME-TIFF standard. Uses the [http://www.loci.wisc.edu/software/bio-formats Bioformats] library.&lt;br /&gt;
|}&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Dependency Checking Tool==&lt;br /&gt;
&lt;br /&gt;
Tool for recursively finding what further functions a function depends on. See [[myDepFun|&#039;&#039;Details&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;PIN Point==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|[[File:PinPoint.jpg]]&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|Tool for analysing PIN Signal in cells.&lt;br /&gt;
&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/PinPoint.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sample Project&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;In development&amp;lt;/span&amp;gt;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;MTtbox&amp;lt;/span&amp;gt;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;MTtboxA.jpg|100px|BioformatsConverter&amp;lt;/imgicon&amp;gt;&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For modelling the behaviour of microtubules within a cell. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
See [[MTtbox documentation|&#039;&#039;Details&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| In development. The idea is to be able to model the behaviour of growing microtubules and factors as they react chemically and diffuse within the different cell compartments.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The icon shows a spherical cell sliced open to show concentric components: cell wall (magenta), plasma-membrane (yellow), cytoplasm (green) and vacuole (yellow). Microtubules (blue) grow in 3D within the cytoplasm.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Historical&amp;lt;/span&amp;gt;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Robot arm:  still in production after 30 years (serving local industry)&amp;lt;/span&amp;gt;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|[[Image:2014-06-10 14.22.20 small robot.jpg|400px|]] &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For teaching &#039;&#039;&#039;production control&#039;&#039;&#039; and &#039;&#039;&#039;interrupt programming&#039;&#039;&#039;. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1983 and we are in a world of &#039;&#039;&#039;Apple II and BBC B computers&#039;&#039;&#039; - the &#039;&#039;6502&#039;&#039; processor reigns. Particularly good for real-time control it responded very fast to hardware interrupts from, for example, the timer. To illustrate timer interrupts what better than digital servo-motors? Set up the on-board timers to produce a stream of  &#039;heartbeat&#039; of pulses, one every 20 ms out of the parallel port and control up to eight motors.  Pulse widths, from 1 to 2 ms, control the position of each motor arm. Derek Fulton and I made some loose lab. money by writing a series of articles showing exactly how to build and, in particular, control this robot arm.[[Publications#.28G.29_Computer_control.2C_measurement_and_commercial_software |Bangham et al.]]. &lt;br /&gt;
Our copyright, I took it to a local company LJ-Electronics ([http://www.ljcreate.com/products/product.asp?id=314&amp;amp;program=195&amp;amp;curr=2 now LJ-Creative]) who incorporated it detail for detail into their product line. Originally, they called it the Emu. Still in production: &#039;&#039;&#039;Lovely outcome.&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Historical=&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Software&amp;diff=6967</id>
		<title>Software</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Software&amp;diff=6967"/>
		<updated>2018-10-22T17:31:44Z</updated>

		<summary type="html">&lt;p&gt;Jrk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;!-- ===[[BanghamLabSVN|&amp;lt;span style=&amp;quot;color: Navy&amp;quot;&amp;gt;Copy of BanghamLab source code&amp;lt;/span&amp;gt;]]=== --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: DarkGreen&amp;quot;&amp;gt;&#039;&#039;&#039;Current activity: a collaboration&#039;&#039;&#039; with the [http://rico-coen.jic.ac.uk/index.php/Main_Page CoenLab] with the aim of understanding how patterns of gene activity in biological organs influence the developing shape. The BanghamLab is focussed on the conceptual underpinning: concepts captured in computational growth models, experimental data visualisation and analysis.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Notes on documenting our software&amp;lt;/span&amp;gt;=== &lt;br /&gt;
&lt;br /&gt;
[[Tricks for documenting software|Notes for Lab members on how to contribute to this Wiki and where to put downloads. ]]&lt;br /&gt;
&amp;lt;br&amp;gt;Matlab tip: searching a large data structure for a particular field. Clear the command window. Evaluate the structure to list all the fields, then use the usual control-f search tool on the command window.&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;&#039;&#039;&#039;Computational biology&#039;&#039;&#039;&amp;lt;/span&amp;gt;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Quantitative understanding of growing shapes: &#039;&#039;&#039;GFtbox&#039;&#039;&#039;&amp;lt;/span&amp;gt;==&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:#A52A2A;&amp;quot;&amp;gt;We developed &#039;&#039;GFtbox&#039;&#039; to allow us to model the growth of complex shapes with the ultimate goal: to understand the relationships between genes, growth and form.&amp;lt;/span&amp;gt;====&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400&amp;quot;| [[Image:Journal.pbio.1000537.g009.png|350px|Growth of a flower]] Example of a growing snapdragon flower and some mutants ( [http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1000537 Green et al 2011]). Growth is specified by factors (genes) according to the Growing Polarised Tissue Framework. Colours represent putative gene activity, arrows the polariser gradient and spots clones.&lt;br /&gt;
|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;313&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot; position=&amp;quot;right&amp;quot; autoplay=&#039;true&#039;&amp;gt;GPT_Snapdragon_2010_Green_et_al-0002_1.flv|GPT_Snapdragon_2010_Green_et_al-0002.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;!--|&amp;lt;wikiflv width=&amp;quot;280&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;Journal.pbio.1000537.s025_1.flv|Journal.pbio.1000537.g009.png&amp;lt;/wikiflv&amp;gt;--&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;GPT_thumbnail2.png|120px|GFtbox&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|&lt;br /&gt;
For modelling the growth of shapes.  &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Ready Reference Manual|&#039;&#039;&#039;&#039;&#039;Ready Reference&#039;&#039;&#039;&#039;&#039; Manual]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(PC, Mac, Linux, uses Matlab&amp;lt;br&amp;gt;no Mathworks toolboxes needed&amp;lt;br&amp;gt;[http://www.mathworks.com/products/matlab/tryit.html Matlab 30 day free trial] and &amp;lt;br&amp;gt;[http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Ready Reference Manual ancillary functions|&#039;&#039;&#039;&#039;&#039;Ready Reference&#039;for ancillary functions: in &#039;&#039;&#039;interaction function&#039;&#039;&#039; and external functions&#039;&#039;&#039;&#039; Manual]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[GFtbox|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt; Background&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Tutorial pages|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt; Start here&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Example pages|&#039;&#039;&#039;&#039;&#039;Examples&#039;&#039;&#039;&#039;&#039;: from publications]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://sourceforge.net/p/gftbox/ &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download GFTbox&#039;&#039;&#039;&#039;&#039; from SourceForge&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download GFTbox project files:&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://github.com/JIC-Enrico-Coen/GFtbox-Fox-SpatiotemporalCoordination-2018 &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Spatiotemporal coordination&#039;&#039;&#039;&#039;&#039; Fox et al 2018&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_CurrentBiology_Rebocho_2017/GPT_Antirrhinum_CUP.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Antirrhinum CUP&#039;&#039;&#039;&#039;&#039; Rebocho et al 2017&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_Elife_Rebocho_2016/GPT_TissueConflicts.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Tissue Conflicts&#039;&#039;&#039;&#039;&#039; Rebocho et al 2016&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_PlantCell_Richardson_2016/GPT_HoodedBarleyWingModels.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Barley&#039;&#039;&#039;&#039;&#039; Richardson et al 2016&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_Dev_Eldridge_2016/Fruit_Shape_Brassicaceae.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Fruits&#039;&#039;&#039;&#039;&#039; Eldridge et al 2016&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_PLoS_SauretGueto_2013/GPT_Petal_PLoS_20130502.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Petals&#039;&#039;&#039;&#039;&#039; Sauret-Güeto et al 2013&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_Science_Paper_2012/GPT_ArabidopsisLeafModel_20120207.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Leaves&#039;&#039;&#039;&#039;&#039; Kuchen et al 2012&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_PLoS_Kennaway_2011/Kennaway-etal-2011.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Principles and concepts&#039;&#039;&#039;&#039;&#039; Kennaway et al 2011&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_PLoS_Green_2011/Green-etal-2010.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Snapdragon&#039;&#039;&#039;&#039;&#039; Green et al 2011, Cui et al 2010&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| &amp;lt;span style=&amp;quot;color:#AF002A;&amp;quot;&amp;gt; &#039;&#039;GFtbox&#039;&#039; is an implementation of the Growing Polarised Tissue Framework (GPT-framework) for understanding and modelling the relationship between gene activity and the growth of shapes such leaves, flowers and animal embryos ([http://www.ploscompbiol.org/article/info:doi/10.1371/journal.pcbi.1002071 Kennaway et al 2011]). &amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#AF002A;&amp;quot;&amp;gt;The GPT-framework was used to capture an understanding of (to model) the growing petal ([http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1001550 Sauret-Güeto et al 2013]), leaf ([http://www.sciencemag.org/content/335/6072/1092.abstract Kuchen et al 2012]) and Snapdragon flower [http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1000537 Green et al 2011]. The Snapdragon model was validated by comparing the results with other mutant and transgenic flowers [http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1000538 Cui et al 2010.]&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The key point is how &#039;&#039;&#039;outgrowths can be specified by genes&#039;&#039;&#039;. The icon shows an asymmetrical outgrowth. Conceptually, it is specifed by two independent patterns under genetic control: a pattern of growth and a pattern of organisers. The outgrowth arises from a region of extra overall growth. Growth is aligned along axes set by two interacting systems. Organisers at the ends of the mesh create a lengthwise gradient. This gradient interacts with the second due to putative organisers that generate polariser sinks in the region that becomes the tips of the palette outgrowth. ([http://www.ploscompbiol.org/article/info:doi/10.1371/journal.pcbi.1002071 Kennaway et al 2011]). These hypotheses need to be tested in biological systems.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Viewing and measuring volume images: &#039;&#039;&#039;VolViewer&#039;&#039;&#039;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;VolViewer-logo.png|120px|VolViewer&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For viewing and measuring &#039;&#039;&#039;volume images&#039;&#039;&#039; on both normal and &#039;&#039;&#039;stereo&#039;&#039;&#039; screens. Typical images from: confocal microscope and Optical Projection Tomography (OPT) images&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[VolViewer#Description|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[VolViewer#User Documentation|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[VolViewer#Download| &#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Output from VolViewer has appeared in:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://www.cell.com/cell_picture_show-plantbio Cell: Online Gallery] | [http://www.amazon.co.uk/Handbook-Plant-Science-Keith-Roberts/dp/0470057238/ref=sr_1_19?s=books&amp;amp;ie=UTF8&amp;amp;qid=1289321357&amp;amp;sr=1-19 Front cover: Handbook of Plant Science] | [http://www.plantcell.org/content/18/9.toc Front cover: The Plant Cell] |  [http://www.americanscientist.org/issues/pub/2013/1/3d-carnivorous-plants American Scientist] | [http://www.rms.org.uk/Resources/Royal%20Microscopical%20Society/infocus/Edgar%20article.pdf  Royal Microscopical Society: Infocus Magazine] | [http://www.bioptonics.com/Home.htm Bundled with the Bioptonic 3001 scanner: Bioptonics Viewer] | [http://www.dailymail.co.uk/sciencetech/article-2215052/The-complexity-intricacy-Mother-Nature-revealed-incredible-pictures-plants--seen-inside.html The Daily Mail] | [http://www.guardian.co.uk/science/gallery/2007/sep/04/fruitflybrain#/?picture=330675671&amp;amp;index=1 The Guardian newspaper: 3D Fruit fly] | [http://qt.nokia.com/qt-in-use/ambassadors/project?id=a0F20000006LZ2pEAG Qt Ambassador program] | [http://www.triffidnurseries.co.uk/special3.php Triffid Nurseries website]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  VolViewer is used as a &#039;&#039;&#039;stand-alone&#039;&#039;&#039; app. or as a &#039;&#039;&#039;viewport for other systems&#039;&#039;&#039;, e.g. Matlab programs. VolViewer uses [http://www.opengl.org/ OpenGL] and [http://qt.nokia.com/products/ Qt] to provide a user friendly application to interactively explore and quantify multi-dimensional biological images. It has been successfully used in our lab to explore and quantify confocal microscopy and  optical projection tomography images. Written by Jerome Avondo it is open-source and is also compatible with the Open Microscopy Environment ([http://openmicroscopy.org/site OME]) (Chris Allen and Avondo, et. al. &#039;&#039;OMERO: flexible, model-driven data management for experimental biology&#039;&#039;  Nature Methods 9, 245–253 (2012))&amp;lt;br&amp;gt; [[image:Silique.PNG|360px]]).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Analysing shapes in 2D and 3D: &#039;&#039;&#039;AAMToolbox&#039;&#039;&#039;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;AAMToolbox_logo.jpg|120px|AAMToolbox&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For analysing populations of shapes and colours within the shapes using principal component analysis. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[AAMToolbox Details|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorials on the Shape modelling toolbox|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[AAMToolbox Download|&amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download revised Nov2012&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(PC, Mac, Linux, uses Matlab&amp;lt;br&amp;gt;no Mathworks toolboxes needed&amp;lt;br&amp;gt;[http://www.mathworks.com/products/matlab/tryit.html Matlab 30 day free trial] and &amp;lt;br&amp;gt;[http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  The AAMToolbox enables the user analyse the shape and colour of collections of similar objects. Originally developed to analyse face shapes for lipreading ([http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=982900 Matthews &#039;&#039;et al&#039;&#039;. 2002][http://www2.cmp.uea.ac.uk/~sjc/matthews-pami-01.pdf version of pdf]), we have used it extensively for analysing the shapes of leaves ([http://www.pnas.org/content/102/29/10221.short Langlade &#039;&#039;et al&#039;&#039; 2005.],[http://www.tandfonline.com/doi/abs/10.2976/1.2836738 Bensmihen &#039;&#039;et al.&#039;&#039; 2010]) and petals ([http://www.sciencemag.org/content/313/5789/963.short Whibley &#039;&#039;et al&#039;&#039; 2006],[http://www.mssaleshops.info/content/21/10/2999.short Feng &#039;&#039;et al&#039;&#039;. 2010]). The analysis can be applied to art, for example, finding systematic differences between portraits by Rembrandt and Modigliani.&lt;br /&gt;
|}&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Analysing the shapes of clones: &#039;&#039;&#039;SectorAnalysisToolbox&#039;&#039;&#039;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;Sector analysis icon.jpg|120px|SectorAnalysisToolbox&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For analysing the shapes of marked cell clones. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[SectorAnalysisToolbox Details|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[SectorAnalysisToolbox Documentation|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_Science_Paper_2012/SectorAnalysisToolbox.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(PC, Mac, Linux, uses Matlab&amp;lt;br&amp;gt;no Mathworks toolboxes needed&amp;lt;br&amp;gt;[http://www.mathworks.com/products/matlab/tryit.html Matlab 30 day free trial] and &amp;lt;br&amp;gt;[http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  The SectorAnalysisToolbox enables the user analyse the shapes of marked clones in a sheet of tissue.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;&#039;&#039;&#039;Algorithms&#039;&#039;&#039;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;MSERs, extrema, connected-set filters and sieves==&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;The algorithm finding MSER&#039;s starts with a connected-set opening or &#039;o&#039; sieve&amp;lt;/span&amp;gt;====&lt;br /&gt;
[[Comparison of Matlab MSER&#039;s and &#039;o&#039; sieve|Comparison of Matlab MSER&#039;s and &#039;o&#039; sieve]] Essentially, no difference.&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| [[Image:Cameraman_iso_topview.jpg|300px|link=AAMToolbox Details|MSERs]] Cameraman image. Superimposed red spots are maximal extrema and blue spots are minima. Irregular cyan, blue and yellow regions illustrate regions associated with maxima and the magenta region is a minimum.&lt;br /&gt;
|[[Image:cameraman_iso_tree.jpg|300px|link=AAMToolbox Details|MSERs over scale-space]]&amp;lt;br&amp;gt;Isometric view of the cameraman image with superimposed maxima (red) and minima (blue). The trees trace the maxima through increasing scale-space. Large spots have been identified as stable extrema.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color: 	#C364C5;&amp;quot;&amp;gt;Finding interest points, features and segmenting images. &amp;lt;/span&amp;gt;===&lt;br /&gt;
#[[MSER and Sieve Details|&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;&#039;&#039;&#039;Technical briefing&#039;&#039;&#039;&amp;lt;/span&amp;gt;]] &amp;lt;span style=&amp;quot;color: 	#C364C5;&amp;quot;&amp;gt;MSER&#039;s incorporate &#039;o&#039; sieves.&lt;br /&gt;
#[[MSER&#039;s and Connected sets|&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;&#039;&#039;&#039;The twist&#039;&#039;&#039;: from restricted median filters to sieves and MSER&#039;s&amp;lt;/span&amp;gt;]]&lt;br /&gt;
#One dimensional sieves (measure length)&lt;br /&gt;
##[[Types of 1D sieve|Types of 1D sieve]]&lt;br /&gt;
##[[First applied to hydrophobicity plots|First applied to hydrophobicity plots]] but lets exploit their idempotency.&lt;br /&gt;
#Two dimensional sieves (measure areas)&lt;br /&gt;
##Properties&lt;br /&gt;
##Relation to MSER&#039;s&lt;br /&gt;
#Three dimensional sieves (measure volumes)&lt;br /&gt;
##[[Segment by volume|Segment by volume]] instant gratification.&lt;br /&gt;
&amp;lt;!--[[siv Download|&amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [[Software#MSERs extrema connected-set filters and sieves|&amp;lt;span style=&amp;quot;color:Green;&amp;quot;&amp;gt;&#039;&#039;&#039;MORE&#039;&#039;&#039;&amp;lt;/span&amp;gt;]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;Art, extrema of light and shade: &#039;&#039;&#039;&#039;&#039;PhotoArtMaster&#039;&#039;&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Art created using ArtMaster, and ArtMaster itself was featured in an exhibit at the London Victoria and Albert (V&amp;amp;A) Museum exhibition &amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;&#039;Cheating? How to make Perfect Work of Art&#039; (2003).&amp;lt;/span&amp;gt; The exhibition centered on the idea of [http://en.wikipedia.org/wiki/Hockney%E2%80%93Falco_thesis Hockney&#039;s] that  advances in realism and accuracy in the history of Western art since the Renaissance were primarily the result of optical aids such as the camera obscura, camera lucida, and curved mirrors. My exhibit used a touch screen (rare in those days) and ArtMaster to help visitors create &#039;paintings&#039; from photographs. [http://www.sciencemuseum.org.uk/visitmuseum/galleries/turing.aspx finding its name]. (It is entirely different in principle from the software more recently used by Hockney to paint with an iPad.)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=100% style=&amp;quot;background-color:#ffffff;&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|[[Image:DegasLightAndShade.jpg|400px]][[Image:Emma_face_Art_C.jpg|300px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Illustration of PhotoArtMaster used to find and &#039;paint&#039; with regions of light and shade crisply segmented from a photograph. Likewise, on the right, edges.&lt;br /&gt;
|}&lt;br /&gt;
=====PhotoArtMaster=====&lt;br /&gt;
Saturday 07/06/2014: Inspired Photographer of the Year 2013 Tony Bennett when asked whether his photograph  [http://www.bbc.co.uk/programmes/galleries/p020hd8s Mists and Reflections] had been Photoshopped replied something like &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;A digital camera delivers an unemotional &#039;&#039;raw&#039;&#039; image of pixels that you have to manipulate to &#039;&#039;create your photograph&#039;&#039;&amp;quot; Photographers manipulate as little as possible. &amp;lt;br&amp;gt;&lt;br /&gt;
However there is &#039;&#039;&#039;another path one that creates pictures&#039;&#039;&#039;. For this you need another piece of software: PhotoArtMaster (ArtMaster). Professional Photographer said &#039;&#039;&amp;quot;&#039;&#039;&#039;Forget any comparison whatsoever with the art filters in Photoshop - this software reaches out and enters different stratospheres&#039;&#039;&#039;&amp;quot;&#039;&#039; [[Professional Photographer]].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Early versions of PhotoArtMaster are still &#039;&#039;&#039;available from Amazon&#039;&#039;&#039; at low prices (I&#039;m not sure where they come from.)&lt;br /&gt;
[http://www.amazon.co.uk/s/ref=nb_sb_noss?url=search-alias%3Daps&amp;amp;field-keywords=photoartmaster] . Some help for both the early versions and the latest version can be found in [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/a4a_2_screensize.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;this document&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]).&lt;br /&gt;
=====Links to third party PhotoArtMastered pictures=====&lt;br /&gt;
*[https://picasaweb.google.com/113257474829608374943/InTheStyleOf Oliver Bangham] Colouful rounded shapes from, yes, my brother.&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Wimbledon_%28film%29 The entry sequence of the comedy film &#039;Wimbledon&#039;]&lt;br /&gt;
&lt;br /&gt;
====The final version of the Windows ArtMaster2.0 [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSource_ArtMaster/ArtMaster2.0Release.zip &amp;lt;span style=&amp;quot;color: #B31B1B&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;is downloadable here&#039;&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt;]  with no support.====&lt;br /&gt;
Unzip into (for example) the &amp;quot;Program Files&amp;quot; directory then set your system environment to include: &#039;&#039;C:\Program Files\Pam2.0 Release\jre\bin;C:\Program Files\Pam2.0 Release\bin;&#039;&#039; (You may need help for this. I right clicked &#039;computer&#039; from the &#039;Start&#039; menu, then selected &#039;Advanced system settings&#039;, then &#039;Environment Variables&#039; and finally slid through the System variables until I found and selected &#039;Path&#039;. This allowed me to edit the path by adding &#039;;C:\Program Files\Pam2.0 Release\jre\bin;C:\Program Files\Pam2.0 Release\bin&#039; to the end). Rather detailed help using the software is available in [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/a4a_2_screensize.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;this essay&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/Art_For_All_a4a_3_web2.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;The sieve algorithms underpinning PhotoArtMaster software&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;] are described in an extract of the &lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/a4a_2_screensize.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;essay&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]. These documents were written to support our Fo2Pix company. PhotoArtMaster originally  sold &amp;gt;65,000 licences but ill health forced the closure of Fo2Pix.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=100% style=&amp;quot;background-color:#ffffff;&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|[[Image:Trees_1.jpg|600px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Illustration of PhotoArtMaster used to find and &#039;paint&#039; with regions of colour crisply segmented from a photograph. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [[Documentation_of_Connected_Set_Filters_or_Sieves|Art test page]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
[[Documentation_of_Connected_Set_Filters_or_Sieves]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Reaction-diffusion and morphogenesis==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=100% style=&amp;quot;background-color:#000000;&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&lt;br /&gt;
[[Image:tentacles_morphogenesis.png|600px]]&lt;br /&gt;
|}&lt;br /&gt;
Illustration of morphogenesis inspired by Turing&#039;s paper. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/GPT_ReactionDiffusionTentacles_20121211.zip &amp;lt;span style=&amp;quot;color: Navy&amp;quot;&amp;gt;Example using growth toolbox GPT_ReactionDiffusionTentacles_20121211.zip&amp;lt;/span&amp;gt;]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===1 A===&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Open source systems to which we have contributed=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;OMERO==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;OMERO_DIAGRAM.jpg|100px|OMERO&amp;lt;/imgicon&amp;gt;&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For working with the OME image database. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;See [http://www.openmicroscopy.org/site/products/omero &#039;&#039;Details&#039;&#039;], [http://www.openmicroscopy.org/site/support/omero4/downloads &#039;&#039;Download&#039;&#039;]&amp;lt;br&amp;gt; [http://dmbi.nbi.bbsrc.ac.uk/index.php/OMEROWorkshop OMERO Workshop] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  [http://openmicroscopy.org/site/support/omero4 Open Microscopy Environment Remote Objects (OMERO).] for visualising, managing, and annotating scientific image data. See also our [http://dmbi.nbi.bbsrc.ac.uk/index.php/OMEROWorkshop OMERO Workshop] training course we ran in April 2011.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Tools and Utilities=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;BioformatsConverter==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;BioformatsConverterZip.png|100px|BioformatsConverter&amp;lt;/imgicon&amp;gt;&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For converting microscope manufacturer proprietary file formats. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;See [[BioformatsConverter|&#039;&#039;Details&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| This tool allows for the batch conversion of microscope manufacturer proprietary file formats, to the open source OME-TIFF standard. Uses the [http://www.loci.wisc.edu/software/bio-formats Bioformats] library.&lt;br /&gt;
|}&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Dependency Checking Tool==&lt;br /&gt;
&lt;br /&gt;
Tool for recursively finding what further functions a function depends on. See [[myDepFun|&#039;&#039;Details&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;PIN Point==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|[[File:PinPoint.jpg]]&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|Tool for analysing PIN Signal in cells.&lt;br /&gt;
&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/PinPoint.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sample Project&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;In development&amp;lt;/span&amp;gt;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;MTtbox&amp;lt;/span&amp;gt;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;MTtboxA.jpg|100px|BioformatsConverter&amp;lt;/imgicon&amp;gt;&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For modelling the behaviour of microtubules within a cell. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
See [[MTtbox documentation|&#039;&#039;Details&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| In development. The idea is to be able to model the behaviour of growing microtubules and factors as they react chemically and diffuse within the different cell compartments.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The icon shows a spherical cell sliced open to show concentric components: cell wall (magenta), plasma-membrane (yellow), cytoplasm (green) and vacuole (yellow). Microtubules (blue) grow in 3D within the cytoplasm.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Historical&amp;lt;/span&amp;gt;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Robot arm:  still in production after 30 years (serving local industry)&amp;lt;/span&amp;gt;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|[[Image:2014-06-10 14.22.20 small robot.jpg|400px|]] &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For teaching &#039;&#039;&#039;production control&#039;&#039;&#039; and &#039;&#039;&#039;interrupt programming&#039;&#039;&#039;. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1983 and we are in a world of &#039;&#039;&#039;Apple II and BBC B computers&#039;&#039;&#039; - the &#039;&#039;6502&#039;&#039; processor reigns. Particularly good for real-time control it responded very fast to hardware interrupts from, for example, the timer. To illustrate timer interrupts what better than digital servo-motors? Set up the on-board timers to produce a stream of  &#039;heartbeat&#039; of pulses, one every 20 ms out of the parallel port and control up to eight motors.  Pulse widths, from 1 to 2 ms, control the position of each motor arm. Derek Fulton and I made some loose lab. money by writing a series of articles showing exactly how to build and, in particular, control this robot arm.[[Publications#.28G.29_Computer_control.2C_measurement_and_commercial_software |Bangham et al.]]. &lt;br /&gt;
Our copyright, I took it to a local company LJ-Electronics ([http://www.ljcreate.com/products/product.asp?id=314&amp;amp;program=195&amp;amp;curr=2 now LJ-Creative]) who incorporated it detail for detail into their product line. Originally, they called it the Emu. Still in production: &#039;&#039;&#039;Lovely outcome.&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Historical=&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Software&amp;diff=6966</id>
		<title>Software</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Software&amp;diff=6966"/>
		<updated>2018-10-22T15:32:19Z</updated>

		<summary type="html">&lt;p&gt;Jrk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;!-- ===[[BanghamLabSVN|&amp;lt;span style=&amp;quot;color: Navy&amp;quot;&amp;gt;Copy of BanghamLab source code&amp;lt;/span&amp;gt;]]=== --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: DarkGreen&amp;quot;&amp;gt;&#039;&#039;&#039;Current activity: a collaboration&#039;&#039;&#039; with the [http://rico-coen.jic.ac.uk/index.php/Main_Page CoenLab] with the aim of understanding how patterns of gene activity in biological organs influence the developing shape. The BanghamLab is focussed on the conceptual underpinning: concepts captured in computational growth models, experimental data visualisation and analysis.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Notes on documenting our software&amp;lt;/span&amp;gt;=== &lt;br /&gt;
&lt;br /&gt;
[[Tricks for documenting software|Notes for Lab members on how to contribute to this Wiki and where to put downloads. ]]&lt;br /&gt;
&amp;lt;br&amp;gt;Matlab tip: searching a large data structure for a particular field. Clear the command window. Evaluate the structure to list all the fields, then use the usual control-f search tool on the command window.&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;&#039;&#039;&#039;Computational biology&#039;&#039;&#039;&amp;lt;/span&amp;gt;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Quantitative understanding of growing shapes: &#039;&#039;&#039;GFtbox&#039;&#039;&#039;&amp;lt;/span&amp;gt;==&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:#A52A2A;&amp;quot;&amp;gt;We developed &#039;&#039;GFtbox&#039;&#039; to allow us to model the growth of complex shapes with the ultimate goal: to understand the relationships between genes, growth and form.&amp;lt;/span&amp;gt;====&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400&amp;quot;| [[Image:Journal.pbio.1000537.g009.png|350px|Growth of a flower]] Example of a growing snapdragon flower and some mutants ( [http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1000537 Green et al 2011]). Growth is specified by factors (genes) according to the Growing Polarised Tissue Framework. Colours represent putative gene activity, arrows the polariser gradient and spots clones.&lt;br /&gt;
|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;313&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot; position=&amp;quot;right&amp;quot; autoplay=&#039;true&#039;&amp;gt;GPT_Snapdragon_2010_Green_et_al-0002_1.flv|GPT_Snapdragon_2010_Green_et_al-0002.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;!--|&amp;lt;wikiflv width=&amp;quot;280&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;Journal.pbio.1000537.s025_1.flv|Journal.pbio.1000537.g009.png&amp;lt;/wikiflv&amp;gt;--&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;GPT_thumbnail2.png|120px|GFtbox&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|&lt;br /&gt;
For modelling the growth of shapes.  &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Ready Reference Manual|&#039;&#039;&#039;&#039;&#039;Ready Reference&#039;&#039;&#039;&#039;&#039; Manual]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(PC, Mac, Linux, uses Matlab&amp;lt;br&amp;gt;no Mathworks toolboxes needed&amp;lt;br&amp;gt;[http://www.mathworks.com/products/matlab/tryit.html Matlab 30 day free trial] and &amp;lt;br&amp;gt;[http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Ready Reference Manual ancillary functions|&#039;&#039;&#039;&#039;&#039;Ready Reference&#039;for ancillary functions: in &#039;&#039;&#039;interaction function&#039;&#039;&#039; and external functions&#039;&#039;&#039;&#039; Manual]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[GFtbox|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt; Background&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Tutorial pages|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt; Start here&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Example pages|&#039;&#039;&#039;&#039;&#039;Examples&#039;&#039;&#039;&#039;&#039;: from publications]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://sourceforge.net/p/gftbox/ &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download GFTbox&#039;&#039;&#039;&#039;&#039; from SourceForge&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download GFTbox project files:&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_PLoS_Fox_2018/GPT_arLeafCellDiv_V24_20180815.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Spatiotemporal coordination&#039;&#039;&#039;&#039;&#039; Fox et al 2018&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_CurrentBiology_Rebocho_2017/GPT_Antirrhinum_CUP.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Antirrhinum CUP&#039;&#039;&#039;&#039;&#039; Rebocho et al 2017&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_Elife_Rebocho_2016/GPT_TissueConflicts.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Tissue Conflicts&#039;&#039;&#039;&#039;&#039; Rebocho et al 2016&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_PlantCell_Richardson_2016/GPT_HoodedBarleyWingModels.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Barley&#039;&#039;&#039;&#039;&#039; Richardson et al 2016&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_Dev_Eldridge_2016/Fruit_Shape_Brassicaceae.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Fruits&#039;&#039;&#039;&#039;&#039; Eldridge et al 2016&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_PLoS_SauretGueto_2013/GPT_Petal_PLoS_20130502.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Petals&#039;&#039;&#039;&#039;&#039; Sauret-Güeto et al 2013&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_Science_Paper_2012/GPT_ArabidopsisLeafModel_20120207.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Leaves&#039;&#039;&#039;&#039;&#039; Kuchen et al 2012&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_PLoS_Kennaway_2011/Kennaway-etal-2011.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Principles and concepts&#039;&#039;&#039;&#039;&#039; Kennaway et al 2011&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_PLoS_Green_2011/Green-etal-2010.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Snapdragon&#039;&#039;&#039;&#039;&#039; Green et al 2011, Cui et al 2010&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| &amp;lt;span style=&amp;quot;color:#AF002A;&amp;quot;&amp;gt; &#039;&#039;GFtbox&#039;&#039; is an implementation of the Growing Polarised Tissue Framework (GPT-framework) for understanding and modelling the relationship between gene activity and the growth of shapes such leaves, flowers and animal embryos ([http://www.ploscompbiol.org/article/info:doi/10.1371/journal.pcbi.1002071 Kennaway et al 2011]). &amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#AF002A;&amp;quot;&amp;gt;The GPT-framework was used to capture an understanding of (to model) the growing petal ([http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1001550 Sauret-Güeto et al 2013]), leaf ([http://www.sciencemag.org/content/335/6072/1092.abstract Kuchen et al 2012]) and Snapdragon flower [http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1000537 Green et al 2011]. The Snapdragon model was validated by comparing the results with other mutant and transgenic flowers [http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1000538 Cui et al 2010.]&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The key point is how &#039;&#039;&#039;outgrowths can be specified by genes&#039;&#039;&#039;. The icon shows an asymmetrical outgrowth. Conceptually, it is specifed by two independent patterns under genetic control: a pattern of growth and a pattern of organisers. The outgrowth arises from a region of extra overall growth. Growth is aligned along axes set by two interacting systems. Organisers at the ends of the mesh create a lengthwise gradient. This gradient interacts with the second due to putative organisers that generate polariser sinks in the region that becomes the tips of the palette outgrowth. ([http://www.ploscompbiol.org/article/info:doi/10.1371/journal.pcbi.1002071 Kennaway et al 2011]). These hypotheses need to be tested in biological systems.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Viewing and measuring volume images: &#039;&#039;&#039;VolViewer&#039;&#039;&#039;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;VolViewer-logo.png|120px|VolViewer&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For viewing and measuring &#039;&#039;&#039;volume images&#039;&#039;&#039; on both normal and &#039;&#039;&#039;stereo&#039;&#039;&#039; screens. Typical images from: confocal microscope and Optical Projection Tomography (OPT) images&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[VolViewer#Description|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[VolViewer#User Documentation|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[VolViewer#Download| &#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Output from VolViewer has appeared in:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://www.cell.com/cell_picture_show-plantbio Cell: Online Gallery] | [http://www.amazon.co.uk/Handbook-Plant-Science-Keith-Roberts/dp/0470057238/ref=sr_1_19?s=books&amp;amp;ie=UTF8&amp;amp;qid=1289321357&amp;amp;sr=1-19 Front cover: Handbook of Plant Science] | [http://www.plantcell.org/content/18/9.toc Front cover: The Plant Cell] |  [http://www.americanscientist.org/issues/pub/2013/1/3d-carnivorous-plants American Scientist] | [http://www.rms.org.uk/Resources/Royal%20Microscopical%20Society/infocus/Edgar%20article.pdf  Royal Microscopical Society: Infocus Magazine] | [http://www.bioptonics.com/Home.htm Bundled with the Bioptonic 3001 scanner: Bioptonics Viewer] | [http://www.dailymail.co.uk/sciencetech/article-2215052/The-complexity-intricacy-Mother-Nature-revealed-incredible-pictures-plants--seen-inside.html The Daily Mail] | [http://www.guardian.co.uk/science/gallery/2007/sep/04/fruitflybrain#/?picture=330675671&amp;amp;index=1 The Guardian newspaper: 3D Fruit fly] | [http://qt.nokia.com/qt-in-use/ambassadors/project?id=a0F20000006LZ2pEAG Qt Ambassador program] | [http://www.triffidnurseries.co.uk/special3.php Triffid Nurseries website]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  VolViewer is used as a &#039;&#039;&#039;stand-alone&#039;&#039;&#039; app. or as a &#039;&#039;&#039;viewport for other systems&#039;&#039;&#039;, e.g. Matlab programs. VolViewer uses [http://www.opengl.org/ OpenGL] and [http://qt.nokia.com/products/ Qt] to provide a user friendly application to interactively explore and quantify multi-dimensional biological images. It has been successfully used in our lab to explore and quantify confocal microscopy and  optical projection tomography images. Written by Jerome Avondo it is open-source and is also compatible with the Open Microscopy Environment ([http://openmicroscopy.org/site OME]) (Chris Allen and Avondo, et. al. &#039;&#039;OMERO: flexible, model-driven data management for experimental biology&#039;&#039;  Nature Methods 9, 245–253 (2012))&amp;lt;br&amp;gt; [[image:Silique.PNG|360px]]).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Analysing shapes in 2D and 3D: &#039;&#039;&#039;AAMToolbox&#039;&#039;&#039;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;AAMToolbox_logo.jpg|120px|AAMToolbox&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For analysing populations of shapes and colours within the shapes using principal component analysis. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[AAMToolbox Details|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorials on the Shape modelling toolbox|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[AAMToolbox Download|&amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download revised Nov2012&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(PC, Mac, Linux, uses Matlab&amp;lt;br&amp;gt;no Mathworks toolboxes needed&amp;lt;br&amp;gt;[http://www.mathworks.com/products/matlab/tryit.html Matlab 30 day free trial] and &amp;lt;br&amp;gt;[http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  The AAMToolbox enables the user analyse the shape and colour of collections of similar objects. Originally developed to analyse face shapes for lipreading ([http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=982900 Matthews &#039;&#039;et al&#039;&#039;. 2002][http://www2.cmp.uea.ac.uk/~sjc/matthews-pami-01.pdf version of pdf]), we have used it extensively for analysing the shapes of leaves ([http://www.pnas.org/content/102/29/10221.short Langlade &#039;&#039;et al&#039;&#039; 2005.],[http://www.tandfonline.com/doi/abs/10.2976/1.2836738 Bensmihen &#039;&#039;et al.&#039;&#039; 2010]) and petals ([http://www.sciencemag.org/content/313/5789/963.short Whibley &#039;&#039;et al&#039;&#039; 2006],[http://www.mssaleshops.info/content/21/10/2999.short Feng &#039;&#039;et al&#039;&#039;. 2010]). The analysis can be applied to art, for example, finding systematic differences between portraits by Rembrandt and Modigliani.&lt;br /&gt;
|}&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Analysing the shapes of clones: &#039;&#039;&#039;SectorAnalysisToolbox&#039;&#039;&#039;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;Sector analysis icon.jpg|120px|SectorAnalysisToolbox&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For analysing the shapes of marked cell clones. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[SectorAnalysisToolbox Details|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[SectorAnalysisToolbox Documentation|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_Science_Paper_2012/SectorAnalysisToolbox.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(PC, Mac, Linux, uses Matlab&amp;lt;br&amp;gt;no Mathworks toolboxes needed&amp;lt;br&amp;gt;[http://www.mathworks.com/products/matlab/tryit.html Matlab 30 day free trial] and &amp;lt;br&amp;gt;[http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  The SectorAnalysisToolbox enables the user analyse the shapes of marked clones in a sheet of tissue.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;&#039;&#039;&#039;Algorithms&#039;&#039;&#039;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;MSERs, extrema, connected-set filters and sieves==&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;The algorithm finding MSER&#039;s starts with a connected-set opening or &#039;o&#039; sieve&amp;lt;/span&amp;gt;====&lt;br /&gt;
[[Comparison of Matlab MSER&#039;s and &#039;o&#039; sieve|Comparison of Matlab MSER&#039;s and &#039;o&#039; sieve]] Essentially, no difference.&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| [[Image:Cameraman_iso_topview.jpg|300px|link=AAMToolbox Details|MSERs]] Cameraman image. Superimposed red spots are maximal extrema and blue spots are minima. Irregular cyan, blue and yellow regions illustrate regions associated with maxima and the magenta region is a minimum.&lt;br /&gt;
|[[Image:cameraman_iso_tree.jpg|300px|link=AAMToolbox Details|MSERs over scale-space]]&amp;lt;br&amp;gt;Isometric view of the cameraman image with superimposed maxima (red) and minima (blue). The trees trace the maxima through increasing scale-space. Large spots have been identified as stable extrema.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color: 	#C364C5;&amp;quot;&amp;gt;Finding interest points, features and segmenting images. &amp;lt;/span&amp;gt;===&lt;br /&gt;
#[[MSER and Sieve Details|&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;&#039;&#039;&#039;Technical briefing&#039;&#039;&#039;&amp;lt;/span&amp;gt;]] &amp;lt;span style=&amp;quot;color: 	#C364C5;&amp;quot;&amp;gt;MSER&#039;s incorporate &#039;o&#039; sieves.&lt;br /&gt;
#[[MSER&#039;s and Connected sets|&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;&#039;&#039;&#039;The twist&#039;&#039;&#039;: from restricted median filters to sieves and MSER&#039;s&amp;lt;/span&amp;gt;]]&lt;br /&gt;
#One dimensional sieves (measure length)&lt;br /&gt;
##[[Types of 1D sieve|Types of 1D sieve]]&lt;br /&gt;
##[[First applied to hydrophobicity plots|First applied to hydrophobicity plots]] but lets exploit their idempotency.&lt;br /&gt;
#Two dimensional sieves (measure areas)&lt;br /&gt;
##Properties&lt;br /&gt;
##Relation to MSER&#039;s&lt;br /&gt;
#Three dimensional sieves (measure volumes)&lt;br /&gt;
##[[Segment by volume|Segment by volume]] instant gratification.&lt;br /&gt;
&amp;lt;!--[[siv Download|&amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [[Software#MSERs extrema connected-set filters and sieves|&amp;lt;span style=&amp;quot;color:Green;&amp;quot;&amp;gt;&#039;&#039;&#039;MORE&#039;&#039;&#039;&amp;lt;/span&amp;gt;]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;Art, extrema of light and shade: &#039;&#039;&#039;&#039;&#039;PhotoArtMaster&#039;&#039;&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Art created using ArtMaster, and ArtMaster itself was featured in an exhibit at the London Victoria and Albert (V&amp;amp;A) Museum exhibition &amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;&#039;Cheating? How to make Perfect Work of Art&#039; (2003).&amp;lt;/span&amp;gt; The exhibition centered on the idea of [http://en.wikipedia.org/wiki/Hockney%E2%80%93Falco_thesis Hockney&#039;s] that  advances in realism and accuracy in the history of Western art since the Renaissance were primarily the result of optical aids such as the camera obscura, camera lucida, and curved mirrors. My exhibit used a touch screen (rare in those days) and ArtMaster to help visitors create &#039;paintings&#039; from photographs. [http://www.sciencemuseum.org.uk/visitmuseum/galleries/turing.aspx finding its name]. (It is entirely different in principle from the software more recently used by Hockney to paint with an iPad.)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=100% style=&amp;quot;background-color:#ffffff;&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|[[Image:DegasLightAndShade.jpg|400px]][[Image:Emma_face_Art_C.jpg|300px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Illustration of PhotoArtMaster used to find and &#039;paint&#039; with regions of light and shade crisply segmented from a photograph. Likewise, on the right, edges.&lt;br /&gt;
|}&lt;br /&gt;
=====PhotoArtMaster=====&lt;br /&gt;
Saturday 07/06/2014: Inspired Photographer of the Year 2013 Tony Bennett when asked whether his photograph  [http://www.bbc.co.uk/programmes/galleries/p020hd8s Mists and Reflections] had been Photoshopped replied something like &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;A digital camera delivers an unemotional &#039;&#039;raw&#039;&#039; image of pixels that you have to manipulate to &#039;&#039;create your photograph&#039;&#039;&amp;quot; Photographers manipulate as little as possible. &amp;lt;br&amp;gt;&lt;br /&gt;
However there is &#039;&#039;&#039;another path one that creates pictures&#039;&#039;&#039;. For this you need another piece of software: PhotoArtMaster (ArtMaster). Professional Photographer said &#039;&#039;&amp;quot;&#039;&#039;&#039;Forget any comparison whatsoever with the art filters in Photoshop - this software reaches out and enters different stratospheres&#039;&#039;&#039;&amp;quot;&#039;&#039; [[Professional Photographer]].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Early versions of PhotoArtMaster are still &#039;&#039;&#039;available from Amazon&#039;&#039;&#039; at low prices (I&#039;m not sure where they come from.)&lt;br /&gt;
[http://www.amazon.co.uk/s/ref=nb_sb_noss?url=search-alias%3Daps&amp;amp;field-keywords=photoartmaster] . Some help for both the early versions and the latest version can be found in [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/a4a_2_screensize.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;this document&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]).&lt;br /&gt;
=====Links to third party PhotoArtMastered pictures=====&lt;br /&gt;
*[https://picasaweb.google.com/113257474829608374943/InTheStyleOf Oliver Bangham] Colouful rounded shapes from, yes, my brother.&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Wimbledon_%28film%29 The entry sequence of the comedy film &#039;Wimbledon&#039;]&lt;br /&gt;
&lt;br /&gt;
====The final version of the Windows ArtMaster2.0 [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSource_ArtMaster/ArtMaster2.0Release.zip &amp;lt;span style=&amp;quot;color: #B31B1B&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;is downloadable here&#039;&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt;]  with no support.====&lt;br /&gt;
Unzip into (for example) the &amp;quot;Program Files&amp;quot; directory then set your system environment to include: &#039;&#039;C:\Program Files\Pam2.0 Release\jre\bin;C:\Program Files\Pam2.0 Release\bin;&#039;&#039; (You may need help for this. I right clicked &#039;computer&#039; from the &#039;Start&#039; menu, then selected &#039;Advanced system settings&#039;, then &#039;Environment Variables&#039; and finally slid through the System variables until I found and selected &#039;Path&#039;. This allowed me to edit the path by adding &#039;;C:\Program Files\Pam2.0 Release\jre\bin;C:\Program Files\Pam2.0 Release\bin&#039; to the end). Rather detailed help using the software is available in [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/a4a_2_screensize.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;this essay&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/Art_For_All_a4a_3_web2.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;The sieve algorithms underpinning PhotoArtMaster software&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;] are described in an extract of the &lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/a4a_2_screensize.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;essay&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]. These documents were written to support our Fo2Pix company. PhotoArtMaster originally  sold &amp;gt;65,000 licences but ill health forced the closure of Fo2Pix.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=100% style=&amp;quot;background-color:#ffffff;&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|[[Image:Trees_1.jpg|600px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Illustration of PhotoArtMaster used to find and &#039;paint&#039; with regions of colour crisply segmented from a photograph. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [[Documentation_of_Connected_Set_Filters_or_Sieves|Art test page]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
[[Documentation_of_Connected_Set_Filters_or_Sieves]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Reaction-diffusion and morphogenesis==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=100% style=&amp;quot;background-color:#000000;&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&lt;br /&gt;
[[Image:tentacles_morphogenesis.png|600px]]&lt;br /&gt;
|}&lt;br /&gt;
Illustration of morphogenesis inspired by Turing&#039;s paper. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/GPT_ReactionDiffusionTentacles_20121211.zip &amp;lt;span style=&amp;quot;color: Navy&amp;quot;&amp;gt;Example using growth toolbox GPT_ReactionDiffusionTentacles_20121211.zip&amp;lt;/span&amp;gt;]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===1 A===&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Open source systems to which we have contributed=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;OMERO==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;OMERO_DIAGRAM.jpg|100px|OMERO&amp;lt;/imgicon&amp;gt;&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For working with the OME image database. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;See [http://www.openmicroscopy.org/site/products/omero &#039;&#039;Details&#039;&#039;], [http://www.openmicroscopy.org/site/support/omero4/downloads &#039;&#039;Download&#039;&#039;]&amp;lt;br&amp;gt; [http://dmbi.nbi.bbsrc.ac.uk/index.php/OMEROWorkshop OMERO Workshop] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  [http://openmicroscopy.org/site/support/omero4 Open Microscopy Environment Remote Objects (OMERO).] for visualising, managing, and annotating scientific image data. See also our [http://dmbi.nbi.bbsrc.ac.uk/index.php/OMEROWorkshop OMERO Workshop] training course we ran in April 2011.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Tools and Utilities=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;BioformatsConverter==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;BioformatsConverterZip.png|100px|BioformatsConverter&amp;lt;/imgicon&amp;gt;&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For converting microscope manufacturer proprietary file formats. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;See [[BioformatsConverter|&#039;&#039;Details&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| This tool allows for the batch conversion of microscope manufacturer proprietary file formats, to the open source OME-TIFF standard. Uses the [http://www.loci.wisc.edu/software/bio-formats Bioformats] library.&lt;br /&gt;
|}&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Dependency Checking Tool==&lt;br /&gt;
&lt;br /&gt;
Tool for recursively finding what further functions a function depends on. See [[myDepFun|&#039;&#039;Details&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;PIN Point==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|[[File:PinPoint.jpg]]&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|Tool for analysing PIN Signal in cells.&lt;br /&gt;
&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/PinPoint.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sample Project&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;In development&amp;lt;/span&amp;gt;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;MTtbox&amp;lt;/span&amp;gt;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;MTtboxA.jpg|100px|BioformatsConverter&amp;lt;/imgicon&amp;gt;&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For modelling the behaviour of microtubules within a cell. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
See [[MTtbox documentation|&#039;&#039;Details&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| In development. The idea is to be able to model the behaviour of growing microtubules and factors as they react chemically and diffuse within the different cell compartments.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The icon shows a spherical cell sliced open to show concentric components: cell wall (magenta), plasma-membrane (yellow), cytoplasm (green) and vacuole (yellow). Microtubules (blue) grow in 3D within the cytoplasm.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Historical&amp;lt;/span&amp;gt;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Robot arm:  still in production after 30 years (serving local industry)&amp;lt;/span&amp;gt;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|[[Image:2014-06-10 14.22.20 small robot.jpg|400px|]] &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For teaching &#039;&#039;&#039;production control&#039;&#039;&#039; and &#039;&#039;&#039;interrupt programming&#039;&#039;&#039;. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1983 and we are in a world of &#039;&#039;&#039;Apple II and BBC B computers&#039;&#039;&#039; - the &#039;&#039;6502&#039;&#039; processor reigns. Particularly good for real-time control it responded very fast to hardware interrupts from, for example, the timer. To illustrate timer interrupts what better than digital servo-motors? Set up the on-board timers to produce a stream of  &#039;heartbeat&#039; of pulses, one every 20 ms out of the parallel port and control up to eight motors.  Pulse widths, from 1 to 2 ms, control the position of each motor arm. Derek Fulton and I made some loose lab. money by writing a series of articles showing exactly how to build and, in particular, control this robot arm.[[Publications#.28G.29_Computer_control.2C_measurement_and_commercial_software |Bangham et al.]]. &lt;br /&gt;
Our copyright, I took it to a local company LJ-Electronics ([http://www.ljcreate.com/products/product.asp?id=314&amp;amp;program=195&amp;amp;curr=2 now LJ-Creative]) who incorporated it detail for detail into their product line. Originally, they called it the Emu. Still in production: &#039;&#039;&#039;Lovely outcome.&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Historical=&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Software&amp;diff=6965</id>
		<title>Software</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Software&amp;diff=6965"/>
		<updated>2018-10-22T15:21:41Z</updated>

		<summary type="html">&lt;p&gt;Jrk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;!-- ===[[BanghamLabSVN|&amp;lt;span style=&amp;quot;color: Navy&amp;quot;&amp;gt;Copy of BanghamLab source code&amp;lt;/span&amp;gt;]]=== --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: DarkGreen&amp;quot;&amp;gt;&#039;&#039;&#039;Current activity: a collaboration&#039;&#039;&#039; with the [http://rico-coen.jic.ac.uk/index.php/Main_Page CoenLab] with the aim of understanding how patterns of gene activity in biological organs influence the developing shape. The BanghamLab is focussed on the conceptual underpinning: concepts captured in computational growth models, experimental data visualisation and analysis.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Notes on documenting our software&amp;lt;/span&amp;gt;=== &lt;br /&gt;
&lt;br /&gt;
[[Tricks for documenting software|Notes for Lab members on how to contribute to this Wiki and where to put downloads. ]]&lt;br /&gt;
&amp;lt;br&amp;gt;Matlab tip: searching a large data structure for a particular field. Clear the command window. Evaluate the structure to list all the fields, then use the usual control-f search tool on the command window.&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;&#039;&#039;&#039;Computational biology&#039;&#039;&#039;&amp;lt;/span&amp;gt;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Quantitative understanding of growing shapes: &#039;&#039;&#039;GFtbox&#039;&#039;&#039;&amp;lt;/span&amp;gt;==&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:#A52A2A;&amp;quot;&amp;gt;We developed &#039;&#039;GFtbox&#039;&#039; to allow us to model the growth of complex shapes with the ultimate goal: to understand the relationships between genes, growth and form.&amp;lt;/span&amp;gt;====&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400&amp;quot;| [[Image:Journal.pbio.1000537.g009.png|350px|Growth of a flower]] Example of a growing snapdragon flower and some mutants ( [http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1000537 Green et al 2011]). Growth is specified by factors (genes) according to the Growing Polarised Tissue Framework. Colours represent putative gene activity, arrows the polariser gradient and spots clones.&lt;br /&gt;
|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;313&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot; position=&amp;quot;right&amp;quot; autoplay=&#039;true&#039;&amp;gt;GPT_Snapdragon_2010_Green_et_al-0002_1.flv|GPT_Snapdragon_2010_Green_et_al-0002.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;!--|&amp;lt;wikiflv width=&amp;quot;280&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;Journal.pbio.1000537.s025_1.flv|Journal.pbio.1000537.g009.png&amp;lt;/wikiflv&amp;gt;--&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;GPT_thumbnail2.png|120px|GFtbox&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|&lt;br /&gt;
For modelling the growth of shapes.  &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Ready Reference Manual|&#039;&#039;&#039;&#039;&#039;Ready Reference&#039;&#039;&#039;&#039;&#039; Manual]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(PC, Mac, Linux, uses Matlab&amp;lt;br&amp;gt;no Mathworks toolboxes needed&amp;lt;br&amp;gt;[http://www.mathworks.com/products/matlab/tryit.html Matlab 30 day free trial] and &amp;lt;br&amp;gt;[http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Ready Reference Manual ancillary functions|&#039;&#039;&#039;&#039;&#039;Ready Reference&#039;for ancillary functions: in &#039;&#039;&#039;interaction function&#039;&#039;&#039; and external functions&#039;&#039;&#039;&#039; Manual]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[GFtbox|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt; Background&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Tutorial pages|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt; Start here&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Example pages|&#039;&#039;&#039;&#039;&#039;Examples&#039;&#039;&#039;&#039;&#039;: from publications]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://sourceforge.net/p/gftbox/ &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download GFTbox&#039;&#039;&#039;&#039;&#039; from SourceForge&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download GFTbox project files:&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_CurrentBiology_Rebocho_2017/GPT_Antirrhinum_CUP.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Antirrhinum CUP&#039;&#039;&#039;&#039;&#039; Rebocho et al 2017&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_Elife_Rebocho_2016/GPT_TissueConflicts.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Tissue Conflicts&#039;&#039;&#039;&#039;&#039; Rebocho et al 2016&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_PlantCell_Richardson_2016/GPT_HoodedBarleyWingModels.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Barley&#039;&#039;&#039;&#039;&#039; Richardson et al 2016&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_Dev_Eldridge_2016/Fruit_Shape_Brassicaceae.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Fruits&#039;&#039;&#039;&#039;&#039; Eldridge et al 2016&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_PLoS_SauretGueto_2013/GPT_Petal_PLoS_20130502.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Petals&#039;&#039;&#039;&#039;&#039; Sauret-Güeto et al 2013&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_Science_Paper_2012/GPT_ArabidopsisLeafModel_20120207.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Leaves&#039;&#039;&#039;&#039;&#039; Kuchen et al 2012&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_PLoS_Kennaway_2011/Kennaway-etal-2011.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Principles and concepts&#039;&#039;&#039;&#039;&#039; Kennaway et al 2011&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_PLoS_Green_2011/Green-etal-2010.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Snapdragon&#039;&#039;&#039;&#039;&#039; Green et al 2011, Cui et al 2010&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_PLoS_Fox_2018/GPT_arLeafCellDiv_V24_20180815.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Spatiotemporal coordination&#039;&#039;&#039;&#039;&#039; Fox et al 2018&amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| &amp;lt;span style=&amp;quot;color:#AF002A;&amp;quot;&amp;gt; &#039;&#039;GFtbox&#039;&#039; is an implementation of the Growing Polarised Tissue Framework (GPT-framework) for understanding and modelling the relationship between gene activity and the growth of shapes such leaves, flowers and animal embryos ([http://www.ploscompbiol.org/article/info:doi/10.1371/journal.pcbi.1002071 Kennaway et al 2011]). &amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#AF002A;&amp;quot;&amp;gt;The GPT-framework was used to capture an understanding of (to model) the growing petal ([http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1001550 Sauret-Güeto et al 2013]), leaf ([http://www.sciencemag.org/content/335/6072/1092.abstract Kuchen et al 2012]) and Snapdragon flower [http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1000537 Green et al 2011]. The Snapdragon model was validated by comparing the results with other mutant and transgenic flowers [http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1000538 Cui et al 2010.]&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The key point is how &#039;&#039;&#039;outgrowths can be specified by genes&#039;&#039;&#039;. The icon shows an asymmetrical outgrowth. Conceptually, it is specifed by two independent patterns under genetic control: a pattern of growth and a pattern of organisers. The outgrowth arises from a region of extra overall growth. Growth is aligned along axes set by two interacting systems. Organisers at the ends of the mesh create a lengthwise gradient. This gradient interacts with the second due to putative organisers that generate polariser sinks in the region that becomes the tips of the palette outgrowth. ([http://www.ploscompbiol.org/article/info:doi/10.1371/journal.pcbi.1002071 Kennaway et al 2011]). These hypotheses need to be tested in biological systems.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Viewing and measuring volume images: &#039;&#039;&#039;VolViewer&#039;&#039;&#039;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;VolViewer-logo.png|120px|VolViewer&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For viewing and measuring &#039;&#039;&#039;volume images&#039;&#039;&#039; on both normal and &#039;&#039;&#039;stereo&#039;&#039;&#039; screens. Typical images from: confocal microscope and Optical Projection Tomography (OPT) images&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[VolViewer#Description|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[VolViewer#User Documentation|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[VolViewer#Download| &#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Output from VolViewer has appeared in:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://www.cell.com/cell_picture_show-plantbio Cell: Online Gallery] | [http://www.amazon.co.uk/Handbook-Plant-Science-Keith-Roberts/dp/0470057238/ref=sr_1_19?s=books&amp;amp;ie=UTF8&amp;amp;qid=1289321357&amp;amp;sr=1-19 Front cover: Handbook of Plant Science] | [http://www.plantcell.org/content/18/9.toc Front cover: The Plant Cell] |  [http://www.americanscientist.org/issues/pub/2013/1/3d-carnivorous-plants American Scientist] | [http://www.rms.org.uk/Resources/Royal%20Microscopical%20Society/infocus/Edgar%20article.pdf  Royal Microscopical Society: Infocus Magazine] | [http://www.bioptonics.com/Home.htm Bundled with the Bioptonic 3001 scanner: Bioptonics Viewer] | [http://www.dailymail.co.uk/sciencetech/article-2215052/The-complexity-intricacy-Mother-Nature-revealed-incredible-pictures-plants--seen-inside.html The Daily Mail] | [http://www.guardian.co.uk/science/gallery/2007/sep/04/fruitflybrain#/?picture=330675671&amp;amp;index=1 The Guardian newspaper: 3D Fruit fly] | [http://qt.nokia.com/qt-in-use/ambassadors/project?id=a0F20000006LZ2pEAG Qt Ambassador program] | [http://www.triffidnurseries.co.uk/special3.php Triffid Nurseries website]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  VolViewer is used as a &#039;&#039;&#039;stand-alone&#039;&#039;&#039; app. or as a &#039;&#039;&#039;viewport for other systems&#039;&#039;&#039;, e.g. Matlab programs. VolViewer uses [http://www.opengl.org/ OpenGL] and [http://qt.nokia.com/products/ Qt] to provide a user friendly application to interactively explore and quantify multi-dimensional biological images. It has been successfully used in our lab to explore and quantify confocal microscopy and  optical projection tomography images. Written by Jerome Avondo it is open-source and is also compatible with the Open Microscopy Environment ([http://openmicroscopy.org/site OME]) (Chris Allen and Avondo, et. al. &#039;&#039;OMERO: flexible, model-driven data management for experimental biology&#039;&#039;  Nature Methods 9, 245–253 (2012))&amp;lt;br&amp;gt; [[image:Silique.PNG|360px]]).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Analysing shapes in 2D and 3D: &#039;&#039;&#039;AAMToolbox&#039;&#039;&#039;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;AAMToolbox_logo.jpg|120px|AAMToolbox&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For analysing populations of shapes and colours within the shapes using principal component analysis. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[AAMToolbox Details|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorials on the Shape modelling toolbox|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[AAMToolbox Download|&amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download revised Nov2012&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(PC, Mac, Linux, uses Matlab&amp;lt;br&amp;gt;no Mathworks toolboxes needed&amp;lt;br&amp;gt;[http://www.mathworks.com/products/matlab/tryit.html Matlab 30 day free trial] and &amp;lt;br&amp;gt;[http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  The AAMToolbox enables the user analyse the shape and colour of collections of similar objects. Originally developed to analyse face shapes for lipreading ([http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=982900 Matthews &#039;&#039;et al&#039;&#039;. 2002][http://www2.cmp.uea.ac.uk/~sjc/matthews-pami-01.pdf version of pdf]), we have used it extensively for analysing the shapes of leaves ([http://www.pnas.org/content/102/29/10221.short Langlade &#039;&#039;et al&#039;&#039; 2005.],[http://www.tandfonline.com/doi/abs/10.2976/1.2836738 Bensmihen &#039;&#039;et al.&#039;&#039; 2010]) and petals ([http://www.sciencemag.org/content/313/5789/963.short Whibley &#039;&#039;et al&#039;&#039; 2006],[http://www.mssaleshops.info/content/21/10/2999.short Feng &#039;&#039;et al&#039;&#039;. 2010]). The analysis can be applied to art, for example, finding systematic differences between portraits by Rembrandt and Modigliani.&lt;br /&gt;
|}&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Analysing the shapes of clones: &#039;&#039;&#039;SectorAnalysisToolbox&#039;&#039;&#039;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;Sector analysis icon.jpg|120px|SectorAnalysisToolbox&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For analysing the shapes of marked cell clones. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[SectorAnalysisToolbox Details|&#039;&#039;&#039;What? How? Where?&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[SectorAnalysisToolbox Documentation|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSourceDownload_Science_Paper_2012/SectorAnalysisToolbox.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(PC, Mac, Linux, uses Matlab&amp;lt;br&amp;gt;no Mathworks toolboxes needed&amp;lt;br&amp;gt;[http://www.mathworks.com/products/matlab/tryit.html Matlab 30 day free trial] and &amp;lt;br&amp;gt;[http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  The SectorAnalysisToolbox enables the user analyse the shapes of marked clones in a sheet of tissue.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;&#039;&#039;&#039;Algorithms&#039;&#039;&#039;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;MSERs, extrema, connected-set filters and sieves==&lt;br /&gt;
====&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;The algorithm finding MSER&#039;s starts with a connected-set opening or &#039;o&#039; sieve&amp;lt;/span&amp;gt;====&lt;br /&gt;
[[Comparison of Matlab MSER&#039;s and &#039;o&#039; sieve|Comparison of Matlab MSER&#039;s and &#039;o&#039; sieve]] Essentially, no difference.&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| [[Image:Cameraman_iso_topview.jpg|300px|link=AAMToolbox Details|MSERs]] Cameraman image. Superimposed red spots are maximal extrema and blue spots are minima. Irregular cyan, blue and yellow regions illustrate regions associated with maxima and the magenta region is a minimum.&lt;br /&gt;
|[[Image:cameraman_iso_tree.jpg|300px|link=AAMToolbox Details|MSERs over scale-space]]&amp;lt;br&amp;gt;Isometric view of the cameraman image with superimposed maxima (red) and minima (blue). The trees trace the maxima through increasing scale-space. Large spots have been identified as stable extrema.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color: 	#C364C5;&amp;quot;&amp;gt;Finding interest points, features and segmenting images. &amp;lt;/span&amp;gt;===&lt;br /&gt;
#[[MSER and Sieve Details|&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;&#039;&#039;&#039;Technical briefing&#039;&#039;&#039;&amp;lt;/span&amp;gt;]] &amp;lt;span style=&amp;quot;color: 	#C364C5;&amp;quot;&amp;gt;MSER&#039;s incorporate &#039;o&#039; sieves.&lt;br /&gt;
#[[MSER&#039;s and Connected sets|&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;&#039;&#039;&#039;The twist&#039;&#039;&#039;: from restricted median filters to sieves and MSER&#039;s&amp;lt;/span&amp;gt;]]&lt;br /&gt;
#One dimensional sieves (measure length)&lt;br /&gt;
##[[Types of 1D sieve|Types of 1D sieve]]&lt;br /&gt;
##[[First applied to hydrophobicity plots|First applied to hydrophobicity plots]] but lets exploit their idempotency.&lt;br /&gt;
#Two dimensional sieves (measure areas)&lt;br /&gt;
##Properties&lt;br /&gt;
##Relation to MSER&#039;s&lt;br /&gt;
#Three dimensional sieves (measure volumes)&lt;br /&gt;
##[[Segment by volume|Segment by volume]] instant gratification.&lt;br /&gt;
&amp;lt;!--[[siv Download|&amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [[Software#MSERs extrema connected-set filters and sieves|&amp;lt;span style=&amp;quot;color:Green;&amp;quot;&amp;gt;&#039;&#039;&#039;MORE&#039;&#039;&#039;&amp;lt;/span&amp;gt;]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;Art, extrema of light and shade: &#039;&#039;&#039;&#039;&#039;PhotoArtMaster&#039;&#039;&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Art created using ArtMaster, and ArtMaster itself was featured in an exhibit at the London Victoria and Albert (V&amp;amp;A) Museum exhibition &amp;lt;span style=&amp;quot;color:Chocolate;&amp;quot;&amp;gt;&#039;Cheating? How to make Perfect Work of Art&#039; (2003).&amp;lt;/span&amp;gt; The exhibition centered on the idea of [http://en.wikipedia.org/wiki/Hockney%E2%80%93Falco_thesis Hockney&#039;s] that  advances in realism and accuracy in the history of Western art since the Renaissance were primarily the result of optical aids such as the camera obscura, camera lucida, and curved mirrors. My exhibit used a touch screen (rare in those days) and ArtMaster to help visitors create &#039;paintings&#039; from photographs. [http://www.sciencemuseum.org.uk/visitmuseum/galleries/turing.aspx finding its name]. (It is entirely different in principle from the software more recently used by Hockney to paint with an iPad.)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=100% style=&amp;quot;background-color:#ffffff;&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|[[Image:DegasLightAndShade.jpg|400px]][[Image:Emma_face_Art_C.jpg|300px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Illustration of PhotoArtMaster used to find and &#039;paint&#039; with regions of light and shade crisply segmented from a photograph. Likewise, on the right, edges.&lt;br /&gt;
|}&lt;br /&gt;
=====PhotoArtMaster=====&lt;br /&gt;
Saturday 07/06/2014: Inspired Photographer of the Year 2013 Tony Bennett when asked whether his photograph  [http://www.bbc.co.uk/programmes/galleries/p020hd8s Mists and Reflections] had been Photoshopped replied something like &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;A digital camera delivers an unemotional &#039;&#039;raw&#039;&#039; image of pixels that you have to manipulate to &#039;&#039;create your photograph&#039;&#039;&amp;quot; Photographers manipulate as little as possible. &amp;lt;br&amp;gt;&lt;br /&gt;
However there is &#039;&#039;&#039;another path one that creates pictures&#039;&#039;&#039;. For this you need another piece of software: PhotoArtMaster (ArtMaster). Professional Photographer said &#039;&#039;&amp;quot;&#039;&#039;&#039;Forget any comparison whatsoever with the art filters in Photoshop - this software reaches out and enters different stratospheres&#039;&#039;&#039;&amp;quot;&#039;&#039; [[Professional Photographer]].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Early versions of PhotoArtMaster are still &#039;&#039;&#039;available from Amazon&#039;&#039;&#039; at low prices (I&#039;m not sure where they come from.)&lt;br /&gt;
[http://www.amazon.co.uk/s/ref=nb_sb_noss?url=search-alias%3Daps&amp;amp;field-keywords=photoartmaster] . Some help for both the early versions and the latest version can be found in [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/a4a_2_screensize.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;this document&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]).&lt;br /&gt;
=====Links to third party PhotoArtMastered pictures=====&lt;br /&gt;
*[https://picasaweb.google.com/113257474829608374943/InTheStyleOf Oliver Bangham] Colouful rounded shapes from, yes, my brother.&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Wimbledon_%28film%29 The entry sequence of the comedy film &#039;Wimbledon&#039;]&lt;br /&gt;
&lt;br /&gt;
====The final version of the Windows ArtMaster2.0 [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/OpenSource_ArtMaster/ArtMaster2.0Release.zip &amp;lt;span style=&amp;quot;color: #B31B1B&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;is downloadable here&#039;&#039;&#039;&#039;&#039;&amp;lt;/span&amp;gt;]  with no support.====&lt;br /&gt;
Unzip into (for example) the &amp;quot;Program Files&amp;quot; directory then set your system environment to include: &#039;&#039;C:\Program Files\Pam2.0 Release\jre\bin;C:\Program Files\Pam2.0 Release\bin;&#039;&#039; (You may need help for this. I right clicked &#039;computer&#039; from the &#039;Start&#039; menu, then selected &#039;Advanced system settings&#039;, then &#039;Environment Variables&#039; and finally slid through the System variables until I found and selected &#039;Path&#039;. This allowed me to edit the path by adding &#039;;C:\Program Files\Pam2.0 Release\jre\bin;C:\Program Files\Pam2.0 Release\bin&#039; to the end). Rather detailed help using the software is available in [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/a4a_2_screensize.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;this essay&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/Art_For_All_a4a_3_web2.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;The sieve algorithms underpinning PhotoArtMaster software&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;] are described in an extract of the &lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/SieveWebPages/a4a_2_screensize.pdf &amp;lt;span style=&amp;quot;color: Chocolate&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;essay&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]. These documents were written to support our Fo2Pix company. PhotoArtMaster originally  sold &amp;gt;65,000 licences but ill health forced the closure of Fo2Pix.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=100% style=&amp;quot;background-color:#ffffff;&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|[[Image:Trees_1.jpg|600px]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Illustration of PhotoArtMaster used to find and &#039;paint&#039; with regions of colour crisply segmented from a photograph. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [[Documentation_of_Connected_Set_Filters_or_Sieves|Art test page]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
[[Documentation_of_Connected_Set_Filters_or_Sieves]] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Reaction-diffusion and morphogenesis==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; width=100% style=&amp;quot;background-color:#000000;&amp;quot;&lt;br /&gt;
 |-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&lt;br /&gt;
[[Image:tentacles_morphogenesis.png|600px]]&lt;br /&gt;
|}&lt;br /&gt;
Illustration of morphogenesis inspired by Turing&#039;s paper. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/GPT_ReactionDiffusionTentacles_20121211.zip &amp;lt;span style=&amp;quot;color: Navy&amp;quot;&amp;gt;Example using growth toolbox GPT_ReactionDiffusionTentacles_20121211.zip&amp;lt;/span&amp;gt;]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===1 A===&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Open source systems to which we have contributed=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;OMERO==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;OMERO_DIAGRAM.jpg|100px|OMERO&amp;lt;/imgicon&amp;gt;&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For working with the OME image database. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;See [http://www.openmicroscopy.org/site/products/omero &#039;&#039;Details&#039;&#039;], [http://www.openmicroscopy.org/site/support/omero4/downloads &#039;&#039;Download&#039;&#039;]&amp;lt;br&amp;gt; [http://dmbi.nbi.bbsrc.ac.uk/index.php/OMEROWorkshop OMERO Workshop] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  [http://openmicroscopy.org/site/support/omero4 Open Microscopy Environment Remote Objects (OMERO).] for visualising, managing, and annotating scientific image data. See also our [http://dmbi.nbi.bbsrc.ac.uk/index.php/OMEROWorkshop OMERO Workshop] training course we ran in April 2011.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Tools and Utilities=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;BioformatsConverter==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;BioformatsConverterZip.png|100px|BioformatsConverter&amp;lt;/imgicon&amp;gt;&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For converting microscope manufacturer proprietary file formats. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;See [[BioformatsConverter|&#039;&#039;Details&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| This tool allows for the batch conversion of microscope manufacturer proprietary file formats, to the open source OME-TIFF standard. Uses the [http://www.loci.wisc.edu/software/bio-formats Bioformats] library.&lt;br /&gt;
|}&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Dependency Checking Tool==&lt;br /&gt;
&lt;br /&gt;
Tool for recursively finding what further functions a function depends on. See [[myDepFun|&#039;&#039;Details&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;PIN Point==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;|[[File:PinPoint.jpg]]&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|Tool for analysing PIN Signal in cells.&lt;br /&gt;
&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| [http://cmpdartsvr1.cmp.uea.ac.uk/downloads/software/PinPoint.zip &amp;lt;span style=&amp;quot;color: Gray&amp;quot;&amp;gt;&#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039; &amp;lt;/span&amp;gt;]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sample Project&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;In development&amp;lt;/span&amp;gt;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;MTtbox&amp;lt;/span&amp;gt;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;MTtboxA.jpg|100px|BioformatsConverter&amp;lt;/imgicon&amp;gt;&lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For modelling the behaviour of microtubules within a cell. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
See [[MTtbox documentation|&#039;&#039;Details&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;| In development. The idea is to be able to model the behaviour of growing microtubules and factors as they react chemically and diffuse within the different cell compartments.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The icon shows a spherical cell sliced open to show concentric components: cell wall (magenta), plasma-membrane (yellow), cytoplasm (green) and vacuole (yellow). Microtubules (blue) grow in 3D within the cytoplasm.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Historical&amp;lt;/span&amp;gt;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:Navy;&amp;quot;&amp;gt;Robot arm:  still in production after 30 years (serving local industry)&amp;lt;/span&amp;gt;==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|[[Image:2014-06-10 14.22.20 small robot.jpg|400px|]] &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For teaching &#039;&#039;&#039;production control&#039;&#039;&#039; and &#039;&#039;&#039;interrupt programming&#039;&#039;&#039;. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
1983 and we are in a world of &#039;&#039;&#039;Apple II and BBC B computers&#039;&#039;&#039; - the &#039;&#039;6502&#039;&#039; processor reigns. Particularly good for real-time control it responded very fast to hardware interrupts from, for example, the timer. To illustrate timer interrupts what better than digital servo-motors? Set up the on-board timers to produce a stream of  &#039;heartbeat&#039; of pulses, one every 20 ms out of the parallel port and control up to eight motors.  Pulse widths, from 1 to 2 ms, control the position of each motor arm. Derek Fulton and I made some loose lab. money by writing a series of articles showing exactly how to build and, in particular, control this robot arm.[[Publications#.28G.29_Computer_control.2C_measurement_and_commercial_software |Bangham et al.]]. &lt;br /&gt;
Our copyright, I took it to a local company LJ-Electronics ([http://www.ljcreate.com/products/product.asp?id=314&amp;amp;program=195&amp;amp;curr=2 now LJ-Creative]) who incorporated it detail for detail into their product line. Originally, they called it the Emu. Still in production: &#039;&#039;&#039;Lovely outcome.&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Historical=&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Collaborators&amp;diff=6933</id>
		<title>Collaborators</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Collaborators&amp;diff=6933"/>
		<updated>2014-10-28T14:09:24Z</updated>

		<summary type="html">&lt;p&gt;Jrk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;labmember&amp;gt;Enrico Coen |Cell and Developmental Biology, John Innes Centre, Norwich, UK.|Project Leader, Coen Lab|enrico.coen@bbsrc.ac.uk|enricocoen.jpg|128px|Research#Computational_biology&amp;lt;/labmember&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;labmember&amp;gt;Jerome Avondo|Senior Research Associate|Visualization, Quantification and Data Management of Microscopy Images|jerome.avondo@bbsrc.ac.uk|Jerome.jpg|96|Research#Visualization and Data Management of Microscopy Images&amp;lt;/labmember&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;labmember&amp;gt;Pierre Barbier de Reuille |Senior Research Associate|Modelling and analysis of growing plant tissues. Application to flower development|pierre.barbier-de-reuille@bbsrc.ac.uk|Pierre_b.jpg|96|Research#Modelling and analysis of growing plant tissues. Application to flower development&amp;lt;/labmember&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Ready_Reference_Manual&amp;diff=5237</id>
		<title>Ready Reference Manual</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Ready_Reference_Manual&amp;diff=5237"/>
		<updated>2011-07-23T15:24:10Z</updated>

		<summary type="html">&lt;p&gt;Jrk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&#039;&#039;GFtbox&#039;&#039;&#039;&#039;&#039; For modelling the growth of shapes.  &amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox|&#039;&#039;&#039;&#039;&#039;Details&#039;&#039;&#039;&#039;&#039;: what? How? Where?]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Tutorial pages|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Example pages|&#039;&#039;&#039;&#039;&#039;Examples&#039;&#039;&#039;&#039;&#039;: from publications]]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://sourceforge.net/p/gftbox/ &#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039; from SourceForge]&amp;lt;br&amp;gt;&lt;br /&gt;
=Summary of controls=&lt;br /&gt;
Roll the mouse over any control and information about the control will pop-up.&lt;br /&gt;
==Models==&lt;br /&gt;
* The larger the time step, the fewer iterations will be needed to simulate a given amount of time, but the less accurate the simulation will be. If the time step is too large, diffusion calculations may even become unstable. As a rule of thumb, the time step should be chosen small enough that:&lt;br /&gt;
** The product of growth rate and time step is everywhere less than 0.1 -- that is, no part of the mesh grows by more than 10% in a single iteration.&lt;br /&gt;
** In a single iteration, no part of the mesh rotates by more than 10 degrees.&lt;br /&gt;
** The product of time step and the relative rate of change of any morphogen should be no more than 0.1. The rate of change may derive from the decay rate you have set, or from interactions programmed in the interaction function.&lt;br /&gt;
** If &#039;&#039;k&#039;&#039; is the diffusion constant of a morphogen, &#039;&#039;D&#039;&#039; is the diameter of the mesh, and dt is the time step, &#039;&#039;k dt^2/D&#039;&#039; should be no more than 0.1.&lt;br /&gt;
* Errors in the interaction function will cause the system to stop, and the interaction function will be disabled. The controls in the Interaction Function panel will all turn red to indicate this.&lt;br /&gt;
** To re-enable the interaction function, click the Reset button at the top of the GUI. &lt;br /&gt;
** To find the error&lt;br /&gt;
*** There will be a message on the Matlab console saying in which line of the interaction function it detected an error. Open the interaction function in the Matlab editor, find that line, and set a breakpoint there or shortly before (by clicking in the left margin -- a red dot will appear).&lt;br /&gt;
*** The next time the interaction function runs, Matlab will suspend execution at the breakpoint and go into debug mode. You can then examine the values of variables and step through the code one line at a time in order to discover why the error is happening.&lt;br /&gt;
*** Matlab provides extensive tutorials on how to program and there is much information on the web.&lt;br /&gt;
  &lt;br /&gt;
==Running models==&lt;br /&gt;
&lt;br /&gt;
The normally &#039;&#039;&#039;green Run pane&#039;&#039;&#039;l turns &#039;&#039;&#039;red&#039;&#039;&#039; whilst the model is running.&amp;lt;br&amp;gt;&lt;br /&gt;
A &#039;&#039;&#039;yellow&#039;&#039;&#039; Run panel means that the model is running on a version of the GFtbox that is older than the model itself (look at the interaction header to see our source code version control number for the copy of GFtbox that created the model).&amp;lt;br&amp;gt;&lt;br /&gt;
An interaction function error (or any other error) will stop the model from running. It is then necessary to Reset using the&#039;&#039;&#039; Reset key - which will have turned red&#039;&#039;&#039;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
To run a model from the GUI&lt;br /&gt;
*Step, execute one step of &#039;&#039;dt&#039;&#039;. A whole lot of information pours out at the command console. Sometimes it takes a while to solve the equations. The process is monitored by a series of dots . . . . . . . Further information is provided below the Plotting panel, e.g. Step number, time per iteration, time per finite element, growth, etc.&lt;br /&gt;
*Run for, and enter the number of steps into the box.&lt;br /&gt;
*Run until, and enter the model time to which you want to run.&lt;br /&gt;
*Run to, and enter the multiple of the initial area you want to run to.&lt;br /&gt;
*Stop, stops execution at the end of the current step.&lt;br /&gt;
*Call, makes a call to the interaction function but does NOT grow. This is useful for checking initial conditions - set patterns of morphogens. Having made a Call to the interaction function it is good practice to then Restart the model before running a model.&lt;br /&gt;
*Menu:Stages. &#039;&#039;&#039;We usually run models&#039;&#039;&#039; by setting up a set of, say 5, stages that we want stored. Then, having run the model we can revert back to any of the stages - make a change - and re-run starting from that point. The stages are stored in the project directory with the suffix *000# where # is the time. Stage times are stored with the project - and copied into the daughter project with Save As.&lt;br /&gt;
**Compute more stages, pops up a box asking for a set of times that you want stored then starts computing&lt;br /&gt;
**Request more stages, does the same but does not start computing.&lt;br /&gt;
**Save experiment stages, saves all the current stage files in a subdirectory.&lt;br /&gt;
**Import experiment stages, recovers a saved experiment. This pair of commands help document results and make figures. In addition, when the system runs on a cluster, the results are returned as experimental results to be accessed in this way.&lt;br /&gt;
*&#039;&#039;&#039;What to do when the running system gets stuck&#039;&#039;&#039;. Usually this is because the shape is too regular and cannot initiate a bulge.&lt;br /&gt;
**Interrupt processing using standard Matlab convention - Control-C. Then reset the &#039;&#039;GFtbox&#039;&#039;. Panel:Select Tool:Mesh Editor and slightly modify the Z shape a random amount: click Random.&lt;br /&gt;
==Outputs==&lt;br /&gt;
===Plotting panel===&lt;br /&gt;
To view&lt;br /&gt;
*Specified values, i.e. kapar or a particular morphogen (factor) select from the drop down menu at the top right, and tick the Plot Current Factor checkbox.&lt;br /&gt;
**To autoscale the axes, set the checkbox Panel:Plot Options:Auto axis range. To autozoom as well, click Menus:Plot:Auto zoom and centre.&lt;br /&gt;
**To autoscale the morphogen colours. Panel:Plot Options:Auto color range. To fix the colour range the easiest is to click From Picture and unclick the Auto color range. Alternatively, unclick the Auto color range box and key in values you want - click elsewhere on the GUI to force a replot.&lt;br /&gt;
**To find out the level of a morphogen at a particular point on the canvas. Select Tool:Simulation and select the morphogen of interest (top right pull down) and click on the point of interest. The value at that point will appear in bold just below the Panel:Timescale box.&lt;br /&gt;
*Output variables, e.g. growth rate, tick Plot output value and make selection from the two drop down menus.&lt;br /&gt;
*thickness, tick/untick Menu:Plot:Thickness.&lt;br /&gt;
To show/hide &lt;br /&gt;
*thickness, tick/untick Menu:Plot:Thickness.&lt;br /&gt;
*mesh, tick/untick FE edges.&lt;br /&gt;
*axes, tick/untick Menu:Plot:Show/Hide axes.&amp;lt;br&amp;gt;&lt;br /&gt;
*legend, tick/untick Menu:Plot:Show/Hide legend - also Set legend to choose heading.&amp;lt;br&amp;gt;&lt;br /&gt;
To set/modify values of morphogens (best done in the interaction function)&lt;br /&gt;
* Choose morphogen (list box), Click on Select Tool:Factors, &#039;---&#039; list box to select action and click on appropriate button (Add constant or Add radial, etc).&lt;br /&gt;
* at individual nodes (vertices). Choose morphogen (list box), Click on Select Tool:Factors, &#039;---&#039; list box to select action and click on node.&amp;lt;br&amp;gt;&lt;br /&gt;
To clip the mesh (hide part of the mesh)&lt;br /&gt;
*Tick Clipping plane and choose the plane with Az (azimuth), El (elevation),  D (distance from origin).&lt;br /&gt;
*Tick Clip and select the region to hide by using morphogen values (click on Mgens button).&lt;br /&gt;
===Snapshots===&lt;br /&gt;
Saved in png format in the project snapshots subdirectory&lt;br /&gt;
*Clicking Take snapshot makes a png file copy of the plotting screen. At the same time a copy of the interaction function (relabelled to have .txt as a suffix) is also made - to help document the snapshot.&lt;br /&gt;
*Publication quality screenshot is made by changing the action of the Snapshot button using Menu:Misc:Hi-res snapshots and choosing a number of dots per inch.&lt;br /&gt;
===Exporting meshes for external use===&lt;br /&gt;
The current mesh can be saved in various formats for use outside GFtbox, using the various Save... commands on the Mesh menu.&lt;br /&gt;
*VRML is a standard format for 3D graphics, for which there are free viewers (for example, [http://www.bitmanagement.com/en/products/interactive-3d-clients BS Contact] or ParallelGraphics&#039; [http://www.cortona3d.com/Try-Buy/Downloads.aspx Cortona 3D Viewer]). It is also a format supported by [http://www.zcorp.com/en/home.aspx ZCorp]&#039;s 3D printers. When you export to VRML, after providing a file name you will be presented with a dialog that allows you to rescale the object and also to change its thickness. Changing the thickness is only important for 3D printing, as a physical model will be too fragile if the mesh is too thin.&lt;br /&gt;
*OBJ is another standard format for 3D models, and can be imported into most 3D modelling software.&lt;br /&gt;
*FIG is the Matlab format for figure files. These files can be reopened in Matlab.&lt;br /&gt;
*MAT is Matlab&#039;s format for storing arbitrary Matlab objects.&lt;br /&gt;
&lt;br /&gt;
MAT is the only format that saves the entire mesh structure. The other formats save only its current graphical representation.&lt;br /&gt;
===Movies===&lt;br /&gt;
By default, movies are uncompressed, since this is the only format that is sure to play on all machines. However, uncompressed movies can easily be gigabytes in size. Various compressed formats can be selected in the Movie:Codec menu. Several formats are available, although not all of them are supported on all Matlab installations, and where supported, the resulting movies may not play in all movie-playing software. You only need to select a codec once, and it will apply to all subsequently created movies.&lt;br /&gt;
*For recent versions of Matlab (2010 and later) we recommend the Motion JPEG AVI format. (Older versions of Matlab do not provide it.)&lt;br /&gt;
*Flash movie format cannot be created directly, but there is an option to convert completed movies to Flash automatically, with the menu Movie:Convert to Flash. This option requires the ffmpeg program to be present on the Matlab command path.&lt;br /&gt;
*Click Record Movie to start creating a movie. The current picture of the mesh will be the first frame of the movie. The button will change to Stop Movie. Every time a simulation step is performed, the picture of the mesh will be added to the movie file. Click Stop Movie to stop recording and close the movie file. The movie file will also be automatically closed if you close the project, load a new project, or close GFtbox. When the movie file is closed, the final frame will also be stored as a PNG image file, as well as a copy of the interaction function (with extension .txt instead of .m).&lt;br /&gt;
*By default, the name of the movie file is chosen automatically, and consists of the project name followed by a numerical suffix. If you turn off the Auto-name checkbox below the Record Movie button, you will be prompted to given the movie a name. Movies (and the associated snapshots and interaction functions) are stored in a &amp;quot;movies&amp;quot; subdirectory of the project directory.&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
===Web and PowerPoint===&lt;br /&gt;
A copy of the interaction function suitable for inserting in a web page can be created by calling the function webify_interaction_function&lt;br /&gt;
&lt;br /&gt;
with embedded HTML &lt;br /&gt;
Writing web and PowerPoint pages is facilitated by:&lt;br /&gt;
*&#039;&#039;&#039;Output .avi for PowerPoint&#039;&#039;&#039;. Use Movie:Codec:Motion JPEG avi. This does not play properly on PowerPoint 2007 unless you run PowerPoint in 2003 compatibility mode. The movie is saved into the project movies subdirectory together with an image (.png) of the final frame and a copy of the interaction function (renamed .txt - to document the results).&lt;br /&gt;
*Output &#039;&#039;&#039;flash (.flv) movies for web&#039;&#039;&#039;. Select Movie:Convert to Flash. This option requires the [http://www.ffmpeg.org/ ffmpeg] program to be on the current path. The movie is saved to the project directory together with an image (.png) of the first frame (for last frame see above).&lt;br /&gt;
*Output&#039;&#039;&#039; web compatible copy of the interaction function&#039;&#039;&#039; use &#039;&#039;webify_interaction_function.m&#039;&#039; which outputs a txt file with  comments marked up in HTML to appear in green and sections in blue.&lt;br /&gt;
===Files===&lt;br /&gt;
==Simulation==&lt;br /&gt;
&lt;br /&gt;
==Graphical User Interface==&lt;br /&gt;
===Menus===&lt;br /&gt;
===Panels===&lt;br /&gt;
==Interaction function==&lt;br /&gt;
===Functions===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=Useful interaction function programming constructs=&lt;br /&gt;
[[Types of morphogens and factors|Types of morphogens and factors click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|&#039;&#039;&#039;Pre-defined variables&#039;&#039;&#039;|| &lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|dt|| computational step size&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|realtime|| virtual time of the model&lt;br /&gt;
|}&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|&#039;&#039;&#039;Pre-defined functions&#039;&#039;&#039;|| &lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|Steps(m)|| current step number in Mesh m&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|pro(k,id)|| promote by k in regions designated by factor, id (&#039;&#039;pro(k,&#039;&#039;&#039;x&#039;&#039;&#039;)=1+k&#039;&#039;&#039;x&#039;&#039;&#039;&#039;&#039;, i.e. promote by &#039;&#039;k=0&#039;&#039; and the value of &#039;&#039;pro()&#039;&#039; is &#039;&#039;1&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|inh(k,id)|| inhibit by k in regions designated by factor, id (&#039;&#039;inh(k,&#039;&#039;&#039;x&#039;&#039;&#039;)=1/(1+k&#039;&#039;&#039;x&#039;&#039;&#039;)&#039;&#039;, i.e. inhibit by &#039;&#039;k=0&#039;&#039; and the value of &#039;&#039;inh()&#039;&#039; is &#039;&#039;1&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|local_setproperties( m )|| initialise Mesh properties&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|leaf_*( m, ... )|| A large library of functions for manipulating the Mesh data structure, m. All of them are listed in the main Help menu of the GFtbox GUI, both in alphabetical order and categorised by topic.&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The patterns of morphogens A and B are often set up by using logical indexing, e.g.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        id_a_p(m.nodes(:,1) &amp;lt; -0.03) = 1; &lt;br /&gt;
        id_b_p(m.nodes(:,2) &amp;lt; -0.01) = 1; &lt;br /&gt;
where &#039;&#039;id_a_p&#039;&#039; is the vector of values of the A morphogen. &#039;&#039;m.node(:,1)&#039;&#039; refers to the &#039;&#039;x&#039;&#039; coordinates of all nodes (vertices) in the mesh.&amp;lt;br&amp;gt;&lt;br /&gt;
The expression &#039;&#039;(m.nodes(:,1) &amp;lt; -0.03)&#039;&#039; means find all vertices with &#039;&#039;x&#039;&#039; coordinates that are less than -0.03.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Similarly, &#039;&#039;(m.nodes(:,2) &amp;lt; -0.01)&#039;&#039; means find all vertices with &#039;&#039;y&#039;&#039; coordinates that are less than -0.01.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the pattern of polariser (P) is set up by&amp;lt;br&amp;gt;        &lt;br /&gt;
&lt;br /&gt;
        P((m.nodes(:,1) &amp;lt; -0.05) &amp;amp; (m.nodes(:,2) &amp;gt; 0.03)) = 1;&lt;br /&gt;
Where &#039;&#039;(m.nodes(:,1) &amp;lt; -0.05) &amp;amp; (m.nodes(:,2) &amp;gt; 0.03)&#039;&#039; means find all vertices with x coordinate less than -0.05 and y coordinate greater than 0.03.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Thus the full code describing the model is:&lt;br /&gt;
    if (Steps(m)==0) &amp;amp;&amp;amp; m.globalDynamicProps.doinit  % Initialisation code.&lt;br /&gt;
        id_a_p(m.nodes(:,1) &amp;lt; -0.03) = 1; % setup region for A where identity factor A is represented by id_a_p&lt;br /&gt;
        id_b_p(m.nodes(:,2) &amp;lt; -0.01) = 1; % setup region for B&lt;br /&gt;
    else&lt;br /&gt;
        % @@KRN Growth Regulatory Network&lt;br /&gt;
        kapar_p(:) = id_a_l .* inh(1,id_b_l); % growth rate&lt;br /&gt;
        kaper_p(:) = kapar_p; % isotropic growth&lt;br /&gt;
        kbpar_p(:) = kapar_p; % same on both sides of the sheet&lt;br /&gt;
        kbper_p(:) = kapar_p; % same&lt;br /&gt;
        knor_p(:)  = 0;       % thickness not growing&lt;br /&gt;
    end&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Ready_Reference_Manual&amp;diff=5240</id>
		<title>Ready Reference Manual</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Ready_Reference_Manual&amp;diff=5240"/>
		<updated>2011-07-23T15:22:24Z</updated>

		<summary type="html">&lt;p&gt;Jrk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&#039;&#039;GFtbox&#039;&#039;&#039;&#039;&#039; For modelling the growth of shapes.  &amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox|&#039;&#039;&#039;&#039;&#039;Details&#039;&#039;&#039;&#039;&#039;: what? How? Where?]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Tutorial pages|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Example pages|&#039;&#039;&#039;&#039;&#039;Examples&#039;&#039;&#039;&#039;&#039;: from publications]]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://sourceforge.net/p/gftbox/ &#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039; from SourceForge]&amp;lt;br&amp;gt;&lt;br /&gt;
=Summary of controls=&lt;br /&gt;
Roll the mouse over any control and information about the control will pop-up.&lt;br /&gt;
==Models==&lt;br /&gt;
* The larger the time step, the fewer iterations will be needed to simulate a given amount of time, but the less accurate the simulation will be. If the time step is too large, diffusion calculations may even become unstable. As a rule of thumb, the time step should be chosen small enough that:&lt;br /&gt;
** The product of growth rate and time step is everywhere less than 0.1 -- that is, no part of the mesh grows by more than 10% in a single iteration.&lt;br /&gt;
** In a single iteration, no part of the mesh rotates by more than 10 degrees.&lt;br /&gt;
** The product of time step and the relative rate of change of any morphogen should be no more than 0.1. The rate of change may derive from the decay rate you have set, or from interactions programmed in the interaction function.&lt;br /&gt;
** If &#039;&#039;k&#039;&#039; is the diffusion constant of a morphogen, &#039;&#039;D&#039;&#039; is the diameter of the mesh, and dt is the time step, &#039;&#039;k dt^2/D&#039;&#039; should be no more than 0.1.&lt;br /&gt;
* Errors in the interaction function will cause the system to stop, and the interaction function will be disabled. The controls in the Interaction Function panel will all turn red to indicate this.&lt;br /&gt;
** To re-enable the interaction function, click the Reset button at the top of the GUI. &lt;br /&gt;
** To find the error&lt;br /&gt;
*** There will be a message on the Matlab console saying in which line of the interaction function it detected an error. Open the interaction function in the Matlab editor, find that line, and set a breakpoint there or shortly before (by clicking in the left margin -- a red dot will appear).&lt;br /&gt;
*** The next time the interaction function runs, Matlab will suspend execution at the breakpoint and go into debug mode. You can then examine the values of variables and step through the code one line at a time in order to discover why the error is happening.&lt;br /&gt;
*** Matlab provides extensive tutorials on how to program and there is much information on the web.&lt;br /&gt;
  &lt;br /&gt;
==Running models==&lt;br /&gt;
&lt;br /&gt;
The normally &#039;&#039;&#039;green Run pane&#039;&#039;&#039;l turns &#039;&#039;&#039;red&#039;&#039;&#039; whilst the model is running.&amp;lt;br&amp;gt;&lt;br /&gt;
A &#039;&#039;&#039;yellow&#039;&#039;&#039; Run panel means that the model is running on a version of the GFtbox that is older than the model itself (look at the interaction header to see our source code version control number for the copy of GFtbox that created the model).&amp;lt;br&amp;gt;&lt;br /&gt;
An interaction function error (or any other error) will stop the model from running. It is then necessary to Reset using the&#039;&#039;&#039; Reset key - which will have turned red&#039;&#039;&#039;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
To run a model from the GUI&lt;br /&gt;
*Step, execute one step of &#039;&#039;dt&#039;&#039;. A whole lot of information pours out at the command console. Sometimes it takes a while to solve the equations. The process is monitored by a series of dots . . . . . . . Further information is provided below the Plotting panel, e.g. Step number, time per iteration, time per finite element, growth, etc.&lt;br /&gt;
*Run for, and enter the number of steps into the box.&lt;br /&gt;
*Run until, and enter the model time to which you want to run.&lt;br /&gt;
*Run to, and enter the multiple of the initial area you want to run to.&lt;br /&gt;
*Stop, stops execution at the end of the current step.&lt;br /&gt;
*Call, makes a call to the interaction function but does NOT grow. This is useful for checking initial conditions - set patterns of morphogens. Having made a Call to the interaction function it is good practice to then Restart the model before running a model.&lt;br /&gt;
*Menu:Stages. &#039;&#039;&#039;We usually run models&#039;&#039;&#039; by setting up a set of, say 5, stages that we want stored. Then, having run the model we can revert back to any of the stages - make a change - and re-run starting from that point. The stages are stored in the project directory with the suffix *000# where # is the time. Stage times are stored with the project - and copied into the daughter project with Save As.&lt;br /&gt;
**Compute more stages, pops up a box asking for a set of times that you want stored then starts computing&lt;br /&gt;
**Request more stages, does the same but does not start computing.&lt;br /&gt;
**Save experiment stages, saves all the current stage files in a subdirectory.&lt;br /&gt;
**Import experiment stages, recovers a saved experiment. This pair of commands help document results and make figures. In addition, when the system runs on a cluster, the results are returned as experimental results to be accessed in this way.&lt;br /&gt;
*&#039;&#039;&#039;What to do when the running system gets stuck&#039;&#039;&#039;. Usually this is because the shape is too regular and cannot initiate a bulge.&lt;br /&gt;
**Interrupt processing using standard Matlab convention - Control-C. Then reset the &#039;&#039;GFtbox&#039;&#039;. Panel:Select Tool:Mesh Editor and slightly modify the Z shape a random amount: click Random.&lt;br /&gt;
==Outputs==&lt;br /&gt;
===Plotting panel===&lt;br /&gt;
To view&lt;br /&gt;
*Specified values, i.e. kapar or a particular morphogen (factor) select from the drop down menu at the top right, and tick the Plot Current Factor checkbox.&lt;br /&gt;
**To autoscale the axes, set the checkbox Panel:Plot Options:Auto axis range. To autozoom as well, click Menus:Plot:Auto zoom and centre.&lt;br /&gt;
**To autoscale the morphogen colours. Panel:Plot Options:Auto color range. To fix the colour range the easiest is to click From Picture and unclick the Auto color range. Alternatively, unclick the Auto color range box and key in values you want - click elsewhere on the GUI to force a replot.&lt;br /&gt;
**To find out the level of a morphogen at a particular point on the canvas. Select Tool:Simulation and select the morphogen of interest (top right pull down) and click on the point of interest. The value at that point will appear in bold just below the Panel:Timescale box.&lt;br /&gt;
*Output variables, e.g. growth rate, tick Plot output value and make selection from the two drop down menus.&lt;br /&gt;
*thickness, tick/untick Menu:Plot:Thickness.&lt;br /&gt;
To show/hide &lt;br /&gt;
*thickness, tick/untick Menu:Plot:Thickness.&lt;br /&gt;
*mesh, tick/untick FE edges.&lt;br /&gt;
*axes, tick/untick Menu:Plot:Show/Hide axes.&amp;lt;br&amp;gt;&lt;br /&gt;
*legend, tick/untick Menu:Plot:Show/Hide legend - also Set legend to choose heading.&amp;lt;br&amp;gt;&lt;br /&gt;
To set/modify values of morphogens (best done in the interaction function)&lt;br /&gt;
* Choose morphogen (list box), Click on Select Tool:Factors, &#039;---&#039; list box to select action and click on appropriate button (Add constant or Add radial, etc).&lt;br /&gt;
* at individual nodes (vertices). Choose morphogen (list box), Click on Select Tool:Factors, &#039;---&#039; list box to select action and click on node.&amp;lt;br&amp;gt;&lt;br /&gt;
To clip the mesh (hide part of the mesh)&lt;br /&gt;
*Tick Clipping plane and choose the plane with Az (azimuth), El (elevation),  D (distance from origin).&lt;br /&gt;
*Tick Clip and select the region to hide by using morphogen values (click on Mgens button).&lt;br /&gt;
===Snapshots===&lt;br /&gt;
Saved in png format in the project snapshots subdirectory&lt;br /&gt;
*Clicking Take snapshot makes a png file copy of the plotting screen. At the same time a copy of the interaction function (relabelled to have .txt as a suffix) is also made - to help document the snapshot.&lt;br /&gt;
*Publication quality screenshot is made by changing the action of the Snapshot button using Menu:Misc:Hi-res snapshots and choosing a number of dots per inch.&lt;br /&gt;
===Exporting meshes for external use===&lt;br /&gt;
The current mesh can be saved in various formats for use outside GFtbox, using the various Save... commands on the Mesh menu.&lt;br /&gt;
*VRML is a standard format for 3D graphics, for which there are free viewers (for example, [http://www.bitmanagement.com/en/products/interactive-3d-clients BS Contact] or ParallelGraphics&#039; [http://www.cortona3d.com/Try-Buy/Downloads.aspx Cortona 3D Viewer]). It is also a format supported by [http://www.zcorp.com/en/home.aspx ZCorp]&#039;s 3D printers. When you export to VRML, after providing a file name you will be presented with a dialog that allows you to rescale the object and also to change its thickness. Changing the thickness is only important for 3D printing, as a physical model will be too fragile if the mesh is too thin.&lt;br /&gt;
*OBJ is another standard format for 3D models, and can be imported into most 3D modelling software.&lt;br /&gt;
*FIG is the Matlab format for figure files. These files can be reopened in Matlab.&lt;br /&gt;
*MAT is Matlab&#039;s format for storing arbitrary Matlab objects.&lt;br /&gt;
&lt;br /&gt;
MAT is the only format that saves the entire mesh structure. The other formats save only its current graphical representation.&lt;br /&gt;
===Movies===&lt;br /&gt;
By default, movies are uncompressed, since this is the only format that is sure to play on all machines. However, uncompressed movies can easily be gigabytes in size. Various compressed formats can be selected in the Movie:Codec menu. Several formats are available, although not all of them are supported on all Matlab installations, and where supported, the resulting movies may not play in all movie-playing software. You only need to select a codec once, and it will apply to all subsequently created movies.&lt;br /&gt;
*For recent versions of Matlab (2010 and later) we recommend the Motion JPEG AVI format. (Older versions of Matlab do not provide it.)&lt;br /&gt;
*Flash movie format cannot be created directly, but there is an option to convert completed movies to Flash automatically, with the menu Movie:Convert to Flash. This option requires the ffmpeg program to be present on the Matlab command path.&lt;br /&gt;
*Click Record Movie to start creating a movie. The current picture of the mesh will be the first frame of the movie. The button will change to Stop Movie. Every time a simulation step is performed, the picture of the mesh will be added to the movie file. Click Stop Movie to stop recording and close the movie file. The movie file will also be automatically closed if you close the project, load a new project, or close GFtbox. When the movie file is closed, the final frame will also be stored as a PNG image file, as well as a copy of the interaction function (with extension .txt instead of .m).&lt;br /&gt;
*By default, the name of the movie file is chosen automatically, and consists of the project name followed by a numerical suffix. If you turn off the Auto-name checkbox below the Record Movie button, you will be prompted to given the movie a name. Movies (and the associated snapshots and interaction functions) are stored in a &amp;quot;movies&amp;quot; subdirectory of the project directory.&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
===Web and PowerPoint===&lt;br /&gt;
A copy of the interaction function suitable for inserting in a web page can be created by calling the function webify_interaction_function&lt;br /&gt;
&lt;br /&gt;
with embedded HTML &lt;br /&gt;
Writing web and PowerPoint pages is facilitated by:&lt;br /&gt;
*&#039;&#039;&#039;Output .avi for PowerPoint&#039;&#039;&#039;. Use Movie:Codec:Motion JPEG avi. This does not play properly on PowerPoint 2007 unless you run PowerPoint in 2003 compatibility mode. The movie is saved into the project movies subdirectory together with an image (.png) of the final frame and a copy of the interaction function (renamed .txt - to document the results).&lt;br /&gt;
*Output &#039;&#039;&#039;flash (.flv) movies for web&#039;&#039;&#039;. Select Movie:Convert to Flash. This option requires the [http://www.ffmpeg.org/ ffmpeg] program to be on the current path. The movie is saved to the project directory together with an image (.png) of the first frame (for last frame see above).&lt;br /&gt;
*Output&#039;&#039;&#039; web compatible copy of the interaction function&#039;&#039;&#039; use &#039;&#039;webify_interaction_function.m&#039;&#039; which outputs a txt file with  comments marked up in HTML to appear in green and sections in blue.&lt;br /&gt;
===Files===&lt;br /&gt;
==Simulation==&lt;br /&gt;
&lt;br /&gt;
==Graphical User Interface==&lt;br /&gt;
===Menus===&lt;br /&gt;
===Panels===&lt;br /&gt;
==Interaction function==&lt;br /&gt;
===Functions===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=Useful interaction function programming constructs=&lt;br /&gt;
[[Types of morphogens and factors|Types of morphogens and factors click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|&#039;&#039;&#039;Pre-defined variables&#039;&#039;&#039;|| &lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|dt|| computational step size&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|realtime|| virtual time of the model&lt;br /&gt;
|}&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|&#039;&#039;&#039;Pre-defined functions&#039;&#039;&#039;|| &lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|Steps(m)|| current step number in Mesh m&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|pro(k,id)|| promote by k in regions designated by factor, id (&#039;&#039;pro(k,&#039;&#039;&#039;x&#039;&#039;&#039;)=1+k&#039;&#039;&#039;x&#039;&#039;&#039;&#039;&#039;, i.e. promote by &#039;&#039;k=0&#039;&#039; and the value of &#039;&#039;pro()&#039;&#039; is &#039;&#039;1&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|inh(k,id)|| inhibit by k in regions designated by factor, id (&#039;&#039;inh(k,&#039;&#039;&#039;x&#039;&#039;&#039;)=1/(1+k&#039;&#039;&#039;x&#039;&#039;&#039;)&#039;&#039;, i.e. inhibit by &#039;&#039;k=0&#039;&#039; and the value of &#039;&#039;inh()&#039;&#039; is &#039;&#039;1&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|local_setproperties( m )|| initialise Mesh properties&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|leaf_*( m, ... )|| A large library of functions for manipulating the Mesh data structure, m. All of them are listed in the main Help menu of the GFtbox GUI, both in alphabetical order and categorised by topic.&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The patterns of morphogens A and B are often set up by using logical indexing, e.g.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        id_a_p(m.nodes(:,1) &amp;lt; -0.03) = 1; &lt;br /&gt;
        id_b_p(m.nodes(:,2) &amp;lt; -0.01) = 1; &lt;br /&gt;
where &#039;&#039;id_a_p&#039;&#039; is the vector of values of the A morphogen. &#039;&#039;m.node(:,1)&#039;&#039; refers to the &#039;&#039;x&#039;&#039; coordinates of all nodes (vertices) in the mesh.&amp;lt;br&amp;gt;&lt;br /&gt;
The expression &#039;&#039;(m.nodes(:,1) &amp;lt; -0.03)&#039;&#039; means find all vertices with &#039;&#039;x&#039;&#039; coordinates that are less than -0.03.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Similarly, &#039;&#039;(m.nodes(:,2) &amp;lt; -0.01)&#039;&#039; means find all vertices with &#039;&#039;y&#039;&#039; coordinates that are less than -0.01.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the pattern of polariser (P) is set up by&amp;lt;br&amp;gt;        &lt;br /&gt;
&lt;br /&gt;
        P((m.nodes(:,1) &amp;lt; -0.05) &amp;amp; (m.nodes(:,2) &amp;gt; 0.03)) = 1;&lt;br /&gt;
Where &#039;&#039;(m.nodes(:,1) &amp;lt; -0.05) &amp;amp; (m.nodes(:,2) &amp;gt; 0.03)&#039;&#039; means find all vertices with &#039;&#039;x,y&#039;&#039; coordinates that are less than -0.05 and greater than 0.03 respectively&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Thus the full code describing the model is:&lt;br /&gt;
    if (Steps(m)==0) &amp;amp;&amp;amp; m.globalDynamicProps.doinit  % Initialisation code.&lt;br /&gt;
        id_a_p(m.nodes(:,1) &amp;lt; -0.03) = 1; % setup region for A where identity factor A is represented by id_a_p&lt;br /&gt;
        id_b_p(m.nodes(:,2) &amp;lt; -0.01) = 1; % setup region for B&lt;br /&gt;
    else&lt;br /&gt;
        % @@KRN Growth Regulatory Network&lt;br /&gt;
        kapar_p(:) = id_a_l .* inh(1,id_b_l); % growth rate&lt;br /&gt;
        kaper_p(:) = kapar_p; % isotropic growth&lt;br /&gt;
        kbpar_p(:) = kapar_p; % same on both sides of the sheet&lt;br /&gt;
        kbper_p(:) = kapar_p; % same&lt;br /&gt;
        knor_p(:)  = 0;       % thickness not growing&lt;br /&gt;
    end&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Ready_Reference_Manual&amp;diff=5239</id>
		<title>Ready Reference Manual</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Ready_Reference_Manual&amp;diff=5239"/>
		<updated>2011-07-23T15:22:10Z</updated>

		<summary type="html">&lt;p&gt;Jrk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&#039;&#039;GFtbox&#039;&#039;&#039;&#039;&#039; For modelling the growth of shapes.  &amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox|&#039;&#039;&#039;&#039;&#039;Details&#039;&#039;&#039;&#039;&#039;: what? How? Where?]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Tutorial pages|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Example pages|&#039;&#039;&#039;&#039;&#039;Examples&#039;&#039;&#039;&#039;&#039;: from publications]]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://sourceforge.net/p/gftbox/ &#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039; from SourceForge]&amp;lt;br&amp;gt;&lt;br /&gt;
=Summary of controls=&lt;br /&gt;
Roll the mouse over any control and information about the control will pop-up.&lt;br /&gt;
==Models==&lt;br /&gt;
* The larger the time step, the fewer iterations will be needed to simulate a given amount of time, but the less accurate the simulation will be. If the time step is too large, diffusion calculations may even become unstable. As a rule of thumb, the time step should be chosen small enough that:&lt;br /&gt;
** The product of growth rate and time step is everywhere less than 0.1 -- that is, no part of the mesh grows by more than 10% in a single iteration.&lt;br /&gt;
** In a single iteration, no part of the mesh rotates by more than 10 degrees.&lt;br /&gt;
** The product of time step and the relative rate of change of any morphogen should be no more than 0.1. The rate of change may derive from the decay rate you have set, or from interactions programmed in the interaction function.&lt;br /&gt;
** If &#039;&#039;k&#039;&#039; is the diffusion constant of a morphogen, &#039;&#039;D&#039;&#039; is the diameter of the mesh, and dt is the time step, &#039;&#039;k dt^2/D&#039;&#039; should be no more than 0.1.&lt;br /&gt;
* Errors in the interaction function will cause the system to stop, and the interaction function will be disabled. The controls in the Interaction Function panel will all turn red to indicate this.&lt;br /&gt;
** To re-enable the interaction function, click the Reset button at the top of the GUI. &lt;br /&gt;
** To find the error&lt;br /&gt;
*** There will be a message on the Matlab console saying in which line of the interaction function it detected an error. Open the interaction function in the Matlab editor, find that line, and set a breakpoint there or shortly before (by clicking in the left margin -- a red dot will appear).&lt;br /&gt;
*** The next time the interaction function runs, Matlab will suspend execution at the breakpoint and go into debug mode. You can then examine the values of variables and step through the code one line at a time in order to discover why the error is happening.&lt;br /&gt;
*** Matlab provides extensive tutorials on how to program and there is much information on the web.&lt;br /&gt;
  &lt;br /&gt;
==Running models==&lt;br /&gt;
&lt;br /&gt;
The normally &#039;&#039;&#039;green Run pane&#039;&#039;&#039;l turns &#039;&#039;&#039;red&#039;&#039;&#039; whilst the model is running.&amp;lt;br&amp;gt;&lt;br /&gt;
A &#039;&#039;&#039;yellow&#039;&#039;&#039; Run panel means that the model is running on a version of the GFtbox that is older than the model itself (look at the interaction header to see our source code version control number for the copy of GFtbox that created the model).&amp;lt;br&amp;gt;&lt;br /&gt;
An interaction function error (or any other error) will stop the model from running. It is then necessary to Reset using the&#039;&#039;&#039; Reset key - which will have turned red&#039;&#039;&#039;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
To run a model from the GUI&lt;br /&gt;
*Step, execute one step of &#039;&#039;dt&#039;&#039;. A whole lot of information pours out at the command console. Sometimes it takes a while to solve the equations. The process is monitored by a series of dots . . . . . . . Further information is provided below the Plotting panel, e.g. Step number, time per iteration, time per finite element, growth, etc.&lt;br /&gt;
*Run for, and enter the number of steps into the box.&lt;br /&gt;
*Run until, and enter the model time to which you want to run.&lt;br /&gt;
*Run to, and enter the multiple of the initial area you want to run to.&lt;br /&gt;
*Stop, stops execution at the end of the current step.&lt;br /&gt;
*Call, makes a call to the interaction function but does NOT grow. This is useful for checking initial conditions - set patterns of morphogens. Having made a Call to the interaction function it is good practice to then Restart the model before running a model.&lt;br /&gt;
*Menu:Stages. &#039;&#039;&#039;We usually run models&#039;&#039;&#039; by setting up a set of, say 5, stages that we want stored. Then, having run the model we can revert back to any of the stages - make a change - and re-run starting from that point. The stages are stored in the project directory with the suffix *000# where # is the time. Stage times are stored with the project - and copied into the daughter project with Save As.&lt;br /&gt;
**Compute more stages, pops up a box asking for a set of times that you want stored then starts computing&lt;br /&gt;
**Request more stages, does the same but does not start computing.&lt;br /&gt;
**Save experiment stages, saves all the current stage files in a subdirectory.&lt;br /&gt;
**Import experiment stages, recovers a saved experiment. This pair of commands help document results and make figures. In addition, when the system runs on a cluster, the results are returned as experimental results to be accessed in this way.&lt;br /&gt;
*&#039;&#039;&#039;What to do when the running system gets stuck&#039;&#039;&#039;. Usually this is because the shape is too regular and cannot initiate a bulge.&lt;br /&gt;
**Interrupt processing using standard Matlab convention - Control-C. Then reset the &#039;&#039;GFtbox&#039;&#039;. Panel:Select Tool:Mesh Editor and slightly modify the Z shape a random amount: click Random.&lt;br /&gt;
==Outputs==&lt;br /&gt;
===Plotting panel===&lt;br /&gt;
To view&lt;br /&gt;
*Specified values, i.e. kapar or a particular morphogen (factor) select from the drop down menu at the top right, and tick the Plot Current Factor checkbox.&lt;br /&gt;
**To autoscale the axes, set the checkbox Panel:Plot Options:Auto axis range. To autozoom as well, click Menus:Plot:Auto zoom and centre.&lt;br /&gt;
**To autoscale the morphogen colours. Panel:Plot Options:Auto color range. To fix the colour range the easiest is to click From Picture and unclick the Auto color range. Alternatively, unclick the Auto color range box and key in values you want - click elsewhere on the GUI to force a replot.&lt;br /&gt;
**To find out the level of a morphogen at a particular point on the canvas. Select Tool:Simulation and select the morphogen of interest (top right pull down) and click on the point of interest. The value at that point will appear in bold just below the Panel:Timescale box.&lt;br /&gt;
*Output variables, e.g. growth rate, tick Plot output value and make selection from the two drop down menus.&lt;br /&gt;
*thickness, tick/untick Menu:Plot:Thickness.&lt;br /&gt;
To show/hide &lt;br /&gt;
*thickness, tick/untick Menu:Plot:Thickness.&lt;br /&gt;
*mesh, tick/untick FE edges.&lt;br /&gt;
*axes, tick/untick Menu:Plot:Show/Hide axes.&amp;lt;br&amp;gt;&lt;br /&gt;
*legend, tick/untick Menu:Plot:Show/Hide legend - also Set legend to choose heading.&amp;lt;br&amp;gt;&lt;br /&gt;
To set/modify values of morphogens (best done in the interaction function)&lt;br /&gt;
* Choose morphogen (list box), Click on Select Tool:Factors, &#039;---&#039; list box to select action and click on appropriate button (Add constant or Add radial, etc).&lt;br /&gt;
* at individual nodes (vertices). Choose morphogen (list box), Click on Select Tool:Factors, &#039;---&#039; list box to select action and click on node.&amp;lt;br&amp;gt;&lt;br /&gt;
To clip the mesh (hide part of the mesh)&lt;br /&gt;
*Tick Clipping plane and choose the plane with Az (azimuth), El (elevation),  D (distance from origin).&lt;br /&gt;
*Tick Clip and select the region to hide by using morphogen values (click on Mgens button).&lt;br /&gt;
===Snapshots===&lt;br /&gt;
Saved in png format in the project snapshots subdirectory&lt;br /&gt;
*Clicking Take snapshot makes a png file copy of the plotting screen. At the same time a copy of the interaction function (relabelled to have .txt as a suffix) is also made - to help document the snapshot.&lt;br /&gt;
*Publication quality screenshot is made by changing the action of the Snapshot button using Menu:Misc:Hi-res snapshots and choosing a number of dots per inch.&lt;br /&gt;
===Exporting mehes for external use===&lt;br /&gt;
The current mesh can be saved in various formats for use outside GFtbox, using the various Save... commands on the Mesh menu.&lt;br /&gt;
*VRML is a standard format for 3D graphics, for which there are free viewers (for example, [http://www.bitmanagement.com/en/products/interactive-3d-clients BS Contact] or ParallelGraphics&#039; [http://www.cortona3d.com/Try-Buy/Downloads.aspx Cortona 3D Viewer]). It is also a format supported by [http://www.zcorp.com/en/home.aspx ZCorp]&#039;s 3D printers. When you export to VRML, after providing a file name you will be presented with a dialog that allows you to rescale the object and also to change its thickness. Changing the thickness is only important for 3D printing, as a physical model will be too fragile if the mesh is too thin.&lt;br /&gt;
*OBJ is another standard format for 3D models, and can be imported into most 3D modelling software.&lt;br /&gt;
*FIG is the Matlab format for figure files. These files can be reopened in Matlab.&lt;br /&gt;
*MAT is Matlab&#039;s format for storing arbitrary Matlab objects.&lt;br /&gt;
&lt;br /&gt;
MAT is the only format that saves the entire mesh structure. The other formats save only its current graphical representation.&lt;br /&gt;
===Movies===&lt;br /&gt;
By default, movies are uncompressed, since this is the only format that is sure to play on all machines. However, uncompressed movies can easily be gigabytes in size. Various compressed formats can be selected in the Movie:Codec menu. Several formats are available, although not all of them are supported on all Matlab installations, and where supported, the resulting movies may not play in all movie-playing software. You only need to select a codec once, and it will apply to all subsequently created movies.&lt;br /&gt;
*For recent versions of Matlab (2010 and later) we recommend the Motion JPEG AVI format. (Older versions of Matlab do not provide it.)&lt;br /&gt;
*Flash movie format cannot be created directly, but there is an option to convert completed movies to Flash automatically, with the menu Movie:Convert to Flash. This option requires the ffmpeg program to be present on the Matlab command path.&lt;br /&gt;
*Click Record Movie to start creating a movie. The current picture of the mesh will be the first frame of the movie. The button will change to Stop Movie. Every time a simulation step is performed, the picture of the mesh will be added to the movie file. Click Stop Movie to stop recording and close the movie file. The movie file will also be automatically closed if you close the project, load a new project, or close GFtbox. When the movie file is closed, the final frame will also be stored as a PNG image file, as well as a copy of the interaction function (with extension .txt instead of .m).&lt;br /&gt;
*By default, the name of the movie file is chosen automatically, and consists of the project name followed by a numerical suffix. If you turn off the Auto-name checkbox below the Record Movie button, you will be prompted to given the movie a name. Movies (and the associated snapshots and interaction functions) are stored in a &amp;quot;movies&amp;quot; subdirectory of the project directory.&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
===Web and PowerPoint===&lt;br /&gt;
A copy of the interaction function suitable for inserting in a web page can be created by calling the function webify_interaction_function&lt;br /&gt;
&lt;br /&gt;
with embedded HTML &lt;br /&gt;
Writing web and PowerPoint pages is facilitated by:&lt;br /&gt;
*&#039;&#039;&#039;Output .avi for PowerPoint&#039;&#039;&#039;. Use Movie:Codec:Motion JPEG avi. This does not play properly on PowerPoint 2007 unless you run PowerPoint in 2003 compatibility mode. The movie is saved into the project movies subdirectory together with an image (.png) of the final frame and a copy of the interaction function (renamed .txt - to document the results).&lt;br /&gt;
*Output &#039;&#039;&#039;flash (.flv) movies for web&#039;&#039;&#039;. Select Movie:Convert to Flash. This option requires the [http://www.ffmpeg.org/ ffmpeg] program to be on the current path. The movie is saved to the project directory together with an image (.png) of the first frame (for last frame see above).&lt;br /&gt;
*Output&#039;&#039;&#039; web compatible copy of the interaction function&#039;&#039;&#039; use &#039;&#039;webify_interaction_function.m&#039;&#039; which outputs a txt file with  comments marked up in HTML to appear in green and sections in blue.&lt;br /&gt;
===Files===&lt;br /&gt;
==Simulation==&lt;br /&gt;
&lt;br /&gt;
==Graphical User Interface==&lt;br /&gt;
===Menus===&lt;br /&gt;
===Panels===&lt;br /&gt;
==Interaction function==&lt;br /&gt;
===Functions===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=Useful interaction function programming constructs=&lt;br /&gt;
[[Types of morphogens and factors|Types of morphogens and factors click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|&#039;&#039;&#039;Pre-defined variables&#039;&#039;&#039;|| &lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|dt|| computational step size&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|realtime|| virtual time of the model&lt;br /&gt;
|}&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|&#039;&#039;&#039;Pre-defined functions&#039;&#039;&#039;|| &lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|Steps(m)|| current step number in Mesh m&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|pro(k,id)|| promote by k in regions designated by factor, id (&#039;&#039;pro(k,&#039;&#039;&#039;x&#039;&#039;&#039;)=1+k&#039;&#039;&#039;x&#039;&#039;&#039;&#039;&#039;, i.e. promote by &#039;&#039;k=0&#039;&#039; and the value of &#039;&#039;pro()&#039;&#039; is &#039;&#039;1&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|inh(k,id)|| inhibit by k in regions designated by factor, id (&#039;&#039;inh(k,&#039;&#039;&#039;x&#039;&#039;&#039;)=1/(1+k&#039;&#039;&#039;x&#039;&#039;&#039;)&#039;&#039;, i.e. inhibit by &#039;&#039;k=0&#039;&#039; and the value of &#039;&#039;inh()&#039;&#039; is &#039;&#039;1&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|local_setproperties( m )|| initialise Mesh properties&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|leaf_*( m, ... )|| A large library of functions for manipulating the Mesh data structure, m. All of them are listed in the main Help menu of the GFtbox GUI, both in alphabetical order and categorised by topic.&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The patterns of morphogens A and B are often set up by using logical indexing, e.g.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        id_a_p(m.nodes(:,1) &amp;lt; -0.03) = 1; &lt;br /&gt;
        id_b_p(m.nodes(:,2) &amp;lt; -0.01) = 1; &lt;br /&gt;
where &#039;&#039;id_a_p&#039;&#039; is the vector of values of the A morphogen. &#039;&#039;m.node(:,1)&#039;&#039; refers to the &#039;&#039;x&#039;&#039; coordinates of all nodes (vertices) in the mesh.&amp;lt;br&amp;gt;&lt;br /&gt;
The expression &#039;&#039;(m.nodes(:,1) &amp;lt; -0.03)&#039;&#039; means find all vertices with &#039;&#039;x&#039;&#039; coordinates that are less than -0.03.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Similarly, &#039;&#039;(m.nodes(:,2) &amp;lt; -0.01)&#039;&#039; means find all vertices with &#039;&#039;y&#039;&#039; coordinates that are less than -0.01.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the pattern of polariser (P) is set up by&amp;lt;br&amp;gt;        &lt;br /&gt;
&lt;br /&gt;
        P((m.nodes(:,1) &amp;lt; -0.05) &amp;amp; (m.nodes(:,2) &amp;gt; 0.03)) = 1;&lt;br /&gt;
Where &#039;&#039;(m.nodes(:,1) &amp;lt; -0.05) &amp;amp; (m.nodes(:,2) &amp;gt; 0.03)&#039;&#039; means find all vertices with &#039;&#039;x,y&#039;&#039; coordinates that are less than -0.05 and greater than 0.03 respectively&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Thus the full code describing the model is:&lt;br /&gt;
    if (Steps(m)==0) &amp;amp;&amp;amp; m.globalDynamicProps.doinit  % Initialisation code.&lt;br /&gt;
        id_a_p(m.nodes(:,1) &amp;lt; -0.03) = 1; % setup region for A where identity factor A is represented by id_a_p&lt;br /&gt;
        id_b_p(m.nodes(:,2) &amp;lt; -0.01) = 1; % setup region for B&lt;br /&gt;
    else&lt;br /&gt;
        % @@KRN Growth Regulatory Network&lt;br /&gt;
        kapar_p(:) = id_a_l .* inh(1,id_b_l); % growth rate&lt;br /&gt;
        kaper_p(:) = kapar_p; % isotropic growth&lt;br /&gt;
        kbpar_p(:) = kapar_p; % same on both sides of the sheet&lt;br /&gt;
        kbper_p(:) = kapar_p; % same&lt;br /&gt;
        knor_p(:)  = 0;       % thickness not growing&lt;br /&gt;
    end&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Ready_Reference_Manual&amp;diff=5242</id>
		<title>Ready Reference Manual</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Ready_Reference_Manual&amp;diff=5242"/>
		<updated>2011-07-23T15:07:22Z</updated>

		<summary type="html">&lt;p&gt;Jrk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&#039;&#039;GFtbox&#039;&#039;&#039;&#039;&#039; For modelling the growth of shapes.  &amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox|&#039;&#039;&#039;&#039;&#039;Details&#039;&#039;&#039;&#039;&#039;: what? How? Where?]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Tutorial pages|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Example pages|&#039;&#039;&#039;&#039;&#039;Examples&#039;&#039;&#039;&#039;&#039;: from publications]]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://sourceforge.net/p/gftbox/ &#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039; from SourceForge]&amp;lt;br&amp;gt;&lt;br /&gt;
=Summary of controls=&lt;br /&gt;
Roll the mouse over any control and information about the control will pop-up.&lt;br /&gt;
==Models==&lt;br /&gt;
* The larger the time step, the fewer iterations will be needed to simulate a given amount of time, but the less accurate the simulation will be. If the time step is too large, diffusion calculations may even become unstable. As a rule of thumb, the time step should be chosen small enough that:&lt;br /&gt;
** The product of growth rate and time step is everywhere less than 0.1 -- that is, no part of the mesh grows by more than 10% in a single iteration.&lt;br /&gt;
** In a single iteration, no part of the mesh rotates by more than 10 degrees.&lt;br /&gt;
** The product of time step and the relative rate of change of any morphogen should be no more than 0.1. The rate of change may derive from the decay rate you have set, or from interactions programmed in the interaction function.&lt;br /&gt;
** If &#039;&#039;k&#039;&#039; is the diffusion constant of a morphogen, &#039;&#039;D&#039;&#039; is the diameter of the mesh, and dt is the time step, &#039;&#039;k dt^2/D&#039;&#039; should be no more than 0.1.&lt;br /&gt;
* Errors in the interaction function will cause the system to stop, and the interaction function will be disabled. The controls in the Interaction Function panel will all turn red to indicate this.&lt;br /&gt;
** To re-enable the interaction function, click the Reset button at the top of the GUI. &lt;br /&gt;
** To find the error&lt;br /&gt;
*** There will be a message on the Matlab console saying in which line of the interaction function it detected an error. Open the interaction function in the Matlab editor, find that line, and set a breakpoint there or shortly before (by clicking in the left margin -- a red dot will appear).&lt;br /&gt;
*** The next time the interaction function runs, Matlab will suspend execution at the breakpoint and go into debug mode. You can then examine the values of variables and step through the code one line at a time in order to discover why the error is happening.&lt;br /&gt;
*** Matlab provides extensive tutorials on how to program and there is much information on the web.&lt;br /&gt;
  &lt;br /&gt;
==Running models==&lt;br /&gt;
&lt;br /&gt;
The normally &#039;&#039;&#039;green Run pane&#039;&#039;&#039;l turns &#039;&#039;&#039;red&#039;&#039;&#039; whilst the model is running.&amp;lt;br&amp;gt;&lt;br /&gt;
A &#039;&#039;&#039;yellow&#039;&#039;&#039; Run panel means that the model is running on a version of the GFtbox that is older than the model itself (look at the interaction header to see our source code version control number for the copy of GFtbox that created the model).&amp;lt;br&amp;gt;&lt;br /&gt;
An interaction function error (or any other error) will stop the model from running. It is then necessary to Reset using the&#039;&#039;&#039; Reset key - which will have turned red&#039;&#039;&#039;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
To run a model from the GUI&lt;br /&gt;
*Step, execute one step of &#039;&#039;dt&#039;&#039;. A whole lot of information pours out at the command console. Sometimes it takes a while to solve the equations. The process is monitored by a series of dots . . . . . . . Further information is provided below the Plotting panel, e.g. Step number, time per iteration, time per finite element, growth, etc.&lt;br /&gt;
*Run for, and enter the number of steps into the box.&lt;br /&gt;
*Run until, and enter the model time to which you want to run.&lt;br /&gt;
*Run to, and enter the multiple of the initial area you want to run to.&lt;br /&gt;
*Stop, stops execution at the end of the current step.&lt;br /&gt;
*Call, makes a call to the interaction function but does NOT grow. This is useful for checking initial conditions - set patterns of morphogens. Having made a Call to the interaction function it is good practice to then Restart the model before running a model.&lt;br /&gt;
*Menu:Stages. &#039;&#039;&#039;We usually run models&#039;&#039;&#039; by setting up a set of, say 5, stages that we want stored. Then, having run the model we can revert back to any of the stages - make a change - and re-run starting from that point. The stages are stored in the project directory with the suffix *000# where # is the time. Stage times are stored with the project - and copied into the daughter project with Save As.&lt;br /&gt;
**Compute more stages, pops up a box asking for a set of times that you want stored then starts computing&lt;br /&gt;
**Request more stages, does the same but does not start computing.&lt;br /&gt;
**Save experiment stages, saves all the current stage files in a subdirectory.&lt;br /&gt;
**Import experiment stages, recovers a saved experiment. This pair of commands help document results and make figures. In addition, when the system runs on a cluster, the results are returned as experimental results to be accessed in this way.&lt;br /&gt;
*&#039;&#039;&#039;What to do when the running system gets stuck&#039;&#039;&#039;. Usually this is because the shape is too regular and cannot initiate a bulge.&lt;br /&gt;
**Interrupt processing using standard Matlab convention - Control-C. Then reset the &#039;&#039;GFtbox&#039;&#039;. Panel:Select Tool:Mesh Editor and slightly modify the Z shape a random amount: click Random.&lt;br /&gt;
==Outputs==&lt;br /&gt;
===Plotting panel===&lt;br /&gt;
To view&lt;br /&gt;
*Specified values, i.e. kapar or a particular morphogen (factor) select from the drop down menu at the top right, and tick the Plot Current Factor checkbox.&lt;br /&gt;
**To autoscale the axes, set the checkbox Panel:Plot Options:Auto axis range. To autozoom as well, click Menus:Plot:Auto zoom and centre.&lt;br /&gt;
**To autoscale the morphogen colours. Panel:Plot Options:Auto color range. To fix the colour range the easiest is to click From Picture and unclick the Auto color range. Alternatively, unclick the Auto color range box and key in values you want - click elsewhere on the GUI to force a replot.&lt;br /&gt;
**To find out the level of a morphogen at a particular point on the canvas. Select Tool:Simulation and select the morphogen of interest (top right pull down) and click on the point of interest. The value at that point will appear in bold just below the Panel:Timescale box.&lt;br /&gt;
*Output variables, e.g. growth rate, tick Plot output value and make selection from the two drop down menus.&lt;br /&gt;
*thickness, tick/untick Menu:Plot:Thickness.&lt;br /&gt;
To show/hide &lt;br /&gt;
*thickness, tick/untick Menu:Plot:Thickness.&lt;br /&gt;
*mesh, tick/untick FE edges.&lt;br /&gt;
*axes, tick/untick Menu:Plot:Show/Hide axes.&amp;lt;br&amp;gt;&lt;br /&gt;
*legend, tick/untick Menu:Plot:Show/Hide legend - also Set legend to choose heading.&amp;lt;br&amp;gt;&lt;br /&gt;
To set/modify values of morphogens (best done in the interaction function)&lt;br /&gt;
* Choose morphogen (list box), Click on Select Tool:Factors, &#039;---&#039; list box to select action and click on appropriate button (Add constant or Add radial, etc).&lt;br /&gt;
* at individual nodes (vertices). Choose morphogen (list box), Click on Select Tool:Factors, &#039;---&#039; list box to select action and click on node.&amp;lt;br&amp;gt;&lt;br /&gt;
To clip the mesh (hide part of the mesh)&lt;br /&gt;
*Tick Clipping plane and choose the plane with Az (azimuth), ti (tilt),  D.&lt;br /&gt;
*Tick Clip and select the region to hide by using morphogen values (click on Mgens button).&lt;br /&gt;
===Snapshots===&lt;br /&gt;
Saved in png format in the project snapshots subdirectory&lt;br /&gt;
*Clicking Take snapshot makes a png file copy of the plotting screen. At the same time a copy of the interaction function (relabelled to have .txt as a suffix) is also made - to help document the snapshot.&lt;br /&gt;
*Publication quality screenshot is made by changing the action of the Snapshot button using Menu:Misc:Hi-res snapshots and choosing a number of dots per inch.&lt;br /&gt;
===Exporting mehes for external use===&lt;br /&gt;
The current mesh can be saved in various formats for use outside GFtbox, using the various Save... commands on the Mesh menu.&lt;br /&gt;
*VRML is a standard format for 3D graphics, for which there are free viewers (for example, [http://www.bitmanagement.com/en/products/interactive-3d-clients BS Contact] or ParallelGraphics&#039; [http://www.cortona3d.com/Try-Buy/Downloads.aspx Cortona 3D Viewer]). It is also a format supported by [http://www.zcorp.com/en/home.aspx ZCorp]&#039;s 3D printers. When you export to VRML, after providing a file name you will be presented with a dialog that allows you to rescale the object and also to change its thickness. Changing the thickness is only important for 3D printing, as a physical model will be too fragile if the mesh is too thin.&lt;br /&gt;
*OBJ is another standard format for 3D models, and can be imported into most 3D modelling software.&lt;br /&gt;
*FIG is the Matlab format for figure files. These files can be reopened in Matlab.&lt;br /&gt;
*MAT is Matlab&#039;s format for storing arbitrary Matlab objects.&lt;br /&gt;
&lt;br /&gt;
MAT is the only format that saves the entire mesh structure. The other formats save only its current graphical representation.&lt;br /&gt;
===Movies===&lt;br /&gt;
By default, movies are uncompressed, since this is the only format that is sure to play on all machines. However, uncompressed movies can easily be gigabytes in size. Various compressed formats can be selected in the Movie:Codec menu. Several formats are available, although not all of them are supported on all Matlab installations, and where supported, the resulting movies may not play in all movie-playing software. You only need to select a codec once, and it will apply to all subsequently created movies.&lt;br /&gt;
*For recent versions of Matlab (2010 and later) we recommend the Motion JPEG AVI format. (Older versions of Matlab do not provide it.)&lt;br /&gt;
*Flash movie format cannot be created directly, but there is an option to convert completed movies to Flash automatically, with the menu Movie:Convert to Flash. This option requires the ffmpeg program to be present on the Matlab command path.&lt;br /&gt;
*Click Record Movie to start creating a movie. The current picture of the mesh will be the first frame of the movie. The button will change to Stop Movie. Every time a simulation step is performed, the picture of the mesh will be added to the movie file. Click Stop Movie to stop recording and close the movie file. The movie file will also be automatically closed if you close the project, load a new project, or close GFtbox. When the movie file is closed, the final frame will also be stored as a PNG image file, as well as a copy of the interaction function (with extension .txt instead of .m).&lt;br /&gt;
*By default, the name of the movie file is chosen automatically, and consists of the project name followed by a numerical suffix. If you turn off the Auto-name checkbox below the Record Movie button, you will be prompted to given the movie a name. Movies (and the associated snapshots and interaction functions) are stored in a &amp;quot;movies&amp;quot; subdirectory of the project directory.&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
===Web and PowerPoint===&lt;br /&gt;
A copy of the interaction function suitable for inserting in a web page can be created by calling the function webify_interaction_function&lt;br /&gt;
&lt;br /&gt;
with embedded HTML &lt;br /&gt;
Writing web and PowerPoint pages is facilitated by:&lt;br /&gt;
*&#039;&#039;&#039;Output .avi for PowerPoint&#039;&#039;&#039;. Use Movie:Codec:Motion JPEG avi. This does not play properly on PowerPoint 2007 unless you run PowerPoint in 2003 compatibility mode. The movie is saved into the project movies subdirectory together with an image (.png) of the final frame and a copy of the interaction function (renamed .txt - to document the results).&lt;br /&gt;
*Output &#039;&#039;&#039;flash (.flv) movies for web&#039;&#039;&#039;. Select Movie:Convert to Flash. This option requires the [http://www.ffmpeg.org/ ffmpeg] program to be on the current path. The movie is saved to the project directory together with an image (.png) of the first frame (for last frame see above).&lt;br /&gt;
*Output&#039;&#039;&#039; web compatible copy of the interaction function&#039;&#039;&#039; use &#039;&#039;webify_interaction_function.m&#039;&#039; which outputs a txt file with  comments marked up in HTML to appear in green and sections in blue.&lt;br /&gt;
===Files===&lt;br /&gt;
==Simulation==&lt;br /&gt;
&lt;br /&gt;
==Graphical User Interface==&lt;br /&gt;
===Menus===&lt;br /&gt;
===Panels===&lt;br /&gt;
==Interaction function==&lt;br /&gt;
===Functions===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=Useful interaction function programming constructs=&lt;br /&gt;
[[Types of morphogens and factors|Types of morphogens and factors click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|&#039;&#039;&#039;Pre-defined variables&#039;&#039;&#039;|| &lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|dt|| computational step size&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|realtime|| virtual time of the model&lt;br /&gt;
|}&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|&#039;&#039;&#039;Pre-defined functions&#039;&#039;&#039;|| &lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|Steps(m)|| current step number in Mesh m&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|pro(k,id)|| promote by k in regions designated by factor, id (&#039;&#039;pro(k,&#039;&#039;&#039;x&#039;&#039;&#039;)=1+k&#039;&#039;&#039;x&#039;&#039;&#039;&#039;&#039;, i.e. promote by &#039;&#039;k=0&#039;&#039; and the value of &#039;&#039;pro()&#039;&#039; is &#039;&#039;1&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|inh(k,id)|| inhibit by k in regions designated by factor, id (&#039;&#039;inh(k,&#039;&#039;&#039;x&#039;&#039;&#039;)=1/(1+k&#039;&#039;&#039;x&#039;&#039;&#039;)&#039;&#039;, i.e. inhibit by &#039;&#039;k=0&#039;&#039; and the value of &#039;&#039;inh()&#039;&#039; is &#039;&#039;1&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|local_setproperties( m )|| initialise Mesh properties&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|leaf_*( m, ... )|| A large library of functions for manipulating the Mesh data structure, m. All of them are listed in the main Help menu of the GFtbox GUI, both in alphabetical order and categorised by topic.&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The patterns of morphogens A and B are often set up by using logical indexing, e.g.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        id_a_p(m.nodes(:,1) &amp;lt; -0.03) = 1; &lt;br /&gt;
        id_b_p(m.nodes(:,2) &amp;lt; -0.01) = 1; &lt;br /&gt;
where &#039;&#039;id_a_p&#039;&#039; is the vector of values of the A morphogen. &#039;&#039;m.node(:,1)&#039;&#039; refers to the &#039;&#039;x&#039;&#039; coordinates of all nodes (vertices) in the mesh.&amp;lt;br&amp;gt;&lt;br /&gt;
The expression &#039;&#039;(m.nodes(:,1) &amp;lt; -0.03)&#039;&#039; means find all vertices with &#039;&#039;x&#039;&#039; coordinates that are less than -0.03.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Similarly, &#039;&#039;(m.nodes(:,2) &amp;lt; -0.01)&#039;&#039; means find all vertices with &#039;&#039;y&#039;&#039; coordinates that are less than -0.01.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the pattern of polariser (P) is set up by&amp;lt;br&amp;gt;        &lt;br /&gt;
&lt;br /&gt;
        P((m.nodes(:,1) &amp;lt; -0.05) &amp;amp; (m.nodes(:,2) &amp;gt; 0.03)) = 1;&lt;br /&gt;
Where &#039;&#039;(m.nodes(:,1) &amp;lt; -0.05) &amp;amp; (m.nodes(:,2) &amp;gt; 0.03)&#039;&#039; means find all vertices with &#039;&#039;x,y&#039;&#039; coordinates that are less than -0.05 and greater than 0.03 respectively&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Thus the full code describing the model is:&lt;br /&gt;
    if (Steps(m)==0) &amp;amp;&amp;amp; m.globalDynamicProps.doinit  % Initialisation code.&lt;br /&gt;
        id_a_p(m.nodes(:,1) &amp;lt; -0.03) = 1; % setup region for A where identity factor A is represented by id_a_p&lt;br /&gt;
        id_b_p(m.nodes(:,2) &amp;lt; -0.01) = 1; % setup region for B&lt;br /&gt;
    else&lt;br /&gt;
        % @@KRN Growth Regulatory Network&lt;br /&gt;
        kapar_p(:) = id_a_l .* inh(1,id_b_l); % growth rate&lt;br /&gt;
        kaper_p(:) = kapar_p; % isotropic growth&lt;br /&gt;
        kbpar_p(:) = kapar_p; % same on both sides of the sheet&lt;br /&gt;
        kbper_p(:) = kapar_p; % same&lt;br /&gt;
        knor_p(:)  = 0;       % thickness not growing&lt;br /&gt;
    end&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Ready_Reference_Manual&amp;diff=5243</id>
		<title>Ready Reference Manual</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Ready_Reference_Manual&amp;diff=5243"/>
		<updated>2011-07-23T15:06:23Z</updated>

		<summary type="html">&lt;p&gt;Jrk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&#039;&#039;GFtbox&#039;&#039;&#039;&#039;&#039; For modelling the growth of shapes.  &amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox|&#039;&#039;&#039;&#039;&#039;Details&#039;&#039;&#039;&#039;&#039;: what? How? Where?]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Tutorial pages|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Example pages|&#039;&#039;&#039;&#039;&#039;Examples&#039;&#039;&#039;&#039;&#039;: from publications]]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://sourceforge.net/p/gftbox/ &#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039; from SourceForge]&amp;lt;br&amp;gt;&lt;br /&gt;
=Summary of controls=&lt;br /&gt;
Roll the mouse over any control and information about the control will pop-up.&lt;br /&gt;
==Models==&lt;br /&gt;
* The larger the time step, the fewer iterations will be needed to simulate a given amount of time, but the less accurate the simulation will be. If the time step is too large, diffusion calculations may even become unstable. As a rule of thumb, the time step should be chosen small enough that:&lt;br /&gt;
** The product of growth rate and time step is everywhere less than 0.1 -- that is, no part of the mesh grows by more than 10% in a single iteration.&lt;br /&gt;
** In a single iteration, no part of the mesh rotates by more than 10 degrees.&lt;br /&gt;
** The product of time step and the relative rate of change of any morphogen should be no more than 0.1. The rate of change may derive from the decay rate you have set, or from interactions programmed in the interaction function.&lt;br /&gt;
** If &#039;&#039;k&#039;&#039; is the diffusion constant of a morphogen, &#039;&#039;D&#039;&#039; is the diameter of the mesh, and dt is the time step, &#039;&#039;k dt^2/D&#039;&#039; should be no more than 0.1.&lt;br /&gt;
* Errors in the interaction function will cause the system to stop, and the interaction function will be disabled. The controls in the Interaction Function panel will all turn red to indicate this.&lt;br /&gt;
** To re-enable the interaction function, click the Reset button at the top of the GUI. &lt;br /&gt;
** To find the error&lt;br /&gt;
*** There will be a message on the Matlab console saying in which line of the interaction function it detected an error. Open the interaction function in the Matlab editor, find that line, and set a breakpoint there or shortly before (by clicking in the left margin -- a red dot will appear).&lt;br /&gt;
*** The next time the interaction function runs, Matlab will suspend execution at the breakpoint and go into debug mode. You can then examine the values of variables and step through the code one line at a time in order to discover why the error is happening.&lt;br /&gt;
*** Matlab provides extensive tutorials on how to program and there is much information on the web.&lt;br /&gt;
  &lt;br /&gt;
==Running models==&lt;br /&gt;
&lt;br /&gt;
The normally &#039;&#039;&#039;green Run pane&#039;&#039;&#039;l turns &#039;&#039;&#039;red&#039;&#039;&#039; whilst the model is running.&amp;lt;br&amp;gt;&lt;br /&gt;
A &#039;&#039;&#039;yellow&#039;&#039;&#039; Run panel means that the model is running on a version of the GFtbox that is older than the model itself (look at the interaction header to see our source code version control number for the copy of GFtbox that created the model).&amp;lt;br&amp;gt;&lt;br /&gt;
An interaction function error (or any other error) will stop the model from running. It is then necessary to Reset using the&#039;&#039;&#039; Reset key - which will have turned red&#039;&#039;&#039;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
To run a model from the GUI&lt;br /&gt;
*Step, execute one step of &#039;&#039;dt&#039;&#039;. A whole lot of information pours out at the command console. Sometimes it takes a while to solve the equations. The process is monitored by a series of dots . . . . . . . Further information is provided below the Plotting panel, e.g. Step number, time per iteration, time per finite element, growth, etc.&lt;br /&gt;
*Run for, and enter the number of steps into the box.&lt;br /&gt;
*Run until, and enter the model time to which you want to run.&lt;br /&gt;
*Run to, and enter the multiple of the initial area you want to run to.&lt;br /&gt;
*Stop, stops execution at the end of the current step.&lt;br /&gt;
*Call, makes a call to the interaction function but does NOT grow. This is useful for checking initial conditions - set patterns of morphogens. Having made a Call to the interaction function it is good practice to then Restart the model before running a model.&lt;br /&gt;
*Menu:Stages. &#039;&#039;&#039;We usually run models&#039;&#039;&#039; by setting up a set of, say 5, stages that we want stored. Then, having run the model we can revert back to any of the stages - make a change - and re-run starting from that point. The stages are stored in the project directory with the suffix *000# where # is the time. Stage times are stored with the project - and copied into the daughter project with Save As.&lt;br /&gt;
**Compute more stages, pops up a box asking for a set of times that you want stored then starts computing&lt;br /&gt;
**Request more stages, does the same but does not start computing.&lt;br /&gt;
**Save experiment stages, saves all the current stage files in a subdirectory.&lt;br /&gt;
**Import experiment stages, recovers a saved experiment. This pair of commands help document results and make figures. In addition, when the system runs on a cluster, the results are returned as experimental results to be accessed in this way.&lt;br /&gt;
*&#039;&#039;&#039;What to do when the running system gets stuck&#039;&#039;&#039;. Usually this is because the shape is too regular and cannot initiate a bulge.&lt;br /&gt;
**Interrupt processing using standard Matlab convention - Control-C. Then reset the &#039;&#039;GFtbox&#039;&#039;. Panel:Select Tool:Mesh Editor and slightly modify the Z shape a random amount: click Random.&lt;br /&gt;
==Outputs==&lt;br /&gt;
===Plotting panel===&lt;br /&gt;
To view&lt;br /&gt;
*Specified values, i.e. kapar or a particular morphogen (factor) select from the drop down menu at the top right, and tick the Plot Current Factor checkbox.&lt;br /&gt;
**To autoscale the axes, set the checkbox Panel:Plot Options:Auto axis range. To autozoom as well, click Menus:Plot:Auto zoom and centre.&lt;br /&gt;
**To autoscale the morphogen colours. Panel:Plot Options:Auto color range. To fix the colour range the easiest is to click From Picture and unclick the Auto color range. Alternatively, unclick the Auto color range box and key in values you want - click elsewhere on the GUI to force a replot.&lt;br /&gt;
**To find out the level of a morphogen at a particular point on the canvas. Select Tool:Simulation and select the morphogen of interest (top right pull down) and click on the point of interest. The value at that point will appear in bold just below the Panel:Timescale box.&lt;br /&gt;
*Output variables, e.g. growth rate, tick Plot output value and make selection from the two drop down menus.&lt;br /&gt;
*thickness, tick/untick Menu:Plot:Thickness.&lt;br /&gt;
To show/hide &lt;br /&gt;
*thickness, tick/untick Menu:Plot:Thickness.&lt;br /&gt;
*mesh, tick/untick FE edges.&lt;br /&gt;
*axes, tick/untick Menu:Plot:Show/Hide axes.&amp;lt;br&amp;gt;&lt;br /&gt;
*legend, tick/untick Menu:Plot:Show/Hide legend - also Set legend to choose heading.&amp;lt;br&amp;gt;&lt;br /&gt;
To set/modify values of morphogens (best done in the interaction function)&lt;br /&gt;
* Choose morphogen (list box), Click on Select Tool:Factors, &#039;---&#039; list box to select action and click on appropriate button (Add constant or Add radial, etc).&lt;br /&gt;
* at individual nodes (vertices). Choose morphogen (list box), Click on Select Tool:Factors, &#039;---&#039; list box to select action and click on node.&amp;lt;br&amp;gt;&lt;br /&gt;
To clip the mesh (hide part of the mesh)&lt;br /&gt;
*Tick Clipping plane and choose the plane with Az (azimuth), ti (tilt),  D.&lt;br /&gt;
*Tick Clip and select the region to hide by using morphogen values (click on Mgens button).&lt;br /&gt;
===Snapshots===&lt;br /&gt;
Saved in png format in the project snapshots subdirectory&lt;br /&gt;
*Clicking Take snapshot makes a png file copy of the plotting screen. At the same time a copy of the interaction function (relabelled to have .txt as a suffix) is also made - to help document the snapshot.&lt;br /&gt;
*Publication quality screenshot is made by changing the action of the Snapshot button using Menu:Misc:Hi-res snapshots and choosing a number of dots per inch.&lt;br /&gt;
===Exporting mehes for external use===&lt;br /&gt;
The current mesh can be saved in various formats for use outside GFtbox, using the various Save... commands on the Mesh menu.&lt;br /&gt;
*VRML is a standard format for 3D graphics, for which there are free viewers (for example, [http://www.bitmanagement.com/en/products/interactive-3d-clients BS Contact] or ParallelGraphics&#039; [http://www.cortona3d.com/Try-Buy/Downloads.aspx Cortona 3D Viewer]). It is also a format supported by ZCorp&#039;s 3D printers. When you export to VRML, after providing a file name you will be presented with a dialog that allows you to rescale the object and also to change its thickness. Changing the thickness is only important for 3D printing, as a physical model will be too fragile if the mesh is too thin.&lt;br /&gt;
*OBJ is another standard format for 3D models, and can be imported into most 3D modelling software.&lt;br /&gt;
*FIG is the Matlab format for figure files. These files can be reopened in Matlab.&lt;br /&gt;
*MAT is Matlab&#039;s format for storing arbitrary Matlab objects.&lt;br /&gt;
&lt;br /&gt;
MAT is the only format that saves the entire mesh structure. The other formats save only its current graphical representation.&lt;br /&gt;
===Movies===&lt;br /&gt;
By default, movies are uncompressed, since this is the only format that is sure to play on all machines. However, uncompressed movies can easily be gigabytes in size. Various compressed formats can be selected in the Movie:Codec menu. Several formats are available, although not all of them are supported on all Matlab installations, and where supported, the resulting movies may not play in all movie-playing software. You only need to select a codec once, and it will apply to all subsequently created movies.&lt;br /&gt;
*For recent versions of Matlab (2010 and later) we recommend the Motion JPEG AVI format. (Older versions of Matlab do not provide it.)&lt;br /&gt;
*Flash movie format cannot be created directly, but there is an option to convert completed movies to Flash automatically, with the menu Movie:Convert to Flash. This option requires the ffmpeg program to be present on the Matlab command path.&lt;br /&gt;
*Click Record Movie to start creating a movie. The current picture of the mesh will be the first frame of the movie. The button will change to Stop Movie. Every time a simulation step is performed, the picture of the mesh will be added to the movie file. Click Stop Movie to stop recording and close the movie file. The movie file will also be automatically closed if you close the project, load a new project, or close GFtbox. When the movie file is closed, the final frame will also be stored as a PNG image file, as well as a copy of the interaction function (with extension .txt instead of .m).&lt;br /&gt;
*By default, the name of the movie file is chosen automatically, and consists of the project name followed by a numerical suffix. If you turn off the Auto-name checkbox below the Record Movie button, you will be prompted to given the movie a name. Movies (and the associated snapshots and interaction functions) are stored in a &amp;quot;movies&amp;quot; subdirectory of the project directory.&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
===Web and PowerPoint===&lt;br /&gt;
A copy of the interaction function suitable for inserting in a web page can be created by calling the function webify_interaction_function&lt;br /&gt;
&lt;br /&gt;
with embedded HTML &lt;br /&gt;
Writing web and PowerPoint pages is facilitated by:&lt;br /&gt;
*&#039;&#039;&#039;Output .avi for PowerPoint&#039;&#039;&#039;. Use Movie:Codec:Motion JPEG avi. This does not play properly on PowerPoint 2007 unless you run PowerPoint in 2003 compatibility mode. The movie is saved into the project movies subdirectory together with an image (.png) of the final frame and a copy of the interaction function (renamed .txt - to document the results).&lt;br /&gt;
*Output &#039;&#039;&#039;flash (.flv) movies for web&#039;&#039;&#039;. Select Movie:Convert to Flash. This option requires the [http://www.ffmpeg.org/ ffmpeg] program to be on the current path. The movie is saved to the project directory together with an image (.png) of the first frame (for last frame see above).&lt;br /&gt;
*Output&#039;&#039;&#039; web compatible copy of the interaction function&#039;&#039;&#039; use &#039;&#039;webify_interaction_function.m&#039;&#039; which outputs a txt file with  comments marked up in HTML to appear in green and sections in blue.&lt;br /&gt;
===Files===&lt;br /&gt;
==Simulation==&lt;br /&gt;
&lt;br /&gt;
==Graphical User Interface==&lt;br /&gt;
===Menus===&lt;br /&gt;
===Panels===&lt;br /&gt;
==Interaction function==&lt;br /&gt;
===Functions===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=Useful interaction function programming constructs=&lt;br /&gt;
[[Types of morphogens and factors|Types of morphogens and factors click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|&#039;&#039;&#039;Pre-defined variables&#039;&#039;&#039;|| &lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|dt|| computational step size&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|realtime|| virtual time of the model&lt;br /&gt;
|}&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|&#039;&#039;&#039;Pre-defined functions&#039;&#039;&#039;|| &lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|Steps(m)|| current step number in Mesh m&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|pro(k,id)|| promote by k in regions designated by factor, id (&#039;&#039;pro(k,&#039;&#039;&#039;x&#039;&#039;&#039;)=1+k&#039;&#039;&#039;x&#039;&#039;&#039;&#039;&#039;, i.e. promote by &#039;&#039;k=0&#039;&#039; and the value of &#039;&#039;pro()&#039;&#039; is &#039;&#039;1&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|inh(k,id)|| inhibit by k in regions designated by factor, id (&#039;&#039;inh(k,&#039;&#039;&#039;x&#039;&#039;&#039;)=1/(1+k&#039;&#039;&#039;x&#039;&#039;&#039;)&#039;&#039;, i.e. inhibit by &#039;&#039;k=0&#039;&#039; and the value of &#039;&#039;inh()&#039;&#039; is &#039;&#039;1&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|local_setproperties( m )|| initialise Mesh properties&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|leaf_*( m, ... )|| A large library of functions for manipulating the Mesh data structure, m. All of them are listed in the main Help menu of the GFtbox GUI, both in alphabetical order and categorised by topic.&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The patterns of morphogens A and B are often set up by using logical indexing, e.g.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        id_a_p(m.nodes(:,1) &amp;lt; -0.03) = 1; &lt;br /&gt;
        id_b_p(m.nodes(:,2) &amp;lt; -0.01) = 1; &lt;br /&gt;
where &#039;&#039;id_a_p&#039;&#039; is the vector of values of the A morphogen. &#039;&#039;m.node(:,1)&#039;&#039; refers to the &#039;&#039;x&#039;&#039; coordinates of all nodes (vertices) in the mesh.&amp;lt;br&amp;gt;&lt;br /&gt;
The expression &#039;&#039;(m.nodes(:,1) &amp;lt; -0.03)&#039;&#039; means find all vertices with &#039;&#039;x&#039;&#039; coordinates that are less than -0.03.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Similarly, &#039;&#039;(m.nodes(:,2) &amp;lt; -0.01)&#039;&#039; means find all vertices with &#039;&#039;y&#039;&#039; coordinates that are less than -0.01.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the pattern of polariser (P) is set up by&amp;lt;br&amp;gt;        &lt;br /&gt;
&lt;br /&gt;
        P((m.nodes(:,1) &amp;lt; -0.05) &amp;amp; (m.nodes(:,2) &amp;gt; 0.03)) = 1;&lt;br /&gt;
Where &#039;&#039;(m.nodes(:,1) &amp;lt; -0.05) &amp;amp; (m.nodes(:,2) &amp;gt; 0.03)&#039;&#039; means find all vertices with &#039;&#039;x,y&#039;&#039; coordinates that are less than -0.05 and greater than 0.03 respectively&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Thus the full code describing the model is:&lt;br /&gt;
    if (Steps(m)==0) &amp;amp;&amp;amp; m.globalDynamicProps.doinit  % Initialisation code.&lt;br /&gt;
        id_a_p(m.nodes(:,1) &amp;lt; -0.03) = 1; % setup region for A where identity factor A is represented by id_a_p&lt;br /&gt;
        id_b_p(m.nodes(:,2) &amp;lt; -0.01) = 1; % setup region for B&lt;br /&gt;
    else&lt;br /&gt;
        % @@KRN Growth Regulatory Network&lt;br /&gt;
        kapar_p(:) = id_a_l .* inh(1,id_b_l); % growth rate&lt;br /&gt;
        kaper_p(:) = kapar_p; % isotropic growth&lt;br /&gt;
        kbpar_p(:) = kapar_p; % same on both sides of the sheet&lt;br /&gt;
        kbper_p(:) = kapar_p; % same&lt;br /&gt;
        knor_p(:)  = 0;       % thickness not growing&lt;br /&gt;
    end&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Ready_Reference_Manual&amp;diff=5245</id>
		<title>Ready Reference Manual</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Ready_Reference_Manual&amp;diff=5245"/>
		<updated>2011-07-23T15:03:15Z</updated>

		<summary type="html">&lt;p&gt;Jrk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&#039;&#039;GFtbox&#039;&#039;&#039;&#039;&#039; For modelling the growth of shapes.  &amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox|&#039;&#039;&#039;&#039;&#039;Details&#039;&#039;&#039;&#039;&#039;: what? How? Where?]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Tutorial pages|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Example pages|&#039;&#039;&#039;&#039;&#039;Examples&#039;&#039;&#039;&#039;&#039;: from publications]]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://sourceforge.net/p/gftbox/ &#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039; from SourceForge]&amp;lt;br&amp;gt;&lt;br /&gt;
=Summary of controls=&lt;br /&gt;
Roll the mouse over any control and information about the control will pop-up.&lt;br /&gt;
==Models==&lt;br /&gt;
* The larger the time step, the fewer iterations will be needed to simulate a given amount of time, but the less accurate the simulation will be. If the time step is too large, diffusion calculations may even become unstable. As a rule of thumb, the time step should be chosen small enough that:&lt;br /&gt;
** The product of growth rate and time step is everywhere less than 0.1 -- that is, no part of the mesh grows by more than 10% in a single iteration.&lt;br /&gt;
** In a single iteration, no part of the mesh rotates by more than 10 degrees.&lt;br /&gt;
** The product of time step and the relative rate of change of any morphogen should be no more than 0.1. The rate of change may derive from the decay rate you have set, or from interactions programmed in the interaction function.&lt;br /&gt;
** If &#039;&#039;k&#039;&#039; is the diffusion constant of a morphogen, &#039;&#039;D&#039;&#039; is the diameter of the mesh, and dt is the time step, &#039;&#039;k dt^2/D&#039;&#039; should be no more than 0.1.&lt;br /&gt;
* Errors in the interaction function will cause the system to stop, and the interaction function will be disabled. The controls in the Interaction Function panel will all turn red to indicate this.&lt;br /&gt;
** To re-enable the interaction function, click the Reset button at the top of the GUI. &lt;br /&gt;
** To find the error&lt;br /&gt;
*** There will be a message on the Matlab console saying in which line of the interaction function it detected an error. Open the interaction function in the Matlab editor, find that line, and set a breakpoint there or shortly before (by clicking in the left margin -- a red dot will appear).&lt;br /&gt;
*** The next time the interaction function runs, Matlab will suspend execution at the breakpoint and go into debug mode. You can then examine the values of variables and step through the code one line at a time in order to discover why the error is happening.&lt;br /&gt;
*** Matlab provides extensive tutorials on how to program and there is much information on the web.&lt;br /&gt;
  &lt;br /&gt;
==Running models==&lt;br /&gt;
&lt;br /&gt;
The normally &#039;&#039;&#039;green Run pane&#039;&#039;&#039;l turns &#039;&#039;&#039;red&#039;&#039;&#039; whilst the model is running.&amp;lt;br&amp;gt;&lt;br /&gt;
A &#039;&#039;&#039;yellow&#039;&#039;&#039; Run panel means that the model is running on a version of the GFtbox that is older than the model itself (look at the interaction header to see our source code version control number for the copy of GFtbox that created the model).&amp;lt;br&amp;gt;&lt;br /&gt;
An interaction function error (or any other error) will stop the model from running. It is then necessary to Reset using the&#039;&#039;&#039; Reset key - which will have turned red&#039;&#039;&#039;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
To run a model from the GUI&lt;br /&gt;
*Step, execute one step of &#039;&#039;dt&#039;&#039;. A whole lot of information pours out at the command console. Sometimes it takes a while to solve the equations. The process is monitored by a series of dots . . . . . . . Further information is provided below the Plotting panel, e.g. Step number, time per iteration, time per finite element, growth, etc.&lt;br /&gt;
*Run for, and enter the number of steps into the box.&lt;br /&gt;
*Run until, and enter the model time to which you want to run.&lt;br /&gt;
*Run to, and enter the multiple of the initial area you want to run to.&lt;br /&gt;
*Stop, stops execution at the end of the current step.&lt;br /&gt;
*Call, makes a call to the interaction function but does NOT grow. This is useful for checking initial conditions - set patterns of morphogens. Having made a Call to the interaction function it is good practice to then Restart the model before running a model.&lt;br /&gt;
*Menu:Stages. &#039;&#039;&#039;We usually run models&#039;&#039;&#039; by setting up a set of, say 5, stages that we want stored. Then, having run the model we can revert back to any of the stages - make a change - and re-run starting from that point. The stages are stored in the project directory with the suffix *000# where # is the time. Stage times are stored with the project - and copied into the daughter project with Save As.&lt;br /&gt;
**Compute more stages, pops up a box asking for a set of times that you want stored then starts computing&lt;br /&gt;
**Request more stages, does the same but does not start computing.&lt;br /&gt;
**Save experiment stages, saves all the current stage files in a subdirectory.&lt;br /&gt;
**Import experiment stages, recovers a saved experiment. This pair of commands help document results and make figures. In addition, when the system runs on a cluster, the results are returned as experimental results to be accessed in this way.&lt;br /&gt;
*&#039;&#039;&#039;What to do when the running system gets stuck&#039;&#039;&#039;. Usually this is because the shape is too regular and cannot initiate a bulge.&lt;br /&gt;
**Interrupt processing using standard Matlab convention - Control-C. Then reset the &#039;&#039;GFtbox&#039;&#039;. Panel:Select Tool:Mesh Editor and slightly modify the Z shape a random amount: click Random.&lt;br /&gt;
==Outputs==&lt;br /&gt;
===Plotting panel===&lt;br /&gt;
To view&lt;br /&gt;
*Specified values, i.e. kapar or a particular morphogen (factor) select from the drop down menu at the top right, and tick the Plot Current Factor checkbox.&lt;br /&gt;
**To autoscale the axes, set the checkbox Panel:Plot Options:Auto axis range. To autozoom as well, click Menus:Plot:Auto zoom and centre.&lt;br /&gt;
**To autoscale the morphogen colours. Panel:Plot Options:Auto color range. To fix the colour range the easiest is to click From Picture and unclick the Auto color range. Alternatively, unclick the Auto color range box and key in values you want - click elsewhere on the GUI to force a replot.&lt;br /&gt;
**To find out the level of a morphogen at a particular point on the canvas. Select Tool:Simulation and select the morphogen of interest (top right pull down) and click on the point of interest. The value at that point will appear in bold just below the Panel:Timescale box.&lt;br /&gt;
*Output variables, e.g. growth rate, tick Plot output value and make selection from the two drop down menus.&lt;br /&gt;
*thickness, tick/untick Menu:Plot:Thickness.&lt;br /&gt;
To show/hide &lt;br /&gt;
*thickness, tick/untick Menu:Plot:Thickness.&lt;br /&gt;
*mesh, tick/untick FE edges.&lt;br /&gt;
*axes, tick/untick Menu:Plot:Show/Hide axes.&amp;lt;br&amp;gt;&lt;br /&gt;
*legend, tick/untick Menu:Plot:Show/Hide legend - also Set legend to choose heading.&amp;lt;br&amp;gt;&lt;br /&gt;
To set/modify values of morphogens (best done in the interaction function)&lt;br /&gt;
* Choose morphogen (list box), Click on Select Tool:Factors, &#039;---&#039; list box to select action and click on appropriate button (Add constant or Add radial, etc).&lt;br /&gt;
* at individual nodes (vertices). Choose morphogen (list box), Click on Select Tool:Factors, &#039;---&#039; list box to select action and click on node.&amp;lt;br&amp;gt;&lt;br /&gt;
To clip the mesh (hide part of the mesh)&lt;br /&gt;
*Tick Clipping plane and choose the plane with Az (azimuth), ti (tilt),  D.&lt;br /&gt;
*Tick Clip and select the region to hide by using morphogen values (click on Mgens button).&lt;br /&gt;
===Snapshots===&lt;br /&gt;
Saved in png format in the project snapshots subdirectory&lt;br /&gt;
*Clicking Take snapshot makes a png file copy of the plotting screen. At the same time a copy of the interaction function (relabelled to have .txt as a suffix) is also made - to help document the snapshot.&lt;br /&gt;
*Publication quality screenshot is made by changing the action of the Snapshot button using Menu:Misc:Hi-res snapshots and choosing a number of dots per inch.&lt;br /&gt;
===Exporting to VRML, OBJ, and FIG format===&lt;br /&gt;
The current mesh can be saved in various formats for use outside GFtbox, using the various Save... commands on the Mesh menu.&lt;br /&gt;
*VRML is a standard format for 3D graphics, for which there are free viewers (for example, [http://www.bitmanagement.com/en/products/interactive-3d-clients BS Contact] or ParallelGraphics&#039; [http://www.cortona3d.com/Try-Buy/Downloads.aspx Cortona 3D Viewer]). It is also a format supported by ZCorp&#039;s 3D printers.&lt;br /&gt;
*OBJ is another standard format for 3D models, and can be imported into most 3D modelling software.&lt;br /&gt;
*FIG is the Matlab format for figure files. These files can be reopened in Matlab.&lt;br /&gt;
*MAT is Matlab&#039;s format for storing arbitrary Matlab objects. This is the only format that saves the entire mesh structure; the other formats save only the current graphical representation.&lt;br /&gt;
===Movies===&lt;br /&gt;
By default, movies are uncompressed, since this is the only format that is sure to play on all machines. However, uncompressed movies can easily be gigabytes in size. Various compressed formats can be selected in the Movie:Codec menu. Several formats are available, although not all of them are supported on all Matlab installations, and where supported, the resulting movies may not play in all movie-playing software. You only need to select a codec once, and it will apply to all subsequently created movies.&lt;br /&gt;
*For recent versions of Matlab (2010 and later) we recommend the Motion JPEG AVI format. (Older versions of Matlab do not provide it.)&lt;br /&gt;
*Flash movie format cannot be created directly, but there is an option to convert completed movies to Flash automatically, with the menu Movie:Convert to Flash. This option requires the ffmpeg program to be present on the Matlab command path.&lt;br /&gt;
*Click Record Movie to start creating a movie. The current picture of the mesh will be the first frame of the movie. The button will change to Stop Movie. Every time a simulation step is performed, the picture of the mesh will be added to the movie file. Click Stop Movie to stop recording and close the movie file. The movie file will also be automatically closed if you close the project, load a new project, or close GFtbox. When the movie file is closed, the final frame will also be stored as a PNG image file, as well as a copy of the interaction function (with extension .txt instead of .m).&lt;br /&gt;
*By default, the name of the movie file is chosen automatically, and consists of the project name followed by a numerical suffix. If you turn off the Auto-name checkbox below the Record Movie button, you will be prompted to given the movie a name. Movies (and the associated snapshots and interaction functions) are stored in a &amp;quot;movies&amp;quot; subdirectory of the project directory.&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
===Web and PowerPoint===&lt;br /&gt;
A copy of the interaction function suitable for inserting in a web page can be created by calling the function webify_interaction_function&lt;br /&gt;
&lt;br /&gt;
with embedded HTML &lt;br /&gt;
Writing web and PowerPoint pages is facilitated by:&lt;br /&gt;
*&#039;&#039;&#039;Output .avi for PowerPoint&#039;&#039;&#039;. Use Movie:Codec:Motion JPEG avi. This does not play properly on PowerPoint 2007 unless you run PowerPoint in 2003 compatibility mode. The movie is saved into the project movies subdirectory together with an image (.png) of the final frame and a copy of the interaction function (renamed .txt - to document the results).&lt;br /&gt;
*Output &#039;&#039;&#039;flash (.flv) movies for web&#039;&#039;&#039;. Select Movie:Convert to Flash. This option requires the [http://www.ffmpeg.org/ ffmpeg] program to be on the current path. The movie is saved to the project directory together with an image (.png) of the first frame (for last frame see above).&lt;br /&gt;
*Output&#039;&#039;&#039; web compatible copy of the interaction function&#039;&#039;&#039; use &#039;&#039;webify_interaction_function.m&#039;&#039; which outputs a txt file with  comments marked up in HTML to appear in green and sections in blue.&lt;br /&gt;
===Files===&lt;br /&gt;
==Simulation==&lt;br /&gt;
&lt;br /&gt;
==Graphical User Interface==&lt;br /&gt;
===Menus===&lt;br /&gt;
===Panels===&lt;br /&gt;
==Interaction function==&lt;br /&gt;
===Functions===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=Useful interaction function programming constructs=&lt;br /&gt;
[[Types of morphogens and factors|Types of morphogens and factors click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|&#039;&#039;&#039;Pre-defined variables&#039;&#039;&#039;|| &lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|dt|| computational step size&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|realtime|| virtual time of the model&lt;br /&gt;
|}&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|&#039;&#039;&#039;Pre-defined functions&#039;&#039;&#039;|| &lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|Steps(m)|| current step number in Mesh m&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|pro(k,id)|| promote by k in regions designated by factor, id (&#039;&#039;pro(k,&#039;&#039;&#039;x&#039;&#039;&#039;)=1+k&#039;&#039;&#039;x&#039;&#039;&#039;&#039;&#039;, i.e. promote by &#039;&#039;k=0&#039;&#039; and the value of &#039;&#039;pro()&#039;&#039; is &#039;&#039;1&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|inh(k,id)|| inhibit by k in regions designated by factor, id (&#039;&#039;inh(k,&#039;&#039;&#039;x&#039;&#039;&#039;)=1/(1+k&#039;&#039;&#039;x&#039;&#039;&#039;)&#039;&#039;, i.e. inhibit by &#039;&#039;k=0&#039;&#039; and the value of &#039;&#039;inh()&#039;&#039; is &#039;&#039;1&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|local_setproperties( m )|| initialise Mesh properties&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|leaf_*( m, ... )|| A large library of functions for manipulating the Mesh data structure, m. All of them are listed in the main Help menu of the GFtbox GUI, both in alphabetical order and categorised by topic.&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The patterns of morphogens A and B are often set up by using logical indexing, e.g.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        id_a_p(m.nodes(:,1) &amp;lt; -0.03) = 1; &lt;br /&gt;
        id_b_p(m.nodes(:,2) &amp;lt; -0.01) = 1; &lt;br /&gt;
where &#039;&#039;id_a_p&#039;&#039; is the vector of values of the A morphogen. &#039;&#039;m.node(:,1)&#039;&#039; refers to the &#039;&#039;x&#039;&#039; coordinates of all nodes (vertices) in the mesh.&amp;lt;br&amp;gt;&lt;br /&gt;
The expression &#039;&#039;(m.nodes(:,1) &amp;lt; -0.03)&#039;&#039; means find all vertices with &#039;&#039;x&#039;&#039; coordinates that are less than -0.03.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Similarly, &#039;&#039;(m.nodes(:,2) &amp;lt; -0.01)&#039;&#039; means find all vertices with &#039;&#039;y&#039;&#039; coordinates that are less than -0.01.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the pattern of polariser (P) is set up by&amp;lt;br&amp;gt;        &lt;br /&gt;
&lt;br /&gt;
        P((m.nodes(:,1) &amp;lt; -0.05) &amp;amp; (m.nodes(:,2) &amp;gt; 0.03)) = 1;&lt;br /&gt;
Where &#039;&#039;(m.nodes(:,1) &amp;lt; -0.05) &amp;amp; (m.nodes(:,2) &amp;gt; 0.03)&#039;&#039; means find all vertices with &#039;&#039;x,y&#039;&#039; coordinates that are less than -0.05 and greater than 0.03 respectively&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Thus the full code describing the model is:&lt;br /&gt;
    if (Steps(m)==0) &amp;amp;&amp;amp; m.globalDynamicProps.doinit  % Initialisation code.&lt;br /&gt;
        id_a_p(m.nodes(:,1) &amp;lt; -0.03) = 1; % setup region for A where identity factor A is represented by id_a_p&lt;br /&gt;
        id_b_p(m.nodes(:,2) &amp;lt; -0.01) = 1; % setup region for B&lt;br /&gt;
    else&lt;br /&gt;
        % @@KRN Growth Regulatory Network&lt;br /&gt;
        kapar_p(:) = id_a_l .* inh(1,id_b_l); % growth rate&lt;br /&gt;
        kaper_p(:) = kapar_p; % isotropic growth&lt;br /&gt;
        kbpar_p(:) = kapar_p; % same on both sides of the sheet&lt;br /&gt;
        kbper_p(:) = kapar_p; % same&lt;br /&gt;
        knor_p(:)  = 0;       % thickness not growing&lt;br /&gt;
    end&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Ready_Reference_Manual&amp;diff=5236</id>
		<title>Ready Reference Manual</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Ready_Reference_Manual&amp;diff=5236"/>
		<updated>2011-07-23T14:57:33Z</updated>

		<summary type="html">&lt;p&gt;Jrk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;&#039;&#039;GFtbox&#039;&#039;&#039;&#039;&#039; For modelling the growth of shapes.  &amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox|&#039;&#039;&#039;&#039;&#039;Details&#039;&#039;&#039;&#039;&#039;: what? How? Where?]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Tutorial pages|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Example pages|&#039;&#039;&#039;&#039;&#039;Examples&#039;&#039;&#039;&#039;&#039;: from publications]]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://sourceforge.net/p/gftbox/ &#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039; from SourceForge]&amp;lt;br&amp;gt;&lt;br /&gt;
=Summary of controls=&lt;br /&gt;
Roll the mouse over any control and information about the control will pop-up.&lt;br /&gt;
==Models==&lt;br /&gt;
* The larger the time step, the fewer iterations will be needed to simulate a given amount of time, but the less accurate the simulation will be. If the time step is too large, diffusion calculations may even become unstable. As a rule of thumb, the time step should be chosen small enough that:&lt;br /&gt;
** The product of growth rate and time step is everywhere less than 0.1 -- that is, no part of the mesh grows by more than 10% in a single iteration.&lt;br /&gt;
** In a single iteration, no part of the mesh rotates by more than 10 degrees.&lt;br /&gt;
** The product of time step and the relative rate of change of any morphogen should be no more than 0.1. The rate of change may derive from the decay rate you have set, or from interactions programmed in the interaction function.&lt;br /&gt;
** If &#039;&#039;k&#039;&#039; is the diffusion constant of a morphogen, &#039;&#039;D&#039;&#039; is the diameter of the mesh, and dt is the time step, &#039;&#039;k dt^2/D&#039;&#039; should be no more than 0.1.&lt;br /&gt;
* Errors in the interaction function will cause the system to stop, and the interaction function will be disabled. The controls in the Interaction Function panel will all turn red to indicate this.&lt;br /&gt;
** To re-enable the interaction function, click the Reset button at the top of the GUI. &lt;br /&gt;
** To find the error&lt;br /&gt;
*** There will be a message on the Matlab console saying in which line of the interaction function it detected an error. Open the interaction function in the Matlab editor, find that line, and set a breakpoint there or shortly before (by clicking in the left margin -- a red dot will appear).&lt;br /&gt;
*** The next time the interaction function runs, Matlab will suspend execution at the breakpoint and go into debug mode. You can then examine the values of variables and step through the code one line at a time in order to discover why the error is happening.&lt;br /&gt;
*** Matlab provides extensive tutorials on how to program and there is much information on the web.&lt;br /&gt;
  &lt;br /&gt;
==Running models==&lt;br /&gt;
&lt;br /&gt;
The normally &#039;&#039;&#039;green Run pane&#039;&#039;&#039;l turns &#039;&#039;&#039;red&#039;&#039;&#039; whilst the model is running.&amp;lt;br&amp;gt;&lt;br /&gt;
A &#039;&#039;&#039;yellow&#039;&#039;&#039; Run panel means that the model is running on a version of the GFtbox that is older than the model itself (look at the interaction header to see our source code version control number for the copy of GFtbox that created the model).&amp;lt;br&amp;gt;&lt;br /&gt;
An interaction function error (or any other error) will stop the model from running. It is then necessary to Reset using the&#039;&#039;&#039; Reset key - which will have turned red&#039;&#039;&#039;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
To run a model from the GUI&lt;br /&gt;
*Step, execute one step of &#039;&#039;dt&#039;&#039;. A whole lot of information pours out at the command console. Sometimes it takes a while to solve the equations. The process is monitored by a series of dots . . . . . . . Further information is provided below the Plotting panel, e.g. Step number, time per iteration, time per finite element, growth, etc.&lt;br /&gt;
*Run for, and enter the number of steps into the box.&lt;br /&gt;
*Run until, and enter the model time to which you want to run.&lt;br /&gt;
*Run to, and enter the multiple of the initial area you want to run to.&lt;br /&gt;
*Stop, stops execution at the end of the current step.&lt;br /&gt;
*Call, makes a call to the interaction function but does NOT grow. This is useful for checking initial conditions - set patterns of morphogens. Having made a Call to the interaction function it is good practice to then Restart the model before running a model.&lt;br /&gt;
*Menu:Stages. &#039;&#039;&#039;We usually run models&#039;&#039;&#039; by setting up a set of, say 5, stages that we want stored. Then, having run the model we can revert back to any of the stages - make a change - and re-run starting from that point. The stages are stored in the project directory with the suffix *000# where # is the time. Stage times are stored with the project - and copied into the daughter project with Save As.&lt;br /&gt;
**Compute more stages, pops up a box asking for a set of times that you want stored then starts computing&lt;br /&gt;
**Request more stages, does the same but does not start computing.&lt;br /&gt;
**Save experiment stages, saves all the current stage files in a subdirectory.&lt;br /&gt;
**Import experiment stages, recovers a saved experiment. This pair of commands help document results and make figures. In addition, when the system runs on a cluster, the results are returned as experimental results to be accessed in this way.&lt;br /&gt;
*&#039;&#039;&#039;What to do when the running system gets stuck&#039;&#039;&#039;. Usually this is because the shape is too regular and cannot initiate a bulge.&lt;br /&gt;
**Interrupt processing using standard Matlab convention - Control-C. Then reset the &#039;&#039;GFtbox&#039;&#039;. Panel:Select Tool:Mesh Editor and slightly modify the Z shape a random amount: click Random.&lt;br /&gt;
==Outputs==&lt;br /&gt;
===Plotting panel===&lt;br /&gt;
To view&lt;br /&gt;
*Specified values, i.e. kapar or a particular morphogen (factor) select from the drop down menu at the top right, and tick the Plot Current Factor checkbox.&lt;br /&gt;
**To autoscale the axes, set the checkbox Panel:Plot Options:Auto axis range. To autozoom as well, click Menus:Plot:Auto zoom and centre.&lt;br /&gt;
**To autoscale the morphogen colours. Panel:Plot Options:Auto color range. To fix the colour range the easiest is to click From Picture and unclick the Auto color range. Alternatively, unclick the Auto color range box and key in values you want - click elsewhere on the GUI to force a replot.&lt;br /&gt;
**To find out the level of a morphogen at a particular point on the canvas. Select Tool:Simulation and select the morphogen of interest (top right pull down) and click on the point of interest. The value at that point will appear in bold just below the Panel:Timescale box.&lt;br /&gt;
*Output variables, e.g. growth rate, tick Plot output value and make selection from the two drop down menus.&lt;br /&gt;
*thickness, tick/untick Menu:Plot:Thickness.&lt;br /&gt;
To show/hide &lt;br /&gt;
*thickness, tick/untick Menu:Plot:Thickness.&lt;br /&gt;
*mesh, tick/untick FE edges.&lt;br /&gt;
*axes, tick/untick Menu:Plot:Show/Hide axes.&amp;lt;br&amp;gt;&lt;br /&gt;
*legend, tick/untick Menu:Plot:Show/Hide legend - also Set legend to choose heading.&amp;lt;br&amp;gt;&lt;br /&gt;
To set/modify values of morphogens (best done in the interaction function)&lt;br /&gt;
* Choose morphogen (list box), Click on Select Tool:Factors, &#039;---&#039; list box to select action and click on appropriate button (Add constant or Add radial, etc).&lt;br /&gt;
* at individual nodes (vertices). Choose morphogen (list box), Click on Select Tool:Factors, &#039;---&#039; list box to select action and click on node.&amp;lt;br&amp;gt;&lt;br /&gt;
To clip the mesh (hide part of the mesh)&lt;br /&gt;
*Tick Clipping plane and choose the plane with Az (azimuth), ti (tilt),  D.&lt;br /&gt;
*Tick Clip and select the region to hide by using morphogen values (click on Mgens button).&lt;br /&gt;
===Snapshots===&lt;br /&gt;
Saved in png format in the project snapshots subdirectory&lt;br /&gt;
*Clicking Take snapshot makes a png file copy of the plotting screen. At the same time a copy of the interaction function (relabelled to have .txt as a suffix) is also made - to help document the snapshot.&lt;br /&gt;
*Publication quality screenshot is made by changing the action of the Snapshot button using Menu:Misc:Hi-res snapshots and choosing a number of dots per inch.&lt;br /&gt;
===Exporting to VRML, OBJ, and FIG format===&lt;br /&gt;
The current mesh can be saved in various formats for use outside GFtbox, using the various Save... commands on the Mesh menu.&lt;br /&gt;
*VRML is a standard format for 3D graphics, for which there are free viewers (for example, [http://www.bitmanagement.com/en/products/interactive-3d-clients BS Contact] or ParallelGraphics&#039; [http://www.cortona3d.com/Try-Buy/Downloads.aspx Cortona 3D Viewer]). It is also a format supported by ZCorp&#039;s 3D printers.&lt;br /&gt;
*OBJ is another standard format for 3D models, and can be imported into most 3D modelling software.&lt;br /&gt;
*FIG is the Matlab format for figure files. These files can be reopened in Matlab.&lt;br /&gt;
*MAT is Matlab&#039;s format for storing arbitrary Matlab objects. This is the only format that saves the entire mesh structure; the other formats save only the current graphical representation.&lt;br /&gt;
===Movies===&lt;br /&gt;
By default, movies are uncompressed, since this is the only format that is sure to play on all machines. However, uncompressed movies can easily be gigabytes in size. Various compressed formats can be selected in the Movie:Codec... menu. Several formats are available, although not all of them are supported on all Matlab installations, and where supported, the resulting movies may not play in all movie-playing software. For recent versions of Matlab (2010 and later) we recommend the Motion JPEG AVI format. You only need to select this option once, and it will apply to all subsequently created movies.&lt;br /&gt;
*Flash movie format cannot be created directly, but there is an option to convert completed movies to Flash automatically, with the menu Movie:Convert to Flash. This option requires the ffmpeg program to be on the Matlab command path.&lt;br /&gt;
*Click Record Movie to start creating a movie. The current picture of the mesh will be the first frame of the movie. The button will change to Stop Movie. Every time a simulation step is performed, the picture of the mesh will be added to the movie file. Click Stop Movie to stop recording and close the movie file. The movie file will also be automatically closed if you close the project, load a new project, or close GFtbox. When the movie file is closed, the final frame will also be stored as a PNG image file, as well as a copy of the interaction function (with extension .txt instead of .m).&lt;br /&gt;
*By default, the name of the movie file is chosen automatically, and consists of the project name followed by a numerical suffix. If you turn off the Auto-name checkbox below the Record Movie button, you will be prompted to given the movie a name. Movies (and the associated snapshots and interaction functions) are stored in a &amp;quot;movies&amp;quot; subdirectory of the project directory.&lt;br /&gt;
===Web and PowerPoint===&lt;br /&gt;
Writing web and PowerPoint pages is facilitated by:&lt;br /&gt;
*&#039;&#039;&#039;Output .avi for PowerPoint&#039;&#039;&#039;. Use Movie:Codec: Motion JPEG avi. This does not play properly on PowerPoint 2007 unless you run PowerPoint in 2003 compatibility mode. The movie is saved into the project movies subdirectory together with an image (.png) of the final frame and a copy of the interaction function (renamed .txt - to document the results).&lt;br /&gt;
*Output &#039;&#039;&#039;flash (.flv) movies for web&#039;&#039;&#039;. Select Movie:Convert to Flash. This option requires the [http://www.ffmpeg.org/ ffmpeg] program to be on the current path. The movie is saved to the project directory together with an image (.png) of the first frame (for last frame see above).&lt;br /&gt;
*Output&#039;&#039;&#039; web compatible copy of the interaction function&#039;&#039;&#039; use &#039;&#039;webify_interaction_function.m&#039;&#039; which outputs a txt file with  comments marked up in HTML to appear in green and sections in blue.&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
===Files===&lt;br /&gt;
==Simulation==&lt;br /&gt;
&lt;br /&gt;
==Graphical User Interface==&lt;br /&gt;
===Menus===&lt;br /&gt;
===Panels===&lt;br /&gt;
==Interaction function==&lt;br /&gt;
===Functions===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=Useful interaction function programming constructs=&lt;br /&gt;
[[Types of morphogens and factors|Types of morphogens and factors click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|&#039;&#039;&#039;Pre-defined variables&#039;&#039;&#039;|| &lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|dt|| computational step size&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|realtime|| virtual time of the model&lt;br /&gt;
|}&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|&#039;&#039;&#039;Pre-defined functions&#039;&#039;&#039;|| &lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|Steps(m)|| current step number in Mesh m&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|pro(k,id)|| promote by k in regions designated by factor, id (&#039;&#039;pro(k,&#039;&#039;&#039;x&#039;&#039;&#039;)=1+k&#039;&#039;&#039;x&#039;&#039;&#039;&#039;&#039;, i.e. promote by &#039;&#039;k=0&#039;&#039; and the value of &#039;&#039;pro()&#039;&#039; is &#039;&#039;1&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|inh(k,id)|| inhibit by k in regions designated by factor, id (&#039;&#039;inh(k,&#039;&#039;&#039;x&#039;&#039;&#039;)=1/(1+k&#039;&#039;&#039;x&#039;&#039;&#039;)&#039;&#039;, i.e. inhibit by &#039;&#039;k=0&#039;&#039; and the value of &#039;&#039;inh()&#039;&#039; is &#039;&#039;1&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|local_setproperties( m )|| initialise Mesh properties&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|leaf_*( m, ... )|| A large library of functions for manipulating the Mesh data structure, m. All of them are listed in the main Help menu of the GFtbox GUI, both in alphabetical order and categorised by topic.&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The patterns of morphogens A and B are often set up by using logical indexing, e.g.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        id_a_p(m.nodes(:,1) &amp;lt; -0.03) = 1; &lt;br /&gt;
        id_b_p(m.nodes(:,2) &amp;lt; -0.01) = 1; &lt;br /&gt;
where &#039;&#039;id_a_p&#039;&#039; is the vector of values of the A morphogen. &#039;&#039;m.node(:,1)&#039;&#039; refers to the &#039;&#039;x&#039;&#039; coordinates of all nodes (vertices) in the mesh.&amp;lt;br&amp;gt;&lt;br /&gt;
The expression &#039;&#039;(m.nodes(:,1) &amp;lt; -0.03)&#039;&#039; means find all vertices with &#039;&#039;x&#039;&#039; coordinates that are less than -0.03.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Similarly, &#039;&#039;(m.nodes(:,2) &amp;lt; -0.01)&#039;&#039; means find all vertices with &#039;&#039;y&#039;&#039; coordinates that are less than -0.01.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the pattern of polariser (P) is set up by&amp;lt;br&amp;gt;        &lt;br /&gt;
&lt;br /&gt;
        P((m.nodes(:,1) &amp;lt; -0.05) &amp;amp; (m.nodes(:,2) &amp;gt; 0.03)) = 1;&lt;br /&gt;
Where &#039;&#039;(m.nodes(:,1) &amp;lt; -0.05) &amp;amp; (m.nodes(:,2) &amp;gt; 0.03)&#039;&#039; means find all vertices with &#039;&#039;x,y&#039;&#039; coordinates that are less than -0.05 and greater than 0.03 respectively&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Thus the full code describing the model is:&lt;br /&gt;
    if (Steps(m)==0) &amp;amp;&amp;amp; m.globalDynamicProps.doinit  % Initialisation code.&lt;br /&gt;
        id_a_p(m.nodes(:,1) &amp;lt; -0.03) = 1; % setup region for A where identity factor A is represented by id_a_p&lt;br /&gt;
        id_b_p(m.nodes(:,2) &amp;lt; -0.01) = 1; % setup region for B&lt;br /&gt;
    else&lt;br /&gt;
        % @@KRN Growth Regulatory Network&lt;br /&gt;
        kapar_p(:) = id_a_l .* inh(1,id_b_l); % growth rate&lt;br /&gt;
        kaper_p(:) = kapar_p; % isotropic growth&lt;br /&gt;
        kbpar_p(:) = kapar_p; % same on both sides of the sheet&lt;br /&gt;
        kbper_p(:) = kapar_p; % same&lt;br /&gt;
        knor_p(:)  = 0;       % thickness not growing&lt;br /&gt;
    end&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Main_Page&amp;diff=4117</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Main_Page&amp;diff=4117"/>
		<updated>2011-07-21T15:26:18Z</updated>

		<summary type="html">&lt;p&gt;Jrk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__ &lt;br /&gt;
=Bangham Lab - Home=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: DarkGreen&amp;quot;&amp;gt;&#039;&#039;&#039;Current activity: a collaboration&#039;&#039;&#039; with the [http://rico-coen.jic.ac.uk/index.php/Main_Page CoenLab] with the aim of understanding how patterns of gene activity in biological organs influence the developing shape. The BanghamLab is focussed on the conceptual underpinning: concepts captured in computational growth models, experimental data visualisation and analysis.&amp;lt;/span&amp;gt;&lt;br /&gt;
=&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;Computational biology toolboxes=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;GFtbox==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;GPT_thumbnail2.png|120px|GFtbox&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|&lt;br /&gt;
For modelling the growth of shapes.  &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox|&#039;&#039;&#039;&#039;&#039;Details&#039;&#039;&#039;&#039;&#039;: what? How? Where?]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Tutorial pages|&#039;&#039;&#039;&#039;&#039;Tutorials&#039;&#039;&#039;&#039;&#039;: from the beginning]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Workshop pages|&#039;&#039;&#039;&#039;&#039;Workshop&#039;&#039;&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Example pages|&#039;&#039;&#039;&#039;&#039;Examples&#039;&#039;&#039;&#039;&#039;: from publications]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[https://sourceforge.net/p/gftbox/ &#039;&#039;&#039;&#039;&#039;Download&#039;&#039;&#039;&#039;&#039; from SourceForge]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Ready Reference Manual|&#039;&#039;&#039;&#039;&#039;Ready Reference&#039;&#039;&#039;&#039;&#039; Manual]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(PC, Mac, Linux, uses Matlab&amp;lt;br&amp;gt;no Mathworks toolboxes needed&amp;lt;br&amp;gt;[http://www.mathworks.com/products/matlab/tryit.html Matlab 30 day free trial] and &amp;lt;br&amp;gt;[http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Comment on results. [http://www.the-scientist.com/2011/4/1/18/1/ R. Grant (2011) &#039;Taking Shape&#039;  TheScientist, 25:18] &lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  &#039;&#039;GFtbox&#039;&#039; is an implementation of the Growing Polarised Tissue Framework for understanding and modelling the relationship between gene activity and the growth of shapes such leaves, flowers and animal embryos.&lt;br /&gt;
A paper describing the method and the software has appeared in [http://www.ploscompbiol.org/article/info:doi/10.1371/journal.pcbi.1002071 PLoS Computational Biology]. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The GPT-framework was used to capture an understanding of (to model) the [http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1000537 growing Snapdragon flower]. The Snapdragon model was validated by [http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1000538 comparing the results with other mutant and transgenic flowers.]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The icon shows an asymmetrical outgrowth. Conceptually, it is specifed by two independent patterns under genetic control: a pattern of growth and a pattern of organisers. The outgrowth arises from a region of extra overall growth. Growth is aligned along axes set by two interacting systems. Organisers at the ends of the mesh create a lengthwise gradient. This gradient interacts with the second due to an organiser that generates polariser in a region that becomes the tip of the outgrowth. &lt;br /&gt;
|}&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:DarkGreen;&amp;quot;&amp;gt;VolViewer==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;10%&amp;quot;| &amp;lt;imgicon&amp;gt;VolViewer-logo.png|120px|VolViewer&amp;lt;/imgicon&amp;gt; &lt;br /&gt;
|width=&amp;quot;40%&amp;quot;|For viewing and measuring biological images. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;[[VolViewer|&#039;&#039;Details&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Windows, Mac, Linux)&lt;br /&gt;
|width=&amp;quot;50%&amp;quot;|  VolViewer uses [http://www.opengl.org/ OpenGL] and [http://qt.nokia.com/products/ Qt] to provide a user friendly application to interactively explore and quantify multi-dimensional biological images. It has been successfully used in our lab to explore and quantify confocal microscopy and  optical projection tomography images. It is open-source and is also compatible with the Open Microscopy Environment ([http://openmicroscopy.org/site OME]).&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Types_of_morphogens_and_factors&amp;diff=5098</id>
		<title>Types of morphogens and factors</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Types_of_morphogens_and_factors&amp;diff=5098"/>
		<updated>2011-06-24T17:08:37Z</updated>

		<summary type="html">&lt;p&gt;Jrk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
[[GFtbox Tutorial pages| Back to Tutorial pages]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Ready Reference Manual|Ready Reference Manual]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===Notes on Matlab syntax===&lt;br /&gt;
*Scalar: a single value&lt;br /&gt;
*Vector: a column of values - one value of each node (vertex) in the mesh.&lt;br /&gt;
In an interaction function a variable, lets use a variable called &#039;&#039;id_a_p&#039;&#039;. This is a vector with one element for each node (vertex). &lt;br /&gt;
*&#039;&#039;id_a_p(:)=0&#039;&#039;;&lt;br /&gt;
sets the value of all the nodes to 0 ( the colon : means all). &lt;br /&gt;
*&#039;&#039;id_a_p(1)=3&#039;&#039;;&lt;br /&gt;
sets the value of node 1 to 3. Actually, we rarely know where the nodes are - and we don&#039;t care. If we want to set up a pattern of nodes we usually refer to them by their spatial position. Thus, we could find all nodes that have an &#039;&#039;x&#039;&#039; value that is equal to the minimum &#039;&#039;x&#039;&#039; value in the mesh. &lt;br /&gt;
*&#039;&#039;minx=min(m.nodes(:,1));&#039;&#039;&lt;br /&gt;
sets &#039;&#039;minx&#039;&#039; to the minimum &#039;&#039;x&#039;&#039; and the expression&#039;&#039; (m.nodes(:,1)==minx)&#039;&#039; finds all nodes with an &#039;&#039;x&#039;&#039; value that equals the minimum &#039;&#039;x&#039;&#039; value. Thus,&lt;br /&gt;
*&#039;&#039;id_a_p(m.nodes(:,1)==minx)=3;&#039;&#039;&lt;br /&gt;
sets &#039;&#039;id_a_p&#039;&#039; at the selected nodes to the value 3.&lt;br /&gt;
&lt;br /&gt;
=&#039;&#039;GFtbox&#039;&#039; Growth factor naming conventions=&lt;br /&gt;
&lt;br /&gt;
==Prefix== &lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;30&amp;quot;| id_ || &#039;&#039;&#039;identity&#039;&#039;&#039; factors (non-diffusible). Identity factors can be labelled as on the A or B side (ida_, idb_)&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;30&amp;quot;|  s_  || &#039;&#039;&#039;signalling&#039;&#039;&#039; factors (diffuse). Polariser level is unique and has a particular name &#039;&#039;P&#039;&#039;.&lt;br /&gt;
|-&lt;br /&gt;
| width=&amp;quot;30&amp;quot;|  v_ || visualising labels (e.g. theta, bend, kpar, other labels)&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| width=&amp;quot;30&amp;quot;|  f_ || finite element manipulation (e.g. seams, making holes)&lt;br /&gt;
|}&lt;br /&gt;
==Suffix==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
| width=&amp;quot;30&amp;quot;| _p || vector representing &#039;&#039;&#039;promotor&#039;&#039;&#039;: how much the expression of the factor is being promoted in the model at every node (vertex) in the mesh.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
| width=&amp;quot;30&amp;quot;| _l || vector representing the &#039;&#039;&#039;level&#039;&#039;&#039; of morphogen, i.e. *_p times *_a at every node in the mesh. This gets updated at the end of the interaction function and might change according to growth or mutation, see *_a.  &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
| width=&amp;quot;30&amp;quot;| _i || scalar index into the main data structure morphogen field, m.morphogens.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
| width=&amp;quot;30&amp;quot;| _a || scalar specifying activity: by default it is 1 and if the factor is mutated or silenced then it is 0. However, it can be in the range [0,...,1].&lt;br /&gt;
|}&lt;br /&gt;
=Standard morphogens=&lt;br /&gt;
==Specifying growth==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
| width=&amp;quot;200&amp;quot;|&#039;&#039; &#039;&#039;&#039;kapar_p&#039;&#039;&#039;, kapar_a, kapar_l&#039;&#039; || vector that specifies growth on the &#039;A&#039; side &#039;&#039;&#039;parallel&#039;&#039;&#039; to the polariser and in the plane of the tissue at every node.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
| width=&amp;quot;200&amp;quot;| &#039;&#039;&#039;&#039;&#039;kbpar_p&#039;&#039;&#039;, kbpar_a, kbpar_l&#039;&#039; || vector that specifies growth on the &#039;B&#039; side parallel to the polariser and in the plane of the tissue at every node.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
| width=&amp;quot;200&amp;quot;| &#039;&#039;&#039;&#039;&#039;kaper_p&#039;&#039;&#039;, kaper_a, kaper_l&#039;&#039; || vector that specifies growth on the &#039;A&#039; side &#039;&#039;&#039;perpendicular&#039;&#039;&#039; to the polariser and in the plane of the tissue at every node.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
| width=&amp;quot;200&amp;quot;| &#039;&#039;&#039;&#039;&#039;kbper_p&#039;&#039;&#039;, kbper_a, kbper_l&#039;&#039; || vector that specifies growth on the &#039;B&#039; side perpendicular to the polariser and in the plane of the tissue at every node.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
| width=&amp;quot;200&amp;quot;| &#039;&#039;&#039;&#039;&#039;knor_p&#039;&#039;&#039;, knor_a, knor_l&#039;&#039; || vector that specifies growth &#039;&#039;&#039;normal&#039;&#039;&#039; to the plane of the tissue (i.e. thickness) at every node.&lt;br /&gt;
|}&lt;br /&gt;
==Controlling growth==&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
| width=&amp;quot;200&amp;quot;| &#039;&#039;&#039;&#039;&#039;P&#039;&#039;&#039;&#039;&#039; || vector that specifies &#039;&#039;&#039;Polariser level&#039;&#039;&#039; at every node.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
| width=&amp;quot;200&amp;quot;| &#039;&#039;strainret_p, strainret_a, strainret_l&#039;&#039; || vector that specifies strain retention at every node. It is a number between 0 (no strain retention, default) and 1 (full strain retention). &lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
| width=&amp;quot;200&amp;quot;| &#039;&#039;arrest_p,arrest_a,arrest_l&#039;&#039; || vector that specifies an overall inhibition of growth at every node of the mesh. It is a number between 0 (no overall inhibition of growth, default) and 1 (fully inhibited).&lt;br /&gt;
|}&lt;br /&gt;
=User (your) morphogens=&lt;br /&gt;
Within the interaction function all the usual Matlab variables and types are available. Variables that are to be visible from the GUI must follow certain conventions and be declared within the GUI, see below.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Note to programmers: we could have produced a class library to handle the different types of variable - identity factors, signals, etc. However, in our view it is too early in the development of software for modelling the growth of biological tissues to be confident of what will be required. Too build a class library now would be to build a conceptual straightjacket that would inhibit further research.)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Identity factors, signalling factors, viewable variables==&lt;br /&gt;
Growth is all about patterns of growth factors interacting in space (spatially) and over time (temporally). It is, therefore, essential to be able to view them on the mesh. This is the main purpose of the graphical user interface (GUI).  Such variables are created (declared) from the GUI as follows. They have a name e.g. &#039;&#039;id_plusorg&#039;&#039;. This is how the variable will be known as a case insensitive string (according to Matlab conventions, &#039;id_plusorg&#039; or &#039;ID_PLUSORG&#039;). Within the interaction function this name will be lowercase and have a suffix e.g. &#039;&#039;id_plusorg_p&#039;&#039; - see above.&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;300px&amp;quot;|&#039;&#039;&#039;Adding (declaring) variables&#039;&#039;&#039; that are visible in the GUI. &#039;&#039;Select Tool:Factors&#039;&#039; makes the &#039;&#039;Morphogen&#039;&#039; Panel visible. We add a two new morphogens, &#039;&#039;id_plusorg&#039;&#039; and &#039;&#039;id_negorg&#039;&#039;. Select a type (in this case &#039;&#039;id_&#039;&#039;), key in the name, press Enter and the name will be added to a list. Finally, create the morphogens and exit the dialogue. Select a colour for each, &#039;&#039;Panel: Morphogen:Color. pos.&#039;&#039; and &#039;&#039;Color. neg&#039;&#039; (for negative values).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &#039;&#039;&#039;Save&#039;&#039;&#039; to make sure they are saved in the Mesh. Pressing &#039;&#039;Panel:Interaction Function:Edit&#039;&#039; &#039;&#039;&#039;will reload the editor&#039;&#039;&#039; with a revised copy of the interaction function. The new copy will retain any edits that you have made already together with the new variables.&lt;br /&gt;
|width=&amp;quot;500px&amp;quot;|[[File:AddingMorphogens.png|500px|GFtbox interface adding morphogens]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Ready_Reference_Manual&amp;diff=5230</id>
		<title>Ready Reference Manual</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Ready_Reference_Manual&amp;diff=5230"/>
		<updated>2011-06-24T17:06:29Z</updated>

		<summary type="html">&lt;p&gt;Jrk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Summary of controls=&lt;br /&gt;
Roll the mouse over any control and information about the control will pop-up.&lt;br /&gt;
==Models==&lt;br /&gt;
* The larger the time step, the fewer iterations will be needed to simulate a given amount of time, but the less accurate the simulation will be. If the time step is too large, diffusion calculations may even become unstable. As a rule of thumb, the time step should be chosen small enough that:&lt;br /&gt;
** The product of growth rate and time step is everywhere less than 0.1 -- that is, no part of the mesh grows by more than 10% in a single iteration.&lt;br /&gt;
** In a single iteration, no part of the mesh rotates by more than 10 degrees.&lt;br /&gt;
** The product of time step and the relative rate of change of any morphogen should be no more than 0.1. The rate of change may derive from the decay rate you have set, or from interactions programmed in the interaction function.&lt;br /&gt;
** If k is the diffusion constant of a morphogen, D is the diameter of the mesh, and dt is the time step, &amp;lt;math&amp;gt;k dt^2/D&amp;lt;/math&amp;gt; should be no more than 0.1.&lt;br /&gt;
* Errors in the interaction function will cause the system to stop, and the interaction function will be disabled. The controls in the Interaction Function panel will all turn red to indicate this.&lt;br /&gt;
** To re-enable the interaction function, click the Reset button at the top of the GUI. &lt;br /&gt;
** To find the error&lt;br /&gt;
*** There will be a message on the Matlab console saying in which line of the interaction function it detected an error. Open the interaction function in the Matlab editor, find that line, and set a breakpoint there or shortly before (by clicking in the left margin -- a red dot will appear).&lt;br /&gt;
*** The next time the interaction function runs, Matlab will suspend execution at the breakpoint and go into debug mode. You can then examine the values of variables and step through the code one line at a time in order to discover why the error is happening.&lt;br /&gt;
*** Matlab provides extensive tutorials on how to program and there is much information on the web.&lt;br /&gt;
  &lt;br /&gt;
==Running models==&lt;br /&gt;
&lt;br /&gt;
The normally &#039;&#039;&#039;green Run pane&#039;&#039;&#039;l turns &#039;&#039;&#039;red&#039;&#039;&#039; whilst the model is running.&amp;lt;br&amp;gt;&lt;br /&gt;
A &#039;&#039;&#039;yellow&#039;&#039;&#039; Run panel means that the model is running on a version of the GFtbox that is older than the model itself (look at the interaction header to see our source code version control number for the copy of GFtbox that created the model).&amp;lt;br&amp;gt;&lt;br /&gt;
An interaction function error (or any other error) will stop the model from running. It is then necessary to Reset using the&#039;&#039;&#039; Reset key - which will have turned red&#039;&#039;&#039;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
To run a model from the GUI&lt;br /&gt;
*Step, execute one step of &#039;&#039;dt&#039;&#039;. A whole lot of information pours out at the command console. Sometimes it takes a while to solve the equations. The process is monitored by a series of dots . . . . . . . Further information is provided below the Plotting panel, e.g. Step number, time per iteration, time per finite element, growth, etc.&lt;br /&gt;
*Run for, and enter the number of steps into the box.&lt;br /&gt;
*Run until, and enter the model time to which you want to run.&lt;br /&gt;
*Run to, and enter the multiple of the initial area you want to run to.&lt;br /&gt;
*Stop, stops execution at the end of the current step.&lt;br /&gt;
*Call, makes a call to the interaction function but does NOT grow. This is useful for checking initial conditions - set patterns of morphogens. Having made a Call to the interaction function it is good practice to then Restart the model before running a model.&lt;br /&gt;
*Menu:Stages. &#039;&#039;&#039;We usually run models&#039;&#039;&#039; by setting up a set of, say 5, stages that we want stored. Then, having run the model we can revert back to any of the stages - make a change - and re-run starting from that point. The stages are stored in the project directory with the suffix *000# where # is the time. Stage times are stored with the project - and copied into the daughter project with Save As.&lt;br /&gt;
**Compute more stages, pops up a box asking for a set of times that you want stored then starts computing&lt;br /&gt;
**Request more stages, does the same but does not start computing.&lt;br /&gt;
**Save experiment stages, saves all the current stage files in a subdirectory.&lt;br /&gt;
**Import experiment stages, recovers a saved experiment. This pair of commands help document results and make figures. In addition, when the system runs on a cluster, the results are returned as experimental results to be accessed in this way.&lt;br /&gt;
==Outputs==&lt;br /&gt;
===Plotting panel===&lt;br /&gt;
To view&lt;br /&gt;
*Specified values, i.e. kapar or a particular morphogen (factor) select from the drop down menu at the top right, and tick the Plot Current Factor checkbox.&lt;br /&gt;
**To autoscale the axes, set the checkbox Panel:Plot Options:Auto axis range. To autozoom as well, click Menus:Plot:Auto zoom and centre.&lt;br /&gt;
**To autoscale the morphogen colours. Panel:Plot Options:Auto color range. To fix the colour range the easiest is to click From Picture and unclick the Auto color range. Alternatively, unclick the Auto color range box and key in values you want - click elsewhere on the GUI to force a replot.&lt;br /&gt;
**To find out the level of a morphogen at a particular point on the canvas. Select Tool:Simulation and select the morphogen of interest (top right pull down) and click on the point of interest. The value at that point will appear in bold just below the Panel:Timescale box.&lt;br /&gt;
*Output variables, e.g. growth rate, tick Plot output value and make selection from the two drop down menus.&lt;br /&gt;
*thickness, tick/untick Menu:Plot:Thickness.&lt;br /&gt;
To show/hide &lt;br /&gt;
*thickness, tick/untick Menu:Plot:Thickness.&lt;br /&gt;
*mesh, tick/untick FE edges.&lt;br /&gt;
*axes, tick/untick Menu:Plot:Show/Hide axes.&amp;lt;br&amp;gt;&lt;br /&gt;
*legend, tick/untick Menu:Plot:Show/Hide legend - also Set legend to choose heading.&amp;lt;br&amp;gt;&lt;br /&gt;
To set/modify values of morphogens (best done in the interaction function)&lt;br /&gt;
* Choose morphogen (list box), Click on Select Tool:Factors, &#039;---&#039; list box to select action and click on appropriate button (Add constant or Add radial, etc).&lt;br /&gt;
* at individual nodes (vertices). Choose morphogen (list box), Click on Select Tool:Factors, &#039;---&#039; list box to select action and click on node.&amp;lt;br&amp;gt;&lt;br /&gt;
To clip the mesh (hide part of the mesh)&lt;br /&gt;
*Tick Clipping plane and choose the plane with Az (azimuth), ti (tilt),  D.&lt;br /&gt;
*Tick Clip and select the region to hide by using morphogen values (click on Mgens button).&lt;br /&gt;
===Snapshots===&lt;br /&gt;
Saved in png format in the project snapshots subdirectory&lt;br /&gt;
*Clicking Take snapshot makes a png file copy of the plotting screen. At the same time a copy of the interaction function (relabelled to have .txt as a suffix) is also made - to help document the snapshot.&lt;br /&gt;
*Publication quality screenshot is made by changing the action of the Snapshot button using Menu:Misc:Hi-res snapshots and choosing a number of dots per inch.&lt;br /&gt;
===VRML, OBJ, FIG===&lt;br /&gt;
To export the current mesh&lt;br /&gt;
*VRML, to interactively view the mesh using a web browser export the mesh as a VRML file, Menu:Mesh:Save VRML. We use such files to make 3D prints.&lt;br /&gt;
*FIG, for Matlab figure files.&lt;br /&gt;
===Movies===&lt;br /&gt;
By default, movies are uncompressed, since this is the only format that is sure to play on all machines. However, uncompressed movies can easily be gigabytes in size. Various compressed formats can be selected in the Movie:Codec... menu. Several formats are available, although not all of them are supported on all Matlab installations, and where supported, the resulting movies may not play in all movie-playing software. For recent versions of Matlab (2010 and later) we recommend the Motion JPEG AVI format. You only need to select this option once, and it will apply to all subsequently created movies.&lt;br /&gt;
*Flash movie format cannot be created directly, but there is an option to convert completed movies to Flash automatically, with the menu Movie:Convert to Flash. This option requires the ffmpeg program to be on the Matlab command path.&lt;br /&gt;
*Click Record Movie to start creating a movie. The current picture of the mesh will be the first frame of the movie. The button will change to Stop Movie. Every time a simulation step is performed, the picture of the mesh will be added to the movie file. Click Stop Movie to stop recording and close the movie file. The movie file will also be automatically closed if you close the project, load a new project, or close GFtbox. When the movie file is closed, the final frame will also be stored as a PNG image file, as well as a copy of the interaction function (with extension .txt instead of .m).&lt;br /&gt;
*By default, the name of the movie file is chosen automatically, and consists of the project name followed by a numerical suffix. If you turn off the Auto-name checkbox below the Record Movie button, you will be prompted to given the movie a name. Movies (and the associated snapshots and interaction functions) are stored in a &amp;quot;movies&amp;quot; subdirectory of the project directory.&lt;br /&gt;
===Web and PowerPoint===&lt;br /&gt;
Writing web and PowerPoint pages is facilitated by:&lt;br /&gt;
*&#039;&#039;&#039;Output .avi for PowerPoint&#039;&#039;&#039;. Use Movie:Codec: Motion JPEG avi. This does not play properly on PowerPoint 2007 unless you run PowerPoint in 2003 compatibility mode. The movie is saved into the project movies subdirectory together with an image (.png) of the final frame and a copy of the interaction function (renamed .txt - to document the results).&lt;br /&gt;
*Output &#039;&#039;&#039;flash (.flv) movies for web&#039;&#039;&#039;. Select Movie:Convert to Flash. This option requires the [http://www.ffmpeg.org/ ffmpeg] program to be on the current path. The movie is saved to the project directory together with an image (.png) of the first frame (for last frame see above).&lt;br /&gt;
*Output&#039;&#039;&#039; web compatible copy of the interaction function&#039;&#039;&#039; use &#039;&#039;webify_interaction_function.m&#039;&#039; which outputs a txt file with  comments marked up in HTML to appear in green and sections in blue.&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
===Files===&lt;br /&gt;
==Simulation==&lt;br /&gt;
&lt;br /&gt;
==Graphical User Interface==&lt;br /&gt;
===Menus===&lt;br /&gt;
===Panels===&lt;br /&gt;
==Interaction function==&lt;br /&gt;
===Functions===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=Useful interaction function programming constructs=&lt;br /&gt;
[[Types of morphogens and factors|Types of morphogens and factors click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|&#039;&#039;&#039;Pre-defined variables&#039;&#039;&#039;|| &lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|dt|| computational step size&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|realtime|| virtual time of the model&lt;br /&gt;
|}&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|&#039;&#039;&#039;Pre-defined functions&#039;&#039;&#039;|| &lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|Steps(m)|| current step number in Mesh m&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|pro(k,id)|| promote by k in regions designated by factor, id (&#039;&#039;pro(k,&#039;&#039;&#039;x&#039;&#039;&#039;)=1+k&#039;&#039;&#039;x&#039;&#039;&#039;&#039;&#039;, i.e. promote by &#039;&#039;k=0&#039;&#039; and the value of &#039;&#039;pro()&#039;&#039; is &#039;&#039;1&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|inh(k,id)|| inhibit by k in regions designated by factor, id (&#039;&#039;inh(k,&#039;&#039;&#039;x&#039;&#039;&#039;)=1/(1+k&#039;&#039;&#039;x&#039;&#039;&#039;)&#039;&#039;, i.e. inhibit by &#039;&#039;k=0&#039;&#039; and the value of &#039;&#039;inh()&#039;&#039; is &#039;&#039;1&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|local_setproperties( m )|| initialise Mesh properties&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|leaf_*( m, ... )|| A large library of functions for manipulating the Mesh data structure, m. All of them are listed in the main Help menu of the GFtbox GUI, both in alphabetical order and categorised by topic.&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The patterns of morphogens A and B are often set up by using logical indexing, e.g.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        id_a_p(m.nodes(:,1) &amp;lt; -0.03) = 1; &lt;br /&gt;
        id_b_p(m.nodes(:,2) &amp;lt; -0.01) = 1; &lt;br /&gt;
where &#039;&#039;id_a_p&#039;&#039; is the vector of values of the A morphogen. &#039;&#039;m.node(:,1)&#039;&#039; refers to the &#039;&#039;x&#039;&#039; coordinates of all nodes (vertices) in the mesh.&amp;lt;br&amp;gt;&lt;br /&gt;
The expression &#039;&#039;(m.nodes(:,1) &amp;lt; -0.03)&#039;&#039; means find all vertices with &#039;&#039;x&#039;&#039; coordinates that are less than -0.03.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Similarly, &#039;&#039;(m.nodes(:,2) &amp;lt; -0.01)&#039;&#039; means find all vertices with &#039;&#039;y&#039;&#039; coordinates that are less than -0.01.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the pattern of polariser (P) is set up by&amp;lt;br&amp;gt;        &lt;br /&gt;
&lt;br /&gt;
        P((m.nodes(:,1) &amp;lt; -0.05) &amp;amp; (m.nodes(:,2) &amp;gt; 0.03)) = 1;&lt;br /&gt;
Where &#039;&#039;(m.nodes(:,1) &amp;lt; -0.05) &amp;amp; (m.nodes(:,2) &amp;gt; 0.03)&#039;&#039; means find all vertices with &#039;&#039;x,y&#039;&#039; coordinates that are less than -0.05 and greater than 0.03 respectively&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Thus the full code describing the model is:&lt;br /&gt;
    if (Steps(m)==0) &amp;amp;&amp;amp; m.globalDynamicProps.doinit  % Initialisation code.&lt;br /&gt;
        id_a_p(m.nodes(:,1) &amp;lt; -0.03) = 1; % setup region for A where identity factor A is represented by id_a_p&lt;br /&gt;
        id_b_p(m.nodes(:,2) &amp;lt; -0.01) = 1; % setup region for B&lt;br /&gt;
    else&lt;br /&gt;
        % @@KRN Growth Regulatory Network&lt;br /&gt;
        kapar_p(:) = id_a_l .* inh(1,id_b_l); % growth rate&lt;br /&gt;
        kaper_p(:) = kapar_p; % isotropic growth&lt;br /&gt;
        kbpar_p(:) = kapar_p; % same on both sides of the sheet&lt;br /&gt;
        kbper_p(:) = kapar_p; % same&lt;br /&gt;
        knor_p(:)  = 0;       % thickness not growing&lt;br /&gt;
    end&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Ready_Reference_Manual&amp;diff=5231</id>
		<title>Ready Reference Manual</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Ready_Reference_Manual&amp;diff=5231"/>
		<updated>2011-06-24T16:37:11Z</updated>

		<summary type="html">&lt;p&gt;Jrk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Summary of controls=&lt;br /&gt;
Roll the mouse over any control and information about the control will pop-up.&lt;br /&gt;
==Models==&lt;br /&gt;
* The larger the time step, the fewer iterations will be needed to simulate a given amount of time, but the less accurate the simulation will be. If the time step is too large, diffusion calculations may even become unstable. As a rule of thumb, the time step should be chosen small enough that:&lt;br /&gt;
** The product of growth rate and time step is everywhere less than 0.1 -- that is, no part of the mesh grows by more than 10% in a single iteration.&lt;br /&gt;
** In a single iteration, no part of the mesh rotates by more than 10 degrees.&lt;br /&gt;
** The product of time step and the relative rate of change of any morphogen should be no more than 0.1. The rate of change may derive from the decay rate you have set, or from interactions programmed in the interaction function.&lt;br /&gt;
** If k is the diffusion constant of a morphogen, D is the diameter of the mesh, and dt is the time step, &amp;lt;math&amp;gt;k dt^2/D&amp;lt;/math&amp;gt; should be no more than 0.1.&lt;br /&gt;
* Errors in the interaction function will cause the system to stop, and the interaction function will be disabled. The controls in the Interaction Function panel will all turn red to indicate this.&lt;br /&gt;
** To re-enable the interaction function, click the Reset button at the top of the GUI. &lt;br /&gt;
** To find the error&lt;br /&gt;
*** There will be a message on the Matlab console saying in which line of the interaction function it detected an error. Open the interaction function in the Matlab editor, find that line, and set a breakpoint there or shortly before (by clicking in the left margin -- a red dot will appear).&lt;br /&gt;
*** The next time the interaction function runs, Matlab will suspend execution at the breakpoint and go into debug mode. You can then examine the values of variables and step through the code one line at a time in order to discover why the error is happening.&lt;br /&gt;
*** Matlab provides extensive tutorials on how to program and there is much information on the web.&lt;br /&gt;
  &lt;br /&gt;
==Running models==&lt;br /&gt;
&lt;br /&gt;
The normally &#039;&#039;&#039;green Run pane&#039;&#039;&#039;l turns &#039;&#039;&#039;red&#039;&#039;&#039; whilst the model is running.&amp;lt;br&amp;gt;&lt;br /&gt;
A &#039;&#039;&#039;yellow&#039;&#039;&#039; Run panel means that the model is running on a version of the GFtbox that is older than the model itself (look at the interaction header to see our source code version control number for the copy of GFtbox that created the model).&amp;lt;br&amp;gt;&lt;br /&gt;
An interaction function error (or any other error) will stop the model from running. It is then necessary to Reset using the&#039;&#039;&#039; Reset key - which will have turned red&#039;&#039;&#039;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
To run a model from the GUI&lt;br /&gt;
*Step, execute one step of &#039;&#039;dt&#039;&#039;. A whole lot of information pours out at the command console. Sometimes it takes a while to solve the equations. The process is monitored by a series of dots . . . . . . . Further information is provided below the Plotting panel, e.g. Step number, time per iteration, time per finite element, growth, etc.&lt;br /&gt;
*Run for, and enter the number of steps into the box.&lt;br /&gt;
*Run until, and enter the model time to which you want to run.&lt;br /&gt;
*Run to, and enter the multiple of the initial area you want to run to.&lt;br /&gt;
*Stop, stops execution at the end of the current step.&lt;br /&gt;
*Call, makes a call to the interaction function but does NOT grow. This is useful for checking initial conditions - set patterns of morphogens. Having made a Call to the interaction function it is good practice to then Restart the model before running a model.&lt;br /&gt;
*Menu:Stages. &#039;&#039;&#039;We usually run models&#039;&#039;&#039; by setting up a set of, say 5, stages that we want stored. Then, having run the model we can revert back to any of the stages - make a change - and re-run starting from that point. The stages are stored in the project directory with the suffix *000# where # is the time. Stage times are stored with the project - and copied into the daughter project with Save As.&lt;br /&gt;
**Compute more stages, pops up a box asking for a set of times that you want stored then starts computing&lt;br /&gt;
**Request more stages, does the same but does not start computing.&lt;br /&gt;
**Save experiment stages, saves all the current stage files in a subdirectory.&lt;br /&gt;
**Import experiment stages, recovers a saved experiment. This pair of commands help document results and make figures. In addition, when the system runs on a cluster, the results are returned as experimental results to be accessed in this way.&lt;br /&gt;
==Outputs==&lt;br /&gt;
===Plotting panel===&lt;br /&gt;
To view&lt;br /&gt;
*Specified values, i.e. kapar or a particular morphogen (factor) select from the drop down menu at the top right, and tick the Plot Current Factor checkbox.&lt;br /&gt;
**To autoscale the axes, set the checkbox Panel:Plot Options:Auto axis range. To autozoom as well, click Menus:Plot:Auto zoom and centre.&lt;br /&gt;
**To autoscale the morphogen colours. Panel:Plot Options:Auto color range. To fix the colour range the easiest is to click From Picture and unclick the Auto color range. Alternatively, unclick the Auto color range box and key in values you want - click elsewhere on the GUI to force a replot.&lt;br /&gt;
**To find out the level of a morphogen at a particular point on the canvas. Select Tool:Simulation and select the morphogen of interest (top right pull down) and click on the point of interest. The value at that point will appear in bold just below the Panel:Timescale box.&lt;br /&gt;
*Output variables, e.g. growth rate, tick Plot output value and make selection from the two drop down menus.&lt;br /&gt;
*thickness, tick/untick Menu:Plot:Thickness.&lt;br /&gt;
To show/hide &lt;br /&gt;
*thickness, tick/untick Menu:Plot:Thickness.&lt;br /&gt;
*mesh, tick/untick FE edges.&lt;br /&gt;
*axes, tick/untick Menu:Plot:Show/Hide axes.&amp;lt;br&amp;gt;&lt;br /&gt;
*legend, tick/untick Menu:Plot:Show/Hide legend - also Set legend to choose heading.&amp;lt;br&amp;gt;&lt;br /&gt;
To set/modify values of morphogens (best done in the interaction function)&lt;br /&gt;
* Choose morphogen (list box), Click on Select Tool:Factors, &#039;---&#039; list box to select action and click on appropriate button (Add constant or Add radial, etc).&lt;br /&gt;
* at individual nodes (vertices). Choose morphogen (list box), Click on Select Tool:Factors, &#039;---&#039; list box to select action and click on node.&amp;lt;br&amp;gt;&lt;br /&gt;
To clip the mesh (hide part of the mesh)&lt;br /&gt;
*Tick Clipping plane and choose the plane with Az (azimuth), ti (tilt),  D.&lt;br /&gt;
*Tick Clip and select the region to hide by using morphogen values (click on Mgens button).&lt;br /&gt;
===Snapshots===&lt;br /&gt;
Saved in png format in the project snapshots subdirectory&lt;br /&gt;
*Clicking Take snapshot makes a png file copy of the plotting screen. At the same time a copy of the interaction function (relabelled to have .txt as a suffix) is also made - to help document the snapshot.&lt;br /&gt;
*Publication quality screenshot is made by changing the action of the Snapshot button using Menu:Misc:Hi-res snapshots and choosing a number of dots per inch.&lt;br /&gt;
===VRML, OBJ, FIG===&lt;br /&gt;
To export the current mesh&lt;br /&gt;
*VRML, to interactively view the mesh using a web browser export the mesh as a VRML file, Menu:Mesh:Save VRML. We use such files to make 3D prints.&lt;br /&gt;
*FIG, for Matlab figure files.&lt;br /&gt;
===Movies===&lt;br /&gt;
By default movies are uncompressed and stored in the projects movies subdirectory&lt;br /&gt;
*To compress select Menu:Movie:Codec - we currently favour Motion JPEG avi&lt;br /&gt;
*To automatically convert the output to flash, .flv, select Menu:Movie:Convert to flash. This option requires the ffmpeg program to be on the current path.&lt;br /&gt;
*Click Record Movie to start creating a movie. The button will change to Stop Movie.&lt;br /&gt;
===Web and PowerPoint===&lt;br /&gt;
Writing web and PowerPoint pages is facilitated by:&lt;br /&gt;
*&#039;&#039;&#039;Output .avi for PowerPoint&#039;&#039;&#039;. Use Menu:Movie:Codec: Motion JPEG avi. This does not play properly on PowerPoint 2007 unless you run PowerPoint in 2003 compatibility mode. The movie is saved into the project movies subdirectory together with an image (.png) of the final frame and a copy of the interaction function (renamed .txt - to document the results).&lt;br /&gt;
*Output &#039;&#039;&#039;flash (.flv) movies for web&#039;&#039;&#039;. Select Menu:Movie:Convert to flash. This option requires the [http://www.ffmpeg.org/ ffmpeg] program to be on the current path. The movie is saved to the project directory together with an image (.png) of the first frame (for last frame see above).&lt;br /&gt;
*Output&#039;&#039;&#039; web compatible copy of the interaction function&#039;&#039;&#039; use &#039;&#039;webify_interaction_function.m&#039;&#039; which outputs a txt file with  comments marked up in HTML to appear in green and sections in blue.&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
===Files===&lt;br /&gt;
==Simulation==&lt;br /&gt;
&lt;br /&gt;
==Graphical User Interface==&lt;br /&gt;
===Menus===&lt;br /&gt;
===Panels===&lt;br /&gt;
==Interaction function==&lt;br /&gt;
===Functions===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=Useful interaction function programming constructs=&lt;br /&gt;
[[Types of morphogens and factors|Types of morphogens and factors click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|&#039;&#039;&#039;Pre-defined variables&#039;&#039;&#039;|| &lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|dt|| computational step size&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|realtime|| virtual time of the model&lt;br /&gt;
|}&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|&#039;&#039;&#039;Pre-defined functions&#039;&#039;&#039;|| &lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|Steps(m)|| current step number in Mesh m&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|pro(k,id)|| promote by k in regions designated by factor, id (&#039;&#039;pro(k,&#039;&#039;&#039;x&#039;&#039;&#039;)=1+k&#039;&#039;&#039;x&#039;&#039;&#039;&#039;&#039;, i.e. promote by &#039;&#039;k=0&#039;&#039; and the value of &#039;&#039;pro()&#039;&#039; is &#039;&#039;1&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|inh(k,id)|| inhibit by k in regions designated by factor, id (&#039;&#039;inh(k,&#039;&#039;&#039;x&#039;&#039;&#039;)=1/(1+k&#039;&#039;&#039;x&#039;&#039;&#039;)&#039;&#039;, i.e. inhibit by &#039;&#039;k=0&#039;&#039; and the value of &#039;&#039;inh()&#039;&#039; is &#039;&#039;1&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|local_setproperties( m )|| initialise Mesh properties&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|leaf_*( m, ... )|| A large library of functions for manipulating the Mesh data structure, m. All of them are listed in the main Help menu of the GFtbox GUI, both in alphabetical order and categorised by topic.&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The patterns of morphogens A and B are often set up by using logical indexing, e.g.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        id_a_p(m.nodes(:,1) &amp;lt; -0.03) = 1; &lt;br /&gt;
        id_b_p(m.nodes(:,2) &amp;lt; -0.01) = 1; &lt;br /&gt;
where &#039;&#039;id_a_p&#039;&#039; is the vector of values of the A morphogen. &#039;&#039;m.node(:,1)&#039;&#039; refers to the &#039;&#039;x&#039;&#039; coordinates of all nodes (vertices) in the mesh.&amp;lt;br&amp;gt;&lt;br /&gt;
The expression &#039;&#039;(m.nodes(:,1) &amp;lt; -0.03)&#039;&#039; means find all vertices with &#039;&#039;x&#039;&#039; coordinates that are less than -0.03.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Similarly, &#039;&#039;(m.nodes(:,2) &amp;lt; -0.01)&#039;&#039; means find all vertices with &#039;&#039;y&#039;&#039; coordinates that are less than -0.01.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the pattern of polariser (P) is set up by&amp;lt;br&amp;gt;        &lt;br /&gt;
&lt;br /&gt;
        P((m.nodes(:,1) &amp;lt; -0.05) &amp;amp; (m.nodes(:,2) &amp;gt; 0.03)) = 1;&lt;br /&gt;
Where &#039;&#039;(m.nodes(:,1) &amp;lt; -0.05) &amp;amp; (m.nodes(:,2) &amp;gt; 0.03)&#039;&#039; means find all vertices with &#039;&#039;x,y&#039;&#039; coordinates that are less than -0.05 and greater than 0.03 respectively&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Thus the full code describing the model is:&lt;br /&gt;
    if (Steps(m)==0) &amp;amp;&amp;amp; m.globalDynamicProps.doinit  % Initialisation code.&lt;br /&gt;
        id_a_p(m.nodes(:,1) &amp;lt; -0.03) = 1; % setup region for A where identity factor A is represented by id_a_p&lt;br /&gt;
        id_b_p(m.nodes(:,2) &amp;lt; -0.01) = 1; % setup region for B&lt;br /&gt;
    else&lt;br /&gt;
        % @@KRN Growth Regulatory Network&lt;br /&gt;
        kapar_p(:) = id_a_l .* inh(1,id_b_l); % growth rate&lt;br /&gt;
        kaper_p(:) = kapar_p; % isotropic growth&lt;br /&gt;
        kbpar_p(:) = kapar_p; % same on both sides of the sheet&lt;br /&gt;
        kbper_p(:) = kapar_p; % same&lt;br /&gt;
        knor_p(:)  = 0;       % thickness not growing&lt;br /&gt;
    end&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Ready_Reference_Manual&amp;diff=5229</id>
		<title>Ready Reference Manual</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Ready_Reference_Manual&amp;diff=5229"/>
		<updated>2011-06-24T16:36:45Z</updated>

		<summary type="html">&lt;p&gt;Jrk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Summary of controls=&lt;br /&gt;
Roll the mouse over any control and information about the control will pop-up.&lt;br /&gt;
==Models==&lt;br /&gt;
* The larger the time step, the fewer iterations will be needed to simulate a given amount of time, but the less accurate the simulation will be. If the time step is too large, diffusion calculations may even become unstable.&lt;br /&gt;
As a rule of thumb, the time step should be chosen small enough that:&lt;br /&gt;
** The product of growth rate and time step is everywhere less than 0.1 -- that is, no part of the mesh grows by more than 10% in a single iteration.&lt;br /&gt;
** In a single iteration, no part of the mesh rotates by more than 10 degrees.&lt;br /&gt;
** The product of time step and the relative rate of change of any morphogen should be no more than 0.1. The rate of change may derive from the decay rate you have set, or from interactions programmed in the interaction function.&lt;br /&gt;
** If k is the diffusion constant of a morphogen, D is the diameter of the mesh, and dt is the time step, &amp;lt;math&amp;gt;k dt^2/D&amp;lt;/math&amp;gt; should be no more than 0.1.&lt;br /&gt;
* Errors in the interaction function will cause the system to stop, and the interaction function will be disabled. The controls in the Interaction Function panel will all turn red to indicate this.&lt;br /&gt;
** To re-enable the interaction function, click the Reset button at the top of the GUI. &lt;br /&gt;
** To find the error&lt;br /&gt;
*** There will be a message on the Matlab console saying in which line of the interaction function it detected an error. Open the interaction function in the Matlab editor, find that line, and set a breakpoint there or shortly before (by clicking in the left margin -- a red dot will appear).&lt;br /&gt;
*** The next time the interaction function runs, Matlab will suspend execution at the breakpoint and go into debug mode. You can then examine the values of variables and step through the code one line at a time in order to discover why the error is happening.&lt;br /&gt;
*** Matlab provides extensive tutorials on how to program and there is much information on the web.&lt;br /&gt;
  &lt;br /&gt;
==Running models==&lt;br /&gt;
&lt;br /&gt;
The normally &#039;&#039;&#039;green Run pane&#039;&#039;&#039;l turns &#039;&#039;&#039;red&#039;&#039;&#039; whilst the model is running.&amp;lt;br&amp;gt;&lt;br /&gt;
A &#039;&#039;&#039;yellow&#039;&#039;&#039; Run panel means that the model is running on a version of the GFtbox that is older than the model itself (look at the interaction header to see our source code version control number for the copy of GFtbox that created the model).&amp;lt;br&amp;gt;&lt;br /&gt;
An interaction function error (or any other error) will stop the model from running. It is then necessary to Reset using the&#039;&#039;&#039; Reset key - which will have turned red&#039;&#039;&#039;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
To run a model from the GUI&lt;br /&gt;
*Step, execute one step of &#039;&#039;dt&#039;&#039;. A whole lot of information pours out at the command console. Sometimes it takes a while to solve the equations. The process is monitored by a series of dots . . . . . . . Further information is provided below the Plotting panel, e.g. Step number, time per iteration, time per finite element, growth, etc.&lt;br /&gt;
*Run for, and enter the number of steps into the box.&lt;br /&gt;
*Run until, and enter the model time to which you want to run.&lt;br /&gt;
*Run to, and enter the multiple of the initial area you want to run to.&lt;br /&gt;
*Stop, stops execution at the end of the current step.&lt;br /&gt;
*Call, makes a call to the interaction function but does NOT grow. This is useful for checking initial conditions - set patterns of morphogens. Having made a Call to the interaction function it is good practice to then Restart the model before running a model.&lt;br /&gt;
*Menu:Stages. &#039;&#039;&#039;We usually run models&#039;&#039;&#039; by setting up a set of, say 5, stages that we want stored. Then, having run the model we can revert back to any of the stages - make a change - and re-run starting from that point. The stages are stored in the project directory with the suffix *000# where # is the time. Stage times are stored with the project - and copied into the daughter project with Save As.&lt;br /&gt;
**Compute more stages, pops up a box asking for a set of times that you want stored then starts computing&lt;br /&gt;
**Request more stages, does the same but does not start computing.&lt;br /&gt;
**Save experiment stages, saves all the current stage files in a subdirectory.&lt;br /&gt;
**Import experiment stages, recovers a saved experiment. This pair of commands help document results and make figures. In addition, when the system runs on a cluster, the results are returned as experimental results to be accessed in this way.&lt;br /&gt;
==Outputs==&lt;br /&gt;
===Plotting panel===&lt;br /&gt;
To view&lt;br /&gt;
*Specified values, i.e. kapar or a particular morphogen (factor) select from the drop down menu at the top right, and tick the Plot Current Factor checkbox.&lt;br /&gt;
**To autoscale the axes, set the checkbox Panel:Plot Options:Auto axis range. To autozoom as well, click Menus:Plot:Auto zoom and centre.&lt;br /&gt;
**To autoscale the morphogen colours. Panel:Plot Options:Auto color range. To fix the colour range the easiest is to click From Picture and unclick the Auto color range. Alternatively, unclick the Auto color range box and key in values you want - click elsewhere on the GUI to force a replot.&lt;br /&gt;
**To find out the level of a morphogen at a particular point on the canvas. Select Tool:Simulation and select the morphogen of interest (top right pull down) and click on the point of interest. The value at that point will appear in bold just below the Panel:Timescale box.&lt;br /&gt;
*Output variables, e.g. growth rate, tick Plot output value and make selection from the two drop down menus.&lt;br /&gt;
*thickness, tick/untick Menu:Plot:Thickness.&lt;br /&gt;
To show/hide &lt;br /&gt;
*thickness, tick/untick Menu:Plot:Thickness.&lt;br /&gt;
*mesh, tick/untick FE edges.&lt;br /&gt;
*axes, tick/untick Menu:Plot:Show/Hide axes.&amp;lt;br&amp;gt;&lt;br /&gt;
*legend, tick/untick Menu:Plot:Show/Hide legend - also Set legend to choose heading.&amp;lt;br&amp;gt;&lt;br /&gt;
To set/modify values of morphogens (best done in the interaction function)&lt;br /&gt;
* Choose morphogen (list box), Click on Select Tool:Factors, &#039;---&#039; list box to select action and click on appropriate button (Add constant or Add radial, etc).&lt;br /&gt;
* at individual nodes (vertices). Choose morphogen (list box), Click on Select Tool:Factors, &#039;---&#039; list box to select action and click on node.&amp;lt;br&amp;gt;&lt;br /&gt;
To clip the mesh (hide part of the mesh)&lt;br /&gt;
*Tick Clipping plane and choose the plane with Az (azimuth), ti (tilt),  D.&lt;br /&gt;
*Tick Clip and select the region to hide by using morphogen values (click on Mgens button).&lt;br /&gt;
===Snapshots===&lt;br /&gt;
Saved in png format in the project snapshots subdirectory&lt;br /&gt;
*Clicking Take snapshot makes a png file copy of the plotting screen. At the same time a copy of the interaction function (relabelled to have .txt as a suffix) is also made - to help document the snapshot.&lt;br /&gt;
*Publication quality screenshot is made by changing the action of the Snapshot button using Menu:Misc:Hi-res snapshots and choosing a number of dots per inch.&lt;br /&gt;
===VRML, OBJ, FIG===&lt;br /&gt;
To export the current mesh&lt;br /&gt;
*VRML, to interactively view the mesh using a web browser export the mesh as a VRML file, Menu:Mesh:Save VRML. We use such files to make 3D prints.&lt;br /&gt;
*FIG, for Matlab figure files.&lt;br /&gt;
===Movies===&lt;br /&gt;
By default movies are uncompressed and stored in the projects movies subdirectory&lt;br /&gt;
*To compress select Menu:Movie:Codec - we currently favour Motion JPEG avi&lt;br /&gt;
*To automatically convert the output to flash, .flv, select Menu:Movie:Convert to flash. This option requires the ffmpeg program to be on the current path.&lt;br /&gt;
*Click Record Movie to start creating a movie. The button will change to Stop Movie.&lt;br /&gt;
===Web and PowerPoint===&lt;br /&gt;
Writing web and PowerPoint pages is facilitated by:&lt;br /&gt;
*&#039;&#039;&#039;Output .avi for PowerPoint&#039;&#039;&#039;. Use Menu:Movie:Codec: Motion JPEG avi. This does not play properly on PowerPoint 2007 unless you run PowerPoint in 2003 compatibility mode. The movie is saved into the project movies subdirectory together with an image (.png) of the final frame and a copy of the interaction function (renamed .txt - to document the results).&lt;br /&gt;
*Output &#039;&#039;&#039;flash (.flv) movies for web&#039;&#039;&#039;. Select Menu:Movie:Convert to flash. This option requires the [http://www.ffmpeg.org/ ffmpeg] program to be on the current path. The movie is saved to the project directory together with an image (.png) of the first frame (for last frame see above).&lt;br /&gt;
*Output&#039;&#039;&#039; web compatible copy of the interaction function&#039;&#039;&#039; use &#039;&#039;webify_interaction_function.m&#039;&#039; which outputs a txt file with  comments marked up in HTML to appear in green and sections in blue.&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
===Files===&lt;br /&gt;
==Simulation==&lt;br /&gt;
&lt;br /&gt;
==Graphical User Interface==&lt;br /&gt;
===Menus===&lt;br /&gt;
===Panels===&lt;br /&gt;
==Interaction function==&lt;br /&gt;
===Functions===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=Useful interaction function programming constructs=&lt;br /&gt;
[[Types of morphogens and factors|Types of morphogens and factors click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|&#039;&#039;&#039;Pre-defined variables&#039;&#039;&#039;|| &lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|dt|| computational step size&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|realtime|| virtual time of the model&lt;br /&gt;
|}&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|&#039;&#039;&#039;Pre-defined functions&#039;&#039;&#039;|| &lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|Steps(m)|| current step number in Mesh m&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|pro(k,id)|| promote by k in regions designated by factor, id (&#039;&#039;pro(k,&#039;&#039;&#039;x&#039;&#039;&#039;)=1+k&#039;&#039;&#039;x&#039;&#039;&#039;&#039;&#039;, i.e. promote by &#039;&#039;k=0&#039;&#039; and the value of &#039;&#039;pro()&#039;&#039; is &#039;&#039;1&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|inh(k,id)|| inhibit by k in regions designated by factor, id (&#039;&#039;inh(k,&#039;&#039;&#039;x&#039;&#039;&#039;)=1/(1+k&#039;&#039;&#039;x&#039;&#039;&#039;)&#039;&#039;, i.e. inhibit by &#039;&#039;k=0&#039;&#039; and the value of &#039;&#039;inh()&#039;&#039; is &#039;&#039;1&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|local_setproperties( m )|| initialise Mesh properties&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|leaf_*( m, ... )|| A large library of functions for manipulating the Mesh data structure, m. All of them are listed in the main Help menu of the GFtbox GUI, both in alphabetical order and categorised by topic.&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The patterns of morphogens A and B are often set up by using logical indexing, e.g.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        id_a_p(m.nodes(:,1) &amp;lt; -0.03) = 1; &lt;br /&gt;
        id_b_p(m.nodes(:,2) &amp;lt; -0.01) = 1; &lt;br /&gt;
where &#039;&#039;id_a_p&#039;&#039; is the vector of values of the A morphogen. &#039;&#039;m.node(:,1)&#039;&#039; refers to the &#039;&#039;x&#039;&#039; coordinates of all nodes (vertices) in the mesh.&amp;lt;br&amp;gt;&lt;br /&gt;
The expression &#039;&#039;(m.nodes(:,1) &amp;lt; -0.03)&#039;&#039; means find all vertices with &#039;&#039;x&#039;&#039; coordinates that are less than -0.03.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Similarly, &#039;&#039;(m.nodes(:,2) &amp;lt; -0.01)&#039;&#039; means find all vertices with &#039;&#039;y&#039;&#039; coordinates that are less than -0.01.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the pattern of polariser (P) is set up by&amp;lt;br&amp;gt;        &lt;br /&gt;
&lt;br /&gt;
        P((m.nodes(:,1) &amp;lt; -0.05) &amp;amp; (m.nodes(:,2) &amp;gt; 0.03)) = 1;&lt;br /&gt;
Where &#039;&#039;(m.nodes(:,1) &amp;lt; -0.05) &amp;amp; (m.nodes(:,2) &amp;gt; 0.03)&#039;&#039; means find all vertices with &#039;&#039;x,y&#039;&#039; coordinates that are less than -0.05 and greater than 0.03 respectively&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Thus the full code describing the model is:&lt;br /&gt;
    if (Steps(m)==0) &amp;amp;&amp;amp; m.globalDynamicProps.doinit  % Initialisation code.&lt;br /&gt;
        id_a_p(m.nodes(:,1) &amp;lt; -0.03) = 1; % setup region for A where identity factor A is represented by id_a_p&lt;br /&gt;
        id_b_p(m.nodes(:,2) &amp;lt; -0.01) = 1; % setup region for B&lt;br /&gt;
    else&lt;br /&gt;
        % @@KRN Growth Regulatory Network&lt;br /&gt;
        kapar_p(:) = id_a_l .* inh(1,id_b_l); % growth rate&lt;br /&gt;
        kaper_p(:) = kapar_p; % isotropic growth&lt;br /&gt;
        kbpar_p(:) = kapar_p; % same on both sides of the sheet&lt;br /&gt;
        kbper_p(:) = kapar_p; % same&lt;br /&gt;
        knor_p(:)  = 0;       % thickness not growing&lt;br /&gt;
    end&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Ready_Reference_Manual&amp;diff=5232</id>
		<title>Ready Reference Manual</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Ready_Reference_Manual&amp;diff=5232"/>
		<updated>2011-06-24T16:25:17Z</updated>

		<summary type="html">&lt;p&gt;Jrk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Summary of controls=&lt;br /&gt;
Roll the mouse over any control and information about the control will pop-up.&lt;br /&gt;
==Models==&lt;br /&gt;
* As a rule of thumb, growth rate * time step should be less than 0.01. It is possible for the diffusion processes to become unstable if the time step is too large - signals can oscillate. Reduce the time step and reduce the decay rate.&lt;br /&gt;
* Errors in the interaction function will cause the system to stop, and the interaction function will be disabled. The controls in the Interaction Function panel will all turn red to indicate this.&lt;br /&gt;
** To re-enable the interaction function, click the Reset button at the top of the GUI. &lt;br /&gt;
** To find the error&lt;br /&gt;
*** There will be a message on the Matlab console saying in which line of the interaction function it detected an error. Open the interaction function in the Matlab editor, find that line, and set a breakpoint there or shortly before (by clicking in the left margin -- a red dot will appear).&lt;br /&gt;
*** The next time the interaction function runs, Matlab will suspend execution at the breakpoint and go into debug mode. You can then examine the values of variables and step through the code one line at a time in order to discover why the error is happening.&lt;br /&gt;
*** Matlab provides extensive tutorials on how to program and there is much information on the web.&lt;br /&gt;
  &lt;br /&gt;
==Running models==&lt;br /&gt;
&lt;br /&gt;
The normally &#039;&#039;&#039;green Run pane&#039;&#039;&#039;l turns &#039;&#039;&#039;red&#039;&#039;&#039; whilst the model is running.&amp;lt;br&amp;gt;&lt;br /&gt;
A &#039;&#039;&#039;yellow&#039;&#039;&#039; Run panel means that the model is running on a version of the GFtbox that is older than the model itself (look at the interaction header to see our source code version control number for the copy of GFtbox that created the model).&amp;lt;br&amp;gt;&lt;br /&gt;
An interaction function error (or any other error) will stop the model from running. It is then necessary to Reset using the&#039;&#039;&#039; Reset key - which will have turned red&#039;&#039;&#039;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
To run a model from the GUI&lt;br /&gt;
*Step, execute one step of &#039;&#039;dt&#039;&#039;. A whole lot of information pours out at the command console. Sometimes it takes a while to solve the equations. The process is monitored by a series of dots . . . . . . . Further information is provided below the Plotting panel, e.g. Step number, time per iteration, time per finite element, growth, etc.&lt;br /&gt;
*Run for, and enter the number of steps into the box.&lt;br /&gt;
*Run until, and enter the model time to which you want to run.&lt;br /&gt;
*Run to, and enter the multiple of the initial area you want to run to.&lt;br /&gt;
*Stop, stops execution at the end of the current step.&lt;br /&gt;
*Call, makes a call to the interaction function but does NOT grow. This is useful for checking initial conditions - set patterns of morphogens. Having made a Call to the interaction function it is good practice to then Restart the model before running a model.&lt;br /&gt;
*Menu:Stages. &#039;&#039;&#039;We usually run models&#039;&#039;&#039; by setting up a set of, say 5, stages that we want stored. Then, having run the model we can revert back to any of the stages - make a change - and re-run starting from that point. The stages are stored in the project directory with the suffix *000# where # is the time. Stage times are stored with the project - and copied into the daughter project with Save As.&lt;br /&gt;
**Compute more stages, pops up a box asking for a set of times that you want stored then starts computing&lt;br /&gt;
**Request more stages, does the same but does not start computing.&lt;br /&gt;
**Save experiment stages, saves all the current stage files in a subdirectory.&lt;br /&gt;
**Import experiment stages, recovers a saved experiment. This pair of commands help document results and make figures. In addition, when the system runs on a cluster, the results are returned as experimental results to be accessed in this way.&lt;br /&gt;
==Outputs==&lt;br /&gt;
===Plotting panel===&lt;br /&gt;
To view&lt;br /&gt;
*Specified values, i.e. kapar or a particular morphogen (factor) select from the drop down menu at the top right, and tick the Plot Current Factor checkbox.&lt;br /&gt;
**To autoscale the axes, set the checkbox Panel:Plot Options:Auto axis range. To autozoom as well, click Menus:Plot:Auto zoom and centre.&lt;br /&gt;
**To autoscale the morphogen colours. Panel:Plot Options:Auto color range. To fix the colour range the easiest is to click From Picture and unclick the Auto color range. Alternatively, unclick the Auto color range box and key in values you want - click elsewhere on the GUI to force a replot.&lt;br /&gt;
**To find out the level of a morphogen at a particular point on the canvas. Select Tool:Simulation and select the morphogen of interest (top right pull down) and click on the point of interest. The value at that point will appear in bold just below the Panel:Timescale box.&lt;br /&gt;
*Output variables, e.g. growth rate, tick Plot output value and make selection from the two drop down menus.&lt;br /&gt;
*thickness, tick/untick Menu:Plot:Thickness.&lt;br /&gt;
To show/hide &lt;br /&gt;
*thickness, tick/untick Menu:Plot:Thickness.&lt;br /&gt;
*mesh, tick/untick FE edges.&lt;br /&gt;
*axes, tick/untick Menu:Plot:Show/Hide axes.&amp;lt;br&amp;gt;&lt;br /&gt;
*legend, tick/untick Menu:Plot:Show/Hide legend - also Set legend to choose heading.&amp;lt;br&amp;gt;&lt;br /&gt;
To set/modify values of morphogens (best done in the interaction function)&lt;br /&gt;
* Choose morphogen (list box), Click on Select Tool:Factors, &#039;---&#039; list box to select action and click on appropriate button (Add constant or Add radial, etc).&lt;br /&gt;
* at individual nodes (vertices). Choose morphogen (list box), Click on Select Tool:Factors, &#039;---&#039; list box to select action and click on node.&amp;lt;br&amp;gt;&lt;br /&gt;
To clip the mesh (hide part of the mesh)&lt;br /&gt;
*Tick Clipping plane and choose the plane with Az (azimuth), ti (tilt),  D.&lt;br /&gt;
*Tick Clip and select the region to hide by using morphogen values (click on Mgens button).&lt;br /&gt;
===Snapshots===&lt;br /&gt;
Saved in png format in the project snapshots subdirectory&lt;br /&gt;
*Clicking Take snapshot makes a png file copy of the plotting screen. At the same time a copy of the interaction function (relabelled to have .txt as a suffix) is also made - to help document the snapshot.&lt;br /&gt;
*Publication quality screenshot is made by changing the action of the Snapshot button using Menu:Misc:Hi-res snapshots and choosing a number of dots per inch.&lt;br /&gt;
===VRML, OBJ, FIG===&lt;br /&gt;
To export the current mesh&lt;br /&gt;
*VRML, to interactively view the mesh using a web browser export the mesh as a VRML file, Menu:Mesh:Save VRML. We use such files to make 3D prints.&lt;br /&gt;
*FIG, for Matlab figure files.&lt;br /&gt;
===Movies===&lt;br /&gt;
By default movies are uncompressed and stored in the projects movies subdirectory&lt;br /&gt;
*To compress select Menu:Movie:Codec - we currently favour Motion JPEG avi&lt;br /&gt;
*To automatically convert the output to flash, .flv, select Menu:Movie:Convert to flash. This option requires the ffmpeg program to be on the current path.&lt;br /&gt;
*Click Record Movie to start creating a movie. The button will change to Stop Movie.&lt;br /&gt;
===Web and PowerPoint===&lt;br /&gt;
Writing web and PowerPoint pages is facilitated by:&lt;br /&gt;
*&#039;&#039;&#039;Output .avi for PowerPoint&#039;&#039;&#039;. Use Menu:Movie:Codec: Motion JPEG avi. This does not play properly on PowerPoint 2007 unless you run PowerPoint in 2003 compatibility mode. The movie is saved into the project movies subdirectory together with an image (.png) of the final frame and a copy of the interaction function (renamed .txt - to document the results).&lt;br /&gt;
*Output &#039;&#039;&#039;flash (.flv) movies for web&#039;&#039;&#039;. Select Menu:Movie:Convert to flash. This option requires the [http://www.ffmpeg.org/ ffmpeg] program to be on the current path. The movie is saved to the project directory together with an image (.png) of the first frame (for last frame see above).&lt;br /&gt;
*Output&#039;&#039;&#039; web compatible copy of the interaction function&#039;&#039;&#039; use &#039;&#039;webify_interaction_function.m&#039;&#039; which outputs a txt file with  comments marked up in HTML to appear in green and sections in blue.&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
===Files===&lt;br /&gt;
==Simulation==&lt;br /&gt;
&lt;br /&gt;
==Graphical User Interface==&lt;br /&gt;
===Menus===&lt;br /&gt;
===Panels===&lt;br /&gt;
==Interaction function==&lt;br /&gt;
===Functions===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=Useful interaction function programming constructs=&lt;br /&gt;
[[Types of morphogens and factors|Types of morphogens and factors click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|&#039;&#039;&#039;Pre-defined variables&#039;&#039;&#039;|| &lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|dt|| computational step size&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|realtime|| virtual time of the model&lt;br /&gt;
|}&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|&#039;&#039;&#039;Pre-defined functions&#039;&#039;&#039;|| &lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|Steps(m)|| current step number in Mesh m&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|pro(k,id)|| promote by k in regions designated by factor, id (&#039;&#039;pro(k,&#039;&#039;&#039;x&#039;&#039;&#039;)=1+k&#039;&#039;&#039;x&#039;&#039;&#039;&#039;&#039;, i.e. promote by &#039;&#039;k=0&#039;&#039; and the value of &#039;&#039;pro()&#039;&#039; is &#039;&#039;1&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|inh(k,id)|| inhibit by k in regions designated by factor, id (&#039;&#039;inh(k,&#039;&#039;&#039;x&#039;&#039;&#039;)=1/(1+k&#039;&#039;&#039;x&#039;&#039;&#039;)&#039;&#039;, i.e. inhibit by &#039;&#039;k=0&#039;&#039; and the value of &#039;&#039;inh()&#039;&#039; is &#039;&#039;1&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|local_setproperties( m )|| initialise Mesh properties&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|leaf_*( m, ... )|| A large library of functions for manipulating the Mesh data structure, m. All of them are listed in the main Help menu of the GFtbox GUI, both in alphabetical order and categorised by topic.&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The patterns of morphogens A and B are often set up by using logical indexing, e.g.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        id_a_p(m.nodes(:,1) &amp;lt; -0.03) = 1; &lt;br /&gt;
        id_b_p(m.nodes(:,2) &amp;lt; -0.01) = 1; &lt;br /&gt;
where &#039;&#039;id_a_p&#039;&#039; is the vector of values of the A morphogen. &#039;&#039;m.node(:,1)&#039;&#039; refers to the &#039;&#039;x&#039;&#039; coordinates of all nodes (vertices) in the mesh.&amp;lt;br&amp;gt;&lt;br /&gt;
The expression &#039;&#039;(m.nodes(:,1) &amp;lt; -0.03)&#039;&#039; means find all vertices with &#039;&#039;x&#039;&#039; coordinates that are less than -0.03.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Similarly, &#039;&#039;(m.nodes(:,2) &amp;lt; -0.01)&#039;&#039; means find all vertices with &#039;&#039;y&#039;&#039; coordinates that are less than -0.01.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the pattern of polariser (P) is set up by&amp;lt;br&amp;gt;        &lt;br /&gt;
&lt;br /&gt;
        P((m.nodes(:,1) &amp;lt; -0.05) &amp;amp; (m.nodes(:,2) &amp;gt; 0.03)) = 1;&lt;br /&gt;
Where &#039;&#039;(m.nodes(:,1) &amp;lt; -0.05) &amp;amp; (m.nodes(:,2) &amp;gt; 0.03)&#039;&#039; means find all vertices with &#039;&#039;x,y&#039;&#039; coordinates that are less than -0.05 and greater than 0.03 respectively&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Thus the full code describing the model is:&lt;br /&gt;
    if (Steps(m)==0) &amp;amp;&amp;amp; m.globalDynamicProps.doinit  % Initialisation code.&lt;br /&gt;
        id_a_p(m.nodes(:,1) &amp;lt; -0.03) = 1; % setup region for A where identity factor A is represented by id_a_p&lt;br /&gt;
        id_b_p(m.nodes(:,2) &amp;lt; -0.01) = 1; % setup region for B&lt;br /&gt;
    else&lt;br /&gt;
        % @@KRN Growth Regulatory Network&lt;br /&gt;
        kapar_p(:) = id_a_l .* inh(1,id_b_l); % growth rate&lt;br /&gt;
        kaper_p(:) = kapar_p; % isotropic growth&lt;br /&gt;
        kbpar_p(:) = kapar_p; % same on both sides of the sheet&lt;br /&gt;
        kbper_p(:) = kapar_p; % same&lt;br /&gt;
        knor_p(:)  = 0;       % thickness not growing&lt;br /&gt;
    end&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Ready_Reference_Manual&amp;diff=5228</id>
		<title>Ready Reference Manual</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Ready_Reference_Manual&amp;diff=5228"/>
		<updated>2011-06-24T16:24:49Z</updated>

		<summary type="html">&lt;p&gt;Jrk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Summary of controls=&lt;br /&gt;
Roll the mouse over any control and information about the control will pop-up.&lt;br /&gt;
==Models==&lt;br /&gt;
* As a rule of thumb, growth rate * time step should be less than 0.01. It is possible for the diffusion processes to become unstable if the time step is too large - signals can oscillate. Reduce the time step and reduce the decay rate.&lt;br /&gt;
* Errors in the interaction function will cause the system to stop, and the interaction function will be disabled. The controls in the Interaction Function panel will all turn red to indicate this.&lt;br /&gt;
** To re-enable the interaction function, click the Reset button at the top of the GUI. &lt;br /&gt;
** To find the error&lt;br /&gt;
*** There will be a message on the Matlab console saying in which line of the interaction function it detected an error. Open the interaction function in the Matlab editor, find that line, and set a breakpoint there or shortly before (by clicking in the left margin -- a red dot will appear).&lt;br /&gt;
*** The next time the interaction function runs, Matlab will suspend execution at the breakpoint and go into debug mode. You can then examine the values of variables and step through the code one line at a time in order to discover why the error is happening.&lt;br /&gt;
*** Matlab provides extensive tutorials on how to program and there is much information on the web.&lt;br /&gt;
  &lt;br /&gt;
==Running models==&lt;br /&gt;
&lt;br /&gt;
The normally &#039;&#039;&#039;green Run pane&#039;&#039;&#039;l turns &#039;&#039;&#039;red&#039;&#039;&#039; whilst the model is running.&amp;lt;br&amp;gt;&lt;br /&gt;
A &#039;&#039;&#039;yellow&#039;&#039;&#039; Run panel means that the model is running on a version of the GFtbox that is older than the model itself (look at the interaction header to see our source code version control number for the copy of GFtbox that created the model).&amp;lt;br&amp;gt;&lt;br /&gt;
An interaction function error (or any other error) will stop the model from running. It is then necessary to Reset using the&#039;&#039;&#039; Reset key - which will have turned red&#039;&#039;&#039;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
To run a model from the GUI&lt;br /&gt;
*Step, execute one step of &#039;&#039;dt&#039;&#039;. A whole lot of information pours out at the command console. Sometimes it takes a while to solve the equations. The process is monitored by a series of dots . . . . . . . Further information is provided below the Plotting panel, e.g. Step number, time per iteration, time per finite element, growth, etc.&lt;br /&gt;
*Run for, and enter the number of steps into the box&lt;br /&gt;
*Run until, and enter the model time to which you want to run&lt;br /&gt;
*Run to, and enter the multiple of the initial area you want to run to&lt;br /&gt;
*Stop, stops execution at the end of the current step.&lt;br /&gt;
*Call, makes a call to the interaction function but does NOT grow. This is useful for checking initial conditions - set patterns of morphogens. Having made a Call to the interaction function it is good practice to then Restart the model before running a model.&lt;br /&gt;
*Menu:Stages. &#039;&#039;&#039;We usually run models&#039;&#039;&#039; by setting up a set of, say 5, stages that we want stored. Then, having run the model we can revert back to any of the stages - make a change - and re-run starting from that point. The stages are stored in the project directory with the suffix *000# where # is the time. Stage times are stored with the project - and copied into the daughter project with Save As.&lt;br /&gt;
**Compute more stages, pops up a box asking for a set of times that you want stored then starts computing&lt;br /&gt;
**Request more stages, does the same but does not start computing.&lt;br /&gt;
**Save experiment stages, saves all the current stage files in a subdirectory.&lt;br /&gt;
**Import experiment stages, recovers a saved experiment. This pair of commands help document results and make figures. In addition, when the system runs on a cluster, the results are returned as experimental results to be accessed in this way.&lt;br /&gt;
==Outputs==&lt;br /&gt;
===Plotting panel===&lt;br /&gt;
To view&lt;br /&gt;
*Specified values, i.e. kapar or a particular morphogen (factor) select from the drop down menu at the top right, and tick the Plot Current Factor checkbox.&lt;br /&gt;
**To autoscale the axes, set the checkbox Panel:Plot Options:Auto axis range. To autozoom as well, click Menus:Plot:Auto zoom and centre.&lt;br /&gt;
**To autoscale the morphogen colours. Panel:Plot Options:Auto color range. To fix the colour range the easiest is to click From Picture and unclick the Auto color range. Alternatively, unclick the Auto color range box and key in values you want - click elsewhere on the GUI to force a replot.&lt;br /&gt;
**To find out the level of a morphogen at a particular point on the canvas. Select Tool:Simulation and select the morphogen of interest (top right pull down) and click on the point of interest. The value at that point will appear in bold just below the Panel:Timescale box.&lt;br /&gt;
*Output variables, e.g. growth rate, tick Plot output value and make selection from the two drop down menus.&lt;br /&gt;
*thickness, tick/untick Menu:Plot:Thickness.&lt;br /&gt;
To show/hide &lt;br /&gt;
*thickness, tick/untick Menu:Plot:Thickness.&lt;br /&gt;
*mesh, tick/untick FE edges.&lt;br /&gt;
*axes, tick/untick Menu:Plot:Show/Hide axes.&amp;lt;br&amp;gt;&lt;br /&gt;
*legend, tick/untick Menu:Plot:Show/Hide legend - also Set legend to choose heading.&amp;lt;br&amp;gt;&lt;br /&gt;
To set/modify values of morphogens (best done in the interaction function)&lt;br /&gt;
* Choose morphogen (list box), Click on Select Tool:Factors, &#039;---&#039; list box to select action and click on appropriate button (Add constant or Add radial, etc).&lt;br /&gt;
* at individual nodes (vertices). Choose morphogen (list box), Click on Select Tool:Factors, &#039;---&#039; list box to select action and click on node.&amp;lt;br&amp;gt;&lt;br /&gt;
To clip the mesh (hide part of the mesh)&lt;br /&gt;
*Tick Clipping plane and choose the plane with Az (azimuth), ti (tilt),  D.&lt;br /&gt;
*Tick Clip and select the region to hide by using morphogen values (click on Mgens button).&lt;br /&gt;
===Snapshots===&lt;br /&gt;
Saved in png format in the project snapshots subdirectory&lt;br /&gt;
*Clicking Take snapshot makes a png file copy of the plotting screen. At the same time a copy of the interaction function (relabelled to have .txt as a suffix) is also made - to help document the snapshot.&lt;br /&gt;
*Publication quality screenshot is made by changing the action of the Snapshot button using Menu:Misc:Hi-res snapshots and choosing a number of dots per inch.&lt;br /&gt;
===VRML, OBJ, FIG===&lt;br /&gt;
To export the current mesh&lt;br /&gt;
*VRML, to interactively view the mesh using a web browser export the mesh as a VRML file, Menu:Mesh:Save VRML. We use such files to make 3D prints.&lt;br /&gt;
*FIG, for Matlab figure files.&lt;br /&gt;
===Movies===&lt;br /&gt;
By default movies are uncompressed and stored in the projects movies subdirectory&lt;br /&gt;
*To compress select Menu:Movie:Codec - we currently favour Motion JPEG avi&lt;br /&gt;
*To automatically convert the output to flash, .flv, select Menu:Movie:Convert to flash. This option requires the ffmpeg program to be on the current path.&lt;br /&gt;
*Click Record Movie to start creating a movie. The button will change to Stop Movie.&lt;br /&gt;
===Web and PowerPoint===&lt;br /&gt;
Writing web and PowerPoint pages is facilitated by:&lt;br /&gt;
*&#039;&#039;&#039;Output .avi for PowerPoint&#039;&#039;&#039;. Use Menu:Movie:Codec: Motion JPEG avi. This does not play properly on PowerPoint 2007 unless you run PowerPoint in 2003 compatibility mode. The movie is saved into the project movies subdirectory together with an image (.png) of the final frame and a copy of the interaction function (renamed .txt - to document the results).&lt;br /&gt;
*Output &#039;&#039;&#039;flash (.flv) movies for web&#039;&#039;&#039;. Select Menu:Movie:Convert to flash. This option requires the [http://www.ffmpeg.org/ ffmpeg] program to be on the current path. The movie is saved to the project directory together with an image (.png) of the first frame (for last frame see above).&lt;br /&gt;
*Output&#039;&#039;&#039; web compatible copy of the interaction function&#039;&#039;&#039; use &#039;&#039;webify_interaction_function.m&#039;&#039; which outputs a txt file with  comments marked up in HTML to appear in green and sections in blue.&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
===Files===&lt;br /&gt;
==Simulation==&lt;br /&gt;
&lt;br /&gt;
==Graphical User Interface==&lt;br /&gt;
===Menus===&lt;br /&gt;
===Panels===&lt;br /&gt;
==Interaction function==&lt;br /&gt;
===Functions===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=Useful interaction function programming constructs=&lt;br /&gt;
[[Types of morphogens and factors|Types of morphogens and factors click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|&#039;&#039;&#039;Pre-defined variables&#039;&#039;&#039;|| &lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|dt|| computational step size&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|realtime|| virtual time of the model&lt;br /&gt;
|}&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|&#039;&#039;&#039;Pre-defined functions&#039;&#039;&#039;|| &lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|Steps(m)|| current step number in Mesh m&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|pro(k,id)|| promote by k in regions designated by factor, id (&#039;&#039;pro(k,&#039;&#039;&#039;x&#039;&#039;&#039;)=1+k&#039;&#039;&#039;x&#039;&#039;&#039;&#039;&#039;, i.e. promote by &#039;&#039;k=0&#039;&#039; and the value of &#039;&#039;pro()&#039;&#039; is &#039;&#039;1&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|inh(k,id)|| inhibit by k in regions designated by factor, id (&#039;&#039;inh(k,&#039;&#039;&#039;x&#039;&#039;&#039;)=1/(1+k&#039;&#039;&#039;x&#039;&#039;&#039;)&#039;&#039;, i.e. inhibit by &#039;&#039;k=0&#039;&#039; and the value of &#039;&#039;inh()&#039;&#039; is &#039;&#039;1&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|local_setproperties( m )|| initialise Mesh properties&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|leaf_*( m, ... )|| A large library of functions for manipulating the Mesh data structure, m. All of them are listed in the main Help menu of the GFtbox GUI, both in alphabetical order and categorised by topic.&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The patterns of morphogens A and B are often set up by using logical indexing, e.g.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        id_a_p(m.nodes(:,1) &amp;lt; -0.03) = 1; &lt;br /&gt;
        id_b_p(m.nodes(:,2) &amp;lt; -0.01) = 1; &lt;br /&gt;
where &#039;&#039;id_a_p&#039;&#039; is the vector of values of the A morphogen. &#039;&#039;m.node(:,1)&#039;&#039; refers to the &#039;&#039;x&#039;&#039; coordinates of all nodes (vertices) in the mesh.&amp;lt;br&amp;gt;&lt;br /&gt;
The expression &#039;&#039;(m.nodes(:,1) &amp;lt; -0.03)&#039;&#039; means find all vertices with &#039;&#039;x&#039;&#039; coordinates that are less than -0.03.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Similarly, &#039;&#039;(m.nodes(:,2) &amp;lt; -0.01)&#039;&#039; means find all vertices with &#039;&#039;y&#039;&#039; coordinates that are less than -0.01.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the pattern of polariser (P) is set up by&amp;lt;br&amp;gt;        &lt;br /&gt;
&lt;br /&gt;
        P((m.nodes(:,1) &amp;lt; -0.05) &amp;amp; (m.nodes(:,2) &amp;gt; 0.03)) = 1;&lt;br /&gt;
Where &#039;&#039;(m.nodes(:,1) &amp;lt; -0.05) &amp;amp; (m.nodes(:,2) &amp;gt; 0.03)&#039;&#039; means find all vertices with &#039;&#039;x,y&#039;&#039; coordinates that are less than -0.05 and greater than 0.03 respectively&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Thus the full code describing the model is:&lt;br /&gt;
    if (Steps(m)==0) &amp;amp;&amp;amp; m.globalDynamicProps.doinit  % Initialisation code.&lt;br /&gt;
        id_a_p(m.nodes(:,1) &amp;lt; -0.03) = 1; % setup region for A where identity factor A is represented by id_a_p&lt;br /&gt;
        id_b_p(m.nodes(:,2) &amp;lt; -0.01) = 1; % setup region for B&lt;br /&gt;
    else&lt;br /&gt;
        % @@KRN Growth Regulatory Network&lt;br /&gt;
        kapar_p(:) = id_a_l .* inh(1,id_b_l); % growth rate&lt;br /&gt;
        kaper_p(:) = kapar_p; % isotropic growth&lt;br /&gt;
        kbpar_p(:) = kapar_p; % same on both sides of the sheet&lt;br /&gt;
        kbper_p(:) = kapar_p; % same&lt;br /&gt;
        knor_p(:)  = 0;       % thickness not growing&lt;br /&gt;
    end&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Ready_Reference_Manual&amp;diff=5233</id>
		<title>Ready Reference Manual</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Ready_Reference_Manual&amp;diff=5233"/>
		<updated>2011-06-24T16:24:00Z</updated>

		<summary type="html">&lt;p&gt;Jrk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Summary of controls=&lt;br /&gt;
Roll the mouse over any control and information about the control will pop-up.&lt;br /&gt;
==Models==&lt;br /&gt;
* As a rule of thumb, growth rate * time step should be less than 0.01. It is possible for the diffusion processes to become unstable if the time step is too large - signals can oscillate. Reduce the time step and reduce the decay rate.&lt;br /&gt;
* Errors in the interaction function will cause the system to stop, and the interaction function will be disabled. The controls in the Interaction Function panel will all turn red to indicate this.&lt;br /&gt;
** To re-enable the interaction function, click the Reset button at the top of the GUI. &lt;br /&gt;
** To find the error&lt;br /&gt;
*** There will be a message on the Matlab console saying in which line of the interaction function it detected an error. Open the interaction function in the Matlab editor, find that line, and set a breakpoint there or shortly before (by clicking in the left margin -- a red dot will appear).&lt;br /&gt;
*** The next time the interaction function runs, Matlab will suspend execution at the breakpoint and go into debug mode. You can then examine the values of variables and step through the code one line at a time in order to discover why the error is happening.&lt;br /&gt;
*** Matlab provides extensive tutorials on how to program and there is much information on the web.&lt;br /&gt;
  &lt;br /&gt;
==Running models==&lt;br /&gt;
&lt;br /&gt;
The normally &#039;&#039;&#039;green Run pane&#039;&#039;&#039;l turns &#039;&#039;&#039;red&#039;&#039;&#039; whilst the model is running.&amp;lt;br&amp;gt;&lt;br /&gt;
A &#039;&#039;&#039;yellow&#039;&#039;&#039; Run panel means that the model is running on a version of the GFtbox that is older than the model itself (look at the interaction header to see our source code version control number for the copy of GFtbox that created the model).&amp;lt;br&amp;gt;&lt;br /&gt;
An interaction function error (or any other error) will stop the model from running. It is then necessary to Reset using the&#039;&#039;&#039; Reset key - which will have turned red&#039;&#039;&#039;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
To run a model from the GUI&lt;br /&gt;
*Step, execute one step of &#039;&#039;dt&#039;&#039;. A whole lot of information pours out at the command console. Sometimes it takes a while to solve the equations. The process is monitored by a series of dots . . . . . . . Further information is provided below the Plotting panel, e.g. Step number, time per iteration, time per finite element, growth, etc.&lt;br /&gt;
*Run for, and enter the number of steps into the box&lt;br /&gt;
*Run until, and enter the model time to which you want to run&lt;br /&gt;
*Run to, and enter the multiple of the initial area you want to run to&lt;br /&gt;
*Stop, stops execution at the end of the current step.&lt;br /&gt;
*Call, makes a call to the interaction function but does NOT grow. This is useful for checking initial conditions - set patterns of morphogens. Having made a Call to the interaction function it is good practice to then Restart the model before running a model.&lt;br /&gt;
*Menu:Stages. &#039;&#039;&#039;We usually run models&#039;&#039;&#039; by setting up a set of, say 5, stages that we want stored. Then, having run the model we can revert back to any of the stages - make a change - and re-run starting from that point. The stages are stored in the project directory with the suffix *000# where # is the time. Stage times are stored with the project - and copied into the daughter project with Save As.&lt;br /&gt;
**Compute more stages, pops up a box asking for a set of times that you want stored then starts computing&lt;br /&gt;
**Request more stages, does the same but does not start computing.&lt;br /&gt;
**Save experiment stages, saves all the current stage files in a subdirectory.&lt;br /&gt;
**Import experiment stages, recovers a saved experiment. This pair of commands help document results and make figures. In addition, when the system runs on a cluster, the results are returned as experimental results to be accessed in this way.&lt;br /&gt;
==Outputs==&lt;br /&gt;
===Plotting panel===&lt;br /&gt;
To view&lt;br /&gt;
*Specified values, i.e. kapar or a particular morphogen (factor) select from the drop down menu at the top right, and tick the Plot Current Factor checkbox.&lt;br /&gt;
**To autoscale the axes, set the checkbox Panel:Plot Options:Auto axis range. To autozoom as well, click Menus:Plot:Auto zoom and centre.&lt;br /&gt;
**To autoscale the morphogen colours. Panel:Plot Options:Auto color range. To fix the colour range the easiest is to click From Picture and unclick the Auto color range. Alternatively, unclick the Auto color range box and key in values you want - click elsewhere on the GUI to force a replot.&lt;br /&gt;
**To find out the level of a morphogen at a particular point on the canvas. Select Tool:Simulation and select the morphogen of interest (top right pull down) and click on the point of interest. The value at that point will appear in bold just below the Panel:Timescale box.&lt;br /&gt;
*Output variables, e.g. growth rate, tick Plot output value and make selection from the two drop down menus.&lt;br /&gt;
*thickness, tick/untick Menu:Plot:Thickness&lt;br /&gt;
To show/hide &lt;br /&gt;
*thickness, tick/untick Menu:Plot:Thickness&lt;br /&gt;
*mesh, tick/untick FE edges&lt;br /&gt;
*axes, tick/untick Menu:Plot:Show/Hide axes&amp;lt;br&amp;gt;&lt;br /&gt;
*legend, tick/untick Menu:Plot:Show/Hide legend - also Set legend to choose heading&amp;lt;br&amp;gt;&lt;br /&gt;
To set/modify values of morphogens (best done in the interaction function)&lt;br /&gt;
* Choose morphogen (list box), Click on Select Tool:Factors, &#039;---&#039; list box to select action and click on appropriate button (Add constant or Add radial, etc).&lt;br /&gt;
* at individual nodes (vertices). Choose morphogen (list box), Click on Select Tool:Factors, &#039;---&#039; list box to select action and click on node.&amp;lt;br&amp;gt;&lt;br /&gt;
To clip the mesh (hide part of the mesh)&lt;br /&gt;
*Tick Clipping plane and choose the plane with Az (azimuth), ti (tilt),  D&lt;br /&gt;
*Tick Clip and select the region to hide by using morphogen values (click on Mgens button)&lt;br /&gt;
===Snapshots===&lt;br /&gt;
Saved in png format in the project snapshots subdirectory&lt;br /&gt;
*Clicking Take snapshot makes a png file copy of the plotting screen. At the same time a copy of the interaction function (relabelled to have .txt as a suffix) is also made - to help document the snapshot.&lt;br /&gt;
*Publication quality screenshot is made by changing the action of the Snapshot button using Menu:Misc:Hi-res snapshots and choosing a number of dots per inch.&lt;br /&gt;
===VRML, OBJ, FIG===&lt;br /&gt;
To export the current mesh&lt;br /&gt;
*VRML, to interactively view the mesh using a web browser export the mesh as a VRML file, Menu:Mesh:Save VRML. We use such files to make 3D prints.&lt;br /&gt;
*FIG, for Matlab figure files.&lt;br /&gt;
===Movies===&lt;br /&gt;
By default movies are uncompressed and stored in the projects movies subdirectory&lt;br /&gt;
*To compress select Menu:Movie:Codec - we currently favour Motion JPEG avi&lt;br /&gt;
*To automatically convert the output to flash, .flv, select Menu:Movie:Convert to flash. This option requires the ffmpeg program to be on the current path.&lt;br /&gt;
*Click Record Movie to start creating a movie. The button will change to Stop Movie.&lt;br /&gt;
===Web and PowerPoint===&lt;br /&gt;
Writing web and PowerPoint pages is facilitated by:&lt;br /&gt;
*&#039;&#039;&#039;Output .avi for PowerPoint&#039;&#039;&#039;. Use Menu:Movie:Codec: Motion JPEG avi. This does not play properly on PowerPoint 2007 unless you run PowerPoint in 2003 compatibility mode. The movie is saved into the project movies subdirectory together with an image (.png) of the final frame and a copy of the interaction function (renamed .txt - to document the results).&lt;br /&gt;
*Output &#039;&#039;&#039;flash (.flv) movies for web&#039;&#039;&#039;. Select Menu:Movie:Convert to flash. This option requires the [http://www.ffmpeg.org/ ffmpeg] program to be on the current path. The movie is saved to the project directory together with an image (.png) of the first frame (for last frame see above).&lt;br /&gt;
*Output&#039;&#039;&#039; web compatible copy of the interaction function&#039;&#039;&#039; use &#039;&#039;webify_interaction_function.m&#039;&#039; which outputs a txt file with  comments marked up in HTML to appear in green and sections in blue.&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
===Files===&lt;br /&gt;
==Simulation==&lt;br /&gt;
&lt;br /&gt;
==Graphical User Interface==&lt;br /&gt;
===Menus===&lt;br /&gt;
===Panels===&lt;br /&gt;
==Interaction function==&lt;br /&gt;
===Functions===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=Useful interaction function programming constructs=&lt;br /&gt;
[[Types of morphogens and factors|Types of morphogens and factors click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|&#039;&#039;&#039;Pre-defined variables&#039;&#039;&#039;|| &lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|dt|| computational step size&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|realtime|| virtual time of the model&lt;br /&gt;
|}&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|&#039;&#039;&#039;Pre-defined functions&#039;&#039;&#039;|| &lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|Steps(m)|| current step number in Mesh m&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|pro(k,id)|| promote by k in regions designated by factor, id (&#039;&#039;pro(k,&#039;&#039;&#039;x&#039;&#039;&#039;)=1+k&#039;&#039;&#039;x&#039;&#039;&#039;&#039;&#039;, i.e. promote by &#039;&#039;k=0&#039;&#039; and the value of &#039;&#039;pro()&#039;&#039; is &#039;&#039;1&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|inh(k,id)|| inhibit by k in regions designated by factor, id (&#039;&#039;inh(k,&#039;&#039;&#039;x&#039;&#039;&#039;)=1/(1+k&#039;&#039;&#039;x&#039;&#039;&#039;)&#039;&#039;, i.e. inhibit by &#039;&#039;k=0&#039;&#039; and the value of &#039;&#039;inh()&#039;&#039; is &#039;&#039;1&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|local_setproperties( m )|| initialise Mesh properties&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|leaf_*( m, ... )|| A large library of functions for manipulating the Mesh data structure, m. All of them are listed in the main Help menu of the GFtbox GUI, both in alphabetical order and categorised by topic.&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The patterns of morphogens A and B are often set up by using logical indexing, e.g.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        id_a_p(m.nodes(:,1) &amp;lt; -0.03) = 1; &lt;br /&gt;
        id_b_p(m.nodes(:,2) &amp;lt; -0.01) = 1; &lt;br /&gt;
where &#039;&#039;id_a_p&#039;&#039; is the vector of values of the A morphogen. &#039;&#039;m.node(:,1)&#039;&#039; refers to the &#039;&#039;x&#039;&#039; coordinates of all nodes (vertices) in the mesh.&amp;lt;br&amp;gt;&lt;br /&gt;
The expression &#039;&#039;(m.nodes(:,1) &amp;lt; -0.03)&#039;&#039; means find all vertices with &#039;&#039;x&#039;&#039; coordinates that are less than -0.03.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Similarly, &#039;&#039;(m.nodes(:,2) &amp;lt; -0.01)&#039;&#039; means find all vertices with &#039;&#039;y&#039;&#039; coordinates that are less than -0.01.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the pattern of polariser (P) is set up by&amp;lt;br&amp;gt;        &lt;br /&gt;
&lt;br /&gt;
        P((m.nodes(:,1) &amp;lt; -0.05) &amp;amp; (m.nodes(:,2) &amp;gt; 0.03)) = 1;&lt;br /&gt;
Where &#039;&#039;(m.nodes(:,1) &amp;lt; -0.05) &amp;amp; (m.nodes(:,2) &amp;gt; 0.03)&#039;&#039; means find all vertices with &#039;&#039;x,y&#039;&#039; coordinates that are less than -0.05 and greater than 0.03 respectively&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Thus the full code describing the model is:&lt;br /&gt;
    if (Steps(m)==0) &amp;amp;&amp;amp; m.globalDynamicProps.doinit  % Initialisation code.&lt;br /&gt;
        id_a_p(m.nodes(:,1) &amp;lt; -0.03) = 1; % setup region for A where identity factor A is represented by id_a_p&lt;br /&gt;
        id_b_p(m.nodes(:,2) &amp;lt; -0.01) = 1; % setup region for B&lt;br /&gt;
    else&lt;br /&gt;
        % @@KRN Growth Regulatory Network&lt;br /&gt;
        kapar_p(:) = id_a_l .* inh(1,id_b_l); % growth rate&lt;br /&gt;
        kaper_p(:) = kapar_p; % isotropic growth&lt;br /&gt;
        kbpar_p(:) = kapar_p; % same on both sides of the sheet&lt;br /&gt;
        kbper_p(:) = kapar_p; % same&lt;br /&gt;
        knor_p(:)  = 0;       % thickness not growing&lt;br /&gt;
    end&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Ready_Reference_Manual&amp;diff=5234</id>
		<title>Ready Reference Manual</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Ready_Reference_Manual&amp;diff=5234"/>
		<updated>2011-06-24T16:16:56Z</updated>

		<summary type="html">&lt;p&gt;Jrk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Summary of controls=&lt;br /&gt;
Roll the mouse over any control and information about the control will pop-up.&lt;br /&gt;
==Models==&lt;br /&gt;
* As a rule of thumb, growth rate * time step should be less than 0.01. It is possible for the diffusion processes to become unstable if the time step is too large - signals can oscillate. Reduce the time step and reduce the decay rate.&lt;br /&gt;
* Errors in the interaction function will cause the system to stop, and the interaction function will be disabled. The controls in the Interaction Function panel will all turn red to indicate this.&lt;br /&gt;
** To re-enable the interaction function, click the Reset button at the top of the GUI. &lt;br /&gt;
** To find the error&lt;br /&gt;
*** There will be a message on the Matlab console saying in which line of the interaction function it detected an error. Open the interaction function in the Matlab editor, find that line, and set a breakpoint there or shortly before (by clicking in the left margin -- a red dot will appear).&lt;br /&gt;
*** The next time the interaction function runs, Matlab will suspend execution at the breakpoint and go into debug mode. You can then examine the values of variables and step through the code one line at a time in order to discover why the error is happening.&lt;br /&gt;
*** Matlab provides extensive tutorials on how to program and there is much information on the web.&lt;br /&gt;
  &lt;br /&gt;
==Running models==&lt;br /&gt;
&lt;br /&gt;
The normally &#039;&#039;&#039;green Run pane&#039;&#039;&#039;l turns &#039;&#039;&#039;red&#039;&#039;&#039; whilst the model is running.&amp;lt;br&amp;gt;&lt;br /&gt;
A &#039;&#039;&#039;yellow&#039;&#039;&#039; Run panel means that the model is running on a version of the GFtbox that is older than the model itself (look at the interaction header to see our source code version control number for the copy of GFtbox that created the model).&amp;lt;br&amp;gt;&lt;br /&gt;
An interaction function error (or any other error) will stop the model from running. It is then necessary to Reset using the&#039;&#039;&#039; Reset key - which will have turned red&#039;&#039;&#039;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
To run a model from the GUI&lt;br /&gt;
*Step, execute one step of &#039;&#039;dt&#039;&#039;. A whole lot of information pours out at the command console. Sometimes it takes a while to solve the equations. The process is monitored by a series of dots . . . . . . . Further information is provided below the Plotting panel, e.g. Step number, time per iteration, time per finite element, growth, etc.&lt;br /&gt;
*Run for, and enter the number of steps into the box&lt;br /&gt;
*Run until, and enter the model time to which you want to run&lt;br /&gt;
*Run to, and enter the multiple of the initial area you want to run to&lt;br /&gt;
*Stop, stops execution at the end of the current step.&lt;br /&gt;
*Call, makes a call to the interaction function but does NOT grow. This is useful for checking initial conditions - set patterns of morphogens. Having made a Call to the interaction function it is good practice to then Restart the model before running a model.&lt;br /&gt;
*Menu:Stages. &#039;&#039;&#039;We usually run models&#039;&#039;&#039; by setting up a set of, say 5, stages that we want stored. Then, having run the model we can revert back to any of the stages - make a change - and re-run starting from that point. The stages are stored in the project directory with the suffix *000# where # is the time. Stage times are stored with the project - and copied into the daughter project with Save As.&lt;br /&gt;
**Compute more stages, pops up a box asking for a set of times that you want stored then starts computing&lt;br /&gt;
**Request more stages, does the same but does not start computing.&lt;br /&gt;
**Save experiment stages, saves all the current stage files in a subdirectory.&lt;br /&gt;
**Import experiment stages, recovers a saved experiment. This pair of commands help document results and make figures. In addition, when the system runs on a cluster, the results are returned as experimental results to be accessed in this way.&lt;br /&gt;
==Outputs==&lt;br /&gt;
===Plotting panel===&lt;br /&gt;
To view&lt;br /&gt;
*Specified values, i.e. kapar or a particular morphogen (factor) select from drop down menu top right and tick Plot current factor.&lt;br /&gt;
**To autoscale the axes. Panel:Plot Options:Auto axis range. To autozoom as well, click Menus:Plot:Auto zoom and centre. To fix the axes scale (to view growth). The best is to first grow with auto ranging on. Then click Panel:Plot Options:Axis From Picture and unclick the Auto axis range box. Alternatively, unclick the Auto axis range box and key in values you want - click elsewhere on the GUI to force a replot.&lt;br /&gt;
**To autoscale the morphogen colours. Panel:Plot Options:Auto color range. To fix the colour range the easiest is to click From Picture and unclick the Auto color range. Alternatively, unclick the Auto color range box and key in values you want - click elsewhere on the GUI to force a replot.&lt;br /&gt;
**To find out the level of a morphogen at a particular point on the canvas. Select Tool:Simulation and select the morphogen of interest (top right pull down) and click on the point of interest. The value at that point will appear in bold just below the Panel:Timescale box.&lt;br /&gt;
*Output variables, e.g. growth rate, tick Plot output value and make selection from the two drop down menus.&lt;br /&gt;
*thickness, tick/untick Menu:Plot:Thickness&lt;br /&gt;
To show/hide &lt;br /&gt;
*thickness, tick/untick Menu:Plot:Thickness&lt;br /&gt;
*mesh, tick/untick FE edges&lt;br /&gt;
*axes, tick/untick Menu:Plot:Show/Hide axes&amp;lt;br&amp;gt;&lt;br /&gt;
*legend, tick/untick Menu:Plot:Show/Hide legend - also Set legend to choose heading&amp;lt;br&amp;gt;&lt;br /&gt;
To set/modify values of morphogens (best done in the interaction function)&lt;br /&gt;
* Choose morphogen (list box), Click on Select Tool:Factors, &#039;---&#039; list box to select action and click on appropriate button (Add constant or Add radial, etc).&lt;br /&gt;
* at individual nodes (vertices). Choose morphogen (list box), Click on Select Tool:Factors, &#039;---&#039; list box to select action and click on node.&amp;lt;br&amp;gt;&lt;br /&gt;
To clip the mesh (hide part of the mesh)&lt;br /&gt;
*Tick Clipping plane and choose the plane with Az (azimuth), ti (tilt),  D&lt;br /&gt;
*Tick Clip and select the region to hide by using morphogen values (click on Mgens button)&lt;br /&gt;
===Snapshots===&lt;br /&gt;
Saved in png format in the project snapshots subdirectory&lt;br /&gt;
*Clicking Take snapshot makes a png file copy of the plotting screen. At the same time a copy of the interaction function (relabelled to have .txt as a suffix) is also made - to help document the snapshot.&lt;br /&gt;
*Publication quality screenshot is made by changing the action of the Snapshot button using Menu:Misc:Hi-res snapshots and choosing a number of dots per inch.&lt;br /&gt;
===VRML, OBJ, FIG===&lt;br /&gt;
To export the current mesh&lt;br /&gt;
*VRML, to interactively view the mesh using a web browser export the mesh as a VRML file, Menu:Mesh:Save VRML. We use such files to make 3D prints.&lt;br /&gt;
*FIG, for Matlab figure files.&lt;br /&gt;
===Movies===&lt;br /&gt;
By default movies are uncompressed and stored in the projects movies subdirectory&lt;br /&gt;
*To compress select Menu:Movie:Codec - we currently favour Motion JPEG avi&lt;br /&gt;
*To automatically convert the output to flash, .flv, select Menu:Movie:Convert to flash. This option requires the ffmpeg program to be on the current path.&lt;br /&gt;
*Click Record Movie to start creating a movie. The button will change to Stop Movie.&lt;br /&gt;
===Web and PowerPoint===&lt;br /&gt;
Writing web and PowerPoint pages is facilitated by:&lt;br /&gt;
*&#039;&#039;&#039;Output .avi for PowerPoint&#039;&#039;&#039;. Use Menu:Movie:Codec: Motion JPEG avi. This does not play properly on PowerPoint 2007 unless you run PowerPoint in 2003 compatibility mode. The movie is saved into the project movies subdirectory together with an image (.png) of the final frame and a copy of the interaction function (renamed .txt - to document the results).&lt;br /&gt;
*Output &#039;&#039;&#039;flash (.flv) movies for web&#039;&#039;&#039;. Select Menu:Movie:Convert to flash. This option requires the [http://www.ffmpeg.org/ ffmpeg] program to be on the current path. The movie is saved to the project directory together with an image (.png) of the first frame (for last frame see above).&lt;br /&gt;
*Output&#039;&#039;&#039; web compatible copy of the interaction function&#039;&#039;&#039; use &#039;&#039;webify_interaction_function.m&#039;&#039; which outputs a txt file with  comments marked up in HTML to appear in green and sections in blue.&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
===Files===&lt;br /&gt;
==Simulation==&lt;br /&gt;
&lt;br /&gt;
==Graphical User Interface==&lt;br /&gt;
===Menus===&lt;br /&gt;
===Panels===&lt;br /&gt;
==Interaction function==&lt;br /&gt;
===Functions===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=Useful interaction function programming constructs=&lt;br /&gt;
[[Types of morphogens and factors|Types of morphogens and factors click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|&#039;&#039;&#039;Pre-defined variables&#039;&#039;&#039;|| &lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|dt|| computational step size&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|realtime|| virtual time of the model&lt;br /&gt;
|}&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|&#039;&#039;&#039;Pre-defined functions&#039;&#039;&#039;|| &lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|Steps(m)|| current step number in Mesh m&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|pro(k,id)|| promote by k in regions designated by factor, id (&#039;&#039;pro(k,&#039;&#039;&#039;x&#039;&#039;&#039;)=1+k&#039;&#039;&#039;x&#039;&#039;&#039;&#039;&#039;, i.e. promote by &#039;&#039;k=0&#039;&#039; and the value of &#039;&#039;pro()&#039;&#039; is &#039;&#039;1&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|inh(k,id)|| inhibit by k in regions designated by factor, id (&#039;&#039;inh(k,&#039;&#039;&#039;x&#039;&#039;&#039;)=1/(1+k&#039;&#039;&#039;x&#039;&#039;&#039;)&#039;&#039;, i.e. inhibit by &#039;&#039;k=0&#039;&#039; and the value of &#039;&#039;inh()&#039;&#039; is &#039;&#039;1&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|local_setproperties( m )|| initialise Mesh properties&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|leaf_*( m, ... )|| A large library of functions for manipulating the Mesh data structure, m. All of them are listed in the main Help menu of the GFtbox GUI, both in alphabetical order and categorised by topic.&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The patterns of morphogens A and B are often set up by using logical indexing, e.g.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        id_a_p(m.nodes(:,1) &amp;lt; -0.03) = 1; &lt;br /&gt;
        id_b_p(m.nodes(:,2) &amp;lt; -0.01) = 1; &lt;br /&gt;
where &#039;&#039;id_a_p&#039;&#039; is the vector of values of the A morphogen. &#039;&#039;m.node(:,1)&#039;&#039; refers to the &#039;&#039;x&#039;&#039; coordinates of all nodes (vertices) in the mesh.&amp;lt;br&amp;gt;&lt;br /&gt;
The expression &#039;&#039;(m.nodes(:,1) &amp;lt; -0.03)&#039;&#039; means find all vertices with &#039;&#039;x&#039;&#039; coordinates that are less than -0.03.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Similarly, &#039;&#039;(m.nodes(:,2) &amp;lt; -0.01)&#039;&#039; means find all vertices with &#039;&#039;y&#039;&#039; coordinates that are less than -0.01.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the pattern of polariser (P) is set up by&amp;lt;br&amp;gt;        &lt;br /&gt;
&lt;br /&gt;
        P((m.nodes(:,1) &amp;lt; -0.05) &amp;amp; (m.nodes(:,2) &amp;gt; 0.03)) = 1;&lt;br /&gt;
Where &#039;&#039;(m.nodes(:,1) &amp;lt; -0.05) &amp;amp; (m.nodes(:,2) &amp;gt; 0.03)&#039;&#039; means find all vertices with &#039;&#039;x,y&#039;&#039; coordinates that are less than -0.05 and greater than 0.03 respectively&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Thus the full code describing the model is:&lt;br /&gt;
    if (Steps(m)==0) &amp;amp;&amp;amp; m.globalDynamicProps.doinit  % Initialisation code.&lt;br /&gt;
        id_a_p(m.nodes(:,1) &amp;lt; -0.03) = 1; % setup region for A where identity factor A is represented by id_a_p&lt;br /&gt;
        id_b_p(m.nodes(:,2) &amp;lt; -0.01) = 1; % setup region for B&lt;br /&gt;
    else&lt;br /&gt;
        % @@KRN Growth Regulatory Network&lt;br /&gt;
        kapar_p(:) = id_a_l .* inh(1,id_b_l); % growth rate&lt;br /&gt;
        kaper_p(:) = kapar_p; % isotropic growth&lt;br /&gt;
        kbpar_p(:) = kapar_p; % same on both sides of the sheet&lt;br /&gt;
        kbper_p(:) = kapar_p; % same&lt;br /&gt;
        knor_p(:)  = 0;       % thickness not growing&lt;br /&gt;
    end&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Ready_Reference_Manual&amp;diff=5226</id>
		<title>Ready Reference Manual</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Ready_Reference_Manual&amp;diff=5226"/>
		<updated>2011-06-24T16:16:20Z</updated>

		<summary type="html">&lt;p&gt;Jrk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Summary of controls=&lt;br /&gt;
Roll the mouse over any control and information about the control will pop-up.&lt;br /&gt;
==Models==&lt;br /&gt;
* As a rule of thumb, growth rate * time step should be less than 0.01. It is possible for the diffusion processes to become unstable if the time step is too large - signals can oscillate. Reduce the time step and reduce the decay rate.&lt;br /&gt;
* Errors in the interaction function will cause the system to stop, and the interaction function will be disabled. The controls in the Interaction Function panel will all turn red to indicate this.&lt;br /&gt;
** To re-enable the interaction function, click the Reset button at the top of the GUI. &lt;br /&gt;
** To find the error&lt;br /&gt;
*** Set Matlab to always stop on error, Matlab:Menus:Debug:Stop:Always stop on errors. Reset the GFtbox GUI as just mentioned. There will be a message on the Matlab console saying in which line of the interaction function it detected an error. Open the interaction function in the Matlab editor, find that line, and set a breakpoint there or shortly before (by clicking in the left margin -- a red dot will appear). The next time the interaction function runs, Matlab will suspend execution at the breakpoint and go into debug mode. You can then examine the values of variables and step through the code one line at a time in order to discover why the error is happening.&lt;br /&gt;
*** Matlab provides extensive tutorials on how to program and there is much information on the web.&lt;br /&gt;
  &lt;br /&gt;
==Running models==&lt;br /&gt;
&lt;br /&gt;
The normally &#039;&#039;&#039;green Run pane&#039;&#039;&#039;l turns &#039;&#039;&#039;red&#039;&#039;&#039; whilst the model is running.&amp;lt;br&amp;gt;&lt;br /&gt;
A &#039;&#039;&#039;yellow&#039;&#039;&#039; Run panel means that the model is running on a version of the GFtbox that is older than the model itself (look at the interaction header to see our source code version control number for the copy of GFtbox that created the model).&amp;lt;br&amp;gt;&lt;br /&gt;
An interaction function error (or any other error) will stop the model from running. It is then necessary to Reset using the&#039;&#039;&#039; Reset key - which will have turned red&#039;&#039;&#039;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
To run a model from the GUI&lt;br /&gt;
*Step, execute one step of &#039;&#039;dt&#039;&#039;. A whole lot of information pours out at the command console. Sometimes it takes a while to solve the equations. The process is monitored by a series of dots . . . . . . . Further information is provided below the Plotting panel, e.g. Step number, time per iteration, time per finite element, growth, etc.&lt;br /&gt;
*Run for, and enter the number of steps into the box&lt;br /&gt;
*Run until, and enter the model time to which you want to run&lt;br /&gt;
*Run to, and enter the multiple of the initial area you want to run to&lt;br /&gt;
*Stop, stops execution at the end of the current step.&lt;br /&gt;
*Call, makes a call to the interaction function but does NOT grow. This is useful for checking initial conditions - set patterns of morphogens. Having made a Call to the interaction function it is good practice to then Restart the model before running a model.&lt;br /&gt;
*Menu:Stages. &#039;&#039;&#039;We usually run models&#039;&#039;&#039; by setting up a set of, say 5, stages that we want stored. Then, having run the model we can revert back to any of the stages - make a change - and re-run starting from that point. The stages are stored in the project directory with the suffix *000# where # is the time. Stage times are stored with the project - and copied into the daughter project with Save As.&lt;br /&gt;
**Compute more stages, pops up a box asking for a set of times that you want stored then starts computing&lt;br /&gt;
**Request more stages, does the same but does not start computing.&lt;br /&gt;
**Save experiment stages, saves all the current stage files in a subdirectory.&lt;br /&gt;
**Import experiment stages, recovers a saved experiment. This pair of commands help document results and make figures. In addition, when the system runs on a cluster, the results are returned as experimental results to be accessed in this way.&lt;br /&gt;
==Outputs==&lt;br /&gt;
===Plotting panel===&lt;br /&gt;
To view&lt;br /&gt;
*Specified values, i.e. kapar or a particular morphogen (factor) select from drop down menu top right and tick Plot current factor.&lt;br /&gt;
**To autoscale the axes. Panel:Plot Options:Auto axis range. To autozoom as well, click Menus:Plot:Auto zoom and centre. To fix the axes scale (to view growth). The best is to first grow with auto ranging on. Then click Panel:Plot Options:Axis From Picture and unclick the Auto axis range box. Alternatively, unclick the Auto axis range box and key in values you want - click elsewhere on the GUI to force a replot.&lt;br /&gt;
**To autoscale the morphogen colours. Panel:Plot Options:Auto color range. To fix the colour range the easiest is to click From Picture and unclick the Auto color range. Alternatively, unclick the Auto color range box and key in values you want - click elsewhere on the GUI to force a replot.&lt;br /&gt;
**To find out the level of a morphogen at a particular point on the canvas. Select Tool:Simulation and select the morphogen of interest (top right pull down) and click on the point of interest. The value at that point will appear in bold just below the Panel:Timescale box.&lt;br /&gt;
*Output variables, e.g. growth rate, tick Plot output value and make selection from the two drop down menus.&lt;br /&gt;
*thickness, tick/untick Menu:Plot:Thickness&lt;br /&gt;
To show/hide &lt;br /&gt;
*thickness, tick/untick Menu:Plot:Thickness&lt;br /&gt;
*mesh, tick/untick FE edges&lt;br /&gt;
*axes, tick/untick Menu:Plot:Show/Hide axes&amp;lt;br&amp;gt;&lt;br /&gt;
*legend, tick/untick Menu:Plot:Show/Hide legend - also Set legend to choose heading&amp;lt;br&amp;gt;&lt;br /&gt;
To set/modify values of morphogens (best done in the interaction function)&lt;br /&gt;
* Choose morphogen (list box), Click on Select Tool:Factors, &#039;---&#039; list box to select action and click on appropriate button (Add constant or Add radial, etc).&lt;br /&gt;
* at individual nodes (vertices). Choose morphogen (list box), Click on Select Tool:Factors, &#039;---&#039; list box to select action and click on node.&amp;lt;br&amp;gt;&lt;br /&gt;
To clip the mesh (hide part of the mesh)&lt;br /&gt;
*Tick Clipping plane and choose the plane with Az (azimuth), ti (tilt),  D&lt;br /&gt;
*Tick Clip and select the region to hide by using morphogen values (click on Mgens button)&lt;br /&gt;
===Snapshots===&lt;br /&gt;
Saved in png format in the project snapshots subdirectory&lt;br /&gt;
*Clicking Take snapshot makes a png file copy of the plotting screen. At the same time a copy of the interaction function (relabelled to have .txt as a suffix) is also made - to help document the snapshot.&lt;br /&gt;
*Publication quality screenshot is made by changing the action of the Snapshot button using Menu:Misc:Hi-res snapshots and choosing a number of dots per inch.&lt;br /&gt;
===VRML, OBJ, FIG===&lt;br /&gt;
To export the current mesh&lt;br /&gt;
*VRML, to interactively view the mesh using a web browser export the mesh as a VRML file, Menu:Mesh:Save VRML. We use such files to make 3D prints.&lt;br /&gt;
*FIG, for Matlab figure files.&lt;br /&gt;
===Movies===&lt;br /&gt;
By default movies are uncompressed and stored in the projects movies subdirectory&lt;br /&gt;
*To compress select Menu:Movie:Codec - we currently favour Motion JPEG avi&lt;br /&gt;
*To automatically convert the output to flash, .flv, select Menu:Movie:Convert to flash. This option requires the ffmpeg program to be on the current path.&lt;br /&gt;
*Click Record Movie to start creating a movie. The button will change to Stop Movie.&lt;br /&gt;
===Web and PowerPoint===&lt;br /&gt;
Writing web and PowerPoint pages is facilitated by:&lt;br /&gt;
*&#039;&#039;&#039;Output .avi for PowerPoint&#039;&#039;&#039;. Use Menu:Movie:Codec: Motion JPEG avi. This does not play properly on PowerPoint 2007 unless you run PowerPoint in 2003 compatibility mode. The movie is saved into the project movies subdirectory together with an image (.png) of the final frame and a copy of the interaction function (renamed .txt - to document the results).&lt;br /&gt;
*Output &#039;&#039;&#039;flash (.flv) movies for web&#039;&#039;&#039;. Select Menu:Movie:Convert to flash. This option requires the [http://www.ffmpeg.org/ ffmpeg] program to be on the current path. The movie is saved to the project directory together with an image (.png) of the first frame (for last frame see above).&lt;br /&gt;
*Output&#039;&#039;&#039; web compatible copy of the interaction function&#039;&#039;&#039; use &#039;&#039;webify_interaction_function.m&#039;&#039; which outputs a txt file with  comments marked up in HTML to appear in green and sections in blue.&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
===Files===&lt;br /&gt;
==Simulation==&lt;br /&gt;
&lt;br /&gt;
==Graphical User Interface==&lt;br /&gt;
===Menus===&lt;br /&gt;
===Panels===&lt;br /&gt;
==Interaction function==&lt;br /&gt;
===Functions===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=Useful interaction function programming constructs=&lt;br /&gt;
[[Types of morphogens and factors|Types of morphogens and factors click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|&#039;&#039;&#039;Pre-defined variables&#039;&#039;&#039;|| &lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|dt|| computational step size&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|realtime|| virtual time of the model&lt;br /&gt;
|}&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|&#039;&#039;&#039;Pre-defined functions&#039;&#039;&#039;|| &lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|Steps(m)|| current step number in Mesh m&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|pro(k,id)|| promote by k in regions designated by factor, id (&#039;&#039;pro(k,&#039;&#039;&#039;x&#039;&#039;&#039;)=1+k&#039;&#039;&#039;x&#039;&#039;&#039;&#039;&#039;, i.e. promote by &#039;&#039;k=0&#039;&#039; and the value of &#039;&#039;pro()&#039;&#039; is &#039;&#039;1&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|inh(k,id)|| inhibit by k in regions designated by factor, id (&#039;&#039;inh(k,&#039;&#039;&#039;x&#039;&#039;&#039;)=1/(1+k&#039;&#039;&#039;x&#039;&#039;&#039;)&#039;&#039;, i.e. inhibit by &#039;&#039;k=0&#039;&#039; and the value of &#039;&#039;inh()&#039;&#039; is &#039;&#039;1&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|local_setproperties( m )|| initialise Mesh properties&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|leaf_*( m, ... )|| A large library of functions for manipulating the Mesh data structure, m. All of them are listed in the main Help menu of the GFtbox GUI, both in alphabetical order and categorised by topic.&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The patterns of morphogens A and B are often set up by using logical indexing, e.g.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        id_a_p(m.nodes(:,1) &amp;lt; -0.03) = 1; &lt;br /&gt;
        id_b_p(m.nodes(:,2) &amp;lt; -0.01) = 1; &lt;br /&gt;
where &#039;&#039;id_a_p&#039;&#039; is the vector of values of the A morphogen. &#039;&#039;m.node(:,1)&#039;&#039; refers to the &#039;&#039;x&#039;&#039; coordinates of all nodes (vertices) in the mesh.&amp;lt;br&amp;gt;&lt;br /&gt;
The expression &#039;&#039;(m.nodes(:,1) &amp;lt; -0.03)&#039;&#039; means find all vertices with &#039;&#039;x&#039;&#039; coordinates that are less than -0.03.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Similarly, &#039;&#039;(m.nodes(:,2) &amp;lt; -0.01)&#039;&#039; means find all vertices with &#039;&#039;y&#039;&#039; coordinates that are less than -0.01.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the pattern of polariser (P) is set up by&amp;lt;br&amp;gt;        &lt;br /&gt;
&lt;br /&gt;
        P((m.nodes(:,1) &amp;lt; -0.05) &amp;amp; (m.nodes(:,2) &amp;gt; 0.03)) = 1;&lt;br /&gt;
Where &#039;&#039;(m.nodes(:,1) &amp;lt; -0.05) &amp;amp; (m.nodes(:,2) &amp;gt; 0.03)&#039;&#039; means find all vertices with &#039;&#039;x,y&#039;&#039; coordinates that are less than -0.05 and greater than 0.03 respectively&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Thus the full code describing the model is:&lt;br /&gt;
    if (Steps(m)==0) &amp;amp;&amp;amp; m.globalDynamicProps.doinit  % Initialisation code.&lt;br /&gt;
        id_a_p(m.nodes(:,1) &amp;lt; -0.03) = 1; % setup region for A where identity factor A is represented by id_a_p&lt;br /&gt;
        id_b_p(m.nodes(:,2) &amp;lt; -0.01) = 1; % setup region for B&lt;br /&gt;
    else&lt;br /&gt;
        % @@KRN Growth Regulatory Network&lt;br /&gt;
        kapar_p(:) = id_a_l .* inh(1,id_b_l); % growth rate&lt;br /&gt;
        kaper_p(:) = kapar_p; % isotropic growth&lt;br /&gt;
        kbpar_p(:) = kapar_p; % same on both sides of the sheet&lt;br /&gt;
        kbper_p(:) = kapar_p; % same&lt;br /&gt;
        knor_p(:)  = 0;       % thickness not growing&lt;br /&gt;
    end&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=GFtbox_Tutorial_pages&amp;diff=4913</id>
		<title>GFtbox Tutorial pages</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=GFtbox_Tutorial_pages&amp;diff=4913"/>
		<updated>2011-06-24T15:39:16Z</updated>

		<summary type="html">&lt;p&gt;Jrk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[GFtbox|&#039;&#039;GFtbox&#039;&#039; Details]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Notes from a new user|Notes from a new user]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Running example models and using a cluster|Running example models and using a cluster]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Example pages|Examples from our papers]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Types of morphogens and factors| Types of morphogens and factors are given here]]&amp;lt;br&amp;gt;&lt;br /&gt;
([[Full freshly minted interaction function|A newly created interaction function is shown here - the green comments are another ready reference.]])&amp;lt;br&amp;gt;&lt;br /&gt;
[[Ready Reference Manual|&#039;&#039;&#039;&#039;&#039;Ready Reference&#039;&#039;&#039;&#039;&#039; Manual]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
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]].&lt;br /&gt;
=Three ways to use &#039;&#039;GFtbox&#039;&#039;=&lt;br /&gt;
1) [[GFtbox Tutorial pages#1 Modelling using the Graphical User Interface| &#039;&#039;&#039;Do everything from the Graphical User Interface (GUI).&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
2)   [[GFtbox Tutorial pages#2 Modelling using a combination of GUI and interaction function|&#039;&#039;&#039;Do only some things from the GUI.&#039;&#039;&#039;]] 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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
3) [[GFtbox Tutorial pages#3 Running models without the GUI|&#039;&#039;&#039;Without the GUI.&#039;&#039;&#039;]] 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. &lt;br /&gt;
=&#039;&#039;&#039;1&#039;&#039;&#039; Modelling using the Graphical User Interface=&lt;br /&gt;
== Isotropic growth==&lt;br /&gt;
&#039;&#039;&#039;How to use the tutorial.&#039;&#039;&#039; Open GFtbox and attempt to repeat the results shown.&lt;br /&gt;
===1 A===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;700pt&amp;quot;|[[In the beginning Uniform|Tutorial on uniform growth.]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Consider a disc shaped canvas (tissue) in which the &#039;&#039;&#039;specified growth is uniform&#039;&#039;&#039;, isotropic and on both sides.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;&#039;&#039;Into what shape will the disc grow?&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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 &#039;&#039;Kapar&#039;&#039; and &#039;&#039;Kaper&#039;&#039; (&#039;&#039;A&#039;&#039; side) and &#039;&#039;Kbpar&#039;&#039; and &#039;&#039;Kbper&#039;&#039; (&#039;&#039;B&#039;&#039; side).&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;300pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;GPT_tut_uniform_20110527-0003.flv|GPT_tut_uniform_20110527-0003_Last.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===1 B===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;700pt&amp;quot;|[[In the beginning non-uniform|Tutorial on non-uniform growth.]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Consider a disc shaped canvas (tissue) in which the&#039;&#039;&#039; non-uniform specified growth&#039;&#039;&#039; increases in proportion to the distance from the centre.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;&#039;&#039;Into what shape will the disc grow?&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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] ).&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;GPT_tut_uniform_20110527-0006.flv|GPT_tut_uniform_20110527-0006_First.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Adding polariser==&lt;br /&gt;
===1 C===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;700pt&amp;quot;|[[In the beginning Growing a cone|Tutorial on uniform growth with non-uniform polariser.]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
In the presence of polariser, &#039;&#039;GFtbox&#039;&#039; 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: &#039;&#039;Kapar&#039;&#039; and &#039;&#039;Kaper&#039;&#039; (&#039;&#039;A&#039;&#039; side) and &#039;&#039;Kbpar&#039;&#039; and &#039;&#039;Kbper&#039;&#039; (&#039;&#039;B&#039;&#039; side).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
We now&#039;&#039;&#039; add polariser&#039;&#039;&#039;.  Start with example A - uniform growth - and add a radial polarising gradient.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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 (&#039;&#039;Kpar&#039;&#039;) or perpendicular to (&#039;&#039;Kper&#039;&#039;) that direction.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Given a &#039;&#039;&#039;uniform pattern of specified growth parallel&#039;&#039;&#039; to the polariser and &#039;&#039;&#039;zero specified growth perpendicular&#039;&#039;&#039; to the polariser.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &#039;&#039;&#039;What will be the final shape?&#039;&#039;&#039;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;   loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;GPT_in_the_beginning_2_20110510-0003.flv|GPT_in_the_beginning_2_20110510-0003_First.png&amp;lt;/wikiflv&amp;gt;&amp;lt;small&amp;gt;Note: the gradient of the polariser, green to cyan, is shown using the arrows. Specified growth rate parallel to the arrows, red, is uniform.&amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&#039;&#039;&#039;2&#039;&#039;&#039; Modelling using a combination of GUI and interaction function=&lt;br /&gt;
&#039;&#039;&#039;How to use these tutorials.&#039;&#039;&#039; 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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The &#039;&#039;&#039;full specification&#039;&#039;&#039; of a &#039;&#039;GFtbox&#039;&#039; model is stored in a combination of the mesh data structure (&#039;&#039;&#039;Mesh&#039;&#039;&#039;) and the &#039;&#039;&#039;interaction function&#039;&#039;&#039;. 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 &#039;&#039;&#039;interaction function&#039;&#039;&#039; (a Matlab program file &#039;&#039;.m&#039;&#039;) contains all the details of the growth regulation system: morphogen concentrations, signal interactions etc. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
When a new project is first edited&#039;&#039;&#039; the interaction function is generated automatically&#039;&#039;&#039;. 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 &#039;&#039;&#039;always invoke the Editor from the GUI&#039;&#039;&#039; (Panel: Interaction Function: Edit).&lt;br /&gt;
&lt;br /&gt;
===2 A===&lt;br /&gt;
&#039;&#039;&#039;Basic interaction function&#039;&#039;&#039;&lt;br /&gt;
The patterns of morphogens A and B are set up by &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        id_a_p(m.nodes(:,1) &amp;lt; -0.03) = 1; &lt;br /&gt;
        id_b_p(m.nodes(:,2) &amp;lt; -0.01) = 1; &lt;br /&gt;
&lt;br /&gt;
where &#039;&#039;id_a_p&#039;&#039; is the A morphogen. &#039;&#039;m.node(:,1)&#039;&#039; refers to the &#039;&#039;x&#039;&#039; coordinates of all nodes (vertices) in the mesh&amp;lt;br&amp;gt;&lt;br /&gt;
The expression &#039;&#039;(m.nodes(:,1) &amp;lt; -0.03)&#039;&#039; means find all vertices with &#039;&#039;x&#039;&#039; coordinates that are less than -0.03.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Similarly, &#039;&#039;(m.nodes(:,2) &amp;lt; -0.01)&#039;&#039; means find all vertices with &#039;&#039;y&#039;&#039; coordinates that are less than -0.01.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the pattern of polariser (P) is set up by&amp;lt;br&amp;gt;        &lt;br /&gt;
&lt;br /&gt;
        P((m.nodes(:,1) &amp;lt; -0.05) &amp;amp; (m.nodes(:,2) &amp;gt; 0.03)) = 1;&lt;br /&gt;
Where &#039;&#039;(m.nodes(:,1) &amp;lt; -0.05) &amp;amp; (m.nodes(:,2) &amp;gt; 0.03)&#039;&#039; means find all vertices with &#039;&#039;x,y&#039;&#039; coordinates that are less than -0.05 and greater than 0.03 respectively&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Thus the full code describing the model is:&lt;br /&gt;
    if (Steps(m)==0) &amp;amp;&amp;amp; m.globalDynamicProps.doinit  % Initialisation code.&lt;br /&gt;
        id_a_p(m.nodes(:,1) &amp;lt; -0.03) = 1; % setup region for A where identity factor A is represented by id_a_p&lt;br /&gt;
        id_b_p(m.nodes(:,2) &amp;lt; -0.01) = 1; % setup region for B&lt;br /&gt;
    else&lt;br /&gt;
        % @@KRN Growth Regulatory Network&lt;br /&gt;
        kapar_p(:) = id_a_l .* inh(1,id_b_l); % growth rate&lt;br /&gt;
        kaper_p(:) = kapar_p; % isotropic growth&lt;br /&gt;
        kbpar_p(:) = kapar_p; % same on both sides of the sheet&lt;br /&gt;
        kbper_p(:) = kapar_p; % same&lt;br /&gt;
        knor_p(:)  = 0;       % thickness not growing&lt;br /&gt;
    end&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|[[Tutorial on the basic interaction function|Tutorial on a basic interaction function.]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The tutorial explains how the code shown above appears in the interaction function. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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 (&#039;&#039;Kapar&#039;&#039;, etc.) that have already been set through the GUI.&lt;br /&gt;
[[Types of morphogens and factors| Types of morphogens and factors are given here]].&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_why_matlab-2011-05-05-0005.flv|GPT_why_matlab-2011-05-05-0005_First.png‎&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
|-align=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
||&amp;lt;center&amp;gt;Play and the mesh will grow and subdivide. Normally we do not want to see the mesh. Red is growth rate&amp;lt;/center&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
===2 B===&lt;br /&gt;
&#039;&#039;&#039;Interaction function in detail&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
([[Full freshly minted interaction function|A newly created interaction function is shown here - this one has two, user specified morphogens: &#039;&#039;id_a&#039;&#039; and &#039;&#039;id_b&#039;&#039;.]])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|[[Tutorial on the interaction function details|Tutorial on the interaction function details.]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Types of morphogens and factors| Types of morphogens and factors are given here]].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Submodel 1&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0002.flv|GPT_tut_interaction_example_20110601-0002.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1&amp;lt;/center&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Submodel 2. Growth in the region that has no arrows is isotropic and, as result, the outgrowth is blunt.&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0007.flv|GPT_tut_interaction_example_20110601-0006_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 2&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===2 C Illustrating two independent ways to form shapes and the use of submodels. ===&lt;br /&gt;
Conclusion: interesting shapes can be generated either by &#039;&#039;&#039;patterns of differential growth&#039;&#039;&#039; or&#039;&#039;&#039; patterns of local growth axe&#039;&#039;&#039;s. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorial on two romatic hearts|Tutorial on two romantic hearts.]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|Submodel 1. Uniform specified polariser (&#039;&#039;&#039;no polariser gradient&#039;&#039;&#039;). Creating a shape using a specified pattern of isotropic growth.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Result&#039;&#039;&#039;: simple patterns of differential growth can readily produce blobby shapes. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_TwoWayHeart_20110531-0001.flv|GPT_TwoWayHeart_20110531-0001_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1. Pattern of isotropic specified growth (no polariser)&amp;lt;/center&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Submodel 2.&#039;&#039;&#039;Uniform specified growth&#039;&#039;&#039;. Creating a shape using a specified pattern of diffusable polariser.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Result&#039;&#039;&#039;: simple patterns organising a diffusable polariser can readily produce sharp shapes. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_TwoWayHeart_20110531-0002.flv|GPT_TwoWayHeart_20110531-0002_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 2. Pattern of specified polariser levels (green-cyan). Polariser can diffuse and the gradient is arrowed. Uniform specified growth (red).&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===2 D===&lt;br /&gt;
&#039;&#039;&#039;Retaining strain and cutting the mesh&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorial on retaining residual strain and cutting|Tutorial on retaining residual strain and cutting]]&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|&lt;br /&gt;
[[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.&lt;br /&gt;
|width=&amp;quot;120pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_RetainStrainAndCut_20110603-0006.flv|GPT_RetainStrainAndCut_20110603-0006.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;| [[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.&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_RetainStrainAndCut_20110603-0004.flv|GPT_RetainStrainAndCut_20110603-0004.png‎&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;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.&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
===2 E===&lt;br /&gt;
&#039;&#039;&#039;Patterning and growth&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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). &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorial on the patterning interaction function|Tutorial on the patterning interaction function]]&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|something here&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0002.flv|GPT_tut_interaction_example_20110601-0002.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1&amp;lt;/center&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|something here&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0007.flv|GPT_tut_interaction_example_20110601-0006_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 2&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=&#039;&#039;&#039;3&#039;&#039;&#039; Running models without the GUI=&lt;br /&gt;
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 &#039;&#039;GFtbox&#039;&#039; 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 &#039;&#039;GFtbox&#039;&#039; compatible with [http://www.gnu.org/software/octave/ Octave].)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;How to use these tutorials.&#039;&#039;&#039;  First ensure that your model is working as you would expect using the GUI. Then run the model from the Matlab command line. Finally, submit the project to the linux computing cluster with one or more ranges of parameters.&lt;br /&gt;
For further details [[Running example models and using a cluster|Running example models and using a cluster]]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=GFtbox_Tutorial_pages&amp;diff=4912</id>
		<title>GFtbox Tutorial pages</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=GFtbox_Tutorial_pages&amp;diff=4912"/>
		<updated>2011-06-24T15:38:51Z</updated>

		<summary type="html">&lt;p&gt;Jrk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[GFtbox|&#039;&#039;GFtbox&#039;&#039; Details]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Notes from a new user|Notes from a new user]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Running example models and using a cluster|Running example models and using a cluster]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Example pages|Examples from our papers]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Types of morphogens and factors| Types of morphogens and factors are given here]]&amp;lt;br&amp;gt;&lt;br /&gt;
([[Full freshly minted interaction function|A newly created interaction function is shown here - the green comments are another ready reference.]])&amp;lt;br&amp;gt;&lt;br /&gt;
[[Ready Reference Manual|&#039;&#039;&#039;&#039;&#039;Ready Reference&#039;&#039;&#039;&#039;&#039; Manual]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
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]].&lt;br /&gt;
=Three ways to use &#039;&#039;GFtbox&#039;&#039;=&lt;br /&gt;
1) [[GFtbox Tutorial pages#1 Modelling using the Graphical User Interface| &#039;&#039;&#039;Do everything from the Graphical User Interface (GUI).&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
2)   [[GFtbox Tutorial pages#2 Modelling using a combination of GUI and interaction function|&#039;&#039;&#039;Do only some things from the GUI.&#039;&#039;&#039;]] 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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
3) [[GFtbox Tutorial pages#3 Running models without the GUI|&#039;&#039;&#039;Without the GUI.&#039;&#039;&#039;]] 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. &lt;br /&gt;
=&#039;&#039;&#039;1&#039;&#039;&#039; Modelling using the Graphical User Interface=&lt;br /&gt;
== Isotropic growth==&lt;br /&gt;
&#039;&#039;&#039;How to use the tutorial.&#039;&#039;&#039; Open GFtbox and attempt to repeat the results shown.&lt;br /&gt;
===1 A===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;700pt&amp;quot;|[[In the beginning Uniform|Tutorial on uniform growth.]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Consider a disc shaped canvas (tissue) in which the &#039;&#039;&#039;specified growth is uniform&#039;&#039;&#039;, isotropic and on both sides.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;&#039;&#039;Into what shape will the disc grow?&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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 &#039;&#039;Kapar&#039;&#039; and &#039;&#039;Kaper&#039;&#039; (&#039;&#039;A&#039;&#039; side) and &#039;&#039;Kbpar&#039;&#039; and &#039;&#039;Kbper&#039;&#039; (&#039;&#039;B&#039;&#039; side).&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;300pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;GPT_tut_uniform_20110527-0003.flv|GPT_tut_uniform_20110527-0003_Last.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===1 B===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;700pt&amp;quot;|[[In the beginning non-uniform|Tutorial on non-uniform growth.]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Consider a disc shaped canvas (tissue) in which the&#039;&#039;&#039; non-uniform specified growth&#039;&#039;&#039; increases in proportion to the distance from the centre.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;&#039;&#039;Into what shape will the disc grow?&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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] ).&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;GPT_tut_uniform_20110527-0006.flv|GPT_tut_uniform_20110527-0006_First.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Adding polariser==&lt;br /&gt;
===1 C===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;700pt&amp;quot;|[[In the beginning Growing a cone|Tutorial on uniform growth non-uniform polariser.]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
In the presence of polariser, &#039;&#039;GFtbox&#039;&#039; 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: &#039;&#039;Kapar&#039;&#039; and &#039;&#039;Kaper&#039;&#039; (&#039;&#039;A&#039;&#039; side) and &#039;&#039;Kbpar&#039;&#039; and &#039;&#039;Kbper&#039;&#039; (&#039;&#039;B&#039;&#039; side).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
We now&#039;&#039;&#039; add polariser&#039;&#039;&#039;.  Start with example A - uniform growth - and add a radial polarising gradient.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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 (&#039;&#039;Kpar&#039;&#039;) or perpendicular to (&#039;&#039;Kper&#039;&#039;) that direction.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Given a &#039;&#039;&#039;uniform pattern of specified growth parallel&#039;&#039;&#039; to the polariser and &#039;&#039;&#039;zero specified growth perpendicular&#039;&#039;&#039; to the polariser.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &#039;&#039;&#039;What will be the final shape?&#039;&#039;&#039;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;   loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;GPT_in_the_beginning_2_20110510-0003.flv|GPT_in_the_beginning_2_20110510-0003_First.png&amp;lt;/wikiflv&amp;gt;&amp;lt;small&amp;gt;Note: the gradient of the polariser, green to cyan, is shown using the arrows. Specified growth rate parallel to the arrows, red, is uniform.&amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&#039;&#039;&#039;2&#039;&#039;&#039; Modelling using a combination of GUI and interaction function=&lt;br /&gt;
&#039;&#039;&#039;How to use these tutorials.&#039;&#039;&#039; 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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The &#039;&#039;&#039;full specification&#039;&#039;&#039; of a &#039;&#039;GFtbox&#039;&#039; model is stored in a combination of the mesh data structure (&#039;&#039;&#039;Mesh&#039;&#039;&#039;) and the &#039;&#039;&#039;interaction function&#039;&#039;&#039;. 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 &#039;&#039;&#039;interaction function&#039;&#039;&#039; (a Matlab program file &#039;&#039;.m&#039;&#039;) contains all the details of the growth regulation system: morphogen concentrations, signal interactions etc. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
When a new project is first edited&#039;&#039;&#039; the interaction function is generated automatically&#039;&#039;&#039;. 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 &#039;&#039;&#039;always invoke the Editor from the GUI&#039;&#039;&#039; (Panel: Interaction Function: Edit).&lt;br /&gt;
&lt;br /&gt;
===2 A===&lt;br /&gt;
&#039;&#039;&#039;Basic interaction function&#039;&#039;&#039;&lt;br /&gt;
The patterns of morphogens A and B are set up by &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        id_a_p(m.nodes(:,1) &amp;lt; -0.03) = 1; &lt;br /&gt;
        id_b_p(m.nodes(:,2) &amp;lt; -0.01) = 1; &lt;br /&gt;
&lt;br /&gt;
where &#039;&#039;id_a_p&#039;&#039; is the A morphogen. &#039;&#039;m.node(:,1)&#039;&#039; refers to the &#039;&#039;x&#039;&#039; coordinates of all nodes (vertices) in the mesh&amp;lt;br&amp;gt;&lt;br /&gt;
The expression &#039;&#039;(m.nodes(:,1) &amp;lt; -0.03)&#039;&#039; means find all vertices with &#039;&#039;x&#039;&#039; coordinates that are less than -0.03.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Similarly, &#039;&#039;(m.nodes(:,2) &amp;lt; -0.01)&#039;&#039; means find all vertices with &#039;&#039;y&#039;&#039; coordinates that are less than -0.01.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the pattern of polariser (P) is set up by&amp;lt;br&amp;gt;        &lt;br /&gt;
&lt;br /&gt;
        P((m.nodes(:,1) &amp;lt; -0.05) &amp;amp; (m.nodes(:,2) &amp;gt; 0.03)) = 1;&lt;br /&gt;
Where &#039;&#039;(m.nodes(:,1) &amp;lt; -0.05) &amp;amp; (m.nodes(:,2) &amp;gt; 0.03)&#039;&#039; means find all vertices with &#039;&#039;x,y&#039;&#039; coordinates that are less than -0.05 and greater than 0.03 respectively&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Thus the full code describing the model is:&lt;br /&gt;
    if (Steps(m)==0) &amp;amp;&amp;amp; m.globalDynamicProps.doinit  % Initialisation code.&lt;br /&gt;
        id_a_p(m.nodes(:,1) &amp;lt; -0.03) = 1; % setup region for A where identity factor A is represented by id_a_p&lt;br /&gt;
        id_b_p(m.nodes(:,2) &amp;lt; -0.01) = 1; % setup region for B&lt;br /&gt;
    else&lt;br /&gt;
        % @@KRN Growth Regulatory Network&lt;br /&gt;
        kapar_p(:) = id_a_l .* inh(1,id_b_l); % growth rate&lt;br /&gt;
        kaper_p(:) = kapar_p; % isotropic growth&lt;br /&gt;
        kbpar_p(:) = kapar_p; % same on both sides of the sheet&lt;br /&gt;
        kbper_p(:) = kapar_p; % same&lt;br /&gt;
        knor_p(:)  = 0;       % thickness not growing&lt;br /&gt;
    end&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|[[Tutorial on the basic interaction function|Tutorial on a basic interaction function.]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The tutorial explains how the code shown above appears in the interaction function. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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 (&#039;&#039;Kapar&#039;&#039;, etc.) that have already been set through the GUI.&lt;br /&gt;
[[Types of morphogens and factors| Types of morphogens and factors are given here]].&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_why_matlab-2011-05-05-0005.flv|GPT_why_matlab-2011-05-05-0005_First.png‎&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
|-align=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
||&amp;lt;center&amp;gt;Play and the mesh will grow and subdivide. Normally we do not want to see the mesh. Red is growth rate&amp;lt;/center&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
===2 B===&lt;br /&gt;
&#039;&#039;&#039;Interaction function in detail&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
([[Full freshly minted interaction function|A newly created interaction function is shown here - this one has two, user specified morphogens: &#039;&#039;id_a&#039;&#039; and &#039;&#039;id_b&#039;&#039;.]])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|[[Tutorial on the interaction function details|Tutorial on the interaction function details.]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Types of morphogens and factors| Types of morphogens and factors are given here]].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Submodel 1&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0002.flv|GPT_tut_interaction_example_20110601-0002.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1&amp;lt;/center&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Submodel 2. Growth in the region that has no arrows is isotropic and, as result, the outgrowth is blunt.&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0007.flv|GPT_tut_interaction_example_20110601-0006_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 2&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===2 C Illustrating two independent ways to form shapes and the use of submodels. ===&lt;br /&gt;
Conclusion: interesting shapes can be generated either by &#039;&#039;&#039;patterns of differential growth&#039;&#039;&#039; or&#039;&#039;&#039; patterns of local growth axe&#039;&#039;&#039;s. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorial on two romatic hearts|Tutorial on two romantic hearts.]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|Submodel 1. Uniform specified polariser (&#039;&#039;&#039;no polariser gradient&#039;&#039;&#039;). Creating a shape using a specified pattern of isotropic growth.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Result&#039;&#039;&#039;: simple patterns of differential growth can readily produce blobby shapes. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_TwoWayHeart_20110531-0001.flv|GPT_TwoWayHeart_20110531-0001_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1. Pattern of isotropic specified growth (no polariser)&amp;lt;/center&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Submodel 2.&#039;&#039;&#039;Uniform specified growth&#039;&#039;&#039;. Creating a shape using a specified pattern of diffusable polariser.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Result&#039;&#039;&#039;: simple patterns organising a diffusable polariser can readily produce sharp shapes. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_TwoWayHeart_20110531-0002.flv|GPT_TwoWayHeart_20110531-0002_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 2. Pattern of specified polariser levels (green-cyan). Polariser can diffuse and the gradient is arrowed. Uniform specified growth (red).&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===2 D===&lt;br /&gt;
&#039;&#039;&#039;Retaining strain and cutting the mesh&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorial on retaining residual strain and cutting|Tutorial on retaining residual strain and cutting]]&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|&lt;br /&gt;
[[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.&lt;br /&gt;
|width=&amp;quot;120pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_RetainStrainAndCut_20110603-0006.flv|GPT_RetainStrainAndCut_20110603-0006.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;| [[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.&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_RetainStrainAndCut_20110603-0004.flv|GPT_RetainStrainAndCut_20110603-0004.png‎&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;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.&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
===2 E===&lt;br /&gt;
&#039;&#039;&#039;Patterning and growth&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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). &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorial on the patterning interaction function|Tutorial on the patterning interaction function]]&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|something here&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0002.flv|GPT_tut_interaction_example_20110601-0002.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1&amp;lt;/center&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|something here&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0007.flv|GPT_tut_interaction_example_20110601-0006_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 2&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=&#039;&#039;&#039;3&#039;&#039;&#039; Running models without the GUI=&lt;br /&gt;
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 &#039;&#039;GFtbox&#039;&#039; 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 &#039;&#039;GFtbox&#039;&#039; compatible with [http://www.gnu.org/software/octave/ Octave].)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;How to use these tutorials.&#039;&#039;&#039;  First ensure that your model is working as you would expect using the GUI. Then run the model from the Matlab command line. Finally, submit the project to the linux computing cluster with one or more ranges of parameters.&lt;br /&gt;
For further details [[Running example models and using a cluster|Running example models and using a cluster]]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=GFtbox_Tutorial_pages&amp;diff=4911</id>
		<title>GFtbox Tutorial pages</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=GFtbox_Tutorial_pages&amp;diff=4911"/>
		<updated>2011-06-24T15:25:48Z</updated>

		<summary type="html">&lt;p&gt;Jrk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[GFtbox|&#039;&#039;GFtbox&#039;&#039; Details]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Notes from a new user|Notes from a new user]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Running example models and using a cluster|Running example models and using a cluster]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Example pages|Examples from our papers]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Types of morphogens and factors| Types of morphogens and factors are given here]]&amp;lt;br&amp;gt;&lt;br /&gt;
([[Full freshly minted interaction function|A newly created interaction function is shown here - the green comments are another ready reference.]])&amp;lt;br&amp;gt;&lt;br /&gt;
[[Ready Reference Manual|&#039;&#039;&#039;&#039;&#039;Ready Reference&#039;&#039;&#039;&#039;&#039; Manual]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
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]].&lt;br /&gt;
=Three ways to use &#039;&#039;GFtbox&#039;&#039;=&lt;br /&gt;
1) [[GFtbox Tutorial pages#1 Modelling using the Graphical User Interface| &#039;&#039;&#039;Do everything from the Graphical User Interface (GUI).&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
2)   [[GFtbox Tutorial pages#2 Modelling using a combination of GUI and interaction function|&#039;&#039;&#039;Do only some things from the GUI.&#039;&#039;&#039;]] 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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
3) [[GFtbox Tutorial pages#3 Running models without the GUI|&#039;&#039;&#039;Without the GUI.&#039;&#039;&#039;]] 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. &lt;br /&gt;
=&#039;&#039;&#039;1&#039;&#039;&#039; Modelling using the Graphical User Interface=&lt;br /&gt;
== Isotropic growth==&lt;br /&gt;
&#039;&#039;&#039;How to use the tutorial.&#039;&#039;&#039; Open GFtbox and attempt to repeat the results shown.&lt;br /&gt;
===1 A===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;700pt&amp;quot;|[[In the beginning Uniform|Tutorial on uniform growth.]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Consider a disc shaped canvas (tissue) in which the &#039;&#039;&#039;specified growth is uniform&#039;&#039;&#039;, isotropic and on both sides.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;&#039;&#039;Into what shape will the disc grow?&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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 &#039;&#039;Kapar&#039;&#039; and &#039;&#039;Kaper&#039;&#039; (&#039;&#039;A&#039;&#039; side) and &#039;&#039;Kbpar&#039;&#039; and &#039;&#039;Kbper&#039;&#039; (&#039;&#039;B&#039;&#039; side).&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;300pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;GPT_tut_uniform_20110527-0003.flv|GPT_tut_uniform_20110527-0003_Last.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===1 B===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;700pt&amp;quot;|[[In the beginning non-uniform|Tutorial on non-uniform growth.]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Consider a disc shaped canvas (tissue) in which the&#039;&#039;&#039; non-uniform specified growth&#039;&#039;&#039; increases in proportion to the distance from the centre.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;&#039;&#039;Into what shape will the disc grow?&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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] ).&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;GPT_tut_uniform_20110527-0006.flv|GPT_tut_uniform_20110527-0006_First.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Adding polariser==&lt;br /&gt;
===1 C===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;700pt&amp;quot;|[[In the beginning Growing a cone|Tutorial on uniform growth non-uniform polariser.]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
In the presence of polariser, &#039;&#039;GFtbox&#039;&#039; 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: &#039;&#039;Kapar&#039;&#039; and &#039;&#039;Kaper&#039;&#039; (&#039;&#039;A&#039;&#039; side) and &#039;&#039;Kbpar&#039;&#039; and &#039;&#039;Kbper&#039;&#039; (&#039;&#039;B&#039;&#039; side).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
We now&#039;&#039;&#039; add polariser&#039;&#039;&#039;.  Start with example A - uniform growth - and add a radial polarising gradient.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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 (&#039;&#039;Kpar&#039;&#039;) or perpendicular to (&#039;&#039;Kper&#039;&#039;) that direction.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Given a &#039;&#039;&#039;uniform pattern of specified growth parallel&#039;&#039;&#039; to the polariser and &#039;&#039;&#039;zero specified growth perpendicular&#039;&#039;&#039; to the polariser.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &#039;&#039;&#039;What will be the final shape?&#039;&#039;&#039;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;   loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;GPT_in_the_beginning_2_20110510-0003.flv|GPT_in_the_beginning_2_20110510-0003_First.png&amp;lt;/wikiflv&amp;gt;&amp;lt;small&amp;gt;Note: the gradient of the polariser, green to cyan, is shown using the arrows. Specified growth rate parallel to the arrows, red, is uniform.&amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&#039;&#039;&#039;2&#039;&#039;&#039; Modelling using a combination of GUI and interaction function=&lt;br /&gt;
&#039;&#039;&#039;How to use these tutorials.&#039;&#039;&#039; 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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The &#039;&#039;&#039;full specification&#039;&#039;&#039; of a &#039;&#039;GFtbox&#039;&#039; model is stored in a combination of the mesh data structure (&#039;&#039;&#039;Mesh&#039;&#039;&#039;) and the &#039;&#039;&#039;interaction function&#039;&#039;&#039;. 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 &#039;&#039;&#039;interaction function&#039;&#039;&#039; (a Matlab program file &#039;&#039;.m&#039;&#039;) contains all the details of the growth regulation system: morphogen concentrations, signal interactions etc. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
When a new project is first edited&#039;&#039;&#039; the interaction function is generated automatically&#039;&#039;&#039;. 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 &#039;&#039;&#039;always invoke the Editor from the GUI&#039;&#039;&#039; (Panel: Interaction Function: Edit).&lt;br /&gt;
&lt;br /&gt;
===2 A===&lt;br /&gt;
&#039;&#039;&#039;Basic interaction function&#039;&#039;&#039;&lt;br /&gt;
The patterns of morphogens A and B are set up by &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        id_a_p(m.nodes(:,1)&amp;lt;-0.03)=1; &lt;br /&gt;
        id_b_p(m.nodes(:,2)&amp;lt;-0.01)=1; &lt;br /&gt;
&lt;br /&gt;
where &#039;&#039;id_a_p&#039;&#039; is the A morphogen. &#039;&#039;m.node(:,1)&#039;&#039; refers to the &#039;&#039;x&#039;&#039; coordinates of all nodes (vertices) in the mesh&amp;lt;br&amp;gt;&lt;br /&gt;
The expression &#039;&#039;(m.nodes(:,1)&amp;lt;-0.03)&#039;&#039; means find all vertices with &#039;&#039;x&#039;&#039; coordinates that are less than -0.03.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Similarly, &#039;&#039;(m.nodes(:,2)&amp;lt;-0.01)&#039;&#039; means find all vertices with &#039;&#039;y&#039;&#039; coordinates that are less than -0.01.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the pattern of polariser (P) is set up by&amp;lt;br&amp;gt;        &lt;br /&gt;
&lt;br /&gt;
        P((m.nodes(:,1)&amp;lt;-0.05)&amp;amp;(m.nodes(:,2)&amp;gt;0.03))=1;&lt;br /&gt;
Where &#039;&#039;(m.nodes(:,1)&amp;lt;-0.05)&amp;amp;(m.nodes(:,2)&amp;gt;0.03)&#039;&#039; means find all vertices with &#039;&#039;x,y&#039;&#039; coordinates that are less than -0.05 and greater than 0.03 respectively&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Thus the full code describing the model is:&lt;br /&gt;
    if (Steps(m)==0) &amp;amp;&amp;amp; m.globalDynamicProps.doinit  % Initialisation code.&lt;br /&gt;
        id_a_p(m.nodes(:,1)&amp;lt;-0.03)=1; % setup region for A where identity factor A is represented by id_a_p&lt;br /&gt;
        id_b_p(m.nodes(:,2)&amp;lt;-0.01)=1; % setup region for B&lt;br /&gt;
    else&lt;br /&gt;
        % @@KRN Growth Regulatory Network&lt;br /&gt;
        kapar_p(:) = id_a_l .* inh(1,id_b_l); % growth rate&lt;br /&gt;
        kaper_p(:) = kapar_p; % isotropic growth&lt;br /&gt;
        kbpar_p(:) = kapar_p; % same on both sides of the sheet&lt;br /&gt;
        kbper_p(:) = kapar_p; % same&lt;br /&gt;
        knor_p(:)  = 0;       % thickness not growing&lt;br /&gt;
    end&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|[[Tutorial on the basic interaction function|Tutorial on a basic interaction function.]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The tutorial explains how the code shown above appears in the interaction function. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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 (&#039;&#039;Kapar&#039;&#039;, etc.) that have already been set through the GUI.&lt;br /&gt;
[[Types of morphogens and factors| Types of morphogens and factors are given here]].&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_why_matlab-2011-05-05-0005.flv|GPT_why_matlab-2011-05-05-0005_First.png‎&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
|-align=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
||&amp;lt;center&amp;gt;Play and the mesh will grow and subdivide. Normally we do not want to see the mesh. Red is growth rate&amp;lt;/center&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
===2 B===&lt;br /&gt;
&#039;&#039;&#039;Interaction function in detail&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
([[Full freshly minted interaction function|A newly created interaction function is shown here - this one has two, user specified morphogens: &#039;&#039;id_a&#039;&#039; and &#039;&#039;id_b&#039;&#039;.]])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|[[Tutorial on the interaction function details|Tutorial on the interaction function details.]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Types of morphogens and factors| Types of morphogens and factors are given here]].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Submodel 1&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0002.flv|GPT_tut_interaction_example_20110601-0002.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1&amp;lt;/center&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Submodel 2. Growth in the region that has no arrows is isotropic and, as result, the outgrowth is blunt.&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0007.flv|GPT_tut_interaction_example_20110601-0006_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 2&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===2 C Illustrating two independent ways to form shapes and the use of submodels. ===&lt;br /&gt;
Conclusion: interesting shapes can be generated either by &#039;&#039;&#039;patterns of differential growth&#039;&#039;&#039; or&#039;&#039;&#039; patterns of local growth axe&#039;&#039;&#039;s. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorial on two romatic hearts|Tutorial on two romantic hearts.]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|Submodel 1. Uniform specified polariser (&#039;&#039;&#039;no polariser gradient&#039;&#039;&#039;). Creating a shape using a specified pattern of isotropic growth.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Result&#039;&#039;&#039;: simple patterns of differential growth can readily produce blobby shapes. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_TwoWayHeart_20110531-0001.flv|GPT_TwoWayHeart_20110531-0001_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1. Pattern of isotropic specified growth (no polariser)&amp;lt;/center&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Submodel 2.&#039;&#039;&#039;Uniform specified growth&#039;&#039;&#039;. Creating a shape using a specified pattern of diffusable polariser.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Result&#039;&#039;&#039;: simple patterns organising a diffusable polariser can readily produce sharp shapes. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_TwoWayHeart_20110531-0002.flv|GPT_TwoWayHeart_20110531-0002_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 2. Pattern of specified polariser levels (green-cyan). Polariser can diffuse and the gradient is arrowed. Uniform specified growth (red).&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===2 D===&lt;br /&gt;
&#039;&#039;&#039;Retaining strain and cutting the mesh&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorial on retaining residual strain and cutting|Tutorial on retaining residual strain and cutting]]&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|&lt;br /&gt;
[[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.&lt;br /&gt;
|width=&amp;quot;120pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_RetainStrainAndCut_20110603-0006.flv|GPT_RetainStrainAndCut_20110603-0006.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;| [[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.&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_RetainStrainAndCut_20110603-0004.flv|GPT_RetainStrainAndCut_20110603-0004.png‎&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;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.&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
===2 E===&lt;br /&gt;
&#039;&#039;&#039;Patterning and growth&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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). &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorial on the patterning interaction function|Tutorial on the patterning interaction function]]&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|something here&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0002.flv|GPT_tut_interaction_example_20110601-0002.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1&amp;lt;/center&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|something here&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0007.flv|GPT_tut_interaction_example_20110601-0006_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 2&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=&#039;&#039;&#039;3&#039;&#039;&#039; Running models without the GUI=&lt;br /&gt;
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 &#039;&#039;GFtbox&#039;&#039; 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 &#039;&#039;GFtbox&#039;&#039; compatible with [http://www.gnu.org/software/octave/ Octave].)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;How to use these tutorials.&#039;&#039;&#039;  First ensure that your model is working as you would expect using the GUI. Then run the model from the Matlab command line. Finally, submit the project to the linux computing cluster with one or more ranges of parameters.&lt;br /&gt;
For further details [[Running example models and using a cluster|Running example models and using a cluster]]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=GFtbox_Tutorial_pages&amp;diff=4910</id>
		<title>GFtbox Tutorial pages</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=GFtbox_Tutorial_pages&amp;diff=4910"/>
		<updated>2011-06-24T15:03:40Z</updated>

		<summary type="html">&lt;p&gt;Jrk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[GFtbox|&#039;&#039;GFtbox&#039;&#039; Details]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Notes from a new user|Notes from a new user]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Running example models and using a cluster|Running example models and using a cluster]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Example pages|Examples from our papers]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Types of morphogens and factors| Types of morphogens and factors are given here]]&amp;lt;br&amp;gt;&lt;br /&gt;
([[Full freshly minted interaction function|A newly created interaction function is shown here - the green comments are another ready reference.]])&amp;lt;br&amp;gt;&lt;br /&gt;
[[Ready Reference Manual|&#039;&#039;&#039;&#039;&#039;Ready Reference&#039;&#039;&#039;&#039;&#039; Manual]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
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]].&lt;br /&gt;
=Three ways to use &#039;&#039;GFtbox&#039;&#039;=&lt;br /&gt;
1) [[GFtbox Tutorial pages#1 Modelling using the Graphical User Interface| &#039;&#039;&#039;Do everything from the Graphical User Interface (GUI).&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
2)   [[GFtbox Tutorial pages#2 Modelling using a combination of GUI and interaction function|&#039;&#039;&#039;Do only some things from the GUI.&#039;&#039;&#039;]] 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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
3) [[GFtbox Tutorial pages#3 Running models without the GUI|&#039;&#039;&#039;Without the GUI.&#039;&#039;&#039;]] 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. &lt;br /&gt;
=&#039;&#039;&#039;1&#039;&#039;&#039; Modelling using the Graphical User Interface=&lt;br /&gt;
== Isotropic growth==&lt;br /&gt;
&#039;&#039;&#039;How to use the tutorial.&#039;&#039;&#039; Open GFtbox and attempt to repeat the results shown.&lt;br /&gt;
===1 A===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;700pt&amp;quot;|[[In the beginning Uniform|Tutorial on uniform growth.]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Consider a disc shaped canvas (tissue) in which the &#039;&#039;&#039;specified growth is uniform&#039;&#039;&#039;, isotropic and on both sides.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;&#039;&#039;Into what shape will the disc grow?&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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 &#039;&#039;Kapar&#039;&#039; and &#039;&#039;Kaper&#039;&#039; (&#039;&#039;A&#039;&#039; side) and &#039;&#039;Kbpar&#039;&#039; and &#039;&#039;Kbper&#039;&#039; (&#039;&#039;B&#039;&#039; side).&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;300pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;GPT_tut_uniform_20110527-0003.flv|GPT_tut_uniform_20110527-0003_Last.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===1 B===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;700pt&amp;quot;|[[In the beginning non-uniform|Tutorial on non-uniform growth.]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Consider a disc shaped canvas (tissue) in which the&#039;&#039;&#039; non-uniform specified growth&#039;&#039;&#039; increases in proportion to the distance from the centre.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;&#039;&#039;Into what shape will the disc grow?&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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] ).&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;GPT_tut_uniform_20110527-0006.flv|GPT_tut_uniform_20110527-0006_First.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Adding polariser==&lt;br /&gt;
===1 C===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;700pt&amp;quot;|[[In the beginning Growing a cone|Tutorial on uniform growth non-uniform polariser.]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
In the presence of polariser, &#039;&#039;GFtbox&#039;&#039; 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: &#039;&#039;Kapar&#039;&#039; and &#039;&#039;Kaper&#039;&#039; (&#039;&#039;A&#039;&#039; side) and &#039;&#039;Kbpar&#039;&#039; and &#039;&#039;Kbper&#039;&#039; (&#039;&#039;B&#039;&#039; side).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
We now&#039;&#039;&#039; add polariser&#039;&#039;&#039;.  Start with example A - uniform growth - and add a radial polarising gradient.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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 (&#039;&#039;Kpar&#039;&#039;) or perpendicular to (&#039;&#039;Kper&#039;&#039;) that direction.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Given a &#039;&#039;&#039;uniform pattern of specified growth parallel&#039;&#039;&#039; to the polariser and &#039;&#039;&#039;zero specified growth perpendicular&#039;&#039;&#039; to the polariser.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &#039;&#039;&#039;What will be the final shape?&#039;&#039;&#039;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;   loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;GPT_in_the_beginning_2_20110510-0003.flv|GPT_in_the_beginning_2_20110510-0003_First.png&amp;lt;/wikiflv&amp;gt;&amp;lt;small&amp;gt;Note: the gradient of the polariser, green to cyan, is shown using the arrows. Specified growth rate parallel to the arrows, red, is uniform.&amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&#039;&#039;&#039;2&#039;&#039;&#039; Modelling using a combination of GUI and interaction function=&lt;br /&gt;
&#039;&#039;&#039;Programmatic modelling&#039;&#039;&#039;. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;How to use these tutorials.&#039;&#039;&#039; 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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The &#039;&#039;&#039;full specification&#039;&#039;&#039; of a &#039;&#039;GFtbox&#039;&#039; model is stored in a combination of the mesh data structure (&#039;&#039;&#039;Mesh&#039;&#039;&#039;) and the &#039;&#039;&#039;interaction function&#039;&#039;&#039;. 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 &#039;&#039;&#039;interaction function&#039;&#039;&#039; (a Matlab program file &#039;&#039;.m&#039;&#039;) contains all the details of the growth regulation system: morphogen concentrations, signal interactions etc. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
When a new project is first edited&#039;&#039;&#039; the interaction function is generated automatically&#039;&#039;&#039;. 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 &#039;&#039;&#039;always invoke the Editor from the GUI&#039;&#039;&#039; (Panel: Interaction Function: Edit).&lt;br /&gt;
&lt;br /&gt;
===2 A===&lt;br /&gt;
&#039;&#039;&#039;Basic interaction function&#039;&#039;&#039;&lt;br /&gt;
The patterns of morphogens A and B are set up by &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        id_a_p(m.nodes(:,1)&amp;lt;-0.03)=1; &lt;br /&gt;
        id_b_p(m.nodes(:,2)&amp;lt;-0.01)=1; &lt;br /&gt;
&lt;br /&gt;
where &#039;&#039;id_a_p&#039;&#039; is the A morphogen. &#039;&#039;m.node(:,1)&#039;&#039; refers to the &#039;&#039;x&#039;&#039; coordinates of all nodes (vertices) in the mesh&amp;lt;br&amp;gt;&lt;br /&gt;
The expression &#039;&#039;(m.nodes(:,1)&amp;lt;-0.03)&#039;&#039; means find all vertices with &#039;&#039;x&#039;&#039; coordinates that are less than -0.03.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Similarly, &#039;&#039;(m.nodes(:,2)&amp;lt;-0.01)&#039;&#039; means find all vertices with &#039;&#039;y&#039;&#039; coordinates that are less than -0.01.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the pattern of polariser (P) is set up by&amp;lt;br&amp;gt;        &lt;br /&gt;
&lt;br /&gt;
        P((m.nodes(:,1)&amp;lt;-0.05)&amp;amp;(m.nodes(:,2)&amp;gt;0.03))=1;&lt;br /&gt;
Where &#039;&#039;(m.nodes(:,1)&amp;lt;-0.05)&amp;amp;(m.nodes(:,2)&amp;gt;0.03)&#039;&#039; means find all vertices with &#039;&#039;x,y&#039;&#039; coordinates that are less than -0.05 and greater than 0.03 respectively&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Thus the full code describing the model is:&lt;br /&gt;
    if (Steps(m)==0) &amp;amp;&amp;amp; m.globalDynamicProps.doinit  % Initialisation code.&lt;br /&gt;
        id_a_p(m.nodes(:,1)&amp;lt;-0.03)=1; % setup region for A where identity factor A is represented by id_a_p&lt;br /&gt;
        id_b_p(m.nodes(:,2)&amp;lt;-0.01)=1; % setup region for B&lt;br /&gt;
    else&lt;br /&gt;
        % @@KRN Growth Regulatory Network&lt;br /&gt;
        kapar_p(:) = id_a_l .* inh(1,id_b_l); % growth rate&lt;br /&gt;
        kaper_p(:) = kapar_p; % isotropic growth&lt;br /&gt;
        kbpar_p(:) = kapar_p; % same on both sides of the sheet&lt;br /&gt;
        kbper_p(:) = kapar_p; % same&lt;br /&gt;
        knor_p(:)  = 0;       % thickness not growing&lt;br /&gt;
    end&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|[[Tutorial on the basic interaction function|Tutorial on a basic interaction function.]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The tutorial explains how the code shown above appears in the interaction function. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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 (&#039;&#039;Kapar&#039;&#039;, etc.) that have already been set through the GUI.&lt;br /&gt;
[[Types of morphogens and factors| Types of morphogens and factors are given here]].&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_why_matlab-2011-05-05-0005.flv|GPT_why_matlab-2011-05-05-0005_First.png‎&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
|-align=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
||&amp;lt;center&amp;gt;Play and the mesh will grow and subdivide. Normally we do not want to see the mesh. Red is growth rate&amp;lt;/center&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
===2 B===&lt;br /&gt;
&#039;&#039;&#039;Interaction function in detail&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
([[Full freshly minted interaction function|A newly created interaction function is shown here - this one has two, user specified morphogens: &#039;&#039;id_a&#039;&#039; and &#039;&#039;id_b&#039;&#039;.]])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|[[Tutorial on the interaction function details|Tutorial on the interaction function details.]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Types of morphogens and factors| Types of morphogens and factors are given here]].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Submodel 1&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0002.flv|GPT_tut_interaction_example_20110601-0002.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1&amp;lt;/center&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Submodel 2. Growth in the region that has no arrows is isotropic and, as result, the outgrowth is blunt.&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0007.flv|GPT_tut_interaction_example_20110601-0006_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 2&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===2 C Illustrating two independent ways to form shapes and the use of submodels. ===&lt;br /&gt;
Conclusion: interesting shapes can be generated either by &#039;&#039;&#039;patterns of differential growth&#039;&#039;&#039; or&#039;&#039;&#039; patterns of local growth axe&#039;&#039;&#039;s. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorial on two romatic hearts|Tutorial on two romantic hearts.]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|Submodel 1. Uniform specified polariser (&#039;&#039;&#039;no polariser gradient&#039;&#039;&#039;). Creating a shape using a specified pattern of isotropic growth.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Result&#039;&#039;&#039;: simple patterns of differential growth can readily produce blobby shapes. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_TwoWayHeart_20110531-0001.flv|GPT_TwoWayHeart_20110531-0001_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1. Pattern of isotropic specified growth (no polariser)&amp;lt;/center&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Submodel 2.&#039;&#039;&#039;Uniform specified growth&#039;&#039;&#039;. Creating a shape using a specified pattern of diffusable polariser.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Result&#039;&#039;&#039;: simple patterns organising a diffusable polariser can readily produce sharp shapes. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_TwoWayHeart_20110531-0002.flv|GPT_TwoWayHeart_20110531-0002_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 2. Pattern of specified polariser levels (green-cyan). Polariser can diffuse and the gradient is arrowed. Uniform specified growth (red).&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===2 D===&lt;br /&gt;
&#039;&#039;&#039;Retaining strain and cutting the mesh&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorial on retaining residual strain and cutting|Tutorial on retaining residual strain and cutting]]&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|&lt;br /&gt;
[[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.&lt;br /&gt;
|width=&amp;quot;120pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_RetainStrainAndCut_20110603-0006.flv|GPT_RetainStrainAndCut_20110603-0006.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;| [[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.&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_RetainStrainAndCut_20110603-0004.flv|GPT_RetainStrainAndCut_20110603-0004.png‎&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;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.&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
===2 E===&lt;br /&gt;
&#039;&#039;&#039;Patterning and growth&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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). &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorial on the patterning interaction function|Tutorial on the patterning interaction function]]&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|something here&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0002.flv|GPT_tut_interaction_example_20110601-0002.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1&amp;lt;/center&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|something here&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0007.flv|GPT_tut_interaction_example_20110601-0006_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 2&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=&#039;&#039;&#039;3&#039;&#039;&#039; Running models without the GUI=&lt;br /&gt;
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 &#039;&#039;GFtbox&#039;&#039; 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 &#039;&#039;GFtbox&#039;&#039; compatible with [http://www.gnu.org/software/octave/ Octave].)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;How to use these tutorials.&#039;&#039;&#039;  First ensure that your model is working as you would expect using the GUI. Then run the model from the Matlab command line. Finally, submit the project to the linux computing cluster with one or more ranges of parameters.&lt;br /&gt;
For further details [[Running example models and using a cluster|Running example models and using a cluster]]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=In_the_beginning_Uniform&amp;diff=5055</id>
		<title>In the beginning Uniform</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=In_the_beginning_Uniform&amp;diff=5055"/>
		<updated>2011-06-24T15:02:06Z</updated>

		<summary type="html">&lt;p&gt;Jrk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[GFtbox Tutorial pages|Back to Tutorial pages]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Modelling uniform growth using the GUI alone=&lt;br /&gt;
==First view==&lt;br /&gt;
The GUI controls are organised into a number of panels. The largest is the plotting window on the right. Just to the left is a column of buttons, tick boxes, drop-down lists and buttons that control what appears in the plotting window.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
At the top left is a panel for loading and saving projects.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Below this is a panel for selecting tools. These buttons select what panel will be visible below, e.g. Mesh Editor, Factor, etc.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
At the bottom left the Run panel contains controls for running the model: Step, run for a specified number of steps, for a specified (model) time, run to a certain area (e.g. 2 times starting area). Above the Run panel is a panel for creating and editing the interaction function.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
There are also controls on the Menu bar.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;300px&amp;quot;|The &#039;&#039;GFtbox&#039;&#039; user interface. Focus on the &#039;&#039;Select Tool&#039;&#039; Panel. Here the &#039;&#039;Mesh Editor&#039;&#039; has been selected and the &#039;&#039;Mesh Editor&#039;&#039; panel is visible. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:gftboxGUIB_1detailB.jpg|300px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;small&amp;gt;Idea: change all &#039;&#039;GFtbox&#039;&#039; font sizes using &#039;&#039;Menu Misc:Gui Format&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
|width=&amp;quot;500px&amp;quot;|[[File:gftboxGUIB_1.jpg|500px|GFtbox interface]]&lt;br /&gt;
|}&lt;br /&gt;
==Add a mesh (canvas that represents tissue)==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;300px&amp;quot;|Create a canvas by clicking on &#039;&#039;Panel Mesh Editor:new&#039;&#039;. A variety of preset shapes is available. Here we choose a Circle with 4 concentric rings of nodes that is 2 mm in diameter.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;By default the mesh is autoscaled and autocentred - it makes it easier to see shape changes but to see growth these are best turned off. Set the Panel:Plot options:Auto axis range to unticked and insert plot ranges -2.5 to 2.5 on x and y axes and 0 0 on z. Also turn off Menu:Plot:Autozoom and centre.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;small&amp;gt;Idea: Special shapes can be imported as &#039;&#039;OBJ&#039;&#039; files. &#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
|width=&amp;quot;500px&amp;quot;|[[File:gftboxGUIB_2.jpg|500px|GFtbox interface]]&lt;br /&gt;
|}&lt;br /&gt;
==Add a pattern of growth factor==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;300px&amp;quot;|&#039;&#039;Select Tool:Factors&#039;&#039; makes the &#039;&#039;Morphogen&#039;&#039; Panel visible. Currently we are controlling the &#039;&#039;KAPAR&#039;&#039; factor. It has been selected from a drop down list top right (&#039;&#039;Plot current factor&#039;&#039;). We add a constant level of &#039;&#039;KAPAR&#039;&#039;. Make sure that the &#039;&#039;Panel Plot Options:Monochrome&#039;&#039; is ticked and the gradient of &#039;&#039;KAPAR&#039;&#039; will be as shown. Do the same for the top face, KBPAR. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;500px&amp;quot;|[[File:In the beginning 2 uniform startup.jpg|500px|GFtbox interface]]&lt;br /&gt;
|}&lt;br /&gt;
==And grow==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;300px&amp;quot;|&#039;&#039;&#039;Now save the project&#039;&#039;&#039; using the &#039;&#039;Save As&#039;&#039; button. A dialogue box will open - here we keyed in &#039;&#039;in_the_beginning&#039;&#039;, and the prefix &#039;&#039;GPT_&#039;&#039; and the suffix &#039;&#039;_date&#039;&#039; were added automatically.&amp;lt;br&amp;gt;A directory is created with the project name which contains all the files needed for the project and any results (snapshots, movies) we create.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;Select Tool:Simulation&#039;&#039; makes the &#039;&#039;Simulation&#039;&#039; Panel visible. &amp;lt;br&amp;gt;&lt;br /&gt;
Change the &#039;&#039;Panel Run:Run until&#039;&#039; box to 2 and click the &#039;&#039;Panel Run:Run until&#039;&#039; button. The canvas will grow in steps set by the &#039;&#039;Panel Simulation:Timescale&#039;&#039; box.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;small&amp;gt;Warning: saving is essential if you want to &#039;&#039;Restart&#039;&#039; the simulation or if you want to save a movie.&amp;lt;br&amp;gt;&lt;br /&gt;
Idea: set the axes manually (here to +-3) and turn off Panel:Plot Options: Auto axis range and Menu:Plot:Auto zoom and centre. This enables growth to be seen as a change of size rather than change of axis range.&lt;br /&gt;
Idea: take a snapshot of the canvas by pressing Take snap... (c.f. image on right, button is bottom right of GUI controls)&amp;lt;br&amp;gt;&lt;br /&gt;
Idea: to create a movie of your simulation, before running click the &#039;&#039;Record movie&#039;&#039; and when it is finished click &#039;&#039;Stop movie&#039;&#039;. The movie will be in the directory containing the current project, which you can open with the menu command Projects:Show Current Project Folder.&amp;lt;/small&amp;gt;&lt;br /&gt;
|width=&amp;quot;500px&amp;quot;|[[Image:tut_uniform_growth_final.png|500px|GFtbox interface]] The canvas is not flat because it started not flat. By default, a new mesh is given a small random perturbation to allow deformations out of the plane.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=GFtbox_Tutorial_pages&amp;diff=4909</id>
		<title>GFtbox Tutorial pages</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=GFtbox_Tutorial_pages&amp;diff=4909"/>
		<updated>2011-06-24T14:54:22Z</updated>

		<summary type="html">&lt;p&gt;Jrk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[GFtbox|&#039;&#039;GFtbox&#039;&#039; Details]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Notes from a new user|Notes from a new user]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Running example models and using a cluster|Running example models and using a cluster]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Example pages|Examples from our papers]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Types of morphogens and factors| Types of morphogens and factors are given here]]&amp;lt;br&amp;gt;&lt;br /&gt;
([[Full freshly minted interaction function|A newly created interaction function is shown here - the green comments are another ready reference.]])&amp;lt;br&amp;gt;&lt;br /&gt;
[[Ready Reference Manual|&#039;&#039;&#039;&#039;&#039;Ready Reference&#039;&#039;&#039;&#039;&#039; Manual]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
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]].&lt;br /&gt;
=Three ways to use &#039;&#039;GFtbox&#039;&#039;=&lt;br /&gt;
1) [[GFtbox Tutorial pages#1 Modelling using the Graphical User Interface| &#039;&#039;&#039;Do everything from the Graphical User Interface (GUI).&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
2)   [[GFtbox Tutorial pages#2 Modelling using a combination of GUI and interaction function|&#039;&#039;&#039;Do only some things from the GUI.&#039;&#039;&#039;]] 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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
3) [[GFtbox Tutorial pages#3 Running models without the GUI|&#039;&#039;&#039;Without the GUI.&#039;&#039;&#039;]] 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. &lt;br /&gt;
=&#039;&#039;&#039;1&#039;&#039;&#039; Modelling using the Graphical User Interface=&lt;br /&gt;
== Isotropic growth==&lt;br /&gt;
&#039;&#039;&#039;How to use the tutorial.&#039;&#039;&#039; Open GFtbox and attempt to repeat the results shown.&lt;br /&gt;
===1 A===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;700pt&amp;quot;|[[In the beginning Uniform|For tutorial on uniform growth click here.]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Consider a disc shaped canvas (tissue) in which the &#039;&#039;&#039;specified growth is uniform&#039;&#039;&#039;, isotropic and on both sides.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;&#039;&#039;Into what shape will the disc grow?&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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 &#039;&#039;Kapar&#039;&#039; and &#039;&#039;Kaper&#039;&#039; (&#039;&#039;A&#039;&#039; side) and &#039;&#039;Kbpar&#039;&#039; and &#039;&#039;Kbper&#039;&#039; (&#039;&#039;B&#039;&#039; side).&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;300pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;GPT_tut_uniform_20110527-0003.flv|GPT_tut_uniform_20110527-0003_Last.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===1 B===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;700pt&amp;quot;|[[In the beginning non-uniform|For tutorial on non-uniform growth click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Consider a disc shaped canvas (tissue) in which the&#039;&#039;&#039; non-uniform specified growth&#039;&#039;&#039; increases in proportion to the distance from the centre.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;&#039;&#039;Into what shape will the disc grow?&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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] ).&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;GPT_tut_uniform_20110527-0006.flv|GPT_tut_uniform_20110527-0006_First.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Adding polariser==&lt;br /&gt;
===1 C===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;700pt&amp;quot;|[[In the beginning Growing a cone|For tutorial on uniform growth non-uniform polariser click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
In the presence of polariser, &#039;&#039;GFtbox&#039;&#039; 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: &#039;&#039;Kapar&#039;&#039; and &#039;&#039;Kaper&#039;&#039; (&#039;&#039;A&#039;&#039; side) and &#039;&#039;Kbpar&#039;&#039; and &#039;&#039;Kbper&#039;&#039; (&#039;&#039;B&#039;&#039; side).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
We now&#039;&#039;&#039; add polariser&#039;&#039;&#039;.  Start with example A - uniform growth - and add a radial polarising gradient.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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 (&#039;&#039;Kpar&#039;&#039;) or perpendicular to (&#039;&#039;Kper&#039;&#039;) that direction.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Given a &#039;&#039;&#039;uniform pattern of specified growth parallel&#039;&#039;&#039; to the polariser and &#039;&#039;&#039;zero specified growth perpendicular&#039;&#039;&#039; to the polariser.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &#039;&#039;&#039;What will be the final shape?&#039;&#039;&#039;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;   loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;GPT_in_the_beginning_2_20110510-0003.flv|GPT_in_the_beginning_2_20110510-0003_First.png&amp;lt;/wikiflv&amp;gt;&amp;lt;small&amp;gt;Note: the gradient of the polariser, green to cyan, is shown using the arrows. Specified growth rate parallel to the arrows, red, is uniform.&amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&#039;&#039;&#039;2&#039;&#039;&#039; Modelling using a combination of GUI and interaction function=&lt;br /&gt;
&#039;&#039;&#039;Programmatic modelling&#039;&#039;&#039;. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;How to use these tutorials.&#039;&#039;&#039; 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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The &#039;&#039;&#039;full specification&#039;&#039;&#039; of a &#039;&#039;GFtbox&#039;&#039; model is stored in a combination of the mesh data structure (&#039;&#039;&#039;Mesh&#039;&#039;&#039;) and the &#039;&#039;&#039;interaction function&#039;&#039;&#039;. 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 &#039;&#039;&#039;interaction function&#039;&#039;&#039; (a Matlab program file &#039;&#039;.m&#039;&#039;) contains all the details of the growth regulation system: morphogen concentrations, signal interactions etc. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
When a new project is first edited&#039;&#039;&#039; the interaction function is generated automatically&#039;&#039;&#039;. 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 &#039;&#039;&#039;always invoke the Editor from the GUI&#039;&#039;&#039; (Panel: Interaction Function: Edit).&lt;br /&gt;
&lt;br /&gt;
===2 A===&lt;br /&gt;
&#039;&#039;&#039;Basic interaction function&#039;&#039;&#039;&lt;br /&gt;
The patterns of morphogens A and B are set up by &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        id_a_p(m.nodes(:,1)&amp;lt;-0.03)=1; &lt;br /&gt;
        id_b_p(m.nodes(:,2)&amp;lt;-0.01)=1; &lt;br /&gt;
&lt;br /&gt;
where &#039;&#039;id_a_p&#039;&#039; is the A morphogen. &#039;&#039;m.node(:,1)&#039;&#039; refers to the &#039;&#039;x&#039;&#039; coordinates of all nodes (vertices) in the mesh&amp;lt;br&amp;gt;&lt;br /&gt;
The expression &#039;&#039;(m.nodes(:,1)&amp;lt;-0.03)&#039;&#039; means find all vertices with &#039;&#039;x&#039;&#039; coordinates that are less than -0.03.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Similarly, &#039;&#039;(m.nodes(:,2)&amp;lt;-0.01)&#039;&#039; means find all vertices with &#039;&#039;y&#039;&#039; coordinates that are less than -0.01.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the pattern of polariser (P) is set up by&amp;lt;br&amp;gt;        &lt;br /&gt;
&lt;br /&gt;
        P((m.nodes(:,1)&amp;lt;-0.05)&amp;amp;(m.nodes(:,2)&amp;gt;0.03))=1;&lt;br /&gt;
Where &#039;&#039;(m.nodes(:,1)&amp;lt;-0.05)&amp;amp;(m.nodes(:,2)&amp;gt;0.03)&#039;&#039; means find all vertices with &#039;&#039;x,y&#039;&#039; coordinates that are less than -0.05 and greater than 0.03 respectively&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Thus the full code describing the model is:&lt;br /&gt;
    if (Steps(m)==0) &amp;amp;&amp;amp; m.globalDynamicProps.doinit  % Initialisation code.&lt;br /&gt;
        id_a_p(m.nodes(:,1)&amp;lt;-0.03)=1; % setup region for A where identity factor A is represented by id_a_p&lt;br /&gt;
        id_b_p(m.nodes(:,2)&amp;lt;-0.01)=1; % setup region for B&lt;br /&gt;
    else&lt;br /&gt;
        % @@KRN Growth Regulatory Network&lt;br /&gt;
        kapar_p(:) = id_a_l .* inh(1,id_b_l); % growth rate&lt;br /&gt;
        kaper_p(:) = kapar_p; % isotropic growth&lt;br /&gt;
        kbpar_p(:) = kapar_p; % same on both sides of the sheet&lt;br /&gt;
        kbper_p(:) = kapar_p; % same&lt;br /&gt;
        knor_p(:)  = 0;       % thickness not growing&lt;br /&gt;
    end&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|[[Tutorial on the basic interaction function|For tutorial on a basic interaction function click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The tutorial explains how the code shown above appears in the interaction function. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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 (&#039;&#039;Kapar&#039;&#039;, etc.) that have already been set through the GUI.&lt;br /&gt;
[[Types of morphogens and factors| Types of morphogens and factors are given here]].&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_why_matlab-2011-05-05-0005.flv|GPT_why_matlab-2011-05-05-0005_First.png‎&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
|-align=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
||&amp;lt;center&amp;gt;Play and the mesh will grow and subdivide. Normally we do not want to see the mesh. Red is growth rate&amp;lt;/center&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
===2 B===&lt;br /&gt;
&#039;&#039;&#039;Interaction function in detail&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
([[Full freshly minted interaction function|A newly created interaction function is shown here - this one has two, user specified morphogens: &#039;&#039;id_a&#039;&#039; and &#039;&#039;id_b&#039;&#039;.]])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|[[Tutorial on the interaction function details|Tutorial on the interaction function details click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Types of morphogens and factors| Types of morphogens and factors are given here]].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Submodel 1&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0002.flv|GPT_tut_interaction_example_20110601-0002.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1&amp;lt;/center&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Submodel 2. Growth in the region that has no arrows is isotropic and, as result, the outgrowth is blunt.&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0007.flv|GPT_tut_interaction_example_20110601-0006_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 2&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===2 C Illustrating two independent ways to form shapes and the use of submodels. ===&lt;br /&gt;
Conclusion: interesting shapes can be generated either by &#039;&#039;&#039;patterns of differential growth&#039;&#039;&#039; or&#039;&#039;&#039; patterns of local growth axe&#039;&#039;&#039;s. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorial on two romatic hearts|Tutorial on two romatic hearts click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|Submodel 1. Uniform specified polariser (&#039;&#039;&#039;no polariser gradient&#039;&#039;&#039;). Creating a shape using a specified pattern of isotropic growth.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Result&#039;&#039;&#039;: simple patterns of differential growth can readily produce blobby shapes. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_TwoWayHeart_20110531-0001.flv|GPT_TwoWayHeart_20110531-0001_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1. Pattern of isotropic specified growth (no polariser)&amp;lt;/center&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Submodel 2.&#039;&#039;&#039;Uniform specified growth&#039;&#039;&#039;. Creating a shape using a specified pattern of diffusable polariser.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Result&#039;&#039;&#039;: simple patterns organising a diffusable polariser can readily produce sharp shapes. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_TwoWayHeart_20110531-0002.flv|GPT_TwoWayHeart_20110531-0002_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 2. Pattern of specified polariser levels (green-cyan). Polariser can diffuse and the gradient is arrowed. Uniform specified growth (red).&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===2 D===&lt;br /&gt;
&#039;&#039;&#039;Retaining strain and cutting the mesh&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorial on retaining residual strain and cutting|Tutorial on retaining residual strain and cutting]]&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|&lt;br /&gt;
[[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.&lt;br /&gt;
|width=&amp;quot;120pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_RetainStrainAndCut_20110603-0006.flv|GPT_RetainStrainAndCut_20110603-0006.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;| [[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.&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_RetainStrainAndCut_20110603-0004.flv|GPT_RetainStrainAndCut_20110603-0004.png‎&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;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.&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
===2 E===&lt;br /&gt;
&#039;&#039;&#039;Patterning and growth&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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). &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorial on the patterning interaction function|Tutorial on the patterning interaction function]]&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|something here&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0002.flv|GPT_tut_interaction_example_20110601-0002.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1&amp;lt;/center&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|something here&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0007.flv|GPT_tut_interaction_example_20110601-0006_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 2&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=&#039;&#039;&#039;3&#039;&#039;&#039; Running models without the GUI=&lt;br /&gt;
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 &#039;&#039;GFtbox&#039;&#039; 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 &#039;&#039;GFtbox&#039;&#039; compatible with [http://www.gnu.org/software/octave/ Octave].)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;How to use these tutorials.&#039;&#039;&#039;  First ensure that your model is working as you would expect using the GUI. Then run the model from the Matlab command line. Finally, submit the project to the linux computing cluster with one or more ranges of parameters.&lt;br /&gt;
For further details [[Running example models and using a cluster|Running example models and using a cluster]]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=GFtbox_Tutorial_pages&amp;diff=4908</id>
		<title>GFtbox Tutorial pages</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=GFtbox_Tutorial_pages&amp;diff=4908"/>
		<updated>2011-06-24T14:53:34Z</updated>

		<summary type="html">&lt;p&gt;Jrk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[GFtbox|&#039;&#039;GFtbox&#039;&#039; Details]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Notes from a new user|Notes from a new user]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Running example models and using a cluster|Running example models and using a cluster]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Example pages|Examples from our papers]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Types of morphogens and factors| Types of morphogens and factors are given here]]&amp;lt;br&amp;gt;&lt;br /&gt;
([[Full freshly minted interaction function|A newly created interaction function is shown here - the green comments are another ready reference.]])&amp;lt;br&amp;gt;&lt;br /&gt;
[[Ready Reference Manual|&#039;&#039;&#039;&#039;&#039;Ready Reference&#039;&#039;&#039;&#039;&#039; Manual]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
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]].&lt;br /&gt;
=Three ways to use &#039;&#039;GFtbox&#039;&#039;=&lt;br /&gt;
1) [[GFtbox Tutorial pages#1 Modelling using the Graphical User Interface| &#039;&#039;&#039;Do everything from the Graphical User Interface (GUI).&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
2)   [[GFtbox Tutorial pages#2 Modelling using a combination of GUI and interaction function|&#039;&#039;&#039;Do only some things from the GUI.&#039;&#039;&#039;]] 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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
3) [[GFtbox Tutorial pages#3 Running models without the GUI|&#039;&#039;&#039;Without the GUI.&#039;&#039;&#039;]] 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. &lt;br /&gt;
=&#039;&#039;&#039;1&#039;&#039;&#039; Modelling using the Graphical User Interface=&lt;br /&gt;
== Isotropic growth==&lt;br /&gt;
&#039;&#039;&#039;How to use the tutorial.&#039;&#039;&#039; Open the GFtbox and attempt to repeat the results shown.&lt;br /&gt;
===1 A===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;700pt&amp;quot;|[[In the beginning Uniform|For tutorial on uniform growth click here.]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Consider a disc shaped canvas (tissue) in which the &#039;&#039;&#039;specified growth is uniform&#039;&#039;&#039;, isotropic and on both sides.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;&#039;&#039;Into what shape will the disc grow?&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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 &#039;&#039;Kapar&#039;&#039; and &#039;&#039;Kaper&#039;&#039; (&#039;&#039;A&#039;&#039; side) and &#039;&#039;Kbpar&#039;&#039; and &#039;&#039;Kbper&#039;&#039; (&#039;&#039;B&#039;&#039; side).&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;300pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;GPT_tut_uniform_20110527-0003.flv|GPT_tut_uniform_20110527-0003_Last.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===1 B===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;700pt&amp;quot;|[[In the beginning non-uniform|For tutorial on non-uniform growth click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Consider a disc shaped canvas (tissue) in which the&#039;&#039;&#039; non-uniform specified growth&#039;&#039;&#039; increases in proportion to the distance from the centre.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;&#039;&#039;Into what shape will the disc grow?&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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] ).&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;GPT_tut_uniform_20110527-0006.flv|GPT_tut_uniform_20110527-0006_First.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Adding polariser==&lt;br /&gt;
===1 C===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;700pt&amp;quot;|[[In the beginning Growing a cone|For tutorial on uniform growth non-uniform polariser click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
In the presence of polariser, &#039;&#039;GFtbox&#039;&#039; 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: &#039;&#039;Kapar&#039;&#039; and &#039;&#039;Kaper&#039;&#039; (&#039;&#039;A&#039;&#039; side) and &#039;&#039;Kbpar&#039;&#039; and &#039;&#039;Kbper&#039;&#039; (&#039;&#039;B&#039;&#039; side).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
We now&#039;&#039;&#039; add polariser&#039;&#039;&#039;.  Start with example A - uniform growth - and add a radial polarising gradient.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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 (&#039;&#039;Kpar&#039;&#039;) or perpendicular to (&#039;&#039;Kper&#039;&#039;) that direction.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Given a &#039;&#039;&#039;uniform pattern of specified growth parallel&#039;&#039;&#039; to the polariser and &#039;&#039;&#039;zero specified growth perpendicular&#039;&#039;&#039; to the polariser.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &#039;&#039;&#039;What will be the final shape?&#039;&#039;&#039;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;   loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;GPT_in_the_beginning_2_20110510-0003.flv|GPT_in_the_beginning_2_20110510-0003_First.png&amp;lt;/wikiflv&amp;gt;&amp;lt;small&amp;gt;Note: the gradient of the polariser, green to cyan, is shown using the arrows. Specified growth rate parallel to the arrows, red, is uniform.&amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&#039;&#039;&#039;2&#039;&#039;&#039; Modelling using a combination of GUI and interaction function=&lt;br /&gt;
&#039;&#039;&#039;Programmatic modelling&#039;&#039;&#039;. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;How to use these tutorials.&#039;&#039;&#039; 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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The &#039;&#039;&#039;full specification&#039;&#039;&#039; of a &#039;&#039;GFtbox&#039;&#039; model is stored in a combination of the mesh data structure (&#039;&#039;&#039;Mesh&#039;&#039;&#039;) and the &#039;&#039;&#039;interaction function&#039;&#039;&#039;. 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 &#039;&#039;&#039;interaction function&#039;&#039;&#039; (a Matlab program file &#039;&#039;.m&#039;&#039;) contains all the details of the growth regulation system: morphogen concentrations, signal interactions etc. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
When a new project is first edited&#039;&#039;&#039; the interaction function is generated automatically&#039;&#039;&#039;. 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 &#039;&#039;&#039;always invoke the Editor from the GUI&#039;&#039;&#039; (Panel: Interaction Function: Edit).&lt;br /&gt;
&lt;br /&gt;
===2 A===&lt;br /&gt;
&#039;&#039;&#039;Basic interaction function&#039;&#039;&#039;&lt;br /&gt;
The patterns of morphogens A and B are set up by &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        id_a_p(m.nodes(:,1)&amp;lt;-0.03)=1; &lt;br /&gt;
        id_b_p(m.nodes(:,2)&amp;lt;-0.01)=1; &lt;br /&gt;
&lt;br /&gt;
where &#039;&#039;id_a_p&#039;&#039; is the A morphogen. &#039;&#039;m.node(:,1)&#039;&#039; refers to the &#039;&#039;x&#039;&#039; coordinates of all nodes (vertices) in the mesh&amp;lt;br&amp;gt;&lt;br /&gt;
The expression &#039;&#039;(m.nodes(:,1)&amp;lt;-0.03)&#039;&#039; means find all vertices with &#039;&#039;x&#039;&#039; coordinates that are less than -0.03.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Similarly, &#039;&#039;(m.nodes(:,2)&amp;lt;-0.01)&#039;&#039; means find all vertices with &#039;&#039;y&#039;&#039; coordinates that are less than -0.01.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the pattern of polariser (P) is set up by&amp;lt;br&amp;gt;        &lt;br /&gt;
&lt;br /&gt;
        P((m.nodes(:,1)&amp;lt;-0.05)&amp;amp;(m.nodes(:,2)&amp;gt;0.03))=1;&lt;br /&gt;
Where &#039;&#039;(m.nodes(:,1)&amp;lt;-0.05)&amp;amp;(m.nodes(:,2)&amp;gt;0.03)&#039;&#039; means find all vertices with &#039;&#039;x,y&#039;&#039; coordinates that are less than -0.05 and greater than 0.03 respectively&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Thus the full code describing the model is:&lt;br /&gt;
    if (Steps(m)==0) &amp;amp;&amp;amp; m.globalDynamicProps.doinit  % Initialisation code.&lt;br /&gt;
        id_a_p(m.nodes(:,1)&amp;lt;-0.03)=1; % setup region for A where identity factor A is represented by id_a_p&lt;br /&gt;
        id_b_p(m.nodes(:,2)&amp;lt;-0.01)=1; % setup region for B&lt;br /&gt;
    else&lt;br /&gt;
        % @@KRN Growth Regulatory Network&lt;br /&gt;
        kapar_p(:) = id_a_l .* inh(1,id_b_l); % growth rate&lt;br /&gt;
        kaper_p(:) = kapar_p; % isotropic growth&lt;br /&gt;
        kbpar_p(:) = kapar_p; % same on both sides of the sheet&lt;br /&gt;
        kbper_p(:) = kapar_p; % same&lt;br /&gt;
        knor_p(:)  = 0;       % thickness not growing&lt;br /&gt;
    end&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|[[Tutorial on the basic interaction function|For tutorial on a basic interaction function click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The tutorial explains how the code shown above appears in the interaction function. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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 (&#039;&#039;Kapar&#039;&#039;, etc.) that have already been set through the GUI.&lt;br /&gt;
[[Types of morphogens and factors| Types of morphogens and factors are given here]].&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_why_matlab-2011-05-05-0005.flv|GPT_why_matlab-2011-05-05-0005_First.png‎&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
|-align=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
||&amp;lt;center&amp;gt;Play and the mesh will grow and subdivide. Normally we do not want to see the mesh. Red is growth rate&amp;lt;/center&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
===2 B===&lt;br /&gt;
&#039;&#039;&#039;Interaction function in detail&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
([[Full freshly minted interaction function|A newly created interaction function is shown here - this one has two, user specified morphogens: &#039;&#039;id_a&#039;&#039; and &#039;&#039;id_b&#039;&#039;.]])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|[[Tutorial on the interaction function details|Tutorial on the interaction function details click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Types of morphogens and factors| Types of morphogens and factors are given here]].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Submodel 1&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0002.flv|GPT_tut_interaction_example_20110601-0002.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1&amp;lt;/center&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Submodel 2. Growth in the region that has no arrows is isotropic and, as result, the outgrowth is blunt.&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0007.flv|GPT_tut_interaction_example_20110601-0006_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 2&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===2 C Illustrating two independent ways to form shapes and the use of submodels. ===&lt;br /&gt;
Conclusion: interesting shapes can be generated either by &#039;&#039;&#039;patterns of differential growth&#039;&#039;&#039; or&#039;&#039;&#039; patterns of local growth axe&#039;&#039;&#039;s. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorial on two romatic hearts|Tutorial on two romatic hearts click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|Submodel 1. Uniform specified polariser (&#039;&#039;&#039;no polariser gradient&#039;&#039;&#039;). Creating a shape using a specified pattern of isotropic growth.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Result&#039;&#039;&#039;: simple patterns of differential growth can readily produce blobby shapes. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_TwoWayHeart_20110531-0001.flv|GPT_TwoWayHeart_20110531-0001_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1. Pattern of isotropic specified growth (no polariser)&amp;lt;/center&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Submodel 2.&#039;&#039;&#039;Uniform specified growth&#039;&#039;&#039;. Creating a shape using a specified pattern of diffusable polariser.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Result&#039;&#039;&#039;: simple patterns organising a diffusable polariser can readily produce sharp shapes. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_TwoWayHeart_20110531-0002.flv|GPT_TwoWayHeart_20110531-0002_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 2. Pattern of specified polariser levels (green-cyan). Polariser can diffuse and the gradient is arrowed. Uniform specified growth (red).&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===2 D===&lt;br /&gt;
&#039;&#039;&#039;Retaining strain and cutting the mesh&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorial on retaining residual strain and cutting|Tutorial on retaining residual strain and cutting]]&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|&lt;br /&gt;
[[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.&lt;br /&gt;
|width=&amp;quot;120pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_RetainStrainAndCut_20110603-0006.flv|GPT_RetainStrainAndCut_20110603-0006.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;| [[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.&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_RetainStrainAndCut_20110603-0004.flv|GPT_RetainStrainAndCut_20110603-0004.png‎&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;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.&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
===2 E===&lt;br /&gt;
&#039;&#039;&#039;Patterning and growth&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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). &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorial on the patterning interaction function|Tutorial on the patterning interaction function]]&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|something here&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0002.flv|GPT_tut_interaction_example_20110601-0002.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1&amp;lt;/center&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|something here&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0007.flv|GPT_tut_interaction_example_20110601-0006_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 2&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=&#039;&#039;&#039;3&#039;&#039;&#039; Running models without the GUI=&lt;br /&gt;
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 &#039;&#039;GFtbox&#039;&#039; 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 &#039;&#039;GFtbox&#039;&#039; compatible with [http://www.gnu.org/software/octave/ Octave].)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;How to use these tutorials.&#039;&#039;&#039;  First ensure that your model is working as you would expect using the GUI. Then run the model from the Matlab command line. Finally, submit the project to the linux computing cluster with one or more ranges of parameters.&lt;br /&gt;
For further details [[Running example models and using a cluster|Running example models and using a cluster]]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=GFtbox_Tutorial_pages&amp;diff=4906</id>
		<title>GFtbox Tutorial pages</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=GFtbox_Tutorial_pages&amp;diff=4906"/>
		<updated>2011-06-24T14:52:57Z</updated>

		<summary type="html">&lt;p&gt;Jrk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[GFtbox|&#039;&#039;GFtbox&#039;&#039; Details]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Notes from a new user|Notes from a new user]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Running example models and using a cluster|Running example models and using a cluster]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Example pages|Examples from our papers]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Types of morphogens and factors| Types of morphogens and factors are given here]]&amp;lt;br&amp;gt;&lt;br /&gt;
([[Full freshly minted interaction function|A newly created interaction function is shown here - the green comments are another ready reference.]])&amp;lt;br&amp;gt;&lt;br /&gt;
[[Ready Reference Manual|&#039;&#039;&#039;&#039;&#039;Ready Reference&#039;&#039;&#039;&#039;&#039; Manual]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
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]].&lt;br /&gt;
=Three ways to use &#039;&#039;GFtbox&#039;&#039;=&lt;br /&gt;
1) [[GFtbox Tutorial pages#1 Modelling using the Graphical User Interface| &#039;&#039;&#039;Do everything from the Graphical User Interface (GUI).&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
2)   [[GFtbox Tutorial pages#2 Modelling using a combination of GUI and interaction function|&#039;&#039;&#039;Do only some things from the GUI.&#039;&#039;&#039;]] 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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
3) [[GFtbox Tutorial pages#3 Running models without the GUI|&#039;&#039;&#039;Without the GUI.&#039;&#039;&#039;]] 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. &lt;br /&gt;
=&#039;&#039;&#039;1&#039;&#039;&#039; Modelling using the Graphical User Interface=&lt;br /&gt;
== Isotropic growth==&lt;br /&gt;
&#039;&#039;&#039;How to use the tutorial.&#039;&#039;&#039; Open the GFtbox and attempt to repeat the results shown. There are notes to explain how to keep a record of your results, e.g. Snapshots, Movie. &lt;br /&gt;
===1 A===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;700pt&amp;quot;|[[In the beginning Uniform|For tutorial on uniform growth click here.]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Consider a disc shaped canvas (tissue) in which the &#039;&#039;&#039;specified growth is uniform&#039;&#039;&#039;, isotropic and on both sides.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;&#039;&#039;Into what shape will the disc grow?&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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 &#039;&#039;Kapar&#039;&#039; and &#039;&#039;Kaper&#039;&#039; (&#039;&#039;A&#039;&#039; side) and &#039;&#039;Kbpar&#039;&#039; and &#039;&#039;Kbper&#039;&#039; (&#039;&#039;B&#039;&#039; side).&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;300pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;GPT_tut_uniform_20110527-0003.flv|GPT_tut_uniform_20110527-0003_Last.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===1 B===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;700pt&amp;quot;|[[In the beginning non-uniform|For tutorial on non-uniform growth click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Consider a disc shaped canvas (tissue) in which the&#039;&#039;&#039; non-uniform specified growth&#039;&#039;&#039; increases in proportion to the distance from the centre.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;&#039;&#039;Into what shape will the disc grow?&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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] ).&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;GPT_tut_uniform_20110527-0006.flv|GPT_tut_uniform_20110527-0006_First.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Adding polariser==&lt;br /&gt;
===1 C===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;700pt&amp;quot;|[[In the beginning Growing a cone|For tutorial on uniform growth non-uniform polariser click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
In the presence of polariser, &#039;&#039;GFtbox&#039;&#039; 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: &#039;&#039;Kapar&#039;&#039; and &#039;&#039;Kaper&#039;&#039; (&#039;&#039;A&#039;&#039; side) and &#039;&#039;Kbpar&#039;&#039; and &#039;&#039;Kbper&#039;&#039; (&#039;&#039;B&#039;&#039; side).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
We now&#039;&#039;&#039; add polariser&#039;&#039;&#039;.  Start with example A - uniform growth - and add a radial polarising gradient.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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 (&#039;&#039;Kpar&#039;&#039;) or perpendicular to (&#039;&#039;Kper&#039;&#039;) that direction.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Given a &#039;&#039;&#039;uniform pattern of specified growth parallel&#039;&#039;&#039; to the polariser and &#039;&#039;&#039;zero specified growth perpendicular&#039;&#039;&#039; to the polariser.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &#039;&#039;&#039;What will be the final shape?&#039;&#039;&#039;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;   loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;GPT_in_the_beginning_2_20110510-0003.flv|GPT_in_the_beginning_2_20110510-0003_First.png&amp;lt;/wikiflv&amp;gt;&amp;lt;small&amp;gt;Note: the gradient of the polariser, green to cyan, is shown using the arrows. Specified growth rate parallel to the arrows, red, is uniform.&amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&#039;&#039;&#039;2&#039;&#039;&#039; Modelling using a combination of GUI and interaction function=&lt;br /&gt;
&#039;&#039;&#039;Programmatic modelling&#039;&#039;&#039;. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;How to use these tutorials.&#039;&#039;&#039; 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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The &#039;&#039;&#039;full specification&#039;&#039;&#039; of a &#039;&#039;GFtbox&#039;&#039; model is stored in a combination of the mesh data structure (&#039;&#039;&#039;Mesh&#039;&#039;&#039;) and the &#039;&#039;&#039;interaction function&#039;&#039;&#039;. 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 &#039;&#039;&#039;interaction function&#039;&#039;&#039; (a Matlab program file &#039;&#039;.m&#039;&#039;) contains all the details of the growth regulation system: morphogen concentrations, signal interactions etc. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
When a new project is first edited&#039;&#039;&#039; the interaction function is generated automatically&#039;&#039;&#039;. 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 &#039;&#039;&#039;always invoke the Editor from the GUI&#039;&#039;&#039; (Panel: Interaction Function: Edit).&lt;br /&gt;
&lt;br /&gt;
===2 A===&lt;br /&gt;
&#039;&#039;&#039;Basic interaction function&#039;&#039;&#039;&lt;br /&gt;
The patterns of morphogens A and B are set up by &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        id_a_p(m.nodes(:,1)&amp;lt;-0.03)=1; &lt;br /&gt;
        id_b_p(m.nodes(:,2)&amp;lt;-0.01)=1; &lt;br /&gt;
&lt;br /&gt;
where &#039;&#039;id_a_p&#039;&#039; is the A morphogen. &#039;&#039;m.node(:,1)&#039;&#039; refers to the &#039;&#039;x&#039;&#039; coordinates of all nodes (vertices) in the mesh&amp;lt;br&amp;gt;&lt;br /&gt;
The expression &#039;&#039;(m.nodes(:,1)&amp;lt;-0.03)&#039;&#039; means find all vertices with &#039;&#039;x&#039;&#039; coordinates that are less than -0.03.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Similarly, &#039;&#039;(m.nodes(:,2)&amp;lt;-0.01)&#039;&#039; means find all vertices with &#039;&#039;y&#039;&#039; coordinates that are less than -0.01.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the pattern of polariser (P) is set up by&amp;lt;br&amp;gt;        &lt;br /&gt;
&lt;br /&gt;
        P((m.nodes(:,1)&amp;lt;-0.05)&amp;amp;(m.nodes(:,2)&amp;gt;0.03))=1;&lt;br /&gt;
Where &#039;&#039;(m.nodes(:,1)&amp;lt;-0.05)&amp;amp;(m.nodes(:,2)&amp;gt;0.03)&#039;&#039; means find all vertices with &#039;&#039;x,y&#039;&#039; coordinates that are less than -0.05 and greater than 0.03 respectively&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Thus the full code describing the model is:&lt;br /&gt;
    if (Steps(m)==0) &amp;amp;&amp;amp; m.globalDynamicProps.doinit  % Initialisation code.&lt;br /&gt;
        id_a_p(m.nodes(:,1)&amp;lt;-0.03)=1; % setup region for A where identity factor A is represented by id_a_p&lt;br /&gt;
        id_b_p(m.nodes(:,2)&amp;lt;-0.01)=1; % setup region for B&lt;br /&gt;
    else&lt;br /&gt;
        % @@KRN Growth Regulatory Network&lt;br /&gt;
        kapar_p(:) = id_a_l .* inh(1,id_b_l); % growth rate&lt;br /&gt;
        kaper_p(:) = kapar_p; % isotropic growth&lt;br /&gt;
        kbpar_p(:) = kapar_p; % same on both sides of the sheet&lt;br /&gt;
        kbper_p(:) = kapar_p; % same&lt;br /&gt;
        knor_p(:)  = 0;       % thickness not growing&lt;br /&gt;
    end&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|[[Tutorial on the basic interaction function|For tutorial on a basic interaction function click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The tutorial explains how the code shown above appears in the interaction function. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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 (&#039;&#039;Kapar&#039;&#039;, etc.) that have already been set through the GUI.&lt;br /&gt;
[[Types of morphogens and factors| Types of morphogens and factors are given here]].&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_why_matlab-2011-05-05-0005.flv|GPT_why_matlab-2011-05-05-0005_First.png‎&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
|-align=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
||&amp;lt;center&amp;gt;Play and the mesh will grow and subdivide. Normally we do not want to see the mesh. Red is growth rate&amp;lt;/center&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
===2 B===&lt;br /&gt;
&#039;&#039;&#039;Interaction function in detail&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
([[Full freshly minted interaction function|A newly created interaction function is shown here - this one has two, user specified morphogens: &#039;&#039;id_a&#039;&#039; and &#039;&#039;id_b&#039;&#039;.]])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|[[Tutorial on the interaction function details|Tutorial on the interaction function details click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Types of morphogens and factors| Types of morphogens and factors are given here]].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Submodel 1&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0002.flv|GPT_tut_interaction_example_20110601-0002.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1&amp;lt;/center&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Submodel 2. Growth in the region that has no arrows is isotropic and, as result, the outgrowth is blunt.&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0007.flv|GPT_tut_interaction_example_20110601-0006_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 2&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===2 C Illustrating two independent ways to form shapes and the use of submodels. ===&lt;br /&gt;
Conclusion: interesting shapes can be generated either by &#039;&#039;&#039;patterns of differential growth&#039;&#039;&#039; or&#039;&#039;&#039; patterns of local growth axe&#039;&#039;&#039;s. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorial on two romatic hearts|Tutorial on two romatic hearts click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|Submodel 1. Uniform specified polariser (&#039;&#039;&#039;no polariser gradient&#039;&#039;&#039;). Creating a shape using a specified pattern of isotropic growth.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Result&#039;&#039;&#039;: simple patterns of differential growth can readily produce blobby shapes. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_TwoWayHeart_20110531-0001.flv|GPT_TwoWayHeart_20110531-0001_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1. Pattern of isotropic specified growth (no polariser)&amp;lt;/center&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Submodel 2.&#039;&#039;&#039;Uniform specified growth&#039;&#039;&#039;. Creating a shape using a specified pattern of diffusable polariser.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Result&#039;&#039;&#039;: simple patterns organising a diffusable polariser can readily produce sharp shapes. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_TwoWayHeart_20110531-0002.flv|GPT_TwoWayHeart_20110531-0002_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 2. Pattern of specified polariser levels (green-cyan). Polariser can diffuse and the gradient is arrowed. Uniform specified growth (red).&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===2 D===&lt;br /&gt;
&#039;&#039;&#039;Retaining strain and cutting the mesh&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorial on retaining residual strain and cutting|Tutorial on retaining residual strain and cutting]]&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|&lt;br /&gt;
[[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.&lt;br /&gt;
|width=&amp;quot;120pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_RetainStrainAndCut_20110603-0006.flv|GPT_RetainStrainAndCut_20110603-0006.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;| [[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.&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_RetainStrainAndCut_20110603-0004.flv|GPT_RetainStrainAndCut_20110603-0004.png‎&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;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.&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
===2 E===&lt;br /&gt;
&#039;&#039;&#039;Patterning and growth&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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). &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorial on the patterning interaction function|Tutorial on the patterning interaction function]]&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|something here&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0002.flv|GPT_tut_interaction_example_20110601-0002.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1&amp;lt;/center&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|something here&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0007.flv|GPT_tut_interaction_example_20110601-0006_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 2&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=&#039;&#039;&#039;3&#039;&#039;&#039; Running models without the GUI=&lt;br /&gt;
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 &#039;&#039;GFtbox&#039;&#039; 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 &#039;&#039;GFtbox&#039;&#039; compatible with [http://www.gnu.org/software/octave/ Octave].)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;How to use these tutorials.&#039;&#039;&#039;  First ensure that your model is working as you would expect using the GUI. Then run the model from the Matlab command line. Finally, submit the project to the linux computing cluster with one or more ranges of parameters.&lt;br /&gt;
For further details [[Running example models and using a cluster|Running example models and using a cluster]]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=GFtbox_Tutorial_pages&amp;diff=4905</id>
		<title>GFtbox Tutorial pages</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=GFtbox_Tutorial_pages&amp;diff=4905"/>
		<updated>2011-06-24T14:52:19Z</updated>

		<summary type="html">&lt;p&gt;Jrk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[GFtbox|&#039;&#039;GFtbox&#039;&#039; Details]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Notes from a new user|Notes from a new user]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Running example models and using a cluster|Running example models and using a cluster]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Example pages|Examples from our papers]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Types of morphogens and factors| Types of morphogens and factors are given here]]&amp;lt;br&amp;gt;&lt;br /&gt;
([[Full freshly minted interaction function|A newly created interaction function is shown here - the green comments are another ready reference.]])&amp;lt;br&amp;gt;&lt;br /&gt;
[[Ready Reference Manual|&#039;&#039;&#039;&#039;&#039;Ready Reference&#039;&#039;&#039;&#039;&#039; Manual]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
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]].&lt;br /&gt;
=Three ways to use &#039;&#039;GFtbox&#039;&#039;=&lt;br /&gt;
1) [[GFtbox Tutorial pages#1 Modelling using the Graphical User Interface| &#039;&#039;&#039;Do everything from the Graphical User Interface (GUI).&#039;&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
2)   [[GFtbox Tutorial pages#2 Modelling using a combination of GUI and interaction function|&#039;&#039;&#039;Do only some things from the GUI.&#039;&#039;&#039;]] 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 by writing Matlab code in what we call the interaction function.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
3) [[GFtbox Tutorial pages#3 Running models without the GUI|&#039;&#039;&#039;Without the GUI.&#039;&#039;&#039;]] 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. &lt;br /&gt;
=&#039;&#039;&#039;1&#039;&#039;&#039; Modelling using the Graphical User Interface=&lt;br /&gt;
== Isotropic growth==&lt;br /&gt;
&#039;&#039;&#039;How to use the tutorial.&#039;&#039;&#039; Open the GFtbox and attempt to repeat the results shown. There are notes to explain how to keep a record of your results, e.g. Snapshots, Movie. &lt;br /&gt;
===1 A===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;700pt&amp;quot;|[[In the beginning Uniform|For tutorial on uniform growth click here.]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Consider a disc shaped canvas (tissue) in which the &#039;&#039;&#039;specified growth is uniform&#039;&#039;&#039;, isotropic and on both sides.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;&#039;&#039;Into what shape will the disc grow?&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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 &#039;&#039;Kapar&#039;&#039; and &#039;&#039;Kaper&#039;&#039; (&#039;&#039;A&#039;&#039; side) and &#039;&#039;Kbpar&#039;&#039; and &#039;&#039;Kbper&#039;&#039; (&#039;&#039;B&#039;&#039; side).&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;300pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;GPT_tut_uniform_20110527-0003.flv|GPT_tut_uniform_20110527-0003_Last.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===1 B===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;700pt&amp;quot;|[[In the beginning non-uniform|For tutorial on non-uniform growth click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Consider a disc shaped canvas (tissue) in which the&#039;&#039;&#039; non-uniform specified growth&#039;&#039;&#039; increases in proportion to the distance from the centre.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;&#039;&#039;Into what shape will the disc grow?&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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] ).&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;GPT_tut_uniform_20110527-0006.flv|GPT_tut_uniform_20110527-0006_First.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Adding polariser==&lt;br /&gt;
===1 C===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;700pt&amp;quot;|[[In the beginning Growing a cone|For tutorial on uniform growth non-uniform polariser click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
In the presence of polariser, &#039;&#039;GFtbox&#039;&#039; 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: &#039;&#039;Kapar&#039;&#039; and &#039;&#039;Kaper&#039;&#039; (&#039;&#039;A&#039;&#039; side) and &#039;&#039;Kbpar&#039;&#039; and &#039;&#039;Kbper&#039;&#039; (&#039;&#039;B&#039;&#039; side).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
We now&#039;&#039;&#039; add polariser&#039;&#039;&#039;.  Start with example A - uniform growth - and add a radial polarising gradient.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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 (&#039;&#039;Kpar&#039;&#039;) or perpendicular to (&#039;&#039;Kper&#039;&#039;) that direction.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Given a &#039;&#039;&#039;uniform pattern of specified growth parallel&#039;&#039;&#039; to the polariser and &#039;&#039;&#039;zero specified growth perpendicular&#039;&#039;&#039; to the polariser.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &#039;&#039;&#039;What will be the final shape?&#039;&#039;&#039;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;   loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;GPT_in_the_beginning_2_20110510-0003.flv|GPT_in_the_beginning_2_20110510-0003_First.png&amp;lt;/wikiflv&amp;gt;&amp;lt;small&amp;gt;Note: the gradient of the polariser, green to cyan, is shown using the arrows. Specified growth rate parallel to the arrows, red, is uniform.&amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&#039;&#039;&#039;2&#039;&#039;&#039; Modelling using a combination of GUI and interaction function=&lt;br /&gt;
&#039;&#039;&#039;Programmatic modelling&#039;&#039;&#039;. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;How to use these tutorials.&#039;&#039;&#039; 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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The &#039;&#039;&#039;full specification&#039;&#039;&#039; of a &#039;&#039;GFtbox&#039;&#039; model is stored in a combination of the mesh data structure (&#039;&#039;&#039;Mesh&#039;&#039;&#039;) and the &#039;&#039;&#039;interaction function&#039;&#039;&#039;. 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 &#039;&#039;&#039;interaction function&#039;&#039;&#039; (a Matlab program file &#039;&#039;.m&#039;&#039;) contains all the details of the growth regulation system: morphogen concentrations, signal interactions etc. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
When a new project is first edited&#039;&#039;&#039; the interaction function is generated automatically&#039;&#039;&#039;. 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 &#039;&#039;&#039;always invoke the Editor from the GUI&#039;&#039;&#039; (Panel: Interaction Function: Edit).&lt;br /&gt;
&lt;br /&gt;
===2 A===&lt;br /&gt;
&#039;&#039;&#039;Basic interaction function&#039;&#039;&#039;&lt;br /&gt;
The patterns of morphogens A and B are set up by &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        id_a_p(m.nodes(:,1)&amp;lt;-0.03)=1; &lt;br /&gt;
        id_b_p(m.nodes(:,2)&amp;lt;-0.01)=1; &lt;br /&gt;
&lt;br /&gt;
where &#039;&#039;id_a_p&#039;&#039; is the A morphogen. &#039;&#039;m.node(:,1)&#039;&#039; refers to the &#039;&#039;x&#039;&#039; coordinates of all nodes (vertices) in the mesh&amp;lt;br&amp;gt;&lt;br /&gt;
The expression &#039;&#039;(m.nodes(:,1)&amp;lt;-0.03)&#039;&#039; means find all vertices with &#039;&#039;x&#039;&#039; coordinates that are less than -0.03.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Similarly, &#039;&#039;(m.nodes(:,2)&amp;lt;-0.01)&#039;&#039; means find all vertices with &#039;&#039;y&#039;&#039; coordinates that are less than -0.01.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the pattern of polariser (P) is set up by&amp;lt;br&amp;gt;        &lt;br /&gt;
&lt;br /&gt;
        P((m.nodes(:,1)&amp;lt;-0.05)&amp;amp;(m.nodes(:,2)&amp;gt;0.03))=1;&lt;br /&gt;
Where &#039;&#039;(m.nodes(:,1)&amp;lt;-0.05)&amp;amp;(m.nodes(:,2)&amp;gt;0.03)&#039;&#039; means find all vertices with &#039;&#039;x,y&#039;&#039; coordinates that are less than -0.05 and greater than 0.03 respectively&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Thus the full code describing the model is:&lt;br /&gt;
    if (Steps(m)==0) &amp;amp;&amp;amp; m.globalDynamicProps.doinit  % Initialisation code.&lt;br /&gt;
        id_a_p(m.nodes(:,1)&amp;lt;-0.03)=1; % setup region for A where identity factor A is represented by id_a_p&lt;br /&gt;
        id_b_p(m.nodes(:,2)&amp;lt;-0.01)=1; % setup region for B&lt;br /&gt;
    else&lt;br /&gt;
        % @@KRN Growth Regulatory Network&lt;br /&gt;
        kapar_p(:) = id_a_l .* inh(1,id_b_l); % growth rate&lt;br /&gt;
        kaper_p(:) = kapar_p; % isotropic growth&lt;br /&gt;
        kbpar_p(:) = kapar_p; % same on both sides of the sheet&lt;br /&gt;
        kbper_p(:) = kapar_p; % same&lt;br /&gt;
        knor_p(:)  = 0;       % thickness not growing&lt;br /&gt;
    end&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|[[Tutorial on the basic interaction function|For tutorial on a basic interaction function click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The tutorial explains how the code shown above appears in the interaction function. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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 (&#039;&#039;Kapar&#039;&#039;, etc.) that have already been set through the GUI.&lt;br /&gt;
[[Types of morphogens and factors| Types of morphogens and factors are given here]].&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_why_matlab-2011-05-05-0005.flv|GPT_why_matlab-2011-05-05-0005_First.png‎&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
|-align=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
||&amp;lt;center&amp;gt;Play and the mesh will grow and subdivide. Normally we do not want to see the mesh. Red is growth rate&amp;lt;/center&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
===2 B===&lt;br /&gt;
&#039;&#039;&#039;Interaction function in detail&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
([[Full freshly minted interaction function|A newly created interaction function is shown here - this one has two, user specified morphogens: &#039;&#039;id_a&#039;&#039; and &#039;&#039;id_b&#039;&#039;.]])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|[[Tutorial on the interaction function details|Tutorial on the interaction function details click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Types of morphogens and factors| Types of morphogens and factors are given here]].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Submodel 1&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0002.flv|GPT_tut_interaction_example_20110601-0002.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1&amp;lt;/center&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Submodel 2. Growth in the region that has no arrows is isotropic and, as result, the outgrowth is blunt.&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0007.flv|GPT_tut_interaction_example_20110601-0006_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 2&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===2 C Illustrating two independent ways to form shapes and the use of submodels. ===&lt;br /&gt;
Conclusion: interesting shapes can be generated either by &#039;&#039;&#039;patterns of differential growth&#039;&#039;&#039; or&#039;&#039;&#039; patterns of local growth axe&#039;&#039;&#039;s. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorial on two romatic hearts|Tutorial on two romatic hearts click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|Submodel 1. Uniform specified polariser (&#039;&#039;&#039;no polariser gradient&#039;&#039;&#039;). Creating a shape using a specified pattern of isotropic growth.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Result&#039;&#039;&#039;: simple patterns of differential growth can readily produce blobby shapes. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_TwoWayHeart_20110531-0001.flv|GPT_TwoWayHeart_20110531-0001_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1. Pattern of isotropic specified growth (no polariser)&amp;lt;/center&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Submodel 2.&#039;&#039;&#039;Uniform specified growth&#039;&#039;&#039;. Creating a shape using a specified pattern of diffusable polariser.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Result&#039;&#039;&#039;: simple patterns organising a diffusable polariser can readily produce sharp shapes. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_TwoWayHeart_20110531-0002.flv|GPT_TwoWayHeart_20110531-0002_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 2. Pattern of specified polariser levels (green-cyan). Polariser can diffuse and the gradient is arrowed. Uniform specified growth (red).&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===2 D===&lt;br /&gt;
&#039;&#039;&#039;Retaining strain and cutting the mesh&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorial on retaining residual strain and cutting|Tutorial on retaining residual strain and cutting]]&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|&lt;br /&gt;
[[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.&lt;br /&gt;
|width=&amp;quot;120pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_RetainStrainAndCut_20110603-0006.flv|GPT_RetainStrainAndCut_20110603-0006.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;| [[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.&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_RetainStrainAndCut_20110603-0004.flv|GPT_RetainStrainAndCut_20110603-0004.png‎&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;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.&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
===2 E===&lt;br /&gt;
&#039;&#039;&#039;Patterning and growth&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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). &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorial on the patterning interaction function|Tutorial on the patterning interaction function]]&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|something here&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0002.flv|GPT_tut_interaction_example_20110601-0002.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1&amp;lt;/center&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|something here&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0007.flv|GPT_tut_interaction_example_20110601-0006_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 2&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=&#039;&#039;&#039;3&#039;&#039;&#039; Running models without the GUI=&lt;br /&gt;
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 &#039;&#039;GFtbox&#039;&#039; 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 &#039;&#039;GFtbox&#039;&#039; compatible with [http://www.gnu.org/software/octave/ Octave].)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;How to use these tutorials.&#039;&#039;&#039;  First ensure that your model is working as you would expect using the GUI. Then run the model from the Matlab command line. Finally, submit the project to the linux computing cluster with one or more ranges of parameters.&lt;br /&gt;
For further details [[Running example models and using a cluster|Running example models and using a cluster]]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=GFtbox_Tutorial_pages&amp;diff=4902</id>
		<title>GFtbox Tutorial pages</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=GFtbox_Tutorial_pages&amp;diff=4902"/>
		<updated>2011-06-24T14:51:42Z</updated>

		<summary type="html">&lt;p&gt;Jrk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[GFtbox|&#039;&#039;GFtbox&#039;&#039; Details]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Notes from a new user|Notes from a new user]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Running example models and using a cluster|Running example models and using a cluster]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Example pages|Examples from our papers]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Types of morphogens and factors| Types of morphogens and factors are given here]]&amp;lt;br&amp;gt;&lt;br /&gt;
([[Full freshly minted interaction function|A newly created interaction function is shown here - the green comments are another ready reference.]])&amp;lt;br&amp;gt;&lt;br /&gt;
[[Ready Reference Manual|&#039;&#039;&#039;&#039;&#039;Ready Reference&#039;&#039;&#039;&#039;&#039; Manual]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
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]].&lt;br /&gt;
=Three ways to use &#039;&#039;GFtbox&#039;&#039;=&lt;br /&gt;
1) [[GFtbox Tutorial pages#1 Modelling using the Graphical User Interface| &#039;&#039;&#039;Do everything from the Graphical User Interface (GUI)&#039;&#039;&#039;.]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
2)   [[GFtbox Tutorial pages#2 Modelling using a combination of GUI and interaction function|&#039;&#039;&#039;Do only some things&#039;&#039;&#039; from the GUI.]] 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 by writing Matlab code in what we call the interaction function.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
3) [[GFtbox Tutorial pages#3 Running models without the GUI|&#039;&#039;&#039;Without the GUI&#039;&#039;&#039;.]] 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. &lt;br /&gt;
=&#039;&#039;&#039;1&#039;&#039;&#039; Modelling using the Graphical User Interface=&lt;br /&gt;
== Isotropic growth==&lt;br /&gt;
&#039;&#039;&#039;How to use the tutorial.&#039;&#039;&#039; Open the GFtbox and attempt to repeat the results shown. There are notes to explain how to keep a record of your results, e.g. Snapshots, Movie. &lt;br /&gt;
===1 A===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;700pt&amp;quot;|[[In the beginning Uniform|For tutorial on uniform growth click here.]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Consider a disc shaped canvas (tissue) in which the &#039;&#039;&#039;specified growth is uniform&#039;&#039;&#039;, isotropic and on both sides.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;&#039;&#039;Into what shape will the disc grow?&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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 &#039;&#039;Kapar&#039;&#039; and &#039;&#039;Kaper&#039;&#039; (&#039;&#039;A&#039;&#039; side) and &#039;&#039;Kbpar&#039;&#039; and &#039;&#039;Kbper&#039;&#039; (&#039;&#039;B&#039;&#039; side).&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;300pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;GPT_tut_uniform_20110527-0003.flv|GPT_tut_uniform_20110527-0003_Last.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===1 B===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;700pt&amp;quot;|[[In the beginning non-uniform|For tutorial on non-uniform growth click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Consider a disc shaped canvas (tissue) in which the&#039;&#039;&#039; non-uniform specified growth&#039;&#039;&#039; increases in proportion to the distance from the centre.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;&#039;&#039;Into what shape will the disc grow?&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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] ).&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;GPT_tut_uniform_20110527-0006.flv|GPT_tut_uniform_20110527-0006_First.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Adding polariser==&lt;br /&gt;
===1 C===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;700pt&amp;quot;|[[In the beginning Growing a cone|For tutorial on uniform growth non-uniform polariser click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
In the presence of polariser, &#039;&#039;GFtbox&#039;&#039; 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: &#039;&#039;Kapar&#039;&#039; and &#039;&#039;Kaper&#039;&#039; (&#039;&#039;A&#039;&#039; side) and &#039;&#039;Kbpar&#039;&#039; and &#039;&#039;Kbper&#039;&#039; (&#039;&#039;B&#039;&#039; side).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
We now&#039;&#039;&#039; add polariser&#039;&#039;&#039;.  Start with example A - uniform growth - and add a radial polarising gradient.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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 (&#039;&#039;Kpar&#039;&#039;) or perpendicular to (&#039;&#039;Kper&#039;&#039;) that direction.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Given a &#039;&#039;&#039;uniform pattern of specified growth parallel&#039;&#039;&#039; to the polariser and &#039;&#039;&#039;zero specified growth perpendicular&#039;&#039;&#039; to the polariser.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &#039;&#039;&#039;What will be the final shape?&#039;&#039;&#039;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;   loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;GPT_in_the_beginning_2_20110510-0003.flv|GPT_in_the_beginning_2_20110510-0003_First.png&amp;lt;/wikiflv&amp;gt;&amp;lt;small&amp;gt;Note: the gradient of the polariser, green to cyan, is shown using the arrows. Specified growth rate parallel to the arrows, red, is uniform.&amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&#039;&#039;&#039;2&#039;&#039;&#039; Modelling using a combination of GUI and interaction function=&lt;br /&gt;
&#039;&#039;&#039;Programmatic modelling&#039;&#039;&#039;. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;How to use these tutorials.&#039;&#039;&#039; 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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The &#039;&#039;&#039;full specification&#039;&#039;&#039; of a &#039;&#039;GFtbox&#039;&#039; model is stored in a combination of the mesh data structure (&#039;&#039;&#039;Mesh&#039;&#039;&#039;) and the &#039;&#039;&#039;interaction function&#039;&#039;&#039;. 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 &#039;&#039;&#039;interaction function&#039;&#039;&#039; (a Matlab program file &#039;&#039;.m&#039;&#039;) contains all the details of the growth regulation system: morphogen concentrations, signal interactions etc. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
When a new project is first edited&#039;&#039;&#039; the interaction function is generated automatically&#039;&#039;&#039;. 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 &#039;&#039;&#039;always invoke the Editor from the GUI&#039;&#039;&#039; (Panel: Interaction Function: Edit).&lt;br /&gt;
&lt;br /&gt;
===2 A===&lt;br /&gt;
&#039;&#039;&#039;Basic interaction function&#039;&#039;&#039;&lt;br /&gt;
The patterns of morphogens A and B are set up by &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        id_a_p(m.nodes(:,1)&amp;lt;-0.03)=1; &lt;br /&gt;
        id_b_p(m.nodes(:,2)&amp;lt;-0.01)=1; &lt;br /&gt;
&lt;br /&gt;
where &#039;&#039;id_a_p&#039;&#039; is the A morphogen. &#039;&#039;m.node(:,1)&#039;&#039; refers to the &#039;&#039;x&#039;&#039; coordinates of all nodes (vertices) in the mesh&amp;lt;br&amp;gt;&lt;br /&gt;
The expression &#039;&#039;(m.nodes(:,1)&amp;lt;-0.03)&#039;&#039; means find all vertices with &#039;&#039;x&#039;&#039; coordinates that are less than -0.03.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Similarly, &#039;&#039;(m.nodes(:,2)&amp;lt;-0.01)&#039;&#039; means find all vertices with &#039;&#039;y&#039;&#039; coordinates that are less than -0.01.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the pattern of polariser (P) is set up by&amp;lt;br&amp;gt;        &lt;br /&gt;
&lt;br /&gt;
        P((m.nodes(:,1)&amp;lt;-0.05)&amp;amp;(m.nodes(:,2)&amp;gt;0.03))=1;&lt;br /&gt;
Where &#039;&#039;(m.nodes(:,1)&amp;lt;-0.05)&amp;amp;(m.nodes(:,2)&amp;gt;0.03)&#039;&#039; means find all vertices with &#039;&#039;x,y&#039;&#039; coordinates that are less than -0.05 and greater than 0.03 respectively&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Thus the full code describing the model is:&lt;br /&gt;
    if (Steps(m)==0) &amp;amp;&amp;amp; m.globalDynamicProps.doinit  % Initialisation code.&lt;br /&gt;
        id_a_p(m.nodes(:,1)&amp;lt;-0.03)=1; % setup region for A where identity factor A is represented by id_a_p&lt;br /&gt;
        id_b_p(m.nodes(:,2)&amp;lt;-0.01)=1; % setup region for B&lt;br /&gt;
    else&lt;br /&gt;
        % @@KRN Growth Regulatory Network&lt;br /&gt;
        kapar_p(:) = id_a_l .* inh(1,id_b_l); % growth rate&lt;br /&gt;
        kaper_p(:) = kapar_p; % isotropic growth&lt;br /&gt;
        kbpar_p(:) = kapar_p; % same on both sides of the sheet&lt;br /&gt;
        kbper_p(:) = kapar_p; % same&lt;br /&gt;
        knor_p(:)  = 0;       % thickness not growing&lt;br /&gt;
    end&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|[[Tutorial on the basic interaction function|For tutorial on a basic interaction function click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The tutorial explains how the code shown above appears in the interaction function. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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 (&#039;&#039;Kapar&#039;&#039;, etc.) that have already been set through the GUI.&lt;br /&gt;
[[Types of morphogens and factors| Types of morphogens and factors are given here]].&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_why_matlab-2011-05-05-0005.flv|GPT_why_matlab-2011-05-05-0005_First.png‎&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
|-align=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
||&amp;lt;center&amp;gt;Play and the mesh will grow and subdivide. Normally we do not want to see the mesh. Red is growth rate&amp;lt;/center&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
===2 B===&lt;br /&gt;
&#039;&#039;&#039;Interaction function in detail&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
([[Full freshly minted interaction function|A newly created interaction function is shown here - this one has two, user specified morphogens: &#039;&#039;id_a&#039;&#039; and &#039;&#039;id_b&#039;&#039;.]])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|[[Tutorial on the interaction function details|Tutorial on the interaction function details click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Types of morphogens and factors| Types of morphogens and factors are given here]].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Submodel 1&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0002.flv|GPT_tut_interaction_example_20110601-0002.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1&amp;lt;/center&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Submodel 2. Growth in the region that has no arrows is isotropic and, as result, the outgrowth is blunt.&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0007.flv|GPT_tut_interaction_example_20110601-0006_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 2&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===2 C Illustrating two independent ways to form shapes and the use of submodels. ===&lt;br /&gt;
Conclusion: interesting shapes can be generated either by &#039;&#039;&#039;patterns of differential growth&#039;&#039;&#039; or&#039;&#039;&#039; patterns of local growth axe&#039;&#039;&#039;s. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorial on two romatic hearts|Tutorial on two romatic hearts click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|Submodel 1. Uniform specified polariser (&#039;&#039;&#039;no polariser gradient&#039;&#039;&#039;). Creating a shape using a specified pattern of isotropic growth.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Result&#039;&#039;&#039;: simple patterns of differential growth can readily produce blobby shapes. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_TwoWayHeart_20110531-0001.flv|GPT_TwoWayHeart_20110531-0001_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1. Pattern of isotropic specified growth (no polariser)&amp;lt;/center&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Submodel 2.&#039;&#039;&#039;Uniform specified growth&#039;&#039;&#039;. Creating a shape using a specified pattern of diffusable polariser.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Result&#039;&#039;&#039;: simple patterns organising a diffusable polariser can readily produce sharp shapes. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_TwoWayHeart_20110531-0002.flv|GPT_TwoWayHeart_20110531-0002_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 2. Pattern of specified polariser levels (green-cyan). Polariser can diffuse and the gradient is arrowed. Uniform specified growth (red).&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===2 D===&lt;br /&gt;
&#039;&#039;&#039;Retaining strain and cutting the mesh&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorial on retaining residual strain and cutting|Tutorial on retaining residual strain and cutting]]&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|&lt;br /&gt;
[[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.&lt;br /&gt;
|width=&amp;quot;120pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_RetainStrainAndCut_20110603-0006.flv|GPT_RetainStrainAndCut_20110603-0006.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;| [[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.&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_RetainStrainAndCut_20110603-0004.flv|GPT_RetainStrainAndCut_20110603-0004.png‎&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;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.&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
===2 E===&lt;br /&gt;
&#039;&#039;&#039;Patterning and growth&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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). &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorial on the patterning interaction function|Tutorial on the patterning interaction function]]&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|something here&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0002.flv|GPT_tut_interaction_example_20110601-0002.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1&amp;lt;/center&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|something here&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0007.flv|GPT_tut_interaction_example_20110601-0006_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 2&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=&#039;&#039;&#039;3&#039;&#039;&#039; Running models without the GUI=&lt;br /&gt;
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 &#039;&#039;GFtbox&#039;&#039; 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 &#039;&#039;GFtbox&#039;&#039; compatible with [http://www.gnu.org/software/octave/ Octave].)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;How to use these tutorials.&#039;&#039;&#039;  First ensure that your model is working as you would expect using the GUI. Then run the model from the Matlab command line. Finally, submit the project to the linux computing cluster with one or more ranges of parameters.&lt;br /&gt;
For further details [[Running example models and using a cluster|Running example models and using a cluster]]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=GFtbox_Tutorial_pages&amp;diff=4901</id>
		<title>GFtbox Tutorial pages</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=GFtbox_Tutorial_pages&amp;diff=4901"/>
		<updated>2011-06-24T14:51:18Z</updated>

		<summary type="html">&lt;p&gt;Jrk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[GFtbox|&#039;&#039;GFtbox&#039;&#039; Details]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Notes from a new user|Notes from a new user]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Running example models and using a cluster|Running example models and using a cluster]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Example pages|Examples from our papers]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Types of morphogens and factors| Types of morphogens and factors are given here]]&amp;lt;br&amp;gt;&lt;br /&gt;
([[Full freshly minted interaction function|A newly created interaction function is shown here - the green comments are another ready reference.]])&amp;lt;br&amp;gt;&lt;br /&gt;
[[Ready Reference Manual|&#039;&#039;&#039;&#039;&#039;Ready Reference&#039;&#039;&#039;&#039;&#039; Manual]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
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]].&lt;br /&gt;
=Three ways to use &#039;&#039;GFtbox&#039;&#039;=&lt;br /&gt;
1) &#039; [[GFtbox Tutorial pages#1 Modelling using the Graphical User Interface| &#039;&#039;Do everything from the Graphical User Interface (GUI)&#039;&#039;&#039;.]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
2)   [[GFtbox Tutorial pages#2 Modelling using a combination of GUI and interaction function|&#039;&#039;&#039;Do only some things&#039;&#039;&#039; from the GUI.]] 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 by writing Matlab code in what we call the interaction function.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
3) [[GFtbox Tutorial pages#3 Running models without the GUI|&#039;&#039;&#039;Without the GUI&#039;&#039;&#039;.]] 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. &lt;br /&gt;
=&#039;&#039;&#039;1&#039;&#039;&#039; Modelling using the Graphical User Interface=&lt;br /&gt;
== Isotropic growth==&lt;br /&gt;
&#039;&#039;&#039;How to use the tutorial.&#039;&#039;&#039; Open the GFtbox and attempt to repeat the results shown. There are notes to explain how to keep a record of your results, e.g. Snapshots, Movie. &lt;br /&gt;
===1 A===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;700pt&amp;quot;|[[In the beginning Uniform|For tutorial on uniform growth click here.]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Consider a disc shaped canvas (tissue) in which the &#039;&#039;&#039;specified growth is uniform&#039;&#039;&#039;, isotropic and on both sides.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;&#039;&#039;Into what shape will the disc grow?&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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 &#039;&#039;Kapar&#039;&#039; and &#039;&#039;Kaper&#039;&#039; (&#039;&#039;A&#039;&#039; side) and &#039;&#039;Kbpar&#039;&#039; and &#039;&#039;Kbper&#039;&#039; (&#039;&#039;B&#039;&#039; side).&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;300pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;GPT_tut_uniform_20110527-0003.flv|GPT_tut_uniform_20110527-0003_Last.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===1 B===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;700pt&amp;quot;|[[In the beginning non-uniform|For tutorial on non-uniform growth click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Consider a disc shaped canvas (tissue) in which the&#039;&#039;&#039; non-uniform specified growth&#039;&#039;&#039; increases in proportion to the distance from the centre.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;&#039;&#039;Into what shape will the disc grow?&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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] ).&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;GPT_tut_uniform_20110527-0006.flv|GPT_tut_uniform_20110527-0006_First.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Adding polariser==&lt;br /&gt;
===1 C===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;700pt&amp;quot;|[[In the beginning Growing a cone|For tutorial on uniform growth non-uniform polariser click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
In the presence of polariser, &#039;&#039;GFtbox&#039;&#039; 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: &#039;&#039;Kapar&#039;&#039; and &#039;&#039;Kaper&#039;&#039; (&#039;&#039;A&#039;&#039; side) and &#039;&#039;Kbpar&#039;&#039; and &#039;&#039;Kbper&#039;&#039; (&#039;&#039;B&#039;&#039; side).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
We now&#039;&#039;&#039; add polariser&#039;&#039;&#039;.  Start with example A - uniform growth - and add a radial polarising gradient.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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 (&#039;&#039;Kpar&#039;&#039;) or perpendicular to (&#039;&#039;Kper&#039;&#039;) that direction.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Given a &#039;&#039;&#039;uniform pattern of specified growth parallel&#039;&#039;&#039; to the polariser and &#039;&#039;&#039;zero specified growth perpendicular&#039;&#039;&#039; to the polariser.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &#039;&#039;&#039;What will be the final shape?&#039;&#039;&#039;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;   loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;GPT_in_the_beginning_2_20110510-0003.flv|GPT_in_the_beginning_2_20110510-0003_First.png&amp;lt;/wikiflv&amp;gt;&amp;lt;small&amp;gt;Note: the gradient of the polariser, green to cyan, is shown using the arrows. Specified growth rate parallel to the arrows, red, is uniform.&amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&#039;&#039;&#039;2&#039;&#039;&#039; Modelling using a combination of GUI and interaction function=&lt;br /&gt;
&#039;&#039;&#039;Programmatic modelling&#039;&#039;&#039;. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;How to use these tutorials.&#039;&#039;&#039; 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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The &#039;&#039;&#039;full specification&#039;&#039;&#039; of a &#039;&#039;GFtbox&#039;&#039; model is stored in a combination of the mesh data structure (&#039;&#039;&#039;Mesh&#039;&#039;&#039;) and the &#039;&#039;&#039;interaction function&#039;&#039;&#039;. 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 &#039;&#039;&#039;interaction function&#039;&#039;&#039; (a Matlab program file &#039;&#039;.m&#039;&#039;) contains all the details of the growth regulation system: morphogen concentrations, signal interactions etc. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
When a new project is first edited&#039;&#039;&#039; the interaction function is generated automatically&#039;&#039;&#039;. 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 &#039;&#039;&#039;always invoke the Editor from the GUI&#039;&#039;&#039; (Panel: Interaction Function: Edit).&lt;br /&gt;
&lt;br /&gt;
===2 A===&lt;br /&gt;
&#039;&#039;&#039;Basic interaction function&#039;&#039;&#039;&lt;br /&gt;
The patterns of morphogens A and B are set up by &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        id_a_p(m.nodes(:,1)&amp;lt;-0.03)=1; &lt;br /&gt;
        id_b_p(m.nodes(:,2)&amp;lt;-0.01)=1; &lt;br /&gt;
&lt;br /&gt;
where &#039;&#039;id_a_p&#039;&#039; is the A morphogen. &#039;&#039;m.node(:,1)&#039;&#039; refers to the &#039;&#039;x&#039;&#039; coordinates of all nodes (vertices) in the mesh&amp;lt;br&amp;gt;&lt;br /&gt;
The expression &#039;&#039;(m.nodes(:,1)&amp;lt;-0.03)&#039;&#039; means find all vertices with &#039;&#039;x&#039;&#039; coordinates that are less than -0.03.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Similarly, &#039;&#039;(m.nodes(:,2)&amp;lt;-0.01)&#039;&#039; means find all vertices with &#039;&#039;y&#039;&#039; coordinates that are less than -0.01.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the pattern of polariser (P) is set up by&amp;lt;br&amp;gt;        &lt;br /&gt;
&lt;br /&gt;
        P((m.nodes(:,1)&amp;lt;-0.05)&amp;amp;(m.nodes(:,2)&amp;gt;0.03))=1;&lt;br /&gt;
Where &#039;&#039;(m.nodes(:,1)&amp;lt;-0.05)&amp;amp;(m.nodes(:,2)&amp;gt;0.03)&#039;&#039; means find all vertices with &#039;&#039;x,y&#039;&#039; coordinates that are less than -0.05 and greater than 0.03 respectively&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Thus the full code describing the model is:&lt;br /&gt;
    if (Steps(m)==0) &amp;amp;&amp;amp; m.globalDynamicProps.doinit  % Initialisation code.&lt;br /&gt;
        id_a_p(m.nodes(:,1)&amp;lt;-0.03)=1; % setup region for A where identity factor A is represented by id_a_p&lt;br /&gt;
        id_b_p(m.nodes(:,2)&amp;lt;-0.01)=1; % setup region for B&lt;br /&gt;
    else&lt;br /&gt;
        % @@KRN Growth Regulatory Network&lt;br /&gt;
        kapar_p(:) = id_a_l .* inh(1,id_b_l); % growth rate&lt;br /&gt;
        kaper_p(:) = kapar_p; % isotropic growth&lt;br /&gt;
        kbpar_p(:) = kapar_p; % same on both sides of the sheet&lt;br /&gt;
        kbper_p(:) = kapar_p; % same&lt;br /&gt;
        knor_p(:)  = 0;       % thickness not growing&lt;br /&gt;
    end&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|[[Tutorial on the basic interaction function|For tutorial on a basic interaction function click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The tutorial explains how the code shown above appears in the interaction function. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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 (&#039;&#039;Kapar&#039;&#039;, etc.) that have already been set through the GUI.&lt;br /&gt;
[[Types of morphogens and factors| Types of morphogens and factors are given here]].&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_why_matlab-2011-05-05-0005.flv|GPT_why_matlab-2011-05-05-0005_First.png‎&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
|-align=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
||&amp;lt;center&amp;gt;Play and the mesh will grow and subdivide. Normally we do not want to see the mesh. Red is growth rate&amp;lt;/center&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
===2 B===&lt;br /&gt;
&#039;&#039;&#039;Interaction function in detail&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
([[Full freshly minted interaction function|A newly created interaction function is shown here - this one has two, user specified morphogens: &#039;&#039;id_a&#039;&#039; and &#039;&#039;id_b&#039;&#039;.]])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|[[Tutorial on the interaction function details|Tutorial on the interaction function details click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Types of morphogens and factors| Types of morphogens and factors are given here]].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Submodel 1&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0002.flv|GPT_tut_interaction_example_20110601-0002.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1&amp;lt;/center&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Submodel 2. Growth in the region that has no arrows is isotropic and, as result, the outgrowth is blunt.&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0007.flv|GPT_tut_interaction_example_20110601-0006_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 2&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===2 C Illustrating two independent ways to form shapes and the use of submodels. ===&lt;br /&gt;
Conclusion: interesting shapes can be generated either by &#039;&#039;&#039;patterns of differential growth&#039;&#039;&#039; or&#039;&#039;&#039; patterns of local growth axe&#039;&#039;&#039;s. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorial on two romatic hearts|Tutorial on two romatic hearts click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|Submodel 1. Uniform specified polariser (&#039;&#039;&#039;no polariser gradient&#039;&#039;&#039;). Creating a shape using a specified pattern of isotropic growth.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Result&#039;&#039;&#039;: simple patterns of differential growth can readily produce blobby shapes. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_TwoWayHeart_20110531-0001.flv|GPT_TwoWayHeart_20110531-0001_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1. Pattern of isotropic specified growth (no polariser)&amp;lt;/center&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Submodel 2.&#039;&#039;&#039;Uniform specified growth&#039;&#039;&#039;. Creating a shape using a specified pattern of diffusable polariser.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Result&#039;&#039;&#039;: simple patterns organising a diffusable polariser can readily produce sharp shapes. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_TwoWayHeart_20110531-0002.flv|GPT_TwoWayHeart_20110531-0002_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 2. Pattern of specified polariser levels (green-cyan). Polariser can diffuse and the gradient is arrowed. Uniform specified growth (red).&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===2 D===&lt;br /&gt;
&#039;&#039;&#039;Retaining strain and cutting the mesh&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorial on retaining residual strain and cutting|Tutorial on retaining residual strain and cutting]]&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|&lt;br /&gt;
[[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.&lt;br /&gt;
|width=&amp;quot;120pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_RetainStrainAndCut_20110603-0006.flv|GPT_RetainStrainAndCut_20110603-0006.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;| [[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.&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_RetainStrainAndCut_20110603-0004.flv|GPT_RetainStrainAndCut_20110603-0004.png‎&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;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.&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
===2 E===&lt;br /&gt;
&#039;&#039;&#039;Patterning and growth&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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). &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorial on the patterning interaction function|Tutorial on the patterning interaction function]]&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|something here&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0002.flv|GPT_tut_interaction_example_20110601-0002.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1&amp;lt;/center&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|something here&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0007.flv|GPT_tut_interaction_example_20110601-0006_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 2&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=&#039;&#039;&#039;3&#039;&#039;&#039; Running models without the GUI=&lt;br /&gt;
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 &#039;&#039;GFtbox&#039;&#039; 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 &#039;&#039;GFtbox&#039;&#039; compatible with [http://www.gnu.org/software/octave/ Octave].)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;How to use these tutorials.&#039;&#039;&#039;  First ensure that your model is working as you would expect using the GUI. Then run the model from the Matlab command line. Finally, submit the project to the linux computing cluster with one or more ranges of parameters.&lt;br /&gt;
For further details [[Running example models and using a cluster|Running example models and using a cluster]]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=GFtbox_Tutorial_pages&amp;diff=4900</id>
		<title>GFtbox Tutorial pages</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=GFtbox_Tutorial_pages&amp;diff=4900"/>
		<updated>2011-06-24T14:43:47Z</updated>

		<summary type="html">&lt;p&gt;Jrk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[GFtbox|&#039;&#039;GFtbox&#039;&#039; Details]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Notes from a new user|Notes from a new user]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Running example models and using a cluster|Running example models and using a cluster]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Example pages|Examples from our papers]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Types of morphogens and factors| Types of morphogens and factors are given here]]&amp;lt;br&amp;gt;&lt;br /&gt;
([[Full freshly minted interaction function|A newly created interaction function is shown here - the green comments are another ready reference.]])&amp;lt;br&amp;gt;&lt;br /&gt;
[[Ready Reference Manual|&#039;&#039;&#039;&#039;&#039;Ready Reference&#039;&#039;&#039;&#039;&#039; Manual]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
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]].&lt;br /&gt;
=Three ways to use &#039;&#039;GFtbox&#039;&#039;=&lt;br /&gt;
1) &#039;&#039;&#039;Do everything from the Graphical User Interface (GUI)&#039;&#039;&#039;. [[GFtbox Tutorial pages#1 Modelling using the Graphical User Interface|  See here for the best way to start working with &#039;&#039;GFtbox&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
2) &#039;&#039;&#039;Do only some things&#039;&#039;&#039; 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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
For an introduction to the [[GFtbox Tutorial pages#Output and Results| &#039;&#039;&#039;output and results&#039;&#039;&#039;, see here.]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
3) &#039;&#039;&#039;Without the GUI&#039;&#039;&#039;.  [[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 of a model interactively. &lt;br /&gt;
=&#039;&#039;&#039;1&#039;&#039;&#039; Modelling using the Graphical User Interface=&lt;br /&gt;
== Isotropic growth==&lt;br /&gt;
&#039;&#039;&#039;How to use the tutorial.&#039;&#039;&#039; Open the GFtbox and attempt to repeat the results shown. There are notes to explain how to keep a record of your results, e.g. Snapshots, Movie. &lt;br /&gt;
===1 A===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;700pt&amp;quot;|[[In the beginning Uniform|For tutorial on uniform growth click here.]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Consider a disc shaped canvas (tissue) in which the &#039;&#039;&#039;specified growth is uniform&#039;&#039;&#039;, isotropic and on both sides.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;&#039;&#039;Into what shape will the disc grow?&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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 &#039;&#039;Kapar&#039;&#039; and &#039;&#039;Kaper&#039;&#039; (&#039;&#039;A&#039;&#039; side) and &#039;&#039;Kbpar&#039;&#039; and &#039;&#039;Kbper&#039;&#039; (&#039;&#039;B&#039;&#039; side).&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;300pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;GPT_tut_uniform_20110527-0003.flv|GPT_tut_uniform_20110527-0003_Last.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===1 B===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;700pt&amp;quot;|[[In the beginning non-uniform|For tutorial on non-uniform growth click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Consider a disc shaped canvas (tissue) in which the&#039;&#039;&#039; non-uniform specified growth&#039;&#039;&#039; increases in proportion to the distance from the centre.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;&#039;&#039;Into what shape will the disc grow?&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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] ).&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;GPT_tut_uniform_20110527-0006.flv|GPT_tut_uniform_20110527-0006_First.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Adding polariser==&lt;br /&gt;
===1 C===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;700pt&amp;quot;|[[In the beginning Growing a cone|For tutorial on uniform growth non-uniform polariser click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
In the presence of polariser, &#039;&#039;GFtbox&#039;&#039; 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: &#039;&#039;Kapar&#039;&#039; and &#039;&#039;Kaper&#039;&#039; (&#039;&#039;A&#039;&#039; side) and &#039;&#039;Kbpar&#039;&#039; and &#039;&#039;Kbper&#039;&#039; (&#039;&#039;B&#039;&#039; side).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
We now&#039;&#039;&#039; add polariser&#039;&#039;&#039;.  Start with example A - uniform growth - and add a radial polarising gradient.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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 (&#039;&#039;Kpar&#039;&#039;) or perpendicular to (&#039;&#039;Kper&#039;&#039;) that direction.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Given a &#039;&#039;&#039;uniform pattern of specified growth parallel&#039;&#039;&#039; to the polariser and &#039;&#039;&#039;zero specified growth perpendicular&#039;&#039;&#039; to the polariser.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &#039;&#039;&#039;What will be the final shape?&#039;&#039;&#039;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;   loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;GPT_in_the_beginning_2_20110510-0003.flv|GPT_in_the_beginning_2_20110510-0003_First.png&amp;lt;/wikiflv&amp;gt;&amp;lt;small&amp;gt;Note: the gradient of the polariser, green to cyan, is shown using the arrows. Specified growth rate parallel to the arrows, red, is uniform.&amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&#039;&#039;&#039;2&#039;&#039;&#039; Modelling using a combination of GUI and interaction function=&lt;br /&gt;
&#039;&#039;&#039;Programmatic modelling&#039;&#039;&#039;. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;How to use these tutorials.&#039;&#039;&#039; 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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The &#039;&#039;&#039;full specification&#039;&#039;&#039; of a &#039;&#039;GFtbox&#039;&#039; model is stored in a combination of the mesh data structure (&#039;&#039;&#039;Mesh&#039;&#039;&#039;) and the &#039;&#039;&#039;interaction function&#039;&#039;&#039;. 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 &#039;&#039;&#039;interaction function&#039;&#039;&#039; (a Matlab program file &#039;&#039;.m&#039;&#039;) contains all the details of the growth regulation system: morphogen concentrations, signal interactions etc. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
When a new project is first edited&#039;&#039;&#039; the interaction function is generated automatically&#039;&#039;&#039;. 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 &#039;&#039;&#039;always invoke the Editor from the GUI&#039;&#039;&#039; (Panel: Interaction Function: Edit).&lt;br /&gt;
&lt;br /&gt;
===2 A===&lt;br /&gt;
&#039;&#039;&#039;Basic interaction function&#039;&#039;&#039;&lt;br /&gt;
The patterns of morphogens A and B are set up by &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        id_a_p(m.nodes(:,1)&amp;lt;-0.03)=1; &lt;br /&gt;
        id_b_p(m.nodes(:,2)&amp;lt;-0.01)=1; &lt;br /&gt;
&lt;br /&gt;
where &#039;&#039;id_a_p&#039;&#039; is the A morphogen. &#039;&#039;m.node(:,1)&#039;&#039; refers to the &#039;&#039;x&#039;&#039; coordinates of all nodes (vertices) in the mesh&amp;lt;br&amp;gt;&lt;br /&gt;
The expression &#039;&#039;(m.nodes(:,1)&amp;lt;-0.03)&#039;&#039; means find all vertices with &#039;&#039;x&#039;&#039; coordinates that are less than -0.03.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Similarly, &#039;&#039;(m.nodes(:,2)&amp;lt;-0.01)&#039;&#039; means find all vertices with &#039;&#039;y&#039;&#039; coordinates that are less than -0.01.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the pattern of polariser (P) is set up by&amp;lt;br&amp;gt;        &lt;br /&gt;
&lt;br /&gt;
        P((m.nodes(:,1)&amp;lt;-0.05)&amp;amp;(m.nodes(:,2)&amp;gt;0.03))=1;&lt;br /&gt;
Where &#039;&#039;(m.nodes(:,1)&amp;lt;-0.05)&amp;amp;(m.nodes(:,2)&amp;gt;0.03)&#039;&#039; means find all vertices with &#039;&#039;x,y&#039;&#039; coordinates that are less than -0.05 and greater than 0.03 respectively&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Thus the full code describing the model is:&lt;br /&gt;
    if (Steps(m)==0) &amp;amp;&amp;amp; m.globalDynamicProps.doinit  % Initialisation code.&lt;br /&gt;
        id_a_p(m.nodes(:,1)&amp;lt;-0.03)=1; % setup region for A where identity factor A is represented by id_a_p&lt;br /&gt;
        id_b_p(m.nodes(:,2)&amp;lt;-0.01)=1; % setup region for B&lt;br /&gt;
    else&lt;br /&gt;
        % @@KRN Growth Regulatory Network&lt;br /&gt;
        kapar_p(:) = id_a_l .* inh(1,id_b_l); % growth rate&lt;br /&gt;
        kaper_p(:) = kapar_p; % isotropic growth&lt;br /&gt;
        kbpar_p(:) = kapar_p; % same on both sides of the sheet&lt;br /&gt;
        kbper_p(:) = kapar_p; % same&lt;br /&gt;
        knor_p(:)  = 0;       % thickness not growing&lt;br /&gt;
    end&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|[[Tutorial on the basic interaction function|For tutorial on a basic interaction function click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The tutorial explains how the code shown above appears in the interaction function. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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 (&#039;&#039;Kapar&#039;&#039;, etc.) that have already been set through the GUI.&lt;br /&gt;
[[Types of morphogens and factors| Types of morphogens and factors are given here]].&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_why_matlab-2011-05-05-0005.flv|GPT_why_matlab-2011-05-05-0005_First.png‎&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
|-align=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
||&amp;lt;center&amp;gt;Play and the mesh will grow and subdivide. Normally we do not want to see the mesh. Red is growth rate&amp;lt;/center&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
===2 B===&lt;br /&gt;
&#039;&#039;&#039;Interaction function in detail&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
([[Full freshly minted interaction function|A newly created interaction function is shown here - this one has two, user specified morphogens: &#039;&#039;id_a&#039;&#039; and &#039;&#039;id_b&#039;&#039;.]])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|[[Tutorial on the interaction function details|Tutorial on the interaction function details click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Types of morphogens and factors| Types of morphogens and factors are given here]].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Submodel 1&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0002.flv|GPT_tut_interaction_example_20110601-0002.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1&amp;lt;/center&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Submodel 2. Growth in the region that has no arrows is isotropic and, as result, the outgrowth is blunt.&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0007.flv|GPT_tut_interaction_example_20110601-0006_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 2&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
=Output and Results=&lt;br /&gt;
===2 C Illustrating two independent ways to form shapes and the use of submodels. ===&lt;br /&gt;
Conclusion: interesting shapes can be generated either by &#039;&#039;&#039;patterns of differential growth&#039;&#039;&#039; or&#039;&#039;&#039; patterns of local growth axe&#039;&#039;&#039;s. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorial on two romatic hearts|Tutorial on two romatic hearts click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|Submodel 1. Uniform specified polariser (&#039;&#039;&#039;no polariser gradient&#039;&#039;&#039;). Creating a shape using a specified pattern of isotropic growth.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Result&#039;&#039;&#039;: simple patterns of differential growth can readily produce blobby shapes. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_TwoWayHeart_20110531-0001.flv|GPT_TwoWayHeart_20110531-0001_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1. Pattern of isotropic specified growth (no polariser)&amp;lt;/center&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Submodel 2.&#039;&#039;&#039;Uniform specified growth&#039;&#039;&#039;. Creating a shape using a specified pattern of diffusable polariser.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Result&#039;&#039;&#039;: simple patterns organising a diffusable polariser can readily produce sharp shapes. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_TwoWayHeart_20110531-0002.flv|GPT_TwoWayHeart_20110531-0002_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 2. Pattern of specified polariser levels (green-cyan). Polariser can diffuse and the gradient is arrowed. Uniform specified growth (red).&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===2 D===&lt;br /&gt;
&#039;&#039;&#039;Retaining strain and cutting the mesh&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorial on retaining residual strain and cutting|Tutorial on retaining residual strain and cutting]]&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|&lt;br /&gt;
[[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.&lt;br /&gt;
|width=&amp;quot;120pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_RetainStrainAndCut_20110603-0006.flv|GPT_RetainStrainAndCut_20110603-0006.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;| [[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.&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_RetainStrainAndCut_20110603-0004.flv|GPT_RetainStrainAndCut_20110603-0004.png‎&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;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.&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
===2 E===&lt;br /&gt;
&#039;&#039;&#039;Patterning and growth&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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). &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorial on the patterning interaction function|Tutorial on the patterning interaction function]]&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|something here&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0002.flv|GPT_tut_interaction_example_20110601-0002.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1&amp;lt;/center&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|something here&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0007.flv|GPT_tut_interaction_example_20110601-0006_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 2&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=&#039;&#039;&#039;3&#039;&#039;&#039; Running models without the GUI=&lt;br /&gt;
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 &#039;&#039;GFtbox&#039;&#039; 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 &#039;&#039;GFtbox&#039;&#039; compatible with [http://www.gnu.org/software/octave/ Octave].)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;How to use these tutorials.&#039;&#039;&#039;  First ensure that your model is working as you would expect using the GUI. Then run the model from the Matlab command line. Finally, submit the project to the linux computing cluster with one or more ranges of parameters.&lt;br /&gt;
For further details [[Running example models and using a cluster|Running example models and using a cluster]]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Notes_from_a_new_user&amp;diff=5291</id>
		<title>Notes from a new user</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Notes_from_a_new_user&amp;diff=5291"/>
		<updated>2011-06-24T14:22:31Z</updated>

		<summary type="html">&lt;p&gt;Jrk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[GFtbox Tutorial pages|Back to main tutorial pages]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
(Courtesy of Katie Abley, JIC)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=Overview=&lt;br /&gt;
GFtbox is a tool for modelling the genetic control of tissue growth which allows the incorporation of gene regulatory networks and signal propogation within a growing, mechanically connected, tissue. &lt;br /&gt;
&lt;br /&gt;
In GFtbox, tissue is treated as a continuous sheet of material with two surfaces and a thickness, here termed the canvas. Within the canvas regionally expressed factors under genetic control may interact and propagate. &lt;br /&gt;
&lt;br /&gt;
Polarity is established by signals that propagate through the tissue and is anchored in genetically controlled regions termed tissue polarity organisers. Rates of growth parallel or perpendicular to the local polarity may be specified through a regulatory network. &lt;br /&gt;
&lt;br /&gt;
The resulting growth of the canvas depends on how specified growth patterns interact within the constraints of mechanically connected tissue. Within GFtbox, elasticity theory is used to compute this resultant deformation of the canvas. Mechanical constraints lead to emergence of features such as curvature that were not directly specified by the regulatory networks. Resultant growth feeds back to influence spatial arrangements and local orientations of tissue, allowing complex shapes to emerge from simple rules.&lt;br /&gt;
&lt;br /&gt;
=Projects=&lt;br /&gt;
==Structure==&lt;br /&gt;
Each project has a name that begins with GPT_. The projectname has three parts: &#039;GPT_*_yyyymmdd&#039; where * refers to the name you choose, the prefix and suffix are added automatically. &#039;GPT&#039; stands for Growing Polarised Tissue, suffix is the date).  A new project contains the main data structure &#039;ProjectName.mat&#039;, a work file &#039;ProjectName_static.mat&#039; and a subdirectory, &#039;snapshots&#039;, with an image of the initial mesh. The initial files are augmented by the interaction function &#039;projectname.m&#039;, some working files and results. The results include stage files, snapshots and movies.&lt;br /&gt;
===Structure of the interaction function===&lt;br /&gt;
&lt;br /&gt;
The information about models in GFtbox is held in two places. The first is a data structure called &#039;m&#039;. For example, this structure contains matrices which hold information about the x, y and z co-ordinates of each node (the matrix &#039;m.nodes&#039;) and about factor concentrations at each node (the matrix &#039;m.morphogens&#039;). The second is the interaction function - a Matlab function. The interaction function is automatically kept in synch with the internal data structure by GFtbox.&lt;br /&gt;
&lt;br /&gt;
Within one interaction function, multiple variants of the same model can be created. These variants might, for example, be models of the wild type (WT) scenario and of one or mutants. The variants of the model need to be named. This can be done with the following bit of code:&lt;br /&gt;
&lt;br /&gt;
[[Image: namingmodelvariants.png]]&lt;br /&gt;
&lt;br /&gt;
Where&#039;SQUARE&#039;, &#039;CIRCLE&#039;, &#039;OFFCIRCLE&#039; are the names of the variant models and the value given to &#039;m.userdata.ranges.modelname.index =&#039; in the line below specifies which entry in the string {&#039;SQUARE&#039;, &#039;CIRCLE&#039;, &#039;OFFCIRCLE&#039;} should be run. Here, to run SQUARE, 1 should be used; for CIRCLE, 2; and for OFFCIRCLE, 3.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overview of different parts of the code and how it is organised.  (What is the significance of @@ - these are not yet fully operational - they are commands that enable us to automatically generate a mathematical represention of the Matlab using Latex).&lt;br /&gt;
Each project may have several models - explain how they are done.&lt;br /&gt;
Time dependent steps.  Create a time-modulated identity factor.&lt;br /&gt;
&lt;br /&gt;
==Saving==&lt;br /&gt;
&lt;br /&gt;
If you wish to create a model from scratch, once you have created a mesh in the growth toolbox, you can save the project by clicking Save As. Make a new folder for your project wherever you want to save it. The name of the folder will start with GPT (growing polarised tissue), will be followed by the date (year, month, day).  &lt;br /&gt;
For example: GPT_101115_ArabidopsisLeaf.&lt;br /&gt;
&lt;br /&gt;
Once you have saved the project folder, an matlab m.file will automatically be produced when you click Edit (in the GUI). By clicking Notes you can also produce a text file of the same name into which you can write notes. The name of the folder must be appropriate for matlab - this will be the case if you use underscores in the name.&lt;br /&gt;
&lt;br /&gt;
==Loading==&lt;br /&gt;
&lt;br /&gt;
Use the load button in the GUI to load a previously saved project. Or, Menu:Projects allows you to specify a folder for models and select a project from this folder.&lt;br /&gt;
&lt;br /&gt;
=Growth Programs=&lt;br /&gt;
&lt;br /&gt;
When building a model, a mesh of finite elements (the canvas which represents the tissue being modelled) needs to first be created. Then, the initial state of the canvas needs to be specified. This may involve assigning particular identities (identity factors) to local regions of the canvas and specifying initial signals (signalling factors) which can propogate through the canvas. &lt;br /&gt;
&lt;br /&gt;
In order to specify growth, a polariser regulatory network (PRN) must be created. The PRN controls the activity of various organisers from which tissue polarity information propagates. Polarity&lt;br /&gt;
propagation is implemented through a signalling factor called POLARISER (POL), the gradient of which defines local polarity. The PRN controls production and degradation of POL at organisers that anchor the polarity.&lt;br /&gt;
&lt;br /&gt;
A growth rate (K) regulatory network (KRN)must also be created which defines how identity or signalling factors influence specified growth rates (i.e. strain rates) in relation to local polarity.&lt;br /&gt;
For each region there are two specified growth rates in the plane of the canvas – a rate parallel to the local polarity, termed Kpar, and a rate perpendicular to the local polarity, termed Kper. These specified growth rates can be enhanced or reduced on either surface of the canvas (termed the A and B surfaces). A third specified growth rate Knor is used to define the rate of growth in tissue thickness.&lt;br /&gt;
&lt;br /&gt;
For models incorporating gene interactions, a gene regulatory network (GRN) is defined that&lt;br /&gt;
controls the activity of identity or signalling factors encoded by known genes. The genes within the GRN influence growth by modulating the PRN and the KRN.&lt;br /&gt;
&lt;br /&gt;
During simulations, the interaction of the specified growth (determined by the regulatory networks described above) with the mechanical constraints of the canvas are calculated, allowing resultant growth to be predicted.&lt;br /&gt;
&lt;br /&gt;
Below, explanations of how to direct GFtbox to perform the above functions are given.&lt;br /&gt;
&lt;br /&gt;
==Setup==&lt;br /&gt;
===Establishing a Mesh===&lt;br /&gt;
&lt;br /&gt;
[[Image: Mesheditor.png]]&lt;br /&gt;
&lt;br /&gt;
Once you have created an initial mesh, a number of its properties can be modified. &lt;br /&gt;
&lt;br /&gt;
The number of finite elements in the mesh can be increased using the refine mesh button. This subdivides a given proportion of all the edges in the mesh and the proportion of edges to be subdivided can be specified below the refine mesh button.&lt;br /&gt;
&lt;br /&gt;
The shape of the canvas along the z axis can be controlled using the panel &#039;Modify z shape&#039;. Pressing the button &#039;Zero Z&#039;makes the canvas completely flat along the z axis but enables it to deform along this axis during simulations (it doesn&#039;t constrain the canvas to stay flat). &lt;br /&gt;
&lt;br /&gt;
The &#039;Random&#039; button causes the z co-ordinate of each node in the mesh to vary during the simulation, by an amount specified in the box adjacent to &#039;Random&#039;. Adding this randomness to the values of the z co-ordinates makes it easy for the canvas to deform along the z-plane during growth. &lt;br /&gt;
The buttons &#039;Saddle Z&#039; and &#039;Bowl Z&#039; curve the mesh (in opposite directions) and the direction of this initial bend will most-likely be maintained during growth.&lt;br /&gt;
&lt;br /&gt;
If the check-box &#039;Flat&#039; is ticked this will force the mesh to remain flat (not to bend in the z direction) throughout the simulation.&lt;br /&gt;
&lt;br /&gt;
The panel with the buttons &#039;+ rot&#039; and - &#039;rot&#039; allows the orientation of the canvas to be controlled.&lt;br /&gt;
&lt;br /&gt;
The thickness of the canvas (along the z axis) can be controlled using the &#039;Thickness&#039; panel. &#039;Physical&#039; thickness represents the specified thickness of the canvas and should be used by default. &#039;Direct&#039; thickness represents the resultant thickness, and shouldn&#039;t be used.&lt;br /&gt;
&lt;br /&gt;
The box &#039;Poisson&#039; contains the poisson ratio for the canvas. When a block of material is&lt;br /&gt;
compressed by external forces in one direction, Poisson’s ratio is the ratio of its transverse expansion to its longitudinal compression. The default value should not be changed as it is thought to be ideal for leaf tissue.&lt;br /&gt;
&lt;br /&gt;
===Creating Factors===&lt;br /&gt;
&lt;br /&gt;
Within the GFtbox a number of factors involved in specifying growth are automatically present. The names of these factors can be viewed in the drop-down menu entitled &#039;Plot current factor&#039;. Selecting a factor from this list causes its distribution across the canvas to be displayed. &lt;br /&gt;
&lt;br /&gt;
KAPAR (or KBPAR) is a growth factor which specifies the growth rate of nodes on face A (or B) of the canvas in the direction that is parallel to the polariser gradient.&lt;br /&gt;
&lt;br /&gt;
KAPER (or KBPER) is a growth factor which specifies the growth rate of nodes on face A (or B) of the canvas in the direction that is perpendicular to the polariser gradient&lt;br /&gt;
&lt;br /&gt;
KNOR is a growth factor which specifies the rate of growth of the canvas thickness&lt;br /&gt;
&lt;br /&gt;
POLARISER is a factor which provides directional information (polarity) to local regions of the canvas via its concentration gradient&lt;br /&gt;
&lt;br /&gt;
STRAINRET is a factor which determines to what extent the strain arising from growth is retained. Note that, by default, the strain arising from growth is discarded at each time step of the simulation.&lt;br /&gt;
&lt;br /&gt;
ARREST is a factor which causes arrest of cell division. This is only relevant if you have imposed a layer of cells upon the canvas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
New factors can be added to this list in the following way:&lt;br /&gt;
[[Image: addfactor.png|500px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Factors should be named using the following prefices according to their role during growth:&lt;br /&gt;
&lt;br /&gt;
id_  for identity factors (non-diffusible factors that specify local tissue identities&lt;br /&gt;
&lt;br /&gt;
s_  for signalling factors (factors that can diffuse through the canvas but are not polarisers)&lt;br /&gt;
&lt;br /&gt;
in_  for non-diffusible initialisation factors (factors which are used for intial growth of the canvas to get the canvas to the starting state from which modelling will really begin).&lt;br /&gt;
&lt;br /&gt;
is_  for diffusible initialisation factors&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Within the &#039;m&#039; structure, there is a matrix called m.morphogens which has a column for each factor and a row for each node position in the matrix. A value for each morphogen at each node is held in this matrix. When a new factor is added in the way described above, a column for this factor is added to the m.morphogens matrix.&lt;br /&gt;
&lt;br /&gt;
===Initialisation===&lt;br /&gt;
====By clicking====&lt;br /&gt;
&lt;br /&gt;
In factors tab in the GUI can be used to assign properties to each factor that is specified in the model. It is important to note that if you want to assign properties to factors using the GUI, the following part of the interaction function must be commented out, otherwise the changes you make using the GUI won&#039;t work.&lt;br /&gt;
&lt;br /&gt;
 % In this section you may modify the mesh in any way whatsoever.&lt;br /&gt;
    %if Steps(m)==0 % &lt;br /&gt;
        &lt;br /&gt;
        %m.morphogens(:) = 0;&lt;br /&gt;
        %m.morphogenclamp(:) = 0;&lt;br /&gt;
        %m.mgen_production(:) = 0;&lt;br /&gt;
        %m.mgen_absorption(:) = 0;&lt;br /&gt;
        %m.seams(:) = false;&lt;br /&gt;
        %m.mgen_dilution(:) = false;&lt;br /&gt;
&lt;br /&gt;
The amount of a given morphogen added to the canvas can be specified using the &#039;amount&#039; bar. The factor can be added at a constant concentration throughout the canvas by clicking the &#039;add constant&#039; tab.&lt;br /&gt;
&lt;br /&gt;
==Lesson 1: Using the interaction function to specify identity regions, signal production and decay, and istropic growth in particular regions. ==&lt;br /&gt;
&lt;br /&gt;
=====Opening the interaction function and where to start.=====&lt;br /&gt;
&lt;br /&gt;
In the interaction function, the ways different factors interact can be specified. The interaction function can be used to assign specific identities to local regions of the canvas and to specify initialisation signals. This is important for setting up the polariser and growth factors which will themselves direct growth.&lt;br /&gt;
&lt;br /&gt;
To initialise the model using the interaction function, in the panel entitled &#039;Interaction function&#039;, click on the &#039;Edit&#039; button. This will open the matlab editor. &lt;br /&gt;
&lt;br /&gt;
Within the interaction function there are lots of instructions (in green) about which parts of the code can be modified. Examples of what one might like to do in each section of the interaction function are also provided.&lt;br /&gt;
&lt;br /&gt;
Here the specification of initial local identity domains that have either a central square shape, a central circle shape, or an off-centre circle shape, is demonstrated. How to position the source of a signal in a particular identity region is also shown, as are ways to position sinks that degrade the signal, producing different types of signal gradients. How to specify isotropic growth in particular regions of the tissue is also shown.&lt;br /&gt;
&lt;br /&gt;
To demonstrate these different things, variant models have been specified in the same interaction function. To set up the different model variants, use the following code format in the part of the interaction function where the comments direct you set up model variants:&lt;br /&gt;
&lt;br /&gt;
 % Set up names for variant models.  Useful for running multiple models on a cluster.&lt;br /&gt;
        m.userdata.ranges.modelname.range = ...&lt;br /&gt;
            { &#039;SQ_IN_CIRCLE&#039;, ...&lt;br /&gt;
              &#039;CENTRE_OF_CIRCLE&#039;, ...&lt;br /&gt;
              &#039;OFFCENTRE_CIRCLE&#039;, ...&lt;br /&gt;
              &#039;CENTRE_SOURCE&#039;, ...&lt;br /&gt;
              &#039;CENTRE_SOURCE_2&#039;, ...&lt;br /&gt;
              &#039;SOURCE_SINK&#039;, ...&lt;br /&gt;
              &#039;SOURCE_SINK_2&#039;, ...&lt;br /&gt;
              &#039;SOURCE_SINK_2_GROWTH&#039;, ...&lt;br /&gt;
              &#039;SOURCE_SINK_2_GROWTH_BOWL&#039; };&lt;br /&gt;
        m.userdata.ranges.modelname.index = 9;                       &lt;br /&gt;
          % CLUSTER. This is where you choose which variant to run.&lt;br /&gt;
          % Using the number 9 causes the 9th model in the &lt;br /&gt;
          %list, &#039;SOURCE_SINK_2_GROWTH_BOWL&#039;, to be run&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
In the main part of the model where you are specifying the differences between the variants, you should use a switch statement, for example like this:&lt;br /&gt;
&lt;br /&gt;
 switch modelname&lt;br /&gt;
            case &#039;SQ_IN_CIRCLE&#039;&lt;br /&gt;
            %code specific to this model variant&lt;br /&gt;
            case &#039;CENTRE_OF_CIRCLE&#039;&lt;br /&gt;
            %code specific to this model variant&lt;br /&gt;
            case &#039;OFFCENTRE_CIRCLE&#039;&lt;br /&gt;
            %code specific to this model variant&lt;br /&gt;
            case &#039;CENTRE_SOURCE&#039;&lt;br /&gt;
      end&lt;br /&gt;
&lt;br /&gt;
Using model variants within an interaction function is useful if you wish to model a wild-type developmental situation involving several different factors, and one or more mutant situations where only one of the factors has been altered from the wild-type model. Using variants of a model to represent mutants allows you to just make small modifications to the WT model for mutants whilst still using exactly the same code for most of the model.&lt;br /&gt;
&lt;br /&gt;
Initialisation steps should be specified in the part of the interaction function where the following code is:&lt;br /&gt;
&lt;br /&gt;
[[Image: Initialisationcode.PNG]]&lt;br /&gt;
&lt;br /&gt;
=====The m.nodes matrix=====&lt;br /&gt;
&lt;br /&gt;
The positions of all vertices of the mesh are held in a matrix called m.nodes. m is a structure which holds all of the information about the canvas and nodes is one matrix within the structure m. Nodes is an nx3 matrix where each row represents a different vertex and the three columns represent the x,y,z coordinates of that vertex. &lt;br /&gt;
&lt;br /&gt;
The matrix m.nodes may be viewed by putting a break point at a line of code where m.nodes appears in the interaction function and running the simulation until the break point. Then, by highlighting &#039;m.nodes&#039; and pressing F9 (or right clicking on the highlighted &#039;m.nodes&#039; and choosing evaluate), the m.nodes matrix will be displayed in the matlab command window.&lt;br /&gt;
&lt;br /&gt;
To assign a particular identity factor to local regions of the matrix, values of either 1 or 0 for that identity factor need to be assigned to each node of the matrix. The X coordinates of every vertex are given by m.nodes(:,1), the Y coordinates are given by m.nodes(:,2) and the Z coordinates by m.nodes(:,3).&lt;br /&gt;
&lt;br /&gt;
=====Example 1: Specifying a central square identity region=====&lt;br /&gt;
&lt;br /&gt;
To assign an identity factor (called id_centre, added by creating a new factor with the GUI), to a square centred on the centre of the canvas, the following code can be used in the appropriate model variant case in the initialisation:&lt;br /&gt;
&lt;br /&gt;
 case &#039;SQ_IN_CIRCLE&#039;&lt;br /&gt;
                SQUARE_RADIUS =0.5&lt;br /&gt;
                is_centre_region = (abs(m.nodes(:,1))&amp;lt; SQUARE_RADIUS)...&lt;br /&gt;
                                   &amp;amp; (abs(m.nodes(:,2))&amp;lt; SQUARE_RADIUS);&lt;br /&gt;
                id_centre_p(is_centre_region) = 1    &lt;br /&gt;
                id_centre_l = id_centre_p * id_centre_a;&lt;br /&gt;
&lt;br /&gt;
First the distance from the centre of the square to its edge is defined (using SQUARE_RADIUS = 0.7;). &lt;br /&gt;
Then, the variable &#039;is_centre_region&#039; is given a value of 0 or 1 for all of the nodes in the canvas with the code &lt;br /&gt;
&#039;is_centre_region = (abs( m.nodes(:,1) ) &amp;lt; SQUARE_RADIUS)&amp;amp; (abs( m.nodes(:,2) ) &amp;lt; SQUARE_RADIUS);&lt;br /&gt;
&lt;br /&gt;
This means &#039;is_centre_region&#039; will be 1 only for nodes where the absolute value (abs) of the X coordinates of the vertex    (m.nodes(:,1)) are less than the value of&#039;SQUARE_RADIUS&#039; and the absolute value (abs) of the Y coordinates of the vertex( m.nodes(:,2))are also less than &#039;SQUARE_RADIUS&#039;. &lt;br /&gt;
&lt;br /&gt;
This creates a boolean vector (containing only 0s and 1s) entitled &#039;is_centre_region&#039;. The values in this vector (there is one for each node of the canvas)can be viewed in the command window by putting a break point at the line of code including &#039;is_centre_region&#039;,stepping the simulation, highlighting &#039;is_centre_region&#039; and then pressing F9.&lt;br /&gt;
&lt;br /&gt;
The initialisation identity factor, id_centre, is assigned to the same nodes that is_centre_region was assigned to using the code: &lt;br /&gt;
&lt;br /&gt;
id_centre_p(is_centre_region) = 1;&lt;br /&gt;
&lt;br /&gt;
This bit of code says that the &#039;id_centre&#039; vector (the id_centre column in the m.morphogen matrix) should be given the same boolean vector that is_centre_region has been assigned.&lt;br /&gt;
&lt;br /&gt;
Note that id_centre is folowed by _p.&lt;br /&gt;
In the interaction function, each factor can appear with one of four different suffices: &lt;br /&gt;
&lt;br /&gt;
_p = level of factor. This gets updated at the end of the interaction function and might change according to growth. This suffix should be used when the factor appears on the left hand side of an equation. The p means promoter level - how much the expression of the factor is being promoted in the model.&lt;br /&gt;
&lt;br /&gt;
_i = index. Each morphogen has it&#039;s own index for storing growth information in global morphogen structures. &lt;br /&gt;
&lt;br /&gt;
_l = effective level. This suffix should be used when the factor appears on the right hand side of an equation. In constrast to p, which represents promotion of a factor, l should be used to represent the total amount of functional product as a result of gene expression.&lt;br /&gt;
&lt;br /&gt;
_a = expression  level. If a factor has the suffix &#039;a&#039;, its expression level can be controlled using the Mutation box in the factors tab of the GUI. Changing the value of expression from 1 in the mutation box can be used to model mutants with increases or decreases in the expression of a given factor. Clicking the &#039;Revert&#039; button will make the level of the factor return to 1.&lt;br /&gt;
&lt;br /&gt;
The line:&lt;br /&gt;
&lt;br /&gt;
  id_centre_l = id_centre_p * id_centre_a; &lt;br /&gt;
&lt;br /&gt;
sets the effective level of id_centre to be equal to the promotion of id_centre (id_centre_p) multiplied by the expression level of id_centre (id_centre_a).&lt;br /&gt;
&lt;br /&gt;
=====Example 2: Specifying a central circular identity region=====&lt;br /&gt;
&lt;br /&gt;
To specify a circle with a radius of 0.5 (for example) centred on a particular point, rather than just selecting nodes that are between - 0.5 and + 0.5 along the x axis and the y axis, which produces a square, we need to select nodes that are less than a &#039;&#039;&#039;radius&#039;&#039;&#039; of 0.5.&lt;br /&gt;
&lt;br /&gt;
[[Image: circleradius2.PNG]]&lt;br /&gt;
&lt;br /&gt;
To incorporate this into the interaction function, the following bit of code can be used:&lt;br /&gt;
 &lt;br /&gt;
 case &#039;CENTRE_OF_CIRCLE&#039;   % name of the model variant&lt;br /&gt;
     CENTRE_RADIUS = 0.5;  % radius of the central region&lt;br /&gt;
     radii = sqrt( m.nodes(:,1).^2 + m.nodes(:,2).^2 );   &lt;br /&gt;
           % calculating radii using pythagoras&#039;s theorem&lt;br /&gt;
                &lt;br /&gt;
     id_centre_p(radii &amp;lt;= CENTRE_RADIUS) = 1;% setting the promotion of the factor id_centre to be &lt;br /&gt;
                                             % 1 wherever the radii is less than CENTRE_RADIUS&lt;br /&gt;
              &lt;br /&gt;
     id_centre_l = id_centre_p * id_centre_a;% sets the effective level of id_centre_l to &lt;br /&gt;
                                             % be equal to the promotion of &lt;br /&gt;
                                             % id_centre * the expression &lt;br /&gt;
                                             % level (given by the value of id_centre_a.&lt;br /&gt;
&lt;br /&gt;
=====Example 3: Specifying an off-centre circular identity region.=====&lt;br /&gt;
&lt;br /&gt;
To displace a circle away from the centre of the canvas, the following code can be used:&lt;br /&gt;
&lt;br /&gt;
 case &#039;OFFCENTRE_CIRCLE&#039;&lt;br /&gt;
                CENTRE_RADIUS = 0.2;&lt;br /&gt;
                CENTRE_POSITION = [ 0.4, 0 ]; % the x, y co-ordinates of the position of the&lt;br /&gt;
                                              % centre (due to its displacement from 0,0).&lt;br /&gt;
 &lt;br /&gt;
                radii = sqrt( (m.nodes(:,1) - CENTRE_POSITION(1)).^2 + ...   &lt;br /&gt;
                        % the x and y co-ordinates of the new centre &lt;br /&gt;
                        %point are &lt;br /&gt;
                        % subtracted from the x and y co-ordinates of the &lt;br /&gt;
                        % m.nodes positions used in the radii &lt;br /&gt;
                        % calculation&lt;br /&gt;
                        (m.nodes(:,2) - CENTRE_POSITION(2)).^2 );&lt;br /&gt;
                id_centre_p(radii &amp;lt;= CENTRE_RADIUS) = 1;&lt;br /&gt;
                id_centre_l = id_centre_p * id_centre_a;&lt;br /&gt;
&lt;br /&gt;
=====Example 4: Producing a diffusable signal from the central identity region and specifying an equal rate of decay everywhere in the canvas.=====&lt;br /&gt;
&lt;br /&gt;
To achieve this task, first a signal factor needs to be added to the model using the GUI. In the factors part of the GUI, the signal&#039;s diffusion rate can be set in the diffusion box. Here a value of 0.5 was used for the signal created (s_centre).&lt;br /&gt;
&lt;br /&gt;
The following bit of code in the initialisation part of interaction function can be used to set the soure to be produced in the same place as the circular id_centre specified in example 2.&lt;br /&gt;
&lt;br /&gt;
 case &#039;CENTRE_SOURCE&#039;&lt;br /&gt;
                CENTRE_RADIUS = 0.5; %this is the same code as for example2 &lt;br /&gt;
                radii = sqrt( m.nodes(:,1).^2 + m.nodes(:,2).^2 );&lt;br /&gt;
                id_centre_p(radii &amp;lt;= CENTRE_RADIUS) = 1;&lt;br /&gt;
                id_centre_l = id_centre_p * id_centre_a;&lt;br /&gt;
                &lt;br /&gt;
                m= leaf_mgen_conductivity(m,s_centre_i, 0.5);&lt;br /&gt;
                % this sets the diffusion rate of s_centre_i&lt;br /&gt;
                m.mgen_production( :, s_centre_i ) = 0.1*id_centre_l; &lt;br /&gt;
 &lt;br /&gt;
                % In all the rows of the s_centre_i column of the m.mgen production array,&lt;br /&gt;
                % the value of s_centre_i is set to 0.1*the effective level of id_centre_l.&lt;br /&gt;
                % this means that s_centre is produced by id_centre at a rate of 0.1. &lt;br /&gt;
                  &lt;br /&gt;
                m = leaf_mgen_absorption( m, s_centre_i, 10 );&lt;br /&gt;
 &lt;br /&gt;
                % This causes s_centre to decay everywhere at a constant rate&lt;br /&gt;
                % proportional to its concentration and proportional to the time step, so that&lt;br /&gt;
                % if the time step is 0.01, then 10*0.01 is 0.1 and s_centre will decay by 0.1 &lt;br /&gt;
                % ie. 10% of its concentration each time step.&lt;br /&gt;
&lt;br /&gt;
=====Example 5: Fixing the amount of a diffusable signal in a given area.=====&lt;br /&gt;
&lt;br /&gt;
In biological systems, homeostatic mechanisms ofter exist to keep the concentration of a particular factor constant in a particular area. To simulate this in the growth toolbox, we can use a function called morphogenclamp to fix the level of a factor in a certain area. When this function is used, the factor remains free to diffuse into the area where its concentration is not fixed. The following code can be used to fix the concentration of s_centre to 1 everywhere that id_centre is 1 (ie in the circular central identity region).&lt;br /&gt;
&lt;br /&gt;
 case &#039;CENTRE_SOURCE_2&#039;&lt;br /&gt;
                CENTRE_RADIUS = 0.5;&lt;br /&gt;
                radii = sqrt( m.nodes(:,1).^2 + m.nodes(:,2).^2 );&lt;br /&gt;
                id_centre_p(radii &amp;lt;= CENTRE_RADIUS) = 1;&lt;br /&gt;
                id_centre_l = id_centre_p * id_centre_a;&lt;br /&gt;
                &lt;br /&gt;
                s_centre_p( id_centre_l &amp;gt; 0 ) = 1;&lt;br /&gt;
                m.morphogenclamp( id_centre_l &amp;gt; 0, s_centre_i) = 1;&lt;br /&gt;
 &lt;br /&gt;
                %s_centre is initially 1 everywhere that id_centre is&lt;br /&gt;
                % present, and is held fixed at that value. &lt;br /&gt;
                % The morphogenclamp function should be assigned a boolean value&lt;br /&gt;
                %(1 if you want to clamp the morphogen, 0 if you don&#039;t). &lt;br /&gt;
                % The first argument given to the function (id_centre_l&amp;gt;0)&lt;br /&gt;
                % gives the nodes of the mesh where the function should apply, &lt;br /&gt;
                % the second argument gives the morphogen to be&lt;br /&gt;
                % clamped. &lt;br /&gt;
 &lt;br /&gt;
                m = leaf_mgen_absorption( m, s_centre_i, 10 );&lt;br /&gt;
                &lt;br /&gt;
                % s_centre decays everywhere at a constant rate&lt;br /&gt;
                % proportional to its concentration.&lt;br /&gt;
&lt;br /&gt;
=====Example 6: Positioning a sink for the diffusable signal at the rim of the canvas.=====&lt;br /&gt;
&lt;br /&gt;
To achieve this task, a rim identity region (called id_rim here) should be set up using the GUI. Here, the morphogenclamp function has been used to set the value of s_centre to 0 wherever id_rim is present. This causes the rim to act as a sink since any signal that diffuses into it will effectively disappear. This model quickly creates a stable linear gradient of s_centre between the id_centre and the id_rim region providing that the diffusion rate is quick enough.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  case &#039;SOURCE_SINK&#039;&lt;br /&gt;
                CENTRE_RADIUS = 0.5;                                %previously used code&lt;br /&gt;
                radii = sqrt( m.nodes(:,1).^2 + m.nodes(:,2).^2 ); &lt;br /&gt;
                id_centre_p(radii &amp;lt;= CENTRE_RADIUS) = 1;&lt;br /&gt;
                id_centre_l = id_centre_p * id_centre_a;&lt;br /&gt;
                &lt;br /&gt;
                rimnodes = radii &amp;gt; max(radii)*0.8;             &lt;br /&gt;
 &lt;br /&gt;
               % rimnodes is assigned the positions &lt;br /&gt;
               %where radii is bigger than the maximum radii * 0.8&lt;br /&gt;
                id_rim_p( rimnodes ) = 1;&lt;br /&gt;
               &lt;br /&gt;
                % id_rim is set to 1 in the same place as rimnodes &lt;br /&gt;
 &lt;br /&gt;
                id_rim_l = id_rim_p * id_rim_a;&lt;br /&gt;
 &lt;br /&gt;
                s_centre_p( id_centre_l &amp;gt; 0 ) = 1;&lt;br /&gt;
                s_centre_l = s_centre_p * s_centre_a;&lt;br /&gt;
                m.morphogenclamp( id_centre_l &amp;gt; 0, s_centre_i ) = 1;&lt;br /&gt;
                &lt;br /&gt;
                m.morphogenclamp( id_rim_l &amp;gt; 0, s_centre_i ) = 1;&lt;br /&gt;
               &lt;br /&gt;
                % s_centre is initially 0 everywhere that id_rim is&lt;br /&gt;
                % present, and is held fixed at that value.&lt;br /&gt;
 &lt;br /&gt;
                &lt;br /&gt;
                m = leaf_mgen_absorption( m, s_centre_i, 0 );&lt;br /&gt;
                % s_centre decays everywhere at a constant rate&lt;br /&gt;
                % proportional to its concentration.&lt;br /&gt;
&lt;br /&gt;
=====Example 7: Combining production of a source in an off-centre circle with a rim around the sink .=====&lt;br /&gt;
The following code is a combination of the different examples given above. It specifies an off-centre circular identity region, causes a diffusible signal to be maintained at a constant level wherever the circular identity region is present, specifies a rim identity region and sets the concentration of the diffusible signal to 0 at the rim.&lt;br /&gt;
&lt;br /&gt;
   case &#039;SOURCE_SINK_2&#039;&lt;br /&gt;
                CENTRE_RADIUS = 0.2;&lt;br /&gt;
                CENTRE_POSITION = [ 0.4, 0 ];&lt;br /&gt;
                radii = sqrt( (m.nodes(:,1) - CENTRE_POSITION(1)).^2 + ...&lt;br /&gt;
                              (m.nodes(:,2) - CENTRE_POSITION(2)).^2 );&lt;br /&gt;
                id_centre_p(radii &amp;lt;= CENTRE_RADIUS) = 1;&lt;br /&gt;
                id_centre_l = id_centre_p * id_centre_a;&lt;br /&gt;
                &lt;br /&gt;
                rimnodes = radii &amp;gt; max(radii)*0.8;&lt;br /&gt;
                id_rim_p( rimnodes ) = 1;&lt;br /&gt;
                id_rim_l = id_rim_p * id_rim_a;&lt;br /&gt;
 &lt;br /&gt;
                % s_centre is initially 1 everywhere that id_centre is&lt;br /&gt;
                % present, and is held fixed at that value.&lt;br /&gt;
                s_centre_p( id_centre_l &amp;gt; 0 ) = 1;&lt;br /&gt;
                s_centre_l = s_centre_p * s_centre_a;&lt;br /&gt;
                m.morphogenclamp( id_centre_l &amp;gt; 0, s_centre_i ) = 1;&lt;br /&gt;
                &lt;br /&gt;
                % s_centre is initially 0 everywhere that id_rim is&lt;br /&gt;
                % present, and is held fixed at that value.&lt;br /&gt;
                m.morphogenclamp( id_rim_l &amp;gt; 0, s_centre_i ) = 1;&lt;br /&gt;
                &lt;br /&gt;
                % s_centre decays everywhere at a constant rate&lt;br /&gt;
                % proportional to its concentration.&lt;br /&gt;
                m = leaf_mgen_absorption( m, s_centre_i, 0 );&lt;br /&gt;
&lt;br /&gt;
=====Example 8: Adding isotropic growth.=====&lt;br /&gt;
To add isotopic growth wherever the id_centre region exists in the last model variant outlined above, a new case can be made with exactly the same intialisation code as for the the last model variant described:&lt;br /&gt;
&lt;br /&gt;
 case &#039;SOURCE_SINK_2_GROWTH&#039;&lt;br /&gt;
                CENTRE_RADIUS = 0.2;&lt;br /&gt;
                CENTRE_POSITION = [ 0.4, 0 ];&lt;br /&gt;
                radii = sqrt( (m.nodes(:,1) - CENTRE_POSITION(1)).^2 + ...&lt;br /&gt;
                              (m.nodes(:,2) - CENTRE_POSITION(2)).^2 );&lt;br /&gt;
                id_centre_p(radii &amp;lt;= CENTRE_RADIUS) = 1;&lt;br /&gt;
                id_centre_l = id_centre_p * id_centre_a;&lt;br /&gt;
                &lt;br /&gt;
                rimnodes = radii &amp;gt; max(radii)*0.8;&lt;br /&gt;
                id_rim_p( rimnodes ) = 1;&lt;br /&gt;
                id_rim_l = id_rim_p * id_rim_a;&lt;br /&gt;
 &lt;br /&gt;
                % s_centre is initially 1 everywhere that id_centre is&lt;br /&gt;
                % present, and is held fixed at that value.&lt;br /&gt;
                s_centre_p( id_centre_l &amp;gt; 0 ) = 1;&lt;br /&gt;
                s_centre_l = s_centre_p * s_centre_a;&lt;br /&gt;
                m.morphogenclamp( id_centre_l &amp;gt; 0, s_centre_i ) = 1;&lt;br /&gt;
                &lt;br /&gt;
                % s_centre is initially 0 everywhere that id_rim is&lt;br /&gt;
                % present, and is held fixed at that value.&lt;br /&gt;
                m.morphogenclamp( id_rim_l &amp;gt; 0, s_centre_i ) = 1;&lt;br /&gt;
                &lt;br /&gt;
                % s_centre decays everywhere at a constant rate&lt;br /&gt;
                % proportional to its concentration.&lt;br /&gt;
                m = leaf_mgen_absorption( m, s_centre_i, 0 );&lt;br /&gt;
&lt;br /&gt;
Additionally, the following bit of code to specify growth rates should be added to the part of the model labelled %Code for specific models.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 % Code for specific models.&lt;br /&gt;
    switch modelname&lt;br /&gt;
        case { &#039;SOURCE_SINK_2_GROWTH&#039;, &#039;SOURCE_SINK_2_GROWTH_BOWL&#039; }&lt;br /&gt;
            kapar_p = 0.1 * pro( 1, id_centre_l );&lt;br /&gt;
            kbpar_p = kapar_p;&lt;br /&gt;
            kaper_p = kapar_p;&lt;br /&gt;
            kbper_p = kaper_p;&lt;br /&gt;
&lt;br /&gt;
Here, kapar (the rate of growth parrallel to a polariser that doesn&#039;t exist here) is set to be 0.1 everywhere, but promoted by the effective level of id_centre by a scalar factor of 1 using *pro(1, id_centre_l). This promotion by id_centre_l means that kapar will be 0.1 everywhere in the canvas where id_centre is absent, and will be 0.2 in the presence of id_centre. kbpar (the rate of growth parrallel to a non-existent polariser on the other side of the canvas to where kapar applies) is set to the value of kapar. The perpendicular growth rates on each side of the canvas(kaper_p and kbper_p) are also set to be the same as kapar. This produces isotropic growth of the canvas, at double the background rate where id_centre is present.&lt;br /&gt;
&lt;br /&gt;
If this model is run with the canvas initially having random z displacements (as described in the mesh section) random deformations above and below the initial canvas surface will be produced.&lt;br /&gt;
&lt;br /&gt;
=====Example 9: Growth with the canvas initialised in a bowl shape to bias the 3D deformation.=====&lt;br /&gt;
&lt;br /&gt;
To bias the 3D deformation of the canvas in a particular direction, the following code can be used in the appropriate intialisation case:&lt;br /&gt;
&lt;br /&gt;
 case &#039;SOURCE_SINK_2_GROWTH_BOWL&#039;&lt;br /&gt;
                &lt;br /&gt;
                m = leaf_setzeroz( m );&lt;br /&gt;
                m = leaf_bowlz( m, -0.1 );&lt;br /&gt;
&lt;br /&gt;
====All code for lesson 1====&lt;br /&gt;
Below is all the code (the whole interaction function) used to create the model variants that have been described in this lesson. Please note that the first example interaction function given below is not organised in the ideal way, although it is the easiest way to see how each model variant works. Please look at the second example interaction function below to see the best way to organise this code.&lt;br /&gt;
&lt;br /&gt;
=====Example code 1=====&lt;br /&gt;
&lt;br /&gt;
 function m = gpt_circle_101118( m )&lt;br /&gt;
 %m = gpt_circle_101118( m )&lt;br /&gt;
 %   Morphogen interaction function.&lt;br /&gt;
 %   Written at 2010-11-19 10:06:32.&lt;br /&gt;
 %   GFtbox revision 3254, 2010-11-18 20:25:53.442272.&lt;br /&gt;
 &lt;br /&gt;
 % The user may edit any part of this function between delimiters&lt;br /&gt;
 % of the form &amp;quot;USER CODE...&amp;quot; and &amp;quot;END OF USER CODE...&amp;quot;.  The&lt;br /&gt;
 % delimiters themselves must not be moved, edited, deleted, or added.&lt;br /&gt;
 &lt;br /&gt;
    if isempty(m), return; end&lt;br /&gt;
 &lt;br /&gt;
    fprintf( 1, &#039;%s found in %s\n&#039;, mfilename(), which(mfilename()) );&lt;br /&gt;
 &lt;br /&gt;
    if exist( &#039;local_setproperties&#039; )&lt;br /&gt;
        m = local_setproperties( m );&lt;br /&gt;
    end&lt;br /&gt;
 &lt;br /&gt;
    realtime = m.globalDynamicProps.currenttime;&lt;br /&gt;
 &lt;br /&gt;
 %%% USER CODE: INITIALISATION&lt;br /&gt;
 &lt;br /&gt;
 % In this section you may modify the mesh in any way whatsoever.&lt;br /&gt;
    if Steps(m)==0 % First iteration&lt;br /&gt;
        % Zero out a lot of stuff to create a blank slate.  If you want to use the&lt;br /&gt;
        % GUI to set any of these things in the initial mesh, then you will need to&lt;br /&gt;
        % comment out the corresponding lines here.&lt;br /&gt;
        m.morphogens(:) = 0;&lt;br /&gt;
        m.morphogenclamp(:) = 0;&lt;br /&gt;
        m.mgen_production(:) = 0;&lt;br /&gt;
        m.mgen_absorption(:) = 0;&lt;br /&gt;
        m.seams(:) = false;&lt;br /&gt;
        m.mgen_dilution(:) = false;&lt;br /&gt;
 &lt;br /&gt;
        % Set up names for variant models.  Useful for running multiple models on a cluster.&lt;br /&gt;
        m.userdata.ranges.modelname.range = ...&lt;br /&gt;
            { &#039;SQ_IN_CIRCLE&#039;, ...&lt;br /&gt;
              &#039;CENTRE_OF_CIRCLE&#039;, ...&lt;br /&gt;
              &#039;OFFCENTRE_CIRCLE&#039;, ...&lt;br /&gt;
              &#039;CENTRE_SOURCE&#039;, ...&lt;br /&gt;
              &#039;CENTRE_SOURCE_2&#039;, ...&lt;br /&gt;
              &#039;SOURCE_SINK&#039;, ...&lt;br /&gt;
              &#039;SOURCE_SINK_2&#039;, ...&lt;br /&gt;
              &#039;SOURCE_SINK_2_GROWTH&#039;, ...&lt;br /&gt;
              &#039;SOURCE_SINK_2_GROWTH_BOWL&#039; };&lt;br /&gt;
        m.userdata.ranges.modelname.index = 9;                       % CLUSTER&lt;br /&gt;
    end&lt;br /&gt;
    modelname = m.userdata.ranges.modelname.range{m.userdata.ranges.modelname.index};  % CLUSTER&lt;br /&gt;
    	&lt;br /&gt;
    % More code for all iterations.&lt;br /&gt;
 &lt;br /&gt;
    % Set priorities for simultaneous plotting of multiple morphogens, if desired.&lt;br /&gt;
    % m = leaf_mgen_plotpriority( m, {&#039;MGEN1&#039;, &#039;MGEN2&#039;}, [1,2], [0.5,0.75] );&lt;br /&gt;
 &lt;br /&gt;
    % Set colour of polariser gradient arrows.&lt;br /&gt;
    % m = leaf_plotoptions(m,&#039;highgradcolor&#039;,[0,0,0],&#039;lowgradcolor&#039;,[1,0,0]);&lt;br /&gt;
 %%% END OF USER CODE: INITIALISATION&lt;br /&gt;
 &lt;br /&gt;
 %%% SECTION 1: ACCESSING MORPHOGENS AND TIME.&lt;br /&gt;
 %%% AUTOMATICALLY GENERATED CODE: DO NOT EDIT.&lt;br /&gt;
 &lt;br /&gt;
    if isempty(m), return; end&lt;br /&gt;
 &lt;br /&gt;
    setGlobals();&lt;br /&gt;
    global gNEW_KA_PAR gNEW_KA_PER gNEW_KB_PAR gNEW_KB_PER&lt;br /&gt;
    global gNEW_K_NOR gNEW_POLARISER gNEW_STRAINRET gNEW_ARREST&lt;br /&gt;
    dt = m.globalProps.timestep;&lt;br /&gt;
    polariser_i = gNEW_POLARISER;&lt;br /&gt;
    P = m.morphogens(:,polariser_i);&lt;br /&gt;
    [kapar_i,kapar_p,kapar_a,kapar_l] = getMgenLevels( m, &#039;KAPAR&#039; );&lt;br /&gt;
    [kaper_i,kaper_p,kaper_a,kaper_l] = getMgenLevels( m, &#039;KAPER&#039; );&lt;br /&gt;
    [kbpar_i,kbpar_p,kbpar_a,kbpar_l] = getMgenLevels( m, &#039;KBPAR&#039; );&lt;br /&gt;
    [kbper_i,kbper_p,kbper_a,kbper_l] = getMgenLevels( m, &#039;KBPER&#039; );&lt;br /&gt;
    [knor_i,knor_p,knor_a,knor_l] = getMgenLevels( m, &#039;KNOR&#039; );&lt;br /&gt;
    [strainret_i,strainret_p,strainret_a,strainret_l] = getMgenLevels( m, &#039;STRAINRET&#039; );&lt;br /&gt;
    [arrest_i,arrest_p,arrest_a,arrest_l] = getMgenLevels( m, &#039;ARREST&#039; );&lt;br /&gt;
    [id_centre_i,id_centre_p,id_centre_a,id_centre_l] = getMgenLevels( m, &#039;ID_CENTRE&#039; );&lt;br /&gt;
    [s_centre_i,s_centre_p,s_centre_a,s_centre_l] = getMgenLevels( m, &#039;S_CENTRE&#039; );&lt;br /&gt;
    [id_rim_i,id_rim_p,id_rim_a,id_rim_l] = getMgenLevels( m, &#039;ID_RIM&#039; );&lt;br /&gt;
 &lt;br /&gt;
 % Mesh type: circle&lt;br /&gt;
 %       circumpts: 24&lt;br /&gt;
 %       coneangle: 0&lt;br /&gt;
 %         dealign: 0&lt;br /&gt;
 %          height: 0&lt;br /&gt;
 %        innerpts: 0&lt;br /&gt;
 %      randomness: -0.1&lt;br /&gt;
 %           rings: 4&lt;br /&gt;
 %         version: 1&lt;br /&gt;
 %          xwidth: 2&lt;br /&gt;
 %          ywidth: 2 &lt;br /&gt;
 &lt;br /&gt;
 %            Morphogen   Diffusion   Decay   Dilution   Mutant&lt;br /&gt;
 %            -------------------------------------------------&lt;br /&gt;
 %                KAPAR        ----    ----       ----     ----&lt;br /&gt;
 %                KAPER        ----    ----       ----     ----&lt;br /&gt;
 %                KBPAR        ----    ----       ----     ----&lt;br /&gt;
 %                KBPER        ----    ----       ----     ----&lt;br /&gt;
 %                 KNOR        ----    ----       ----     ----&lt;br /&gt;
 %            POLARISER        ----    ----       ----     ----&lt;br /&gt;
 %            STRAINRET        ----    ----       ----     ----&lt;br /&gt;
 %               ARREST        ----    ----       ----     ----&lt;br /&gt;
 %            ID_CENTRE        ----    ----       ----     ----&lt;br /&gt;
 %             S_CENTRE         0.5    ----       ----     ----&lt;br /&gt;
 %               ID_RIM        ----    ----       ----     ----&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 %%% USER CODE: MORPHOGEN INTERACTIONS&lt;br /&gt;
 &lt;br /&gt;
 % In this section you may modify the mesh in any way that does not&lt;br /&gt;
 % alter the set of nodes.&lt;br /&gt;
 &lt;br /&gt;
    if Steps(m)==0  % Initialisation code.&lt;br /&gt;
        % Put any code here that should only be performed at the start of&lt;br /&gt;
        % the simulation, for example, to set up initial morphogen values.&lt;br /&gt;
        &lt;br /&gt;
        % m.nodes is the set of vertex positions, an N by 3 array if there&lt;br /&gt;
        % are N vertices.  Row number K contains the X, Y, and Z&lt;br /&gt;
        % coordinates of the Kth vertex. To obtain a list of the X&lt;br /&gt;
        % coordinates of every vertex, write m.nodes(:,1).  The Y&lt;br /&gt;
        % coordinates are given by m.nodes(:,2) and the Z coordinates by&lt;br /&gt;
        % m.nodes(:,3).&lt;br /&gt;
        switch modelname&lt;br /&gt;
            case &#039;SQ_IN_CIRCLE&#039;&lt;br /&gt;
                SQUARE_RADIUS =0.5&lt;br /&gt;
                is_centre_region = (abs(m.nodes(:,1))&amp;lt; SQUARE_RADIUS)...&lt;br /&gt;
                                   &amp;amp; (abs(m.nodes(:,2))&amp;lt; SQUARE_RADIUS);&lt;br /&gt;
                id_centre_p(is_centre_region) = 1    &lt;br /&gt;
                id_centre_l = id_centre_p * id_centre_a;&lt;br /&gt;
            case &#039;CENTRE_OF_CIRCLE&#039;&lt;br /&gt;
                CENTRE_RADIUS = 0.5;&lt;br /&gt;
                radii = sqrt( m.nodes(:,1).^2 + m.nodes(:,2).^2 );&lt;br /&gt;
                id_centre_p(radii &amp;lt;= CENTRE_RADIUS) = 1;&lt;br /&gt;
                id_centre_l = id_centre_p * id_centre_a;&lt;br /&gt;
            case &#039;OFFCENTRE_CIRCLE&#039;&lt;br /&gt;
                CENTRE_RADIUS = 0.2;&lt;br /&gt;
                CENTRE_POSITION = [ 0.4, 0 ];&lt;br /&gt;
                radii = sqrt( (m.nodes(:,1) - CENTRE_POSITION(1)).^2 + ...&lt;br /&gt;
                              (m.nodes(:,2) - CENTRE_POSITION(2)).^2 );&lt;br /&gt;
                id_centre_p(radii &amp;lt;= CENTRE_RADIUS) = 1;&lt;br /&gt;
                id_centre_l = id_centre_p * id_centre_a;&lt;br /&gt;
                &lt;br /&gt;
            case &#039;CENTRE_SOURCE&#039;&lt;br /&gt;
                CENTRE_RADIUS = 0.5;&lt;br /&gt;
                radii = sqrt( m.nodes(:,1).^2 + m.nodes(:,2).^2 );&lt;br /&gt;
                id_centre_p(radii &amp;lt;= CENTRE_RADIUS) = 1;&lt;br /&gt;
                id_centre_l = id_centre_p * id_centre_a;&lt;br /&gt;
                % s_centre is produced by id_centre at a rate of 0.1.&lt;br /&gt;
                % d(s_centre_p)/dt = 0.1*id_centre_l.&lt;br /&gt;
                m.mgen_production( :, s_centre_i ) = 0.1*id_centre_l;&lt;br /&gt;
                % s_centre decays everywhere at a constant rate&lt;br /&gt;
                % proportional to its concentration.&lt;br /&gt;
                m = leaf_mgen_absorption( m, s_centre_i, 10 );&lt;br /&gt;
            case &#039;CENTRE_SOURCE_2&#039;&lt;br /&gt;
                CENTRE_RADIUS = 0.5;&lt;br /&gt;
                radii = sqrt( m.nodes(:,1).^2 + m.nodes(:,2).^2 );&lt;br /&gt;
                id_centre_p(radii &amp;lt;= CENTRE_RADIUS) = 1;&lt;br /&gt;
                id_centre_l = id_centre_p * id_centre_a;&lt;br /&gt;
                &lt;br /&gt;
                % s_centre is initially 1 everywhere that id_centre is&lt;br /&gt;
                % present, and is held fixed at that value.&lt;br /&gt;
                s_centre_p( id_centre_l &amp;gt; 0 ) = 1;&lt;br /&gt;
                m.morphogenclamp( id_centre_l &amp;gt; 0, s_centre_i) = 1;&lt;br /&gt;
                &lt;br /&gt;
                % s_centre decays everywhere at a constant rate&lt;br /&gt;
                % proportional to its concentration.&lt;br /&gt;
                m = leaf_mgen_absorption( m, s_centre_i, 10 );&lt;br /&gt;
            case &#039;SOURCE_SINK&#039;&lt;br /&gt;
                CENTRE_RADIUS = 0.5;&lt;br /&gt;
                radii = sqrt( m.nodes(:,1).^2 + m.nodes(:,2).^2 );&lt;br /&gt;
                id_centre_p(radii &amp;lt;= CENTRE_RADIUS) = 1;&lt;br /&gt;
                id_centre_l = id_centre_p * id_centre_a;&lt;br /&gt;
                &lt;br /&gt;
                rimnodes = radii &amp;gt; max(radii)*0.8;&lt;br /&gt;
                id_rim_p( rimnodes ) = 1;&lt;br /&gt;
                id_rim_l = id_rim_p * id_rim_a;&lt;br /&gt;
 &lt;br /&gt;
                % s_centre is initially 1 everywhere that id_centre is&lt;br /&gt;
                % present, and is held fixed at that value.&lt;br /&gt;
                s_centre_p( id_centre_l &amp;gt; 0 ) = 1;&lt;br /&gt;
                s_centre_l = s_centre_p * s_centre_a;&lt;br /&gt;
                m.morphogenclamp( id_centre_l &amp;gt; 0, s_centre_i ) = 1;&lt;br /&gt;
                &lt;br /&gt;
                % s_centre is initially 0 everywhere that id_rim is&lt;br /&gt;
                % present, and is held fixed at that value.&lt;br /&gt;
                m.morphogenclamp( id_rim_l &amp;gt; 0, s_centre_i ) = 1;&lt;br /&gt;
                &lt;br /&gt;
                % s_centre decays everywhere at a constant rate&lt;br /&gt;
                % proportional to its concentration.&lt;br /&gt;
                m = leaf_mgen_absorption( m, s_centre_i, 0 );&lt;br /&gt;
            case &#039;SOURCE_SINK_2&#039;&lt;br /&gt;
                CENTRE_RADIUS = 0.2;&lt;br /&gt;
                CENTRE_POSITION = [ 0.4, 0 ];&lt;br /&gt;
                radii = sqrt( (m.nodes(:,1) - CENTRE_POSITION(1)).^2 + ...&lt;br /&gt;
                              (m.nodes(:,2) - CENTRE_POSITION(2)).^2 );&lt;br /&gt;
                id_centre_p(radii &amp;lt;= CENTRE_RADIUS) = 1;&lt;br /&gt;
                id_centre_l = id_centre_p * id_centre_a;&lt;br /&gt;
                &lt;br /&gt;
                rimnodes = radii &amp;gt; max(radii)*0.8;&lt;br /&gt;
                id_rim_p( rimnodes ) = 1;&lt;br /&gt;
                id_rim_l = id_rim_p * id_rim_a;&lt;br /&gt;
 &lt;br /&gt;
                % s_centre is initially 1 everywhere that id_centre is&lt;br /&gt;
                % present, and is held fixed at that value.&lt;br /&gt;
                s_centre_p( id_centre_l &amp;gt; 0 ) = 1;&lt;br /&gt;
                s_centre_l = s_centre_p * s_centre_a;&lt;br /&gt;
                m.morphogenclamp( id_centre_l &amp;gt; 0, s_centre_i ) = 1;&lt;br /&gt;
                &lt;br /&gt;
                % s_centre is initially 0 everywhere that id_rim is&lt;br /&gt;
                % present, and is held fixed at that value.&lt;br /&gt;
                m.morphogenclamp( id_rim_l &amp;gt; 0, s_centre_i ) = 1;&lt;br /&gt;
                &lt;br /&gt;
                % s_centre decays everywhere at a constant rate&lt;br /&gt;
                % proportional to its concentration.&lt;br /&gt;
                m = leaf_mgen_absorption( m, s_centre_i, 0 );&lt;br /&gt;
            case &#039;SOURCE_SINK_2_GROWTH&#039;&lt;br /&gt;
                CENTRE_RADIUS = 0.2;&lt;br /&gt;
                CENTRE_POSITION = [ 0.4, 0 ];&lt;br /&gt;
                radii = sqrt( (m.nodes(:,1) - CENTRE_POSITION(1)).^2 + ...&lt;br /&gt;
                              (m.nodes(:,2) - CENTRE_POSITION(2)).^2 );&lt;br /&gt;
                id_centre_p(radii &amp;lt;= CENTRE_RADIUS) = 1;&lt;br /&gt;
                id_centre_l = id_centre_p * id_centre_a;&lt;br /&gt;
                &lt;br /&gt;
                rimnodes = radii &amp;gt; max(radii)*0.8;&lt;br /&gt;
                id_rim_p( rimnodes ) = 1;&lt;br /&gt;
                id_rim_l = id_rim_p * id_rim_a;&lt;br /&gt;
 &lt;br /&gt;
                % s_centre is initially 1 everywhere that id_centre is&lt;br /&gt;
                % present, and is held fixed at that value.&lt;br /&gt;
                s_centre_p( id_centre_l &amp;gt; 0 ) = 1;&lt;br /&gt;
                s_centre_l = s_centre_p * s_centre_a;&lt;br /&gt;
                m.morphogenclamp( id_centre_l &amp;gt; 0, s_centre_i ) = 1;&lt;br /&gt;
                &lt;br /&gt;
                % s_centre is initially 0 everywhere that id_rim is&lt;br /&gt;
                % present, and is held fixed at that value.&lt;br /&gt;
                m.morphogenclamp( id_rim_l &amp;gt; 0, s_centre_i ) = 1;&lt;br /&gt;
                &lt;br /&gt;
                % s_centre decays everywhere at a constant rate&lt;br /&gt;
                % proportional to its concentration.&lt;br /&gt;
                m = leaf_mgen_absorption( m, s_centre_i, 0 );&lt;br /&gt;
            case &#039;SOURCE_SINK_2_GROWTH_BOWL&#039;&lt;br /&gt;
                &lt;br /&gt;
                m = leaf_setzeroz( m );&lt;br /&gt;
                m = leaf_bowlz( m, -0.1 );&lt;br /&gt;
                &lt;br /&gt;
                CENTRE_RADIUS = 0.2;&lt;br /&gt;
                CENTRE_POSITION = [ 0.4, 0 ];&lt;br /&gt;
                radii = sqrt( (m.nodes(:,1) - CENTRE_POSITION(1)).^2 + ...&lt;br /&gt;
                              (m.nodes(:,2) - CENTRE_POSITION(2)).^2 );&lt;br /&gt;
                id_centre_p(radii &amp;lt;= CENTRE_RADIUS) = 1;&lt;br /&gt;
                id_centre_l = id_centre_p * id_centre_a;&lt;br /&gt;
                &lt;br /&gt;
                rimnodes = radii &amp;gt; max(radii)*0.8;&lt;br /&gt;
                id_rim_p( rimnodes ) = 1;&lt;br /&gt;
                id_rim_l = id_rim_p * id_rim_a;&lt;br /&gt;
 &lt;br /&gt;
                % s_centre is initially 1 everywhere that id_centre is&lt;br /&gt;
                % present, and is held fixed at that value.&lt;br /&gt;
                s_centre_p( id_centre_l &amp;gt; 0 ) = 1;&lt;br /&gt;
                s_centre_l = s_centre_p * s_centre_a;&lt;br /&gt;
                m.morphogenclamp( id_centre_l &amp;gt; 0, s_centre_i ) = 1;&lt;br /&gt;
                &lt;br /&gt;
                % s_centre is initially 0 everywhere that id_rim is&lt;br /&gt;
                % present, and is held fixed at that value.&lt;br /&gt;
                m.morphogenclamp( id_rim_l &amp;gt; 0, s_centre_i ) = 1;&lt;br /&gt;
                &lt;br /&gt;
                % s_centre decays everywhere at a constant rate&lt;br /&gt;
                % proportional to its concentration.&lt;br /&gt;
                m = leaf_mgen_absorption( m, s_centre_i, 0 );&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    if false&lt;br /&gt;
        figure(1);&lt;br /&gt;
        plot3( m.nodes(m.tricellvxs,1)&#039;, ...&lt;br /&gt;
               m.nodes(m.tricellvxs,2)&#039;, ...&lt;br /&gt;
               s_centre_p(m.tricellvxs)&#039; );&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
 &lt;br /&gt;
    % Code for specific models.&lt;br /&gt;
    switch modelname&lt;br /&gt;
        case { &#039;SOURCE_SINK_2_GROWTH&#039;, &#039;SOURCE_SINK_2_GROWTH_BOWL&#039; }&lt;br /&gt;
            kapar_p = 0.1 * pro( 1, id_centre_l );&lt;br /&gt;
            kbpar_p = kapar_p;&lt;br /&gt;
            kaper_p = kapar_p;&lt;br /&gt;
            kbper_p = kaper_p;&lt;br /&gt;
        otherwise&lt;br /&gt;
            % If this happens, maybe you forgot a model.&lt;br /&gt;
    end&lt;br /&gt;
 %%% END OF USER CODE: MORPHOGEN INTERACTIONS&lt;br /&gt;
 &lt;br /&gt;
 %%% SECTION 3: INSTALLING MODIFIED VALUES BACK INTO MESH STRUCTURE&lt;br /&gt;
 %%% AUTOMATICALLY GENERATED CODE: DO NOT EDIT.&lt;br /&gt;
    m.morphogens(:,polariser_i) = P;&lt;br /&gt;
    m.morphogens(:,kapar_i) = kapar_p;&lt;br /&gt;
    m.morphogens(:,kaper_i) = kaper_p;&lt;br /&gt;
    m.morphogens(:,kbpar_i) = kbpar_p;&lt;br /&gt;
    m.morphogens(:,kbper_i) = kbper_p;&lt;br /&gt;
    m.morphogens(:,knor_i) = knor_p;&lt;br /&gt;
    m.morphogens(:,strainret_i) = strainret_p;&lt;br /&gt;
    m.morphogens(:,arrest_i) = arrest_p;&lt;br /&gt;
    m.morphogens(:,id_centre_i) = id_centre_p;&lt;br /&gt;
    m.morphogens(:,s_centre_i) = s_centre_p;&lt;br /&gt;
    m.morphogens(:,id_rim_i) = id_rim_p;&lt;br /&gt;
 &lt;br /&gt;
 %%% USER CODE: FINALISATION&lt;br /&gt;
 &lt;br /&gt;
 % In this section you may modify the mesh in any way whatsoever.&lt;br /&gt;
 %%% END OF USER CODE: FINALISATION&lt;br /&gt;
 &lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 %%% USER CODE: SUBFUNCTIONS&lt;br /&gt;
 % Here you may write any functions of your own, that you want to call from&lt;br /&gt;
 % the interaction function, but never need to call from outside it.&lt;br /&gt;
 % Remember that they do not have access to any variables except those&lt;br /&gt;
 % that you pass as parameters, and cannot change anything except by&lt;br /&gt;
 % returning new values as results.&lt;br /&gt;
 % Whichever section they are called from, they must respect the same&lt;br /&gt;
 % restrictions on what modifications they are allowed to make to the mesh.&lt;br /&gt;
 &lt;br /&gt;
 % For example:&lt;br /&gt;
 &lt;br /&gt;
 % function m = do_something( m )&lt;br /&gt;
 %   % Change m in some way.&lt;br /&gt;
 % end&lt;br /&gt;
 &lt;br /&gt;
 % Call it from the main body of the interaction function like this:&lt;br /&gt;
 %       m = do_something( m );&lt;br /&gt;
&lt;br /&gt;
=====Ideal organistion of the code=====&lt;br /&gt;
&lt;br /&gt;
To write this code more concisely the parts which are repeated between model variants can only be included once rather than being copied for each variant. The switch statements should only be used to include code that is not included in all of the models. The example code shown below produces the same output as the code used above but it has been made more concise.&lt;br /&gt;
&lt;br /&gt;
As a further improvement to the code included above, in the code shown below, code which is needed for the initialisation, and that which is directing something that continues throughout the model has been separated. In the section headed by &amp;quot;if Steps(m)==0  % Setup code &amp;quot;, code specifying the initial state of the model should be written. Code which specifies an interaction that may change thruoghout the model, and code specifying growth parameters, should not be included in this initialisation section. Rather, any code which specifies something that continues throughout the model should be written after the &amp;quot; end &amp;quot; statement that ends the initialisation section. In the section after the initialisation, all code should be written under the sub-headings GRN, KRN or PRN (see the section about these headings below).&lt;br /&gt;
&lt;br /&gt;
 function m = gpt_circle_101118( m )&lt;br /&gt;
 %m = gpt_circle_101118( m )&lt;br /&gt;
 %   Morphogen interaction function.&lt;br /&gt;
 %   Written at 2010-11-26 15:56:38.&lt;br /&gt;
 %   GFtbox revision 3285, 2010-11-26 14:21:47.664044.&lt;br /&gt;
 &lt;br /&gt;
 % The user may edit any part of this function between delimiters&lt;br /&gt;
 % of the form &amp;quot;USER CODE...&amp;quot; and &amp;quot;END OF USER CODE...&amp;quot;.  The&lt;br /&gt;
 % delimiters themselves must not be moved, edited, deleted, or added.&lt;br /&gt;
 &lt;br /&gt;
    if isempty(m), return; end&lt;br /&gt;
 &lt;br /&gt;
    fprintf( 1, &#039;%s found in %s\n&#039;, mfilename(), which(mfilename()) );&lt;br /&gt;
 &lt;br /&gt;
    if exist( &#039;local_setproperties&#039; )&lt;br /&gt;
        m = local_setproperties( m );&lt;br /&gt;
    end&lt;br /&gt;
 &lt;br /&gt;
    realtime = m.globalDynamicProps.currenttime;&lt;br /&gt;
 &lt;br /&gt;
 %%% USER CODE: INITIALISATION&lt;br /&gt;
 &lt;br /&gt;
 % In this section you may modify the mesh in any way whatsoever.&lt;br /&gt;
    if Steps(m)==0 % First iteration&lt;br /&gt;
        % Zero out a lot of stuff to create a blank slate.  If you want to use the&lt;br /&gt;
        % GUI to set any of these things in the initial mesh, then you will need to&lt;br /&gt;
        % comment out the corresponding lines here.&lt;br /&gt;
        m.morphogens(:) = 0;&lt;br /&gt;
        m.morphogenclamp(:) = 0;&lt;br /&gt;
        m.mgen_production(:) = 0;&lt;br /&gt;
        m.mgen_absorption(:) = 0;&lt;br /&gt;
        m.seams(:) = false;&lt;br /&gt;
        m.mgen_dilution(:) = false;&lt;br /&gt;
 &lt;br /&gt;
        % Set up names for variant models.  Useful for running multiple models on a cluster.&lt;br /&gt;
        m.userdata.ranges.modelname.range = ...&lt;br /&gt;
            { &#039;CENTRE_OF_CIRCLE&#039;, ...&lt;br /&gt;
              &#039;CENTRE_SOURCE&#039;, ...&lt;br /&gt;
              &#039;CENTRE_SOURCE_2&#039;, ...&lt;br /&gt;
              &#039;SOURCE_SINK&#039;, ...&lt;br /&gt;
              &#039;SOURCE_SINK_2&#039;, ...&lt;br /&gt;
              &#039;SOURCE_SINK_2_GROWTH&#039;, ...&lt;br /&gt;
              &#039;SOURCE_SINK_2_GROWTH_BOWL&#039; };&lt;br /&gt;
        m.userdata.ranges.modelname.index = 7;                       % CLUSTER&lt;br /&gt;
    end&lt;br /&gt;
    modelname = m.userdata.ranges.modelname.range{m.userdata.ranges.modelname.index};  % CLUSTER&lt;br /&gt;
    	&lt;br /&gt;
    % More code for all iterations.&lt;br /&gt;
 &lt;br /&gt;
    % Set priorities for simultaneous plotting of multiple morphogens, if desired.&lt;br /&gt;
    % m = leaf_mgen_plotpriority( m, {&#039;MGEN1&#039;, &#039;MGEN2&#039;}, [1,2], [0.5,0.75] );&lt;br /&gt;
 &lt;br /&gt;
    % Set colour of polariser gradient arrows.&lt;br /&gt;
    % m = leaf_plotoptions(m,&#039;highgradcolor&#039;,[0,0,0],&#039;lowgradcolor&#039;,[1,0,0]);&lt;br /&gt;
 %%% END OF USER CODE: INITIALISATION&lt;br /&gt;
 &lt;br /&gt;
 %%% SECTION 1: ACCESSING MORPHOGENS AND TIME.&lt;br /&gt;
 %%% AUTOMATICALLY GENERATED CODE: DO NOT EDIT.&lt;br /&gt;
 &lt;br /&gt;
    if isempty(m), return; end&lt;br /&gt;
 &lt;br /&gt;
    setGlobals();&lt;br /&gt;
    global gNEW_KA_PAR gNEW_KA_PER gNEW_KB_PAR gNEW_KB_PER&lt;br /&gt;
    global gNEW_K_NOR gNEW_POLARISER gNEW_STRAINRET gNEW_ARREST&lt;br /&gt;
    dt = m.globalProps.timestep;&lt;br /&gt;
    polariser_i = gNEW_POLARISER;&lt;br /&gt;
    P = m.morphogens(:,polariser_i);&lt;br /&gt;
    [kapar_i,kapar_p,kapar_a,kapar_l] = getMgenLevels( m, &#039;KAPAR&#039; );&lt;br /&gt;
    [kaper_i,kaper_p,kaper_a,kaper_l] = getMgenLevels( m, &#039;KAPER&#039; );&lt;br /&gt;
    [kbpar_i,kbpar_p,kbpar_a,kbpar_l] = getMgenLevels( m, &#039;KBPAR&#039; );&lt;br /&gt;
    [kbper_i,kbper_p,kbper_a,kbper_l] = getMgenLevels( m, &#039;KBPER&#039; );&lt;br /&gt;
    [knor_i,knor_p,knor_a,knor_l] = getMgenLevels( m, &#039;KNOR&#039; );&lt;br /&gt;
    [strainret_i,strainret_p,strainret_a,strainret_l] = getMgenLevels( m, &#039;STRAINRET&#039; );&lt;br /&gt;
    [arrest_i,arrest_p,arrest_a,arrest_l] = getMgenLevels( m, &#039;ARREST&#039; );&lt;br /&gt;
    [id_centre_i,id_centre_p,id_centre_a,id_centre_l] = getMgenLevels( m, &#039;ID_CENTRE&#039; );&lt;br /&gt;
    [s_centre_i,s_centre_p,s_centre_a,s_centre_l] = getMgenLevels( m, &#039;S_CENTRE&#039; );&lt;br /&gt;
    [id_rim_i,id_rim_p,id_rim_a,id_rim_l] = getMgenLevels( m, &#039;ID_RIM&#039; );&lt;br /&gt;
 &lt;br /&gt;
 % Mesh type: circle&lt;br /&gt;
 %       circumpts: 24&lt;br /&gt;
 %       coneangle: 0&lt;br /&gt;
 %         dealign: 0&lt;br /&gt;
 %          height: 0&lt;br /&gt;
 %        innerpts: 0&lt;br /&gt;
 %      randomness: -0.1&lt;br /&gt;
 %           rings: 4&lt;br /&gt;
 %         version: 1&lt;br /&gt;
 %          xwidth: 2&lt;br /&gt;
 %          ywidth: 2 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 %            Morphogen   Diffusion   Decay   Dilution   Mutant&lt;br /&gt;
 %            -------------------------------------------------&lt;br /&gt;
 %                KAPAR        ----    ----       ----     ----&lt;br /&gt;
 %                KAPER        ----    ----       ----     ----&lt;br /&gt;
 %                KBPAR        ----    ----       ----     ----&lt;br /&gt;
 %                KBPER        ----    ----       ----     ----&lt;br /&gt;
 %                 KNOR        ----    ----       ----     ----&lt;br /&gt;
 %            POLARISER        ----    ----       ----     ----&lt;br /&gt;
 %             STRAINRET        ----    ----       ----     ----&lt;br /&gt;
 %               ARREST        ----    ----       ----     ----&lt;br /&gt;
 %            ID_CENTRE        ----    ----       ----     ----&lt;br /&gt;
 %             S_CENTRE         0.5    ----       ----     ----&lt;br /&gt;
 %               ID_RIM        ----    ----       ----     ---- &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 %%% USER CODE: MORPHOGEN INTERACTIONS &lt;br /&gt;
 &lt;br /&gt;
 % In this section you may modify the mesh in any way that does not&lt;br /&gt;
 % alter the set of nodes.&lt;br /&gt;
 &lt;br /&gt;
    if Steps(m)==0  % Setup code.&lt;br /&gt;
        % Put any code here that should only be performed at the start of&lt;br /&gt;
        % the simulation, for example, to set up initial morphogen values.&lt;br /&gt;
        &lt;br /&gt;
        % m.nodes is the set of vertex positions, an N by 3 array if there&lt;br /&gt;
        % are N vertices.  Row number K contains the X, Y, and Z&lt;br /&gt;
        % coordinates of the Kth vertex. To obtain a list of the X&lt;br /&gt;
        % coordinates of every vertex, write m.nodes(:,1).  The Y&lt;br /&gt;
        % coordinates are given by m.nodes(:,2) and the Z coordinates by&lt;br /&gt;
        % m.nodes(:,3).&lt;br /&gt;
        switch modelname&lt;br /&gt;
            case { &#039;CENTRE_OF_CIRCLE&#039;, &#039;CENTRE_SOURCE&#039;, ...&lt;br /&gt;
                   &#039;CENTRE_SOURCE_2&#039;, &#039;SOURCE_SINK&#039; }&lt;br /&gt;
                CENTRE_RADIUS = 0.5;&lt;br /&gt;
                CENTRE_POSITION = [ 0, 0 ];&lt;br /&gt;
            case { &#039;SOURCE_SINK_2&#039;, &#039;SOURCE_SINK_2_GROWTH&#039; }&lt;br /&gt;
                CENTRE_RADIUS = 0.2;&lt;br /&gt;
                CENTRE_POSITION = [ 0.4, 0 ];&lt;br /&gt;
            case &#039;SOURCE_SINK_2_GROWTH_BOWL&#039;&lt;br /&gt;
                m = leaf_setzeroz( m );&lt;br /&gt;
                m = leaf_bowlz( m, -0.1 );&lt;br /&gt;
                CENTRE_RADIUS = 0.2;&lt;br /&gt;
                CENTRE_POSITION = [ 0.4, 0 ];&lt;br /&gt;
        end&lt;br /&gt;
        radii = sqrt( (m.nodes(:,1) - CENTRE_POSITION(1)).^2 + ...&lt;br /&gt;
                      (m.nodes(:,2) - CENTRE_POSITION(2)).^2 );&lt;br /&gt;
        id_centre_p(radii &amp;lt;= CENTRE_RADIUS) = 1;&lt;br /&gt;
        id_centre_l = id_centre_p * id_centre_a;&lt;br /&gt;
 &lt;br /&gt;
        rimnodes = radii &amp;gt; max(radii)*0.8;&lt;br /&gt;
        id_rim_p( rimnodes ) = 1;&lt;br /&gt;
        id_rim_l = id_rim_p * id_rim_a;&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    switch modelname&lt;br /&gt;
        case &#039;CENTRE_SOURCE&#039;&lt;br /&gt;
            % @@GRN Gene Regulatory Network&lt;br /&gt;
            % s_centre is produced by id_centre at a rate of 0.1.&lt;br /&gt;
            % d(s_centre_p)/dt = 0.1*id_centre_l.&lt;br /&gt;
            m.mgen_production( :, s_centre_i ) = 0.1*id_centre_l;&lt;br /&gt;
            % s_centre decays everywhere at a constant rate&lt;br /&gt;
            % proportional to its concentration.&lt;br /&gt;
            m = leaf_mgen_absorption( m, s_centre_i, 10 );&lt;br /&gt;
        case &#039;CENTRE_SOURCE_2&#039;&lt;br /&gt;
            % @@GRN Gene Regulatory Network&lt;br /&gt;
            % s_centre is initially 1 everywhere that id_centre is&lt;br /&gt;
            % present, and is held fixed at that value.&lt;br /&gt;
            s_centre_p( id_centre_l &amp;gt; 0 ) = 1;&lt;br /&gt;
            m.morphogenclamp( id_centre_l &amp;gt; 0, s_centre_i) = 1;&lt;br /&gt;
 &lt;br /&gt;
            % s_centre decays everywhere at a constant rate&lt;br /&gt;
            % proportional to its concentration.&lt;br /&gt;
            m = leaf_mgen_absorption( m, s_centre_i, 10 );&lt;br /&gt;
        case { &#039;SOURCE_SINK&#039;, &#039;SOURCE_SINK_2&#039; }&lt;br /&gt;
            % @@GRN Gene Regulatory Network&lt;br /&gt;
            % s_centre is initially 1 everywhere that id_centre is&lt;br /&gt;
            % present, and is held fixed at that value.&lt;br /&gt;
            s_centre_p( id_centre_l &amp;gt; 0 ) = 1;&lt;br /&gt;
            s_centre_l = s_centre_p * s_centre_a;&lt;br /&gt;
            m.morphogenclamp( id_centre_l &amp;gt; 0, s_centre_i ) = 1;&lt;br /&gt;
 &lt;br /&gt;
            % s_centre is initially 0 everywhere that id_rim is&lt;br /&gt;
            % present, and is held fixed at that value.&lt;br /&gt;
            m.morphogenclamp( id_rim_l &amp;gt; 0, s_centre_i ) = 1;&lt;br /&gt;
 &lt;br /&gt;
            % s_centre decays everywhere at a constant rate&lt;br /&gt;
            % proportional to its concentration.&lt;br /&gt;
            m = leaf_mgen_absorption( m, s_centre_i, 0 );&lt;br /&gt;
        case &#039;SOURCE_SINK_2_GROWTH&#039;&lt;br /&gt;
            % @@GRN Gene Regulatory Network&lt;br /&gt;
            % s_centre is initially 1 everywhere that id_centre is&lt;br /&gt;
            % present, and is held fixed at that value.&lt;br /&gt;
            s_centre_p( id_centre_l &amp;gt; 0 ) = 1;&lt;br /&gt;
            s_centre_l = s_centre_p * s_centre_a;&lt;br /&gt;
            m.morphogenclamp( id_centre_l &amp;gt; 0, s_centre_i ) = 1;&lt;br /&gt;
 &lt;br /&gt;
            % s_centre is initially 0 everywhere that id_rim is&lt;br /&gt;
            % present, and is held fixed at that value.&lt;br /&gt;
            m.morphogenclamp( id_rim_l &amp;gt; 0, s_centre_i ) = 1;&lt;br /&gt;
 &lt;br /&gt;
            % s_centre decays everywhere at a constant rate&lt;br /&gt;
            % proportional to its concentration.&lt;br /&gt;
            m = leaf_mgen_absorption( m, s_centre_i, 0 );&lt;br /&gt;
            % @@KRN Growth Regulatory Network&lt;br /&gt;
            kapar_p = 0.1 * pro( 1, id_centre_l );&lt;br /&gt;
            kbpar_p = kapar_p;&lt;br /&gt;
            kaper_p = kapar_p;&lt;br /&gt;
            kbper_p = kaper_p;&lt;br /&gt;
        case &#039;SOURCE_SINK_2_GROWTH_BOWL&#039;&lt;br /&gt;
            % @@GRN Gene Regulatory Network&lt;br /&gt;
            % s_centre is initially 1 everywhere that id_centre is&lt;br /&gt;
            % present, and is held fixed at that value.&lt;br /&gt;
            s_centre_p( id_centre_l &amp;gt; 0 ) = 1;&lt;br /&gt;
            s_centre_l = s_centre_p * s_centre_a;&lt;br /&gt;
            m.morphogenclamp( id_centre_l &amp;gt; 0, s_centre_i ) = 1;&lt;br /&gt;
 &lt;br /&gt;
            % s_centre is initially 0 everywhere that id_rim is&lt;br /&gt;
            % present, and is held fixed at that value.&lt;br /&gt;
            m.morphogenclamp( id_rim_l &amp;gt; 0, s_centre_i ) = 1;&lt;br /&gt;
 &lt;br /&gt;
            % s_centre decays everywhere at a constant rate&lt;br /&gt;
            % proportional to its concentration.&lt;br /&gt;
            m = leaf_mgen_absorption( m, s_centre_i, 0 );&lt;br /&gt;
 &lt;br /&gt;
            % @@KRN Growth Regulatory Network&lt;br /&gt;
            kapar_p = 0.1 * pro( 1, id_centre_l );&lt;br /&gt;
            kbpar_p = kapar_p;&lt;br /&gt;
            kaper_p = kapar_p;&lt;br /&gt;
            kbper_p = kaper_p;&lt;br /&gt;
    end&lt;br /&gt;
 &lt;br /&gt;
    if false&lt;br /&gt;
        figure(1);&lt;br /&gt;
        plot3( m.nodes(m.tricellvxs,1)&#039;, ...&lt;br /&gt;
               m.nodes(m.tricellvxs,2)&#039;, ...&lt;br /&gt;
               s_centre_p(m.tricellvxs)&#039; );&lt;br /&gt;
    end&lt;br /&gt;
 %%% END OF USER CODE: MORPHOGEN INTERACTIONS&lt;br /&gt;
 &lt;br /&gt;
 %%% SECTION 3: INSTALLING MODIFIED VALUES BACK INTO MESH STRUCTURE&lt;br /&gt;
 %%% AUTOMATICALLY GENERATED CODE: DO NOT EDIT.&lt;br /&gt;
     m.morphogens(:,polariser_i) = P;&lt;br /&gt;
    m.morphogens(:,kapar_i) = kapar_p;&lt;br /&gt;
    m.morphogens(:,kaper_i) = kaper_p;&lt;br /&gt;
    m.morphogens(:,kbpar_i) = kbpar_p;&lt;br /&gt;
    m.morphogens(:,kbper_i) = kbper_p;&lt;br /&gt;
    m.morphogens(:,knor_i) = knor_p;&lt;br /&gt;
    m.morphogens(:,strainret_i) = strainret_p;&lt;br /&gt;
    m.morphogens(:,arrest_i) = arrest_p;&lt;br /&gt;
    m.morphogens(:,id_centre_i) = id_centre_p;&lt;br /&gt;
    m.morphogens(:,s_centre_i) = s_centre_p;&lt;br /&gt;
    m.morphogens(:,id_rim_i) = id_rim_p;&lt;br /&gt;
 &lt;br /&gt;
 %%% USER CODE: FINALISATION&lt;br /&gt;
 &lt;br /&gt;
 % In this section you may modify the mesh in any way whatsoever.&lt;br /&gt;
 %%% END OF USER CODE: FINALISATION &lt;br /&gt;
 &lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 %%% USER CODE: SUBFUNCTIONS&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 %  Here you may write any functions of your own, that you want to call from&lt;br /&gt;
 % the interaction function, but never need to call from outside it.&lt;br /&gt;
 % Remember that they do not have access to any variables except those&lt;br /&gt;
 % that you pass as parameters, and cannot change anything except by&lt;br /&gt;
 % returning new values as results.&lt;br /&gt;
 % Whichever section they are called from, they must respect the same&lt;br /&gt;
 % restrictions on what modifications they are allowed to make to the mesh.&lt;br /&gt;
 &lt;br /&gt;
 % For example:&lt;br /&gt;
 &lt;br /&gt;
 % function m = do_something( m )&lt;br /&gt;
 %   % Change m in some way.&lt;br /&gt;
 % end&lt;br /&gt;
 &lt;br /&gt;
 % Call it from the main body of the interaction function like this:&lt;br /&gt;
 %       m = do_something( m );&lt;br /&gt;
&lt;br /&gt;
== Lesson 2: Specifying anisotropic growth using the interaction function ==&lt;br /&gt;
&lt;br /&gt;
==PRN, GRN, KRN==&lt;br /&gt;
 &lt;br /&gt;
To maximise the ease with which the code written in the interaction function can be related to the biological  function it represents, code should be written under one of three headings which describes how it is influencing growth. &lt;br /&gt;
&lt;br /&gt;
All code specifying interactions between factors in the model which do not directly influence the polariser or growth rates should be written under the heading &#039;&#039;&#039;GRN&#039;&#039;&#039;, which stands for &amp;quot;gene regulatory network&amp;quot;. For example, if an identity region produces a diffusible signal in a given model, the code specifying this should be written in a GRN section.&lt;br /&gt;
&lt;br /&gt;
Code which specifies growth rates, for example by assigning values to kapar, kaper etc., should be written under the heading &#039;&#039;&#039;KRN&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Code which specifies the setting up of the polariser, for example by directing production /  decay of the polariser, should be written under the heading &#039;&#039;&#039;PRN&#039;&#039;&#039;, which stands for &amp;quot;polariser regulatory network&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Polariser gradients=&lt;br /&gt;
&lt;br /&gt;
In order for anisotropic growth to be specified, a polariser gradient must be created across the canvas to provide directional information. &lt;br /&gt;
&lt;br /&gt;
One way to create a gradient of polariser is to have production of polariser in a restricted region coupled with decay of the polariser everywhere. When this method is used, it is possible for the polariser gradient to become very shallow and somewhat randomised in some regions which creates problems for specifying growth. Biologically, there must be a limit to the size of the polariser gradient that a cell can detect. To overcome these problems with shallow polariser gradients, in regions where shallow gradients are present, GFTbox can be used to either set the polariser gradient to zero, or to fix the direction of the polariser. &lt;br /&gt;
&lt;br /&gt;
There are two different ways that the steepness of an exponential gradient can be measured. The relative gradient describes the percentage change in the concentration of a chemical over a fixed distance. Between any two points a fixed distance apart along an exponential gradient of a chemical, the percentage change in concentration will be the same, so the relative gradient will be the same everywhere. The absolute gradient describes the actual difference in concentration between one point and another (this could, for example be the difference in the number of molecules between one side of a cell and another). &lt;br /&gt;
&lt;br /&gt;
Below code is presented which specifies the production of polariser in a central circular identity region, with decay of polariser throughout the canvas. The concentration of the polariser is clamped to a fixed level in the central identity region. When the absolute value of the polariser gradient drops below a threshold, the polariser is fixed to have the same direction that it has where the gradient is steeper. There is an initial growth-free set-up period which allows the polariser gradient to become established before growth starts.&lt;br /&gt;
&lt;br /&gt;
Code which is not part of the interaction function template (code that is specific to this model) is highlighted in bold. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: CornflowerBlue&amp;quot;&amp;gt;% Section 1&amp;lt;/span&amp;gt;&lt;br /&gt;
 function m = gpt_polarised_101126( m )&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%m = gpt_polarised_101126( m )&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%   Morphogen interaction function.&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%   Written at 2010-11-29 12:26:00.&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%   GFtbox revision 3285, 2010-11-26 14:21:47.664044.&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% The user may edit any part of this function between delimiters&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% of the form &amp;quot;USER CODE...&amp;quot; and &amp;quot;END OF USER CODE...&amp;quot;.  The&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% delimiters themselves must not be moved, edited, deleted, or added. &amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
    if isempty(m), return; end&lt;br /&gt;
 &lt;br /&gt;
    fprintf( 1, &#039;&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%s found in %s\n&#039;, mfilename(), which(mfilename()) );&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
    if exist( &#039;local_setproperties&#039; )&lt;br /&gt;
        m = local_setproperties( m );&lt;br /&gt;
    end&lt;br /&gt;
 &lt;br /&gt;
    realtime = m.globalDynamicProps.currenttime;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: CornflowerBlue&amp;quot;&amp;gt;% Section 2&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%%% USER CODE: INITIALISATION&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% In this section you may modify the mesh in any way whatsoever.&amp;lt;/span&amp;gt;&lt;br /&gt;
    if Steps(m)==0 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% First iteration&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% Zero out a lot of stuff to create a blank slate.  If you want to use the&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% GUI to set any of these things in the initial mesh, then you will need to&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% comment out the corresponding lines here.&amp;lt;/span&amp;gt;&lt;br /&gt;
        m.morphogens(:) = 0;&lt;br /&gt;
        m.morphogenclamp(:) = 0;&lt;br /&gt;
        m.mgen_production(:) = 0;&lt;br /&gt;
        m.mgen_absorption(:) = 0;&lt;br /&gt;
        m.seams(:) = false;&lt;br /&gt;
        m.mgen_dilution(:) = false;&lt;br /&gt;
 &lt;br /&gt;
        &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% Set up names for variant models.  Useful for running multiple models on a cluster.&amp;lt;/span&amp;gt;&lt;br /&gt;
        m.userdata.ranges.modelname.range = { ...&lt;br /&gt;
            &#039;CENTRE_POL&#039; };&lt;br /&gt;
        m.userdata.ranges.modelname.index = 1;                       &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% CLUSTER&amp;lt;/span&amp;gt;&lt;br /&gt;
    end&lt;br /&gt;
    modelname = m.userdata.ranges.modelname.range{m.userdata.ranges.modelname.index};  &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% CLUSTER&amp;lt;/span&amp;gt;&lt;br /&gt;
    switch modelname&lt;br /&gt;
        case  &#039;CENTRE_POL&#039; &lt;br /&gt;
            &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% Set up the parameters (e.g. mutations) for this model here.&amp;lt;/span&amp;gt;&lt;br /&gt;
        otherwise&lt;br /&gt;
            &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% If you reach here, you probably forgot a case.&amp;lt;/span&amp;gt;&lt;br /&gt;
    end&lt;br /&gt;
    	&lt;br /&gt;
    &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% More code for all iterations.&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
    &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% Set priorities for simultaneous plotting of multiple morphogens, if desired.&amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% m = leaf_mgen_plotpriority( m, {&#039;MGEN1&#039;, &#039;MGEN2&#039;}, [1,2], [0.5,0.75] );&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
    &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% Set colour of polariser gradient arrows.&amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% m = leaf_plotoptions(m,&#039;highgradcolor&#039;,[0,0,0],&#039;lowgradcolor&#039;,[1,0,0]);&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%%% END OF USER CODE: INITIALISATION&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: CornflowerBlue&amp;quot;&amp;gt;% Section 3&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%%% SECTION 1: ACCESSING MORPHOGENS AND TIME.&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%%% AUTOMATICALLY GENERATED CODE: DO NOT EDIT.&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
    if isempty(m), return; end&lt;br /&gt;
 &lt;br /&gt;
    setGlobals();&lt;br /&gt;
    global gNEW_KA_PAR gNEW_KA_PER gNEW_KB_PAR gNEW_KB_PER&lt;br /&gt;
    global gNEW_K_NOR gNEW_POLARISER gNEW_STRAINRET gNEW_ARREST&lt;br /&gt;
    dt = m.globalProps.timestep;&lt;br /&gt;
    polariser_i = gNEW_POLARISER;&lt;br /&gt;
    P = m.morphogens(:,polariser_i);&lt;br /&gt;
    [kapar_i,kapar_p,kapar_a,kapar_l] = getMgenLevels( m, &#039;KAPAR&#039; );&lt;br /&gt;
    [kaper_i,kaper_p,kaper_a,kaper_l] = getMgenLevels( m, &#039;KAPER&#039; );&lt;br /&gt;
    [kbpar_i,kbpar_p,kbpar_a,kbpar_l] = getMgenLevels( m, &#039;KBPAR&#039; );&lt;br /&gt;
    [kbper_i,kbper_p,kbper_a,kbper_l] = getMgenLevels( m, &#039;KBPER&#039; );&lt;br /&gt;
    [knor_i,knor_p,knor_a,knor_l] = getMgenLevels( m, &#039;KNOR&#039; );&lt;br /&gt;
    [strainret_i,strainret_p,strainret_a,strainret_l] = getMgenLevels( m, &#039;STRAINRET&#039; );&lt;br /&gt;
    [arrest_i,arrest_p,arrest_a,arrest_l] = getMgenLevels( m, &#039;ARREST&#039; );&lt;br /&gt;
    [id_centre_i,id_centre_p,id_centre_a,id_centre_l] = getMgenLevels( m, &#039;ID_CENTRE&#039; );&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% Mesh type: circle&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%       circumpts: 96&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%       coneangle: 0&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%         dealign: 0&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%          height: 0&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%        innerpts: 0&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%      randomness: 0.1&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%           rings: 16&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%         version: 1&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%          xwidth: 2&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%          ywidth: 2 &amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%            Morphogen   Diffusion   Decay   Dilution   Mutant&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%            -------------------------------------------------&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%                KAPAR        ----    ----       ----     ----&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%                KAPER        ----    ----       ----     ----&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%                KBPAR        ----    ----       ----     ----&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%                KBPER        ----    ----       ----     ----&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%                 KNOR        ----    ----       ----     ----&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%            POLARISER        0.01     0.1       ----     ----&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%            STRAINRET        ----    ----       ----     ----&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%               ARREST        ----    ----       ----     ----&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%            ID_CENTRE        ----    ----       ----     ---- &amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%%% USER CODE: MORPHOGEN INTERACTIONS&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% In this section you may modify the mesh in any way that does not&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: CornflowerBlue&amp;quot;&amp;gt;% Section 4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% alter the set of nodes.&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
    if Steps(m)==0  &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% Setup code.    &amp;lt;/span&amp;gt;&lt;br /&gt;
        switch modelname&lt;br /&gt;
            case { &#039;CENTRE_POL&#039; }&lt;br /&gt;
                &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% Make a polariser.&amp;lt;/span&amp;gt;&lt;br /&gt;
             CENTRE_RADIUS = 0.3;&lt;br /&gt;
              &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% here a circular central identity region&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% is being specified as was done in the&amp;lt;/span&amp;gt;&lt;br /&gt;
              &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% examples above.&amp;lt;/span&amp;gt;&lt;br /&gt;
              radii = sqrt( m.nodes(:,1).^2 + m.nodes(:,2).^2 );  &lt;br /&gt;
              &lt;br /&gt;
              id_centre_p(radii &amp;lt;= CENTRE_RADIUS) = 1; &lt;br /&gt;
                &lt;br /&gt;
                &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% @@PRN Polariser Regulatory Network&amp;lt;/span&amp;gt;&lt;br /&gt;
                &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%specifies the diffusion rate of polariser&amp;lt;/span&amp;gt;&lt;br /&gt;
                m = leaf_mgen_conductivity( m, &#039;POLARISER&#039;, 0.01 );  &lt;br /&gt;
             &lt;br /&gt;
                &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% specifies degradation rate of polariser&amp;lt;/span&amp;gt;&lt;br /&gt;
                m = leaf_mgen_absorption( m, &#039;POLARISER&#039;, 0.1 );&lt;br /&gt;
              &lt;br /&gt;
                &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% below, the function leaf_setproperty is used to fix the &amp;lt;/span&amp;gt;&lt;br /&gt;
                &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% polariser gradient when it drops below an absolute   &amp;lt;/span&amp;gt;&lt;br /&gt;
                &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% value of 0.002&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
                &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% the minimum gradient beyond which fixing is done&amp;lt;/span&amp;gt;&lt;br /&gt;
                 m = leaf_setproperty( m, ...                     &lt;br /&gt;
                     &#039;mingradient&#039;, 0.002, ...       &lt;br /&gt;
                     ... &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% setting relativepolgrad to false specifies the&amp;lt;/span&amp;gt;&lt;br /&gt;
                     ... &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% absolute gradient should be measured&amp;lt;/span&amp;gt;&lt;br /&gt;
                     &#039;relativepolgrad&#039;, false, ...&lt;br /&gt;
                     ... &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% setting relativepolgrad to false specifies the&amp;lt;/span&amp;gt;&lt;br /&gt;
                     ... &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% absolute gradient should be measured&amp;lt;/span&amp;gt;&lt;br /&gt;
                     &#039;usefrozengradient&#039;, true ...   &lt;br /&gt;
                     ... &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% setting usefrozengradient to true specifies&amp;lt;/span&amp;gt;&lt;br /&gt;
                     ... &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% that the polariser should be fixed in the direction&amp;lt;/span&amp;gt;&lt;br /&gt;
                     ... &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% it has where the gradient is steeper.&amp;lt;/span&amp;gt;&lt;br /&gt;
                     );&lt;br /&gt;
  &lt;br /&gt;
            otherwise&lt;br /&gt;
                &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% If you reach here, you probably forgot a case.&amp;lt;/span&amp;gt;&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    GROWTH_START_TIME = 4.9; &lt;br /&gt;
    &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% the delay time at the beginning of the simulation&amp;lt;/span&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    switch modelname&lt;br /&gt;
        case { &#039;CENTRE_POL&#039;, }  &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% @@model CENTRE_POL&amp;lt;/span&amp;gt;&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% @@PRN Polariser Regulatory Network&amp;lt;/span&amp;gt;&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% this clamps the polariser concentration where&amp;lt;/span&amp;gt;&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% id_centre is present  &amp;lt;/span&amp;gt;&lt;br /&gt;
         m.morphogenclamp( id_centre_p==1, polariser_i ) = 1;  &lt;br /&gt;
     &lt;br /&gt;
       P = 0.5 * id_centre_p;&amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% polariser value is 0.5* the value of id_centre-p&amp;lt;/span&amp;gt;&lt;br /&gt;
        otherwise&lt;br /&gt;
            &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% If you reach here, you probably forgot a case.&amp;lt;/span&amp;gt;&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    if realtime &amp;gt; GROWTH_START_TIME    &lt;br /&gt;
        &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% if the simulation time (realtime) passes the GROWTH_START_TIME&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% growth rates will apply&amp;lt;/span&amp;gt;&lt;br /&gt;
                            &lt;br /&gt;
        switch modelname&lt;br /&gt;
         case &#039;CENTRE_POL&#039;  &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% @@model CENTRE_POL&amp;lt;/span&amp;gt;&lt;br /&gt;
             kapar_p(:) = 0.05; &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% growth parallel to the polariser &amp;lt;/span&amp;gt;&lt;br /&gt;
             &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% is greater than growth perpendicular&amp;lt;/span&amp;gt;&lt;br /&gt;
             kaper_p(:) = 0;   &lt;br /&gt;
             kbpar_p = kapar_p;  &lt;br /&gt;
             kbper_p = kaper_p;  &lt;br /&gt;
             knor_p(:) = 0;  &lt;br /&gt;
            &lt;br /&gt;
            otherwise&lt;br /&gt;
                &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% If you reach here, you probably forgot a case.&amp;lt;/span&amp;gt;&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: CornflowerBlue&amp;quot;&amp;gt;% Section 5&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%%% END OF USER CODE: MORPHOGEN INTERACTIONS&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%%% SECTION 3: INSTALLING MODIFIED VALUES BACK INTO MESH STRUCTURE&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%%% AUTOMATICALLY GENERATED CODE: DO NOT EDIT.&amp;lt;/span&amp;gt;&lt;br /&gt;
    m.morphogens(:,polariser_i) = P;&lt;br /&gt;
    m.morphogens(:,kapar_i) = kapar_p;&lt;br /&gt;
    m.morphogens(:,kaper_i) = kaper_p;&lt;br /&gt;
    m.morphogens(:,kbpar_i) = kbpar_p;&lt;br /&gt;
    m.morphogens(:,kbper_i) = kbper_p;&lt;br /&gt;
    m.morphogens(:,knor_i) = knor_p;&lt;br /&gt;
    m.morphogens(:,strainret_i) = strainret_p;&lt;br /&gt;
    m.morphogens(:,arrest_i) = arrest_p;&lt;br /&gt;
    m.morphogens(:,id_centre_i) = id_centre_p;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%%% USER CODE: FINALISATION&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% In this section you may modify the mesh in any way whatsoever.&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%%% END OF USER CODE: FINALISATION&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%%% USER CODE: SUBFUNCTIONS&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: CornflowerBlue&amp;quot;&amp;gt;% Section 6&amp;lt;/span&amp;gt;&lt;br /&gt;
 function m = local_setproperties( m )&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% This function is called at time zero in the INITIALISATION section of the&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% interaction function.  It provides commands to set each of the properties&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% that are contained in m.globalProps.  Uncomment whichever ones you would&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% like to set yourself, and put in whatever value you want.&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% Some of these properties are for internal use only and should never be&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% set by the user.  At some point these will be moved into a different&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% component of m, but for the present, just don&#039;t change anything unless&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% you know what it is you&#039;re changing. &amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;%lots of code appears here but doesn&#039;t need to be modified so it has been left out here&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 end&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: CornflowerBlue&amp;quot;&amp;gt;% Section 7&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% Here you may write any functions of your own, that you want to call from&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% the interaction function, but never need to call from outside it.&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% Remember that they do not have access to any variables except those&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% that you pass as parameters, and cannot change anything except by&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% returning new values as results.&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% Whichever section they are called from, they must respect the same&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color: Green&amp;quot;&amp;gt;% restrictions on what modifications they are allowed to make to the mesh.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Simulation=&lt;br /&gt;
&lt;br /&gt;
To run the simulation, use the region at the bottom of the GUI called &#039;&#039;&#039;Run&#039;&#039;&#039;. You can either press the &#039;&#039;&#039;Step&#039;&#039;&#039; button to progress the simulation one step at a time, or you can run the simulation for a defined number of steps, for a defined time, or until the canvas reaches a particular increase in area.&lt;br /&gt;
&lt;br /&gt;
The step size for the simulation can be controlled in the simulation section of the GUI, in the box that says &#039;&#039;&#039;Timescale&#039;&#039;&#039;.  As a rule of thumb, growth rate * time step should be less than 0.01.&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=GFtbox&amp;diff=4744</id>
		<title>GFtbox</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=GFtbox&amp;diff=4744"/>
		<updated>2011-06-24T14:21:42Z</updated>

		<summary type="html">&lt;p&gt;Jrk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[GFtbox Tutorial pages|&#039;&#039;Tutorials&#039;&#039;]] and [https://sourceforge.net/p/gftbox/ &#039;&#039;Download&#039;&#039;]&amp;lt;br&amp;gt;&lt;br /&gt;
==What is &#039;&#039;GFtbox&#039;&#039;?==&lt;br /&gt;
[[Image:GPT_thumbnail2.png|thumb|left|100px]]&lt;br /&gt;
&#039;&#039;&#039;We wish to understand&#039;&#039;&#039; how patterns of gene activity in biological organs influence the developing shape. Our suggestion is that genes may regulate growth direction independently of growth rate. We formalised our ideas in the Growing Polarised Tissue Framework (reference 1, below). The icon is based on Fig. 4 of reference 1, and shows an asymmetrical spur that has grown under the influence of a polariser gradient, indicated by the arrows.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Intuition is not&#039;&#039;&#039; a good guide to the behaviour of tissue growing under the influence of patterns of growth. Patterns interact with each other and the continuous sheet of tissue to produce complex shapes. It is therefore necessary to translate intuition into a mathematical model whose behaviour can be calculated. &#039;&#039;GFtbox&#039;&#039; is a package for creating and simulating such models.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;A &#039;&#039;GFtbox&#039;&#039; project comprises two parts&#039;&#039;&#039;, the Mesh and the Interaction function. The Mesh is a finite element model of the tissue, together with patterns of gene activity, tissue identity, and biochemical properties. The Interaction function specifies the local interactions of these properties.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Does &#039;&#039;GFtbox&#039;&#039; work correctly?&#039;&#039;&#039; Validation is an important question to be asked of all modelling software. There are various simple models for which analytical solutions can be obtained and compared with the computations performed by GFtbox. An extensive range of such validation tests can be found in Supplemental Text 1 of reference 1.&lt;br /&gt;
&lt;br /&gt;
We have used the &#039;&#039;&#039;GPT-framework&#039;&#039;&#039; to understand the development of the Snapdragon flower (reference 2 below). &#039;&#039;&#039;Using &#039;&#039;GFtbox&#039;&#039;&#039;&#039;&#039; we started with a crown shaped sheet of tissue (the canvas), laid out observed or hypothesised patterns of regulatory activity and then grew the canvas in 3D. Patterning can continue during growth and the final shape was compared quantitatively with its biological counterpart -- so &#039;&#039;&#039;testing the hypotheses&#039;&#039;&#039; made in the model (reference 3 below).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;To work with &#039;&#039;GFtbox&#039;&#039;&#039;&#039;&#039; is to practice thinking quantitatively about the relationship between genes, growth and form.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;References&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;1. Kennaway R, Coen E, Green A, Bangham A, 2011 Generation of Diverse Biological Forms through Combinatorial Interactions between Tissue Polarity and Growth.   [http://www.ploscompbiol.org/article/info:doi/10.1371/journal.pcbi.1002071 PLoS Comput Biol 7(6): e1002071.]&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;2. Amelia Green, Richard Kennaway, Andrew Hanna, Andrew Bangham, Enrico Coen, &amp;quot;Genetic Control of Organ Shape and Tissue Polarity&amp;quot;, [http://dx.doi.org/10.1371/journal.pbio.1000537 PLoS Biol, 2010, vol.8, no.11.]&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;3. Min-Long Cui, Lucy Copsey, Amelia Green, Andrew Bangham, Enrico Coen, &amp;quot;Quantitative Control of Organ Shape by Combinatorial Gene Activity&amp;quot;, [http://dx.doi.org/10.1371/journal.pbio.1000538 PLoS Biol, 2010, vol.8, no.11.]&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==What does &#039;&#039;GFtbox&#039;&#039; require?==&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;GFtbox&#039;&#039; is written in [http://en.wikipedia.org/wiki/MATLAB  Matlab].&#039;&#039;&#039; It does not require any extra Mathworks toolboxes, nor any separately compiled modules. Matlab is available as a [http://www.mathworks.com/products/matlab/tryit.html 30 day free trial] and as a [http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition]. &#039;&#039;GFtbox&#039;&#039; comprises around 1000 subroutines and 50,000 lines of code. It allows individual models, the part that a user writes, to be very compact -- 10 to 100 lines of Matlab code. For example, the model shown in Fig. 1 has a mesh that was created using the graphical user interface, and this code in its interaction function:&lt;br /&gt;
&lt;br /&gt;
    if (Steps(m)==0) &amp;amp;&amp;amp; m.globalDynamicProps.doinit  % Initialisation code.&lt;br /&gt;
        id_a_p(m.nodes(:,1) &amp;lt; -0.03) = 1; % set up region for A where identity factor A is represented by id_a_p&lt;br /&gt;
        id_b_p(m.nodes(:,2) &amp;lt; -0.01) = 1; % set up region for B&lt;br /&gt;
    else&lt;br /&gt;
        % @@KRN Growth Regulatory Network&lt;br /&gt;
        kapar_p(:) = id_a_l .* inh(1,id_b_l); % growth rate&lt;br /&gt;
        kaper_p(:) = kapar_p; % isotropic growth&lt;br /&gt;
        kbpar_p(:) = kapar_p; % same on both sides of the sheet&lt;br /&gt;
        kbper_p(:) = kapar_p; % same&lt;br /&gt;
        knor_p(:)  = 0;       % thickness not growing&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|[[Image:GPT_why_matlab-2011-05-05-0005_First.png|288px|left|The Labguide logo]]&lt;br /&gt;
||&amp;lt;wikiflv width=&amp;quot;352&amp;quot; height=&amp;quot;288&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_why_matlab-2011-05-05-0005.flv|GPT_why_matlab-2011-05-05-0005.png‎&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
|-align=&amp;quot;top&amp;quot;&lt;br /&gt;
|&amp;lt;center&amp;gt;Fig. 1. Mesh with two intersecting patterns of growth factors.  Blue is factor A, Green factor B&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;A movie of the mesh growing and subdividing. The intensity of red represents the growth rate&amp;lt;/center&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why Matlab?&#039;&#039;&#039; The language suits our problem - the reasoning goes like this. Tissue is represented by a thin 3D mesh. Growth factors levels vary spatially forming patterns, e.g. Fig. 1. Here there are two, &#039;&#039;A&#039;&#039; and &#039;&#039;B&#039;&#039;. We might make the hypothesis that the growth rate is specified by &#039;&#039;A&#039;&#039; but partially inhibited by &#039;&#039;B&#039;&#039; (inhibited by an amount &#039;&#039;K&#039;&#039;). This is a simple idea that can be expressed in Matlab equally simply by writing &#039;&#039;Growth=A .* inh(K, B)&#039;&#039;. This is because variables &#039;&#039;A&#039;&#039; and &#039;&#039;B&#039;&#039; can represent vectors - in this case a level for each node in the mesh. We also define a general inhibition function (&#039;&#039;inh&#039;&#039;).  It means that it is straightforward to convert our thoughts on the biology into a programmatic description of a computational model. Moreover, the language is well documented with lots of convenient tools. In particular, Matlab has an extensive library of portable graphical user interface (GUI) functions - and this is convenient for producing tools to visualise the mesh and patterns of growth factors. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The computational bottleneck&#039;&#039;&#039; in &#039;&#039;GFtbox&#039;&#039; is solving the finite element equations. We find that the Matlab [http://www.mathworks.com/help/techdoc/ref/cgs.html cgs] function is quicker and more accurate than alternatives from other sources (e.g. [http://software.intel.com/en-us/articles/intel-mkl/ lsqr], [http://www.culatools.com/forums/viewtopic.php?f=14&amp;amp;t=721 culaSgesvd]). The speed of &#039;&#039;GFtbox&#039;&#039; appears to be limited by memory-cpu bandwidth rather than cpu speed. It runs best interactively on a 64 bit machine with a large memory.&lt;br /&gt;
&lt;br /&gt;
Growing &#039;&#039;GFtbox&#039;&#039; models does not require the GUI. Everything done by the GUI can also be done at the Matlab command prompt or within a Matlab script file, Multiple models can be run as Matlab scripts on a computing cluster, and the results examined visually in the GUI. &lt;br /&gt;
&lt;br /&gt;
Matlab is sufficiently flexible that inexperienced programmers (and half our team are biologists, not programmers) can pick it up on-the-fly. It is an interpreted language, which makes it easy to step through code to follow what is happening ni case of difficulty. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Matlab runs on&#039;&#039;&#039; Windows, Mac and Linux. The key Matlab numerical algorithms are documented and generally visible and there is a large user-base providing lots of web based help. &lt;br /&gt;
&lt;br /&gt;
==How to start using &#039;&#039;GFtbox&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
[http://sourceforge.net/p/gftbox/home/ &#039;&#039;&#039;&#039;&#039;GFtbox&#039;&#039; can be freely downloaded&#039;&#039;&#039; from sourceforge]. After downloading, start Matlab, cd to the GFtbox directory, and give the command &amp;lt;code&amp;gt;GFtbox&amp;lt;/code&amp;gt;. GFtbox will start and present you with its graphic interface.&lt;br /&gt;
&lt;br /&gt;
GFtbox automatically adds all of its subdirectories to the Matlab command path. If you give a &amp;lt;code&amp;gt;savepath&amp;lt;/code&amp;gt; command at the Matlab console, then Matlab will remember where GFtbox is, and on subsequent runs of Matlab you will not have to cd to the GFtbox directory before running it.&lt;br /&gt;
&lt;br /&gt;
[[GFtbox Tutorial pages|&#039;&#039;&#039;In addition to the tutorials given here&#039;&#039;&#039;]], GFtbox comes with several example projects and the projects behind our published Figures. These projects appear on the Projects menu of the GFtbox window, in the Models submenu. There is a Help menu and when a new project is formed - the new associated interaction function is filled with comments that illustrate how the model can be written.  In the GUI, mouseover text is provided for each of the GUI functions and the last item in every menu is a local help submenu. Documentation files can be found in the &#039;&#039;doc&#039;&#039; subdirectory of GFtbox.&lt;br /&gt;
&lt;br /&gt;
[[GFtbox Tutorial pages|&#039;&#039;&#039;Tutorial pages&#039;&#039;&#039;]]&lt;br /&gt;
==Limitations of &#039;&#039;GFtbox&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
GFtbox is primarily for modelling curved finitely thick surfaces and does not handle bulk three-dimensional solids.&lt;br /&gt;
&lt;br /&gt;
(More stuff to appear...)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&amp;lt;wikiflv width=&amp;quot;360&amp;quot; height=&amp;quot;288&amp;quot;  logo=&amp;quot;false&amp;quot;&amp;gt;test.flv&amp;lt;/wikiflv&amp;gt;--&amp;gt;&lt;br /&gt;
&amp;lt;!--&amp;lt;wikiflv width=&amp;quot;640&amp;quot; height=&amp;quot;288&amp;quot;  logo=&amp;quot;false&amp;quot;&amp;gt;test.flv&amp;lt;/wikiflv&amp;gt;--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=GFtbox&amp;diff=4743</id>
		<title>GFtbox</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=GFtbox&amp;diff=4743"/>
		<updated>2011-06-24T14:10:23Z</updated>

		<summary type="html">&lt;p&gt;Jrk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[GFtbox Tutorial pages|&#039;&#039;Tutorials&#039;&#039;]] and [https://sourceforge.net/p/gftbox/ &#039;&#039;Download&#039;&#039;]&amp;lt;br&amp;gt;&lt;br /&gt;
==What is &#039;&#039;GFtbox&#039;&#039;?==&lt;br /&gt;
[[Image:GPT_thumbnail2.png|thumb|left|100px]]&lt;br /&gt;
&#039;&#039;&#039;We wish to understand&#039;&#039;&#039; how patterns of gene activity in biological organs influence the developing shape. Our suggestion is that genes may regulate growth direction independently of growth rate. We formalised our ideas in the Growing Polarised Tissue Framework (reference 1, below). The icon is based on Fig. 4 of reference 1, and shows an asymmetrical spur that has grown under the influence of a polariser gradient, indicated by the arrows.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Intuition is not&#039;&#039;&#039; a good guide to the behaviour of tissue growing under the influence of patterns of growth. Patterns interact with each other and the continuous sheet of tissue to produce complex shapes. It is therefore necessary to translate intuition into a mathematical model whose behaviour can be calculated. &#039;&#039;GFtbox&#039;&#039; is a package for creating and simulating such models.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;A &#039;&#039;GFtbox&#039;&#039; project comprises two parts&#039;&#039;&#039;, the Mesh and the Interaction function. The Mesh is a finite element model of the tissue, together with patterns of gene activity, tissue identity, and biochemical properties. The Interaction function specifies the local interactions of these properties.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Does &#039;&#039;GFtbox&#039;&#039; work correctly?&#039;&#039;&#039; Validation is an important question to be asked of all modelling software. There are various simple models for which analytical solutions can be obtained and compared with the computations performed by GFtbox. An extensive range of such validation tests can be found in Supplemental Text 1 of reference 1.&lt;br /&gt;
&lt;br /&gt;
We have used the &#039;&#039;&#039;GPT-framework&#039;&#039;&#039; to understand the development of the Snapdragon flower (reference 2 below). &#039;&#039;&#039;Using &#039;&#039;GFtbox&#039;&#039;&#039;&#039;&#039; we started with a crown shaped sheet of tissue (the canvas), laid out observed or hypothesised patterns of regulatory activity and then grew the canvas in 3D. Patterning can continue during growth and the final shape was compared quantitatively with its biological counterpart -- so &#039;&#039;&#039;testing the hypotheses&#039;&#039;&#039; made in the model (reference 3 below).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;To work with &#039;&#039;GFtbox&#039;&#039;&#039;&#039;&#039; is to practice thinking quantitatively about the relationship between genes, growth and form.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;References&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;1. Kennaway R, Coen E, Green A, Bangham A, 2011 Generation of Diverse Biological Forms through Combinatorial Interactions between Tissue Polarity and Growth.   [http://www.ploscompbiol.org/article/info:doi/10.1371/journal.pcbi.1002071 PLoS Comput Biol 7(6): e1002071.]&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;2. Amelia Green, Richard Kennaway, Andrew Hanna, Andrew Bangham, Enrico Coen, &amp;quot;Genetic Control of Organ Shape and Tissue Polarity&amp;quot;, [http://dx.doi.org/10.1371/journal.pbio.1000537 PLoS Biol, 2010, vol.8, no.11.]&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;3. Min-Long Cui, Lucy Copsey, Amelia Green, Andrew Bangham, Enrico Coen, &amp;quot;Quantitative Control of Organ Shape by Combinatorial Gene Activity&amp;quot;, [http://dx.doi.org/10.1371/journal.pbio.1000538 PLoS Biol, 2010, vol.8, no.11.]&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==What does &#039;&#039;GFtbox&#039;&#039; require?==&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;GFtbox&#039;&#039; is written in [http://en.wikipedia.org/wiki/MATLAB  Matlab].&#039;&#039;&#039; It does not require any extra Mathworks toolboxes, nor any separately compiled modules. Matlab is available as a [http://www.mathworks.com/products/matlab/tryit.html 30 day free trial] and as a [http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition]. &#039;&#039;GFtbox&#039;&#039; comprises around 1000 subroutines and 50,000 lines of code. It allows individual models, the part that a user writes, to be very compact -- 10 to 100 lines of Matlab code. For example, the model shown in Fig. 1 has a mesh that was created using the graphical user interface, and this code in its interaction function:&lt;br /&gt;
&lt;br /&gt;
    if (Steps(m)==0) &amp;amp;&amp;amp; m.globalDynamicProps.doinit  % Initialisation code.&lt;br /&gt;
        id_a_p(m.nodes(:,1) &amp;lt; -0.03) = 1; % set up region for A where identity factor A is represented by id_a_p&lt;br /&gt;
        id_b_p(m.nodes(:,2) &amp;lt; -0.01) = 1; % set up region for B&lt;br /&gt;
    else&lt;br /&gt;
        % @@KRN Growth Regulatory Network&lt;br /&gt;
        kapar_p(:) = id_a_l .* inh(1,id_b_l); % growth rate&lt;br /&gt;
        kaper_p(:) = kapar_p; % isotropic growth&lt;br /&gt;
        kbpar_p(:) = kapar_p; % same on both sides of the sheet&lt;br /&gt;
        kbper_p(:) = kapar_p; % same&lt;br /&gt;
        knor_p(:)  = 0;       % thickness not growing&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|[[Image:GPT_why_matlab-2011-05-05-0005_First.png|288px|left|The Labguide logo]]&lt;br /&gt;
||&amp;lt;wikiflv width=&amp;quot;352&amp;quot; height=&amp;quot;288&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_why_matlab-2011-05-05-0005.flv|GPT_why_matlab-2011-05-05-0005.png‎&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
|-align=&amp;quot;top&amp;quot;&lt;br /&gt;
|&amp;lt;center&amp;gt;Fig. 1. Mesh with two intersecting patterns of growth factors.  Blue is factor A, Green factor B&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;A movie of the mesh growing and subdividing. The intensity of red represents the growth rate&amp;lt;/center&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why Matlab?&#039;&#039;&#039; The language suits our problem - the reasoning goes like this. Tissue is represented by a thin 3D mesh. Growth factors levels vary spatially forming patterns, e.g. Fig. 1. Here there are two, &#039;&#039;A&#039;&#039; and &#039;&#039;B&#039;&#039;. We might make the hypothesis that the growth rate is specified by &#039;&#039;A&#039;&#039; but partially inhibited by &#039;&#039;B&#039;&#039; (inhibited by an amount &#039;&#039;K&#039;&#039;). This is a simple idea that can be expressed in Matlab equally simply by writing &#039;&#039;Growth=A .* inh(K, B)&#039;&#039;. This is because variables &#039;&#039;A&#039;&#039; and &#039;&#039;B&#039;&#039; can represent vectors - in this case a level for each node in the mesh. We also define a general inhibition function (&#039;&#039;inh&#039;&#039;).  It means that it is straightforward to convert our thoughts on the biology into a programmatic description of a computational model. Moreover, the language is well documented with lots of convenient tools. In particular, Matlab has an extensive library of portable graphical user interface (GUI) functions - and this is convenient for producing tools to visualise the mesh and patterns of growth factors. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The computational bottleneck&#039;&#039;&#039; in &#039;&#039;GFtbox&#039;&#039; is solving the finite element equations. We find that the Matlab [http://www.mathworks.com/help/techdoc/ref/cgs.html cgs] function is quicker and more accurate than alternatives from other sources ([http://software.intel.com/en-us/articles/intel-mkl/ lsqr], [http://www.culatools.com/forums/viewtopic.php?f=14&amp;amp;t=721 culaSgesvd], there are options to choose these solvers and the speed of computation is displayed constantly at the bottom of the GUI). The speed of &#039;&#039;GFtbox&#039;&#039; appears to be limited by memory-cpu bandwidth rather than cpu speed. It runs best interactively on a 64 bit machine, lots of memory and a silicon hard-drive. Growing &#039;&#039;GFtbox&#039;&#039; models does not require the GUI - we can run multiple models on a computing cluster and then visualise the results on the GUI. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Matlab is a weakly typed&#039;&#039;&#039; language and that too is an advantage whilst we develop the necessary concepts for &#039;&#039;GFtbox&#039;&#039;. (Whilst it is possible to create a dedicated class library, we defer that until we are clearer about what functionality will be needed to model most biology.) In addition, Matlab is sufficiently flexible that inexperienced programmers, half our team are biologists, can pick it up on-the-fly. It behaves as an interpreted language, which makes it easy to break and step through code to follow what is happening. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Matlab runs on&#039;&#039;&#039; Windows, Mac and Linux. It is freely available and well supported -- but not free of cost. Programmers need to earn a living. We prefer our paid experts to focus on our speciality and let Mathworks maintain compatibility with new processors, OpenGL, multi-threading, algebraic algorithms (appropriate LAPACK and machine-specific BLAS libraries), user interfaces and handle multi-platform problems. The key Matlab numerical algorithms are documented and generally visible and there is a large user-base providing lots of web based help. &lt;br /&gt;
&lt;br /&gt;
==How to start using &#039;&#039;GFtbox&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
[http://sourceforge.net/p/gftbox/home/ &#039;&#039;&#039;&#039;&#039;GFtbox&#039;&#039; can be freely downloaded&#039;&#039;&#039; from sourceforge]. After downloading, start Matlab, cd to the GFtbox directory, and give the command &amp;lt;code&amp;gt;GFtbox&amp;lt;/code&amp;gt;. GFtbox will start and present you with its graphic interface.&lt;br /&gt;
&lt;br /&gt;
GFtbox automatically adds all of its subdirectories to the Matlab command path. If you give a &amp;lt;code&amp;gt;savepath&amp;lt;/code&amp;gt; command at the Matlab console, then Matlab will remember where GFtbox is, and on subsequent runs of Matlab you will not have to cd to the GFtbox directory before running it.&lt;br /&gt;
&lt;br /&gt;
[[GFtbox Tutorial pages|&#039;&#039;&#039;In addition to the tutorials given here&#039;&#039;&#039;]], GFtbox comes with several example projects and the projects behind our published Figures. These projects appear on the Projects menu of the GFtbox window, in the Models submenu. There is a Help menu and when a new project is formed - the new associated interaction function is filled with comments that illustrate how the model can be written.  In the GUI, mouseover text is provided for each of the GUI functions and the last item in every menu is a local help submenu. Documentation files can be found in the &#039;&#039;doc&#039;&#039; subdirectory of GFtbox.&lt;br /&gt;
&lt;br /&gt;
[[GFtbox Tutorial pages|&#039;&#039;&#039;Tutorial pages&#039;&#039;&#039;]]&lt;br /&gt;
==Limitations of &#039;&#039;GFtbox&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
GFtbox is primarily for modelling curved finitely thick surfaces and does not handle bulk three-dimensional solids.&lt;br /&gt;
&lt;br /&gt;
(More stuff to appear...)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&amp;lt;wikiflv width=&amp;quot;360&amp;quot; height=&amp;quot;288&amp;quot;  logo=&amp;quot;false&amp;quot;&amp;gt;test.flv&amp;lt;/wikiflv&amp;gt;--&amp;gt;&lt;br /&gt;
&amp;lt;!--&amp;lt;wikiflv width=&amp;quot;640&amp;quot; height=&amp;quot;288&amp;quot;  logo=&amp;quot;false&amp;quot;&amp;gt;test.flv&amp;lt;/wikiflv&amp;gt;--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=GFtbox&amp;diff=4742</id>
		<title>GFtbox</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=GFtbox&amp;diff=4742"/>
		<updated>2011-06-24T14:09:00Z</updated>

		<summary type="html">&lt;p&gt;Jrk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[GFtbox Tutorial pages|&#039;&#039;Tutorials&#039;&#039;]] and [https://sourceforge.net/p/gftbox/ &#039;&#039;Download&#039;&#039;]&amp;lt;br&amp;gt;&lt;br /&gt;
==What is &#039;&#039;GFtbox&#039;&#039;?==&lt;br /&gt;
[[Image:GPT_thumbnail2.png|thumb|left|100px]]&lt;br /&gt;
&#039;&#039;&#039;We wish to understand&#039;&#039;&#039; how patterns of gene activity in biological organs influence the developing shape. Our suggestion is that genes may regulate growth direction independently of growth rate. We formalised our ideas in the Growing Polarised Tissue Framework (reference 1, below). The icon is based on Fig. 4 of reference 1, and shows an asymmetrical spur that has grown under the influence of a polariser gradient, indicated by the arrows.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Intuition is not&#039;&#039;&#039; a good guide to the behaviour of tissue growing under the influence of patterns of growth. Patterns interact with each other and the continuous sheet of tissue to produce complex shapes. It is therefore necessary to translate intuition into a mathematical model whose behaviour can be calculated. &#039;&#039;GFtbox&#039;&#039; is a package for creating and simulating such models.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;A &#039;&#039;GFtbox&#039;&#039; project comprises two parts&#039;&#039;&#039;, the Mesh and the Interaction function. The Mesh is a finite element model of the tissue, together with patterns of gene activity, tissue identity, and biochemical properties. The Interaction function specifies the local interactions of these properties.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Does &#039;&#039;GFtbox&#039;&#039; work correctly?&#039;&#039;&#039; Validation is an important question to be asked of all modelling software. There are various simple models for which analytical solutions can be obtained and compared with the computations performed by GFtbox. An extensive range of such validation tests can be found in Supplemental Text 1 of reference 1.&lt;br /&gt;
&lt;br /&gt;
We have used the &#039;&#039;&#039;GPT-framework&#039;&#039;&#039; to understand the development of the Snapdragon flower (reference 2 below). &#039;&#039;&#039;Using &#039;&#039;GFtbox&#039;&#039;&#039;&#039;&#039; we started with a crown shaped sheet of tissue (the canvas), laid out observed or hypothesised patterns of regulatory activity and then grew the canvas in 3D. Patterning can continue during growth and the final shape was compared quantitatively with its biological counterpart -- so &#039;&#039;&#039;testing the hypotheses&#039;&#039;&#039; made in the model (reference 3 below).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;To work with &#039;&#039;GFtbox&#039;&#039;&#039;&#039;&#039; is to practice thinking quantitatively about the relationship between genes, growth and form.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;References&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;1. Kennaway R, Coen E, Green A, Bangham A, 2011 Generation of Diverse Biological Forms through Combinatorial Interactions between Tissue Polarity and Growth. PLoS Comput Biol 7(6): e1002071.  [http://www.ploscompbiol.org/article/info:doi/10.1371/journal.pcbi.1002071 Link.]&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;2. Amelia Green, Richard Kennaway, Andrew Hanna, Andrew Bangham, Enrico Coen, &amp;quot;Genetic Control of Organ Shape and Tissue Polarity&amp;quot;, PLoS Biol, 2010, vol.8, no.11. [http://dx.doi.org/10.1371/journal.pbio.1000537 Link.]&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;3. Min-Long Cui, Lucy Copsey, Amelia Green, Andrew Bangham, Enrico Coen, &amp;quot;Quantitative Control of Organ Shape by Combinatorial Gene Activity&amp;quot;, PLoS Biol, 2010, vol.8, no.11. [http://dx.doi.org/10.1371/journal.pbio.1000538 Link.]&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==What does &#039;&#039;GFtbox&#039;&#039; require?==&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;GFtbox&#039;&#039; is written in [http://en.wikipedia.org/wiki/MATLAB  Matlab].&#039;&#039;&#039; It does not require any extra Mathworks toolboxes, nor any separately compiled modules. Matlab is available as a [http://www.mathworks.com/products/matlab/tryit.html 30 day free trial] and as a [http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition]. &#039;&#039;GFtbox&#039;&#039; comprises around 1000 subroutines and 50,000 lines of code. It allows individual models, the part that a user writes, to be very compact -- 10 to 100 lines of Matlab code. For example, the model shown in Fig. 1 has a mesh that was created using the graphical user interface, and this code in its interaction function:&lt;br /&gt;
&lt;br /&gt;
    if (Steps(m)==0) &amp;amp;&amp;amp; m.globalDynamicProps.doinit  % Initialisation code.&lt;br /&gt;
        id_a_p(m.nodes(:,1) &amp;lt; -0.03) = 1; % set up region for A where identity factor A is represented by id_a_p&lt;br /&gt;
        id_b_p(m.nodes(:,2) &amp;lt; -0.01) = 1; % set up region for B&lt;br /&gt;
    else&lt;br /&gt;
        % @@KRN Growth Regulatory Network&lt;br /&gt;
        kapar_p(:) = id_a_l .* inh(1,id_b_l); % growth rate&lt;br /&gt;
        kaper_p(:) = kapar_p; % isotropic growth&lt;br /&gt;
        kbpar_p(:) = kapar_p; % same on both sides of the sheet&lt;br /&gt;
        kbper_p(:) = kapar_p; % same&lt;br /&gt;
        knor_p(:)  = 0;       % thickness not growing&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|[[Image:GPT_why_matlab-2011-05-05-0005_First.png|288px|left|The Labguide logo]]&lt;br /&gt;
||&amp;lt;wikiflv width=&amp;quot;352&amp;quot; height=&amp;quot;288&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_why_matlab-2011-05-05-0005.flv|GPT_why_matlab-2011-05-05-0005.png‎&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
|-align=&amp;quot;top&amp;quot;&lt;br /&gt;
|&amp;lt;center&amp;gt;Fig. 1. Mesh with two intersecting patterns of growth factors.  Blue is factor A, Green factor B&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;A movie of the mesh growing and subdividing. The intensity of red represents the growth rate&amp;lt;/center&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why Matlab?&#039;&#039;&#039; The language suits our problem - the reasoning goes like this. Tissue is represented by a thin 3D mesh. Growth factors levels vary spatially forming patterns, e.g. Fig. 1. Here there are two, &#039;&#039;A&#039;&#039; and &#039;&#039;B&#039;&#039;. We might make the hypothesis that the growth rate is specified by &#039;&#039;A&#039;&#039; but partially inhibited by &#039;&#039;B&#039;&#039; (inhibited by an amount &#039;&#039;K&#039;&#039;). This is a simple idea that can be expressed in Matlab equally simply by writing &#039;&#039;Growth=A .* inh(K, B)&#039;&#039;. This is because variables &#039;&#039;A&#039;&#039; and &#039;&#039;B&#039;&#039; can represent vectors - in this case a level for each node in the mesh. We also define a general inhibition function (&#039;&#039;inh&#039;&#039;).  It means that it is straightforward to convert our thoughts on the biology into a programmatic description of a computational model. Moreover, the language is well documented with lots of convenient tools. In particular, Matlab has an extensive library of portable graphical user interface (GUI) functions - and this is convenient for producing tools to visualise the mesh and patterns of growth factors. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The computational bottleneck&#039;&#039;&#039; in &#039;&#039;GFtbox&#039;&#039; is solving the finite element equations. We find that the Matlab [http://www.mathworks.com/help/techdoc/ref/cgs.html cgs] function is quicker and more accurate than alternatives from other sources ([http://software.intel.com/en-us/articles/intel-mkl/ lsqr], [http://www.culatools.com/forums/viewtopic.php?f=14&amp;amp;t=721 culaSgesvd], there are options to choose these solvers and the speed of computation is displayed constantly at the bottom of the GUI). The speed of &#039;&#039;GFtbox&#039;&#039; appears to be limited by memory-cpu bandwidth rather than cpu speed. It runs best interactively on a 64 bit machine, lots of memory and a silicon hard-drive. Growing &#039;&#039;GFtbox&#039;&#039; models does not require the GUI - we can run multiple models on a computing cluster and then visualise the results on the GUI. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Matlab is a weakly typed&#039;&#039;&#039; language and that too is an advantage whilst we develop the necessary concepts for &#039;&#039;GFtbox&#039;&#039;. (Whilst it is possible to create a dedicated class library, we defer that until we are clearer about what functionality will be needed to model most biology.) In addition, Matlab is sufficiently flexible that inexperienced programmers, half our team are biologists, can pick it up on-the-fly. It behaves as an interpreted language, which makes it easy to break and step through code to follow what is happening. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Matlab runs on&#039;&#039;&#039; Windows, Mac and Linux. It is freely available and well supported -- but not free of cost. Programmers need to earn a living. We prefer our paid experts to focus on our speciality and let Mathworks maintain compatibility with new processors, OpenGL, multi-threading, algebraic algorithms (appropriate LAPACK and machine-specific BLAS libraries), user interfaces and handle multi-platform problems. The key Matlab numerical algorithms are documented and generally visible and there is a large user-base providing lots of web based help. &lt;br /&gt;
&lt;br /&gt;
==How to start using &#039;&#039;GFtbox&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
[http://sourceforge.net/p/gftbox/home/ &#039;&#039;&#039;&#039;&#039;GFtbox&#039;&#039; can be freely downloaded&#039;&#039;&#039; from sourceforge]. After downloading, start Matlab, cd to the GFtbox directory, and give the command &amp;lt;code&amp;gt;GFtbox&amp;lt;/code&amp;gt;. GFtbox will start and present you with its graphic interface.&lt;br /&gt;
&lt;br /&gt;
GFtbox automatically adds all of its subdirectories to the Matlab command path. If you give a &amp;lt;code&amp;gt;savepath&amp;lt;/code&amp;gt; command at the Matlab console, then Matlab will remember where GFtbox is, and on subsequent runs of Matlab you will not have to cd to the GFtbox directory before running it.&lt;br /&gt;
&lt;br /&gt;
[[GFtbox Tutorial pages|&#039;&#039;&#039;In addition to the tutorials given here&#039;&#039;&#039;]], GFtbox comes with several example projects and the projects behind our published Figures. These projects appear on the Projects menu of the GFtbox window, in the Models submenu. There is a Help menu and when a new project is formed - the new associated interaction function is filled with comments that illustrate how the model can be written.  In the GUI, mouseover text is provided for each of the GUI functions and the last item in every menu is a local help submenu. Documentation files can be found in the &#039;&#039;doc&#039;&#039; subdirectory of GFtbox.&lt;br /&gt;
&lt;br /&gt;
[[GFtbox Tutorial pages|&#039;&#039;&#039;Tutorial pages&#039;&#039;&#039;]]&lt;br /&gt;
==Limitations of &#039;&#039;GFtbox&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
GFtbox is primarily for modelling curved finitely thick surfaces and does not handle bulk three-dimensional solids.&lt;br /&gt;
&lt;br /&gt;
(More stuff to appear...)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&amp;lt;wikiflv width=&amp;quot;360&amp;quot; height=&amp;quot;288&amp;quot;  logo=&amp;quot;false&amp;quot;&amp;gt;test.flv&amp;lt;/wikiflv&amp;gt;--&amp;gt;&lt;br /&gt;
&amp;lt;!--&amp;lt;wikiflv width=&amp;quot;640&amp;quot; height=&amp;quot;288&amp;quot;  logo=&amp;quot;false&amp;quot;&amp;gt;test.flv&amp;lt;/wikiflv&amp;gt;--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Ready_Reference_Manual&amp;diff=5224</id>
		<title>Ready Reference Manual</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Ready_Reference_Manual&amp;diff=5224"/>
		<updated>2011-06-24T11:23:47Z</updated>

		<summary type="html">&lt;p&gt;Jrk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Summary of controls=&lt;br /&gt;
Roll the mouse over any control and information about the control will pop-up.&lt;br /&gt;
==Models==&lt;br /&gt;
* As a rule of thumb, growth rate * time step should be less than 0.01. It is possible for the diffusion processes to become unstable if the time step is too large - signals can oscillate. Reduce the time step and reduce the decay rate.&lt;br /&gt;
* Errors in the the interaction function will cause the system to stop. &lt;br /&gt;
** To restart Reset the GUI. &lt;br /&gt;
** To find the error&lt;br /&gt;
*** Set Matlab to always stop on error, Matlab:Menus:Debug:Stop:Always stop on errors. Reset the GFtbox GUI and Step to repeat the error. &lt;br /&gt;
*** Sometimes it is even better to set a break point on the line that fails - that way you can inspect values of variables before the GTtbox try/catch routine takes over.&lt;br /&gt;
*** Matlab provides extensive tutorials on how to program and there is much information on the web.&lt;br /&gt;
  &lt;br /&gt;
==Running models==&lt;br /&gt;
&lt;br /&gt;
The normally &#039;&#039;&#039;green Run pane&#039;&#039;&#039;l turns &#039;&#039;&#039;red&#039;&#039;&#039; whilst the model is running.&amp;lt;br&amp;gt;&lt;br /&gt;
A &#039;&#039;&#039;yellow&#039;&#039;&#039; Run panel means that the model is running on a version of the GFtbox that is older than the model itself (look at the interaction header to see our source code version control number for the copy of GFtbox that created the model).&amp;lt;br&amp;gt;&lt;br /&gt;
An interaction function error (or any other error) will stop the model from running. It is then necessary to Reset using the&#039;&#039;&#039; Reset key - which will have turned red&#039;&#039;&#039;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
To run a model from the GUI&lt;br /&gt;
*Step, execute one step of &#039;&#039;dt&#039;&#039;. A whole lot of information pours out at the command console. Sometimes it takes a while to solve the equations. The process is monitored by a series of dots . . . . . . . Further information is provided below the Plotting panel, e.g. Step number, time per iteration, time per finite element, growth, etc.&lt;br /&gt;
*Run for, and enter the number of steps into the box&lt;br /&gt;
*Run until, and enter the model time to which you want to run&lt;br /&gt;
*Run to, and enter the multiple of the initial area you want to run to&lt;br /&gt;
*Stop, stops execution at the end of the current step.&lt;br /&gt;
*Call, makes a call to the interaction function but does NOT grow. This is useful for checking initial conditions - set patterns of morphogens. Having made a Call to the interaction function it is good practice to then Restart the model before running a model.&lt;br /&gt;
*Menu:Stages. &#039;&#039;&#039;We usually run models&#039;&#039;&#039; by setting up a set of, say 5, stages that we want stored. Then, having run the model we can revert back to any of the stages - make a change - and re-run starting from that point. The stages are stored in the project directory with the suffix *000# where # is the time. Stage times are stored with the project - and copied into the daughter project with Save As.&lt;br /&gt;
**Compute more stages, pops up a box asking for a set of times that you want stored then starts computing&lt;br /&gt;
**Request more stages, does the same but does not start computing.&lt;br /&gt;
**Save experiment stages, saves all the current stage files in a subdirectory.&lt;br /&gt;
**Import experiment stages, recovers a saved experiment. This pair of commands help document results and make figures. In addition, when the system runs on a cluster, the results are returned as experimental results to be accessed in this way.&lt;br /&gt;
==Outputs==&lt;br /&gt;
===Plotting panel===&lt;br /&gt;
To view&lt;br /&gt;
*Specified values, i.e. kapar or a particular morphogen (factor) select from drop down menu top right and tick Plot current factor.&lt;br /&gt;
**To autoscale the axes. Panel:Plot Options:Auto axis range. To autozoom as well, click Menus:Plot:Auto zoom and centre. To fix the axes scale (to view growth). The best is to first grow with auto ranging on. Then click Panel:Plot Options:Axis From Picture and unclick the Auto axis range box. Alternatively, unclick the Auto axis range box and key in values you want - click elsewhere on the GUI to force a replot.&lt;br /&gt;
**To autoscale the morphogen colours. Panel:Plot Options:Auto color range. To fix the colour range the easiest is to click From Picture and unclick the Auto color range. Alternatively, unclick the Auto color range box and key in values you want - click elsewhere on the GUI to force a replot.&lt;br /&gt;
**To find out the level of a morphogen at a particular point on the canvas. Select Tool:Simulation and select the morphogen of interest (top right pull down) and click on the point of interest. The value at that point will appear in bold just below the Panel:Timescale box.&lt;br /&gt;
*Output variables, e.g. growth rate, tick Plot output value and make selection from the two drop down menus.&lt;br /&gt;
*thickness, tick/untick Menu:Plot:Thickness&lt;br /&gt;
To show/hide &lt;br /&gt;
*thickness, tick/untick Menu:Plot:Thickness&lt;br /&gt;
*mesh, tick/untick FE edges&lt;br /&gt;
*axes, tick/untick Menu:Plot:Show/Hide axes&amp;lt;br&amp;gt;&lt;br /&gt;
*legend, tick/untick Menu:Plot:Show/Hide legend - also Set legend to choose heading&amp;lt;br&amp;gt;&lt;br /&gt;
To set/modify values of morphogens (best done in the interaction function)&lt;br /&gt;
* Choose morphogen (list box), Click on Select Tool:Factors, &#039;---&#039; list box to select action and click on appropriate button (Add constant or Add radial, etc).&lt;br /&gt;
* at individual nodes (vertices). Choose morphogen (list box), Click on Select Tool:Factors, &#039;---&#039; list box to select action and click on node.&amp;lt;br&amp;gt;&lt;br /&gt;
To clip the mesh (hide part of the mesh)&lt;br /&gt;
*Tick Clipping plane and choose the plane with Az (azimuth), ti (tilt),  D&lt;br /&gt;
*Tick Clip and select the region to hide by using morphogen values (click on Mgens button)&lt;br /&gt;
===Snapshots===&lt;br /&gt;
Saved in png format in the project snapshots subdirectory&lt;br /&gt;
*Clicking Take snapshot makes a png file copy of the plotting screen. At the same time a copy of the interaction function (relabelled to have .txt as a suffix) is also made - to help document the snapshot.&lt;br /&gt;
*Publication quality screenshot is made by changing the action of the Snapshot button using Menu:Misc:Hi-res snapshots and choosing a number of dots per inch.&lt;br /&gt;
===VRML, OBJ, FIG===&lt;br /&gt;
To export the current mesh&lt;br /&gt;
*VRML, to interactively view the mesh using a web browser export the mesh as a VRML file, Menu:Mesh:Save VRML. We use such files to make 3D prints.&lt;br /&gt;
*FIG, for Matlab figure files.&lt;br /&gt;
===Movies===&lt;br /&gt;
By default movies are uncompressed and stored in the projects movies subdirectory&lt;br /&gt;
*To compress select Menu:Movie:Codec - we currently favour Motion JPEG avi&lt;br /&gt;
*To automatically convert the output to flash, .flv, select Menu:Movie:Convert to flash. This option requires the ffmpeg program to be on the current path.&lt;br /&gt;
*Click Record Movie to start creating a movie. The button will change to Stop Movie.&lt;br /&gt;
===Web and PowerPoint===&lt;br /&gt;
Writing web and PowerPoint pages is facilitated by:&lt;br /&gt;
*&#039;&#039;&#039;Output .avi for PowerPoint&#039;&#039;&#039;. Use Menu:Movie:Codec: Motion JPEG avi. This does not play properly on PowerPoint 2007 unless you run PowerPoint in 2003 compatibility mode. The movie is saved into the project movies subdirectory together with an image (.png) of the final frame and a copy of the interaction function (renamed .txt - to document the results).&lt;br /&gt;
*Output &#039;&#039;&#039;flash (.flv) movies for web&#039;&#039;&#039;. Select Menu:Movie:Convert to flash. This option requires the [http://www.ffmpeg.org/ ffmpeg] program to be on the current path. The movie is saved to the project directory together with an image (.png) of the first frame (for last frame see above).&lt;br /&gt;
*Output&#039;&#039;&#039; web compatible copy of the interaction function&#039;&#039;&#039; use &#039;&#039;webify_interaction_function.m&#039;&#039; which outputs a txt file with  comments marked up in HTML to appear in green and sections in blue.&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
===Files===&lt;br /&gt;
==Simulation==&lt;br /&gt;
&lt;br /&gt;
==Graphical User Interface==&lt;br /&gt;
===Menus===&lt;br /&gt;
===Panels===&lt;br /&gt;
==Interaction function==&lt;br /&gt;
===Functions===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=Useful interaction function programming constructs=&lt;br /&gt;
[[Types of morphogens and factors|Types of morphogens and factors click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|&#039;&#039;&#039;Pre-defined variables&#039;&#039;&#039;|| &lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|dt|| computational step size&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|realtime|| virtual time of the model&lt;br /&gt;
|}&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|&#039;&#039;&#039;Pre-defined functions&#039;&#039;&#039;|| &lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|Steps(m)|| current step number in Mesh m&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|pro(k,id)|| promote by k in regions designated by factor, id (&#039;&#039;pro(k,&#039;&#039;&#039;x&#039;&#039;&#039;)=1+k&#039;&#039;&#039;x&#039;&#039;&#039;&#039;&#039;, i.e. promote by &#039;&#039;k=0&#039;&#039; and the value of &#039;&#039;pro()&#039;&#039; is &#039;&#039;1&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|inh(k,id)|| inhibit by k in regions designated by factor, id (&#039;&#039;inh(k,&#039;&#039;&#039;x&#039;&#039;&#039;)=1/(1+k&#039;&#039;&#039;x&#039;&#039;&#039;)&#039;&#039;, i.e. inhibit by &#039;&#039;k=0&#039;&#039; and the value of &#039;&#039;inh()&#039;&#039; is &#039;&#039;1&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|local_setproperties( m )|| initialise Mesh properties&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|leaf_*( m, ... )|| A large library of functions for manipulating the Mesh data structure, m. All of them are listed in the main Help menu of the GFtbox GUI, both in alphabetical order and categorised by topic.&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The patterns of morphogens A and B are often set up by using logical indexing, e.g.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        id_a_p(m.nodes(:,1) &amp;lt; -0.03) = 1; &lt;br /&gt;
        id_b_p(m.nodes(:,2) &amp;lt; -0.01) = 1; &lt;br /&gt;
where &#039;&#039;id_a_p&#039;&#039; is the vector of values of the A morphogen. &#039;&#039;m.node(:,1)&#039;&#039; refers to the &#039;&#039;x&#039;&#039; coordinates of all nodes (vertices) in the mesh.&amp;lt;br&amp;gt;&lt;br /&gt;
The expression &#039;&#039;(m.nodes(:,1) &amp;lt; -0.03)&#039;&#039; means find all vertices with &#039;&#039;x&#039;&#039; coordinates that are less than -0.03.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Similarly, &#039;&#039;(m.nodes(:,2) &amp;lt; -0.01)&#039;&#039; means find all vertices with &#039;&#039;y&#039;&#039; coordinates that are less than -0.01.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the pattern of polariser (P) is set up by&amp;lt;br&amp;gt;        &lt;br /&gt;
&lt;br /&gt;
        P((m.nodes(:,1) &amp;lt; -0.05) &amp;amp; (m.nodes(:,2) &amp;gt; 0.03)) = 1;&lt;br /&gt;
Where &#039;&#039;(m.nodes(:,1) &amp;lt; -0.05) &amp;amp; (m.nodes(:,2) &amp;gt; 0.03)&#039;&#039; means find all vertices with &#039;&#039;x,y&#039;&#039; coordinates that are less than -0.05 and greater than 0.03 respectively&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Thus the full code describing the model is:&lt;br /&gt;
    if (Steps(m)==0) &amp;amp;&amp;amp; m.globalDynamicProps.doinit  % Initialisation code.&lt;br /&gt;
        id_a_p(m.nodes(:,1) &amp;lt; -0.03) = 1; % setup region for A where identity factor A is represented by id_a_p&lt;br /&gt;
        id_b_p(m.nodes(:,2) &amp;lt; -0.01) = 1; % setup region for B&lt;br /&gt;
    else&lt;br /&gt;
        % @@KRN Growth Regulatory Network&lt;br /&gt;
        kapar_p(:) = id_a_l .* inh(1,id_b_l); % growth rate&lt;br /&gt;
        kaper_p(:) = kapar_p; % isotropic growth&lt;br /&gt;
        kbpar_p(:) = kapar_p; % same on both sides of the sheet&lt;br /&gt;
        kbper_p(:) = kapar_p; % same&lt;br /&gt;
        knor_p(:)  = 0;       % thickness not growing&lt;br /&gt;
    end&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Ready_Reference_Manual&amp;diff=5222</id>
		<title>Ready Reference Manual</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Ready_Reference_Manual&amp;diff=5222"/>
		<updated>2011-06-24T11:21:50Z</updated>

		<summary type="html">&lt;p&gt;Jrk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Summary of controls=&lt;br /&gt;
Roll the mouse over any control and information about the control will pop-up.&lt;br /&gt;
==Models==&lt;br /&gt;
* As a rule of thumb, growth rate * time step should be less than 0.01. It is possible for the diffusion processes to become unstable if the time step is too large - signals can oscillate. Reduce the time step and reduce the decay rate.&lt;br /&gt;
* Errors in the the interaction function will cause the system to stop. &lt;br /&gt;
** To restart Reset the GUI. &lt;br /&gt;
** To find the error&lt;br /&gt;
*** Set Matlab to always stop on error, Matlab:Menus:Debug:Stop:Always stop on errors. Reset the GFtbox GUI and Step to repeat the error. &lt;br /&gt;
*** Sometimes it is even better to set a break point on the line that fails - that way you can inspect values of variables before the GTtbox try/catch routine takes over.&lt;br /&gt;
*** Matlab provides extensive tutorials on how to program and there is much information on the web.&lt;br /&gt;
  &lt;br /&gt;
==Running models==&lt;br /&gt;
&lt;br /&gt;
The normally &#039;&#039;&#039;green Run pane&#039;&#039;&#039;l turns &#039;&#039;&#039;red&#039;&#039;&#039; whilst the model is running.&amp;lt;br&amp;gt;&lt;br /&gt;
A &#039;&#039;&#039;yellow&#039;&#039;&#039; Run panel means that the model is running on a version of the GFtbox that is older than the model itself (look at the interaction header to see our source code version control number for the copy of GFtbox that created the model).&amp;lt;br&amp;gt;&lt;br /&gt;
An interaction function error (or any other error) will stop the model from running. It is then necessary to Reset using the&#039;&#039;&#039; Reset key - which will have turned red&#039;&#039;&#039;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
To run a model from the GUI&lt;br /&gt;
*Step, execute one step of &#039;&#039;dt&#039;&#039;. A whole lot of information pours out at the command console. Sometimes it takes a while to solve the equations. The process is monitored by a series of dots . . . . . . . Further information is provided below the Plotting panel, e.g. Step number, time per iteration, time per finite element, growth, etc.&lt;br /&gt;
*Run for, and enter the number of steps into the box&lt;br /&gt;
*Run until, and enter the model time to which you want to run&lt;br /&gt;
*Run to, and enter the multiple of the initial area you want to run to&lt;br /&gt;
*Stop, stops execution at the end of the current step.&lt;br /&gt;
*Call, makes a call to the interaction function but does NOT grow. This is useful for checking initial conditions - set patterns of morphogens. Having made a Call to the interaction function it is good practice to then Restart the model before running a model.&lt;br /&gt;
*Menu:Stages. &#039;&#039;&#039;We usually run models&#039;&#039;&#039; by setting up a set of, say 5, stages that we want stored. Then, having run the model we can revert back to any of the stages - make a change - and re-run starting from that point. The stages are stored in the project directory with the suffix *000# where # is the time. Stage times are stored with the project - and copied into the daughter project with Save As.&lt;br /&gt;
**Compute more stages, pops up a box asking for a set of times that you want stored then starts computing&lt;br /&gt;
**Request more stages, does the same but does not start computing.&lt;br /&gt;
**Save experiment stages, saves all the current stage files in a subdirectory.&lt;br /&gt;
**Import experiment stages, recovers a saved experiment. This pair of commands help document results and make figures. In addition, when the system runs on a cluster, the results are returned as experimental results to be accessed in this way.&lt;br /&gt;
==Outputs==&lt;br /&gt;
===Plotting panel===&lt;br /&gt;
To view&lt;br /&gt;
*Specified values, i.e. kapar or a particular morphogen (factor) select from drop down menu top right and tick Plot current factor.&lt;br /&gt;
**To autoscale the axes. Panel:Plot Options:Auto axis range. To autozoom as well, click Menus:Plot:Auto zoom and centre. To fix the axes scale (to view growth). The best is to first grow with auto ranging on. Then click Panel:Plot Options:Axis From Picture and unclick the Auto axis range box. Alternatively, unclick the Auto axis range box and key in values you want - click elsewhere on the GUI to force a replot.&lt;br /&gt;
**To autoscale the morphogen colours. Panel:Plot Options:Auto color range. To fix the colour range the easiest is to click From Picture and unclick the Auto color range. Alternatively, unclick the Auto color range box and key in values you want - click elsewhere on the GUI to force a replot.&lt;br /&gt;
**To find out the level of a morphogen at a particular point on the canvas. Select Tool:Simulation and select the morphogen of interest (top right pull down) and click on the point of interest. The value at that point will appear in bold just below the Panel:Timescale box.&lt;br /&gt;
*Output variables, e.g. growth rate, tick Plot output value and make selection from the two drop down menus.&lt;br /&gt;
*thickness, tick/untick Menu:Plot:Thickness&lt;br /&gt;
To show/hide &lt;br /&gt;
*thickness, tick/untick Menu:Plot:Thickness&lt;br /&gt;
*mesh, tick/untick FE edges&lt;br /&gt;
*axes, tick/untick Menu:Plot:Show/Hide axes&amp;lt;br&amp;gt;&lt;br /&gt;
*legend, tick/untick Menu:Plot:Show/Hide legend - also Set legend to choose heading&amp;lt;br&amp;gt;&lt;br /&gt;
To set/modify values of morphogens (best done in the interaction function)&lt;br /&gt;
* Choose morphogen (list box), Click on Select Tool:Factors, &#039;---&#039; list box to select action and click on appropriate button (Add constant or Add radial, etc).&lt;br /&gt;
* at individual nodes (vertices). Choose morphogen (list box), Click on Select Tool:Factors, &#039;---&#039; list box to select action and click on node.&amp;lt;br&amp;gt;&lt;br /&gt;
To clip the mesh (hide part of the mesh)&lt;br /&gt;
*Tick Clipping plane and choose the plane with Az (azimuth), ti (tilt),  D&lt;br /&gt;
*Tick Clip and select the region to hide by using morphogen values (click on Mgens button)&lt;br /&gt;
===Snapshots===&lt;br /&gt;
Saved in png format in the project snapshots subdirectory&lt;br /&gt;
*Clicking Take snapshot makes a png file copy of the plotting screen. At the same time a copy of the interaction function (relabelled to have .txt as a suffix) is also made - to help document the snapshot.&lt;br /&gt;
*Publication quality screenshot is made by changing the action of the Snapshot button using Menu:Misc:Hi-res snapshots and choosing a number of dots per inch.&lt;br /&gt;
===VRML, OBJ, FIG===&lt;br /&gt;
To export the current mesh&lt;br /&gt;
*VRML, to interactively view the mesh using a web browser export the mesh as a VRML file, Menu:Mesh:Save VRML. We use such files to make 3D prints.&lt;br /&gt;
*FIG, for Matlab figure files.&lt;br /&gt;
===Movies===&lt;br /&gt;
By default movies are uncompressed and stored in the projects movies subdirectory&lt;br /&gt;
*To compress select Menu:Movie:Codec - we currently favour Motion JPEG avi&lt;br /&gt;
*To automatically convert the output to flash, .flv, select Menu:Movie:Convert to flash. This option requires the ffmpeg program to be on the current path.&lt;br /&gt;
*Click Record Movie to start creating a movie. The button will change to Stop Movie.&lt;br /&gt;
===Web and PowerPoint===&lt;br /&gt;
Writing web and PowerPoint pages is facilitated by:&lt;br /&gt;
*&#039;&#039;&#039;Output .avi for PowerPoint&#039;&#039;&#039;. Use Menu:Movie:Codec: Motion JPEG avi. This does not play properly on PowerPoint 2007 unless you run PowerPoint in 2003 compatibility mode. The movie is saved into the project movies subdirectory together with an image (.png) of the final frame and a copy of the interaction function (renamed .txt - to document the results).&lt;br /&gt;
*Output &#039;&#039;&#039;flash (.flv) movies for web&#039;&#039;&#039;. Select Menu:Movie:Convert to flash. This option requires the [http://www.ffmpeg.org/ ffmpeg] program to be on the current path. The movie is saved to the project directory together with an image (.png) of the first frame (for last frame see above).&lt;br /&gt;
*Output&#039;&#039;&#039; web compatible copy of the interaction function&#039;&#039;&#039; use &#039;&#039;webify_interaction_function.m&#039;&#039; which outputs a txt file with  comments marked up in HTML to appear in green and sections in blue.&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
===Files===&lt;br /&gt;
==Simulation==&lt;br /&gt;
&lt;br /&gt;
==Graphical User Interface==&lt;br /&gt;
===Menus===&lt;br /&gt;
===Panels===&lt;br /&gt;
==Interaction function==&lt;br /&gt;
===Functions===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=Useful interaction function programming constructs=&lt;br /&gt;
[[Types of morphogens and factors|Types of morphogens and factors click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|&#039;&#039;&#039;Pre-defined variables&#039;&#039;&#039;|| &lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|dt|| computational step size&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|realtime|| virtual time of the model&lt;br /&gt;
|}&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|&#039;&#039;&#039;Pre-defined functions&#039;&#039;&#039;|| &lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|Steps(m)|| current step number in Mesh m&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|pro(k,id)|| promote by k in regions designated by factor, id (&#039;&#039;pro(k,&#039;&#039;&#039;x&#039;&#039;&#039;)=1+k&#039;&#039;&#039;x&#039;&#039;&#039;&#039;&#039;, i.e. promote by &#039;&#039;k=0&#039;&#039; and the value of &#039;&#039;pro()&#039;&#039; is &#039;&#039;1&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|inh(k,id)|| inhibit by k in regions designated by factor, id (&#039;&#039;inh(k,&#039;&#039;&#039;x&#039;&#039;&#039;)=1/(1+k&#039;&#039;&#039;x&#039;&#039;&#039;)&#039;&#039;, i.e. inhibit by &#039;&#039;k=0&#039;&#039; and the value of &#039;&#039;inh()&#039;&#039; is &#039;&#039;1&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|local_setproperties( m )|| initialise Mesh properties&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|leaf_*( m, ... )|| A large library of functions for manipulating the Mesh data structure, m. All of them are listed in the main Help menu of the GFtbox GUI, both in alphabetical order and categorised by topic.&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The patterns of morphogens A and B are often set up by using logical indexing, e.g.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        id_a_p(m.nodes(:,1)&amp;lt;-0.03)=1; &lt;br /&gt;
        id_b_p(m.nodes(:,2)&amp;lt;-0.01)=1; &lt;br /&gt;
where &#039;&#039;id_a_p&#039;&#039; is the A morphogen. &#039;&#039;m.node(:,1)&#039;&#039; refers to the &#039;&#039;x&#039;&#039; coordinates of all nodes (vertices) in the mesh&amp;lt;br&amp;gt;&lt;br /&gt;
The expression &#039;&#039;(m.nodes(:,1)&amp;lt;-0.03)&#039;&#039; means find all vertices with &#039;&#039;x&#039;&#039; coordinates that are less than -0.03.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Similarly, &#039;&#039;(m.nodes(:,2)&amp;lt;-0.01)&#039;&#039; means find all vertices with &#039;&#039;y&#039;&#039; coordinates that are less than -0.01.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the pattern of polariser (P) is set up by&amp;lt;br&amp;gt;        &lt;br /&gt;
&lt;br /&gt;
        P((m.nodes(:,1)&amp;lt;-0.05)&amp;amp;(m.nodes(:,2)&amp;gt;0.03))=1;&lt;br /&gt;
Where &#039;&#039;(m.nodes(:,1)&amp;lt;-0.05)&amp;amp;(m.nodes(:,2)&amp;gt;0.03)&#039;&#039; means find all vertices with &#039;&#039;x,y&#039;&#039; coordinates that are less than -0.05 and greater than 0.03 respectively&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Thus the full code describing the model is:&lt;br /&gt;
    if (Steps(m)==0) &amp;amp;&amp;amp; m.globalDynamicProps.doinit  % Initialisation code.&lt;br /&gt;
        id_a_p(m.nodes(:,1)&amp;lt;-0.03)=1; % setup region for A where identity factor A is represented by id_a_p&lt;br /&gt;
        id_b_p(m.nodes(:,2)&amp;lt;-0.01)=1; % setup region for B&lt;br /&gt;
    else&lt;br /&gt;
        % @@KRN Growth Regulatory Network&lt;br /&gt;
        kapar_p(:) = id_a_l .* inh(1,id_b_l); % growth rate&lt;br /&gt;
        kaper_p(:) = kapar_p; % isotropic growth&lt;br /&gt;
        kbpar_p(:) = kapar_p; % same on both sides of the sheet&lt;br /&gt;
        kbper_p(:) = kapar_p; % same&lt;br /&gt;
        knor_p(:)  = 0;       % thickness not growing&lt;br /&gt;
    end&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Ready_Reference_Manual&amp;diff=5221</id>
		<title>Ready Reference Manual</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=Ready_Reference_Manual&amp;diff=5221"/>
		<updated>2011-06-24T11:21:24Z</updated>

		<summary type="html">&lt;p&gt;Jrk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Summary of controls=&lt;br /&gt;
Roll the mouse over any control and information about the control will pop-up.&lt;br /&gt;
==Models==&lt;br /&gt;
* As a rule of thumb, growth rate * time step should be less than 0.01. It is possible for the diffusion processes to become unstable if the time step is too large - signals can oscillate. Reduce the time step and reduce the decay rate.&lt;br /&gt;
* Errors in the the interaction function will cause the system to stop. &lt;br /&gt;
** To restart Reset the GUI. &lt;br /&gt;
** To find the error&lt;br /&gt;
*** Set Matlab to always stop on error, Matlab:Menus:Debug:Stop:Always stop on errors. Reset the GFtbox GUI and Step to repeat the error. &lt;br /&gt;
*** Sometimes it is even better to set a break point on the line that fails - that way you can inspect values of variables before the GTtbox try/catch routine takes over.&lt;br /&gt;
*** Matlab provides extensive tutorials on how to program and there is much information on the web.&lt;br /&gt;
  &lt;br /&gt;
==Running models==&lt;br /&gt;
&lt;br /&gt;
The normally &#039;&#039;&#039;green Run pane&#039;&#039;&#039;l turns &#039;&#039;&#039;red&#039;&#039;&#039; whilst the model is running.&amp;lt;br&amp;gt;&lt;br /&gt;
A &#039;&#039;&#039;yellow&#039;&#039;&#039; Run panel means that the model is running on a version of the GFtbox that is older than the model itself (look at the interaction header to see our source code version control number for the copy of GFtbox that created the model).&amp;lt;br&amp;gt;&lt;br /&gt;
An interaction function error (or any other error) will stop the model from running. It is then necessary to Reset using the&#039;&#039;&#039; Reset key - which will have turned red&#039;&#039;&#039;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
To run a model from the GUI&lt;br /&gt;
*Step, execute one step of &#039;&#039;dt&#039;&#039;. A whole lot of information pours out at the command console. Sometimes it takes a while to solve the equations. The process is monitored by a series of dots . . . . . . . Further information is provided below the Plotting panel, e.g. Step number, time per iteration, time per finite element, growth, etc.&lt;br /&gt;
*Run for, and enter the number of steps into the box&lt;br /&gt;
*Run until, and enter the model time to which you want to run&lt;br /&gt;
*Run to, and enter the multiple of the initial area you want to run to&lt;br /&gt;
*Stop, stops execution at the end of the current step.&lt;br /&gt;
*Call, makes a call to the interaction function but does NOT grow. This is useful for checking initial conditions - set patterns of morphogens. Having made a Call to the interaction function it is good practice to then Restart the model before running a model.&lt;br /&gt;
*Menu:Stages. &#039;&#039;&#039;We usually run models&#039;&#039;&#039; by setting up a set of, say 5, stages that we want stored. Then, having run the model we can revert back to any of the stages - make a change - and re-run starting from that point. The stages are stored in the project directory with the suffix *000# where # is the time. Stage times are stored with the project - and copied into the daughter project with Save As.&lt;br /&gt;
**Compute more stages, pops up a box asking for a set of times that you want stored then starts computing&lt;br /&gt;
**Request more stages, does the same but does not start computing.&lt;br /&gt;
**Save experiment stages, saves all the current stage files in a subdirectory.&lt;br /&gt;
**Import experiment stages, recovers a saved experiment. This pair of commands help document results and make figures. In addition, when the system runs on a cluster, the results are returned as experimental results to be accessed in this way.&lt;br /&gt;
==Outputs==&lt;br /&gt;
===Plotting panel===&lt;br /&gt;
To view&lt;br /&gt;
*Specified values, i.e. kapar or a particular morphogen (factor) select from drop down menu top right and tick Plot current factor.&lt;br /&gt;
**To autoscale the axes. Panel:Plot Options:Auto axis range. To autozoom as well, click Menus:Plot:Auto zoom and centre. To fix the axes scale (to view growth). The best is to first grow with auto ranging on. Then click Panel:Plot Options:Axis From Picture and unclick the Auto axis range box. Alternatively, unclick the Auto axis range box and key in values you want - click elsewhere on the GUI to force a replot.&lt;br /&gt;
**To autoscale the morphogen colours. Panel:Plot Options:Auto color range. To fix the colour range the easiest is to click From Picture and unclick the Auto color range. Alternatively, unclick the Auto color range box and key in values you want - click elsewhere on the GUI to force a replot.&lt;br /&gt;
**To find out the level of a morphogen at a particular point on the canvas. Select Tool:Simulation and select the morphogen of interest (top right pull down) and click on the point of interest. The value at that point will appear in bold just below the Panel:Timescale box.&lt;br /&gt;
*Output variables, e.g. growth rate, tick Plot output value and make selection from the two drop down menus.&lt;br /&gt;
*thickness, tick/untick Menu:Plot:Thickness&lt;br /&gt;
To show/hide &lt;br /&gt;
*thickness, tick/untick Menu:Plot:Thickness&lt;br /&gt;
*mesh, tick/untick FE edges&lt;br /&gt;
*axes, tick/untick Menu:Plot:Show/Hide axes&amp;lt;br&amp;gt;&lt;br /&gt;
*legend, tick/untick Menu:Plot:Show/Hide legend - also Set legend to choose heading&amp;lt;br&amp;gt;&lt;br /&gt;
To set/modify values of morphogens (best done in the interaction function)&lt;br /&gt;
* Choose morphogen (list box), Click on Select Tool:Factors, &#039;---&#039; list box to select action and click on appropriate button (Add constant or Add radial, etc).&lt;br /&gt;
* at individual nodes (vertices). Choose morphogen (list box), Click on Select Tool:Factors, &#039;---&#039; list box to select action and click on node.&amp;lt;br&amp;gt;&lt;br /&gt;
To clip the mesh (hide part of the mesh)&lt;br /&gt;
*Tick Clipping plane and choose the plane with Az (azimuth), ti (tilt),  D&lt;br /&gt;
*Tick Clip and select the region to hide by using morphogen values (click on Mgens button)&lt;br /&gt;
===Snapshots===&lt;br /&gt;
Saved in png format in the project snapshots subdirectory&lt;br /&gt;
*Clicking Take snapshot makes a png file copy of the plotting screen. At the same time a copy of the interaction function (relabelled to have .txt as a suffix) is also made - to help document the snapshot.&lt;br /&gt;
*Publication quality screenshot is made by changing the action of the Snapshot button using Menu:Misc:Hi-res snapshots and choosing a number of dots per inch.&lt;br /&gt;
===VRML, OBJ, FIG===&lt;br /&gt;
To export the current mesh&lt;br /&gt;
*VRML, to interactively view the mesh using a web browser export the mesh as a VRML file, Menu:Mesh:Save VRML. We use such files to make 3D prints.&lt;br /&gt;
*FIG, for Matlab figure files.&lt;br /&gt;
===Movies===&lt;br /&gt;
By default movies are uncompressed and stored in the projects movies subdirectory&lt;br /&gt;
*To compress select Menu:Movie:Codec - we currently favour Motion JPEG avi&lt;br /&gt;
*To automatically convert the output to flash, .flv, select Menu:Movie:Convert to flash. This option requires the ffmpeg program to be on the current path.&lt;br /&gt;
*Click Record Movie to start creating a movie. The button will change to Stop Movie.&lt;br /&gt;
===Web and PowerPoint===&lt;br /&gt;
Writing web and PowerPoint pages is facilitated by:&lt;br /&gt;
*&#039;&#039;&#039;Output .avi for PowerPoint&#039;&#039;&#039;. Use Menu:Movie:Codec: Motion JPEG avi. This does not play properly on PowerPoint 2007 unless you run PowerPoint in 2003 compatibility mode. The movie is saved into the project movies subdirectory together with an image (.png) of the final frame and a copy of the interaction function (renamed .txt - to document the results).&lt;br /&gt;
*Output &#039;&#039;&#039;flash (.flv) movies for web&#039;&#039;&#039;. Select Menu:Movie:Convert to flash. This option requires the [http://www.ffmpeg.org/ ffmpeg] program to be on the current path. The movie is saved to the project directory together with an image (.png) of the first frame (for last frame see above).&lt;br /&gt;
*Output&#039;&#039;&#039; web compatible copy of the interaction function&#039;&#039;&#039; use &#039;&#039;webify_interaction_function.m&#039;&#039; which outputs a txt file with  comments marked up in HTML to appear in green and sections in blue.&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
===Files===&lt;br /&gt;
==Simulation==&lt;br /&gt;
&lt;br /&gt;
==Graphical User Interface==&lt;br /&gt;
===Menus===&lt;br /&gt;
===Panels===&lt;br /&gt;
==Interaction function==&lt;br /&gt;
===Functions===&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=Useful interaction function programming constructs=&lt;br /&gt;
[[Types of morphogens and factors|Types of morphogens and factors click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|&#039;&#039;&#039;Pre-defined variables&#039;&#039;&#039;|| &lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|dt|| computational step size&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|realtime|| virtual time of the model&lt;br /&gt;
|}&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|&#039;&#039;&#039;Pre-defined functions&#039;&#039;&#039;|| &lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|Steps(m)|| current step number in Mesh m&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|pro(k,id)|| promote by k in regions designated by factor, id (&#039;&#039;pro(k,&#039;&#039;&#039;x&#039;&#039;&#039;)=1+k&#039;&#039;&#039;x&#039;&#039;&#039;&#039;&#039;, i.e. promote by &#039;&#039;k=0&#039;&#039; and the value of &#039;&#039;pro()&#039;&#039; is &#039;&#039;1&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|inh(k,id)|| inhibit by k in regions designated by factor, id (&#039;&#039;inh(k,&#039;&#039;&#039;x&#039;&#039;&#039;)=1/(1+k&#039;&#039;&#039;x&#039;&#039;&#039;)&#039;&#039;, i.e. inhibit by &#039;&#039;k=0&#039;&#039; and the value of &#039;&#039;inh()&#039;&#039; is &#039;&#039;1&#039;&#039;).&lt;br /&gt;
|-&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|local_setproperties( m )|| initialise Mesh properties&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;150pt&amp;quot;|leaf_*( m, ... )|| A large library of functions for manipulating the Mesh data structure, m. All of them are listed in the main Help menu, both in alphabetical order and categorised by topic.&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The patterns of morphogens A and B are often set up by using logical indexing, e.g.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        id_a_p(m.nodes(:,1)&amp;lt;-0.03)=1; &lt;br /&gt;
        id_b_p(m.nodes(:,2)&amp;lt;-0.01)=1; &lt;br /&gt;
where &#039;&#039;id_a_p&#039;&#039; is the A morphogen. &#039;&#039;m.node(:,1)&#039;&#039; refers to the &#039;&#039;x&#039;&#039; coordinates of all nodes (vertices) in the mesh&amp;lt;br&amp;gt;&lt;br /&gt;
The expression &#039;&#039;(m.nodes(:,1)&amp;lt;-0.03)&#039;&#039; means find all vertices with &#039;&#039;x&#039;&#039; coordinates that are less than -0.03.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Similarly, &#039;&#039;(m.nodes(:,2)&amp;lt;-0.01)&#039;&#039; means find all vertices with &#039;&#039;y&#039;&#039; coordinates that are less than -0.01.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the pattern of polariser (P) is set up by&amp;lt;br&amp;gt;        &lt;br /&gt;
&lt;br /&gt;
        P((m.nodes(:,1)&amp;lt;-0.05)&amp;amp;(m.nodes(:,2)&amp;gt;0.03))=1;&lt;br /&gt;
Where &#039;&#039;(m.nodes(:,1)&amp;lt;-0.05)&amp;amp;(m.nodes(:,2)&amp;gt;0.03)&#039;&#039; means find all vertices with &#039;&#039;x,y&#039;&#039; coordinates that are less than -0.05 and greater than 0.03 respectively&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Thus the full code describing the model is:&lt;br /&gt;
    if (Steps(m)==0) &amp;amp;&amp;amp; m.globalDynamicProps.doinit  % Initialisation code.&lt;br /&gt;
        id_a_p(m.nodes(:,1)&amp;lt;-0.03)=1; % setup region for A where identity factor A is represented by id_a_p&lt;br /&gt;
        id_b_p(m.nodes(:,2)&amp;lt;-0.01)=1; % setup region for B&lt;br /&gt;
    else&lt;br /&gt;
        % @@KRN Growth Regulatory Network&lt;br /&gt;
        kapar_p(:) = id_a_l .* inh(1,id_b_l); % growth rate&lt;br /&gt;
        kaper_p(:) = kapar_p; % isotropic growth&lt;br /&gt;
        kbpar_p(:) = kapar_p; % same on both sides of the sheet&lt;br /&gt;
        kbper_p(:) = kapar_p; % same&lt;br /&gt;
        knor_p(:)  = 0;       % thickness not growing&lt;br /&gt;
    end&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=GFtbox_Tutorial_pages&amp;diff=4893</id>
		<title>GFtbox Tutorial pages</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=GFtbox_Tutorial_pages&amp;diff=4893"/>
		<updated>2011-06-23T14:22:15Z</updated>

		<summary type="html">&lt;p&gt;Jrk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[GFtbox|&#039;&#039;GFtbox&#039;&#039; Details]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Notes from a new user|Notes from a new user]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Running example models and using a cluster|Running example models and using a cluster]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[GFtbox Example pages|Examples from our papers]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Types of morphogens and factors| Types of morphogens and factors are given here]]&amp;lt;br&amp;gt;&lt;br /&gt;
([[Full freshly minted interaction function|A newly created interaction function is shown here - the green comments are another ready reference.]])&amp;lt;br&amp;gt;&lt;br /&gt;
[[Ready Reference Manual|&#039;&#039;&#039;&#039;&#039;Ready Reference&#039;&#039;&#039;&#039;&#039; Manual]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
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]].&lt;br /&gt;
=Three ways to use &#039;&#039;GFtbox&#039;&#039;=&lt;br /&gt;
1) &#039;&#039;&#039;Do everything from the Graphical User Interface (GUI)&#039;&#039;&#039;. [[GFtbox Tutorial pages#1 Modelling using the Graphical User Interface|  See here for the best way to start working with &#039;&#039;GFtbox&#039;&#039;]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
2) &#039;&#039;&#039;Do only some things&#039;&#039;&#039; 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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
For an introduction to the [[GFtbox Tutorial pages#Output and Results| &#039;&#039;&#039;output and results&#039;&#039;&#039;, see here.]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
3) &#039;&#039;&#039;Without the GUI&#039;&#039;&#039;.  [[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. &lt;br /&gt;
=&#039;&#039;&#039;1&#039;&#039;&#039; Modelling using the Graphical User Interface=&lt;br /&gt;
== Isotropic growth==&lt;br /&gt;
&#039;&#039;&#039;How to use the tutorial.&#039;&#039;&#039; Open the GFtbox and attempt to repeat the results shown. There are notes to explain how to keep a record of your results, e.g. Snapshots, Movie. &lt;br /&gt;
===1 A===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;700pt&amp;quot;|[[In the beginning Uniform|For tutorial on uniform growth click here.]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Consider a disc shaped canvas (tissue) in which the &#039;&#039;&#039;specified growth is uniform&#039;&#039;&#039;, isotropic and on both sides.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;&#039;&#039;Into what shape will the disc grow?&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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 &#039;&#039;Kapar&#039;&#039; and &#039;&#039;Kaper&#039;&#039; (&#039;&#039;A&#039;&#039; side) and &#039;&#039;Kbpar&#039;&#039; and &#039;&#039;Kbper&#039;&#039; (&#039;&#039;B&#039;&#039; side).&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;300pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;GPT_tut_uniform_20110527-0003.flv|GPT_tut_uniform_20110527-0003_Last.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===1 B===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;700pt&amp;quot;|[[In the beginning non-uniform|For tutorial on non-uniform growth click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Consider a disc shaped canvas (tissue) in which the&#039;&#039;&#039; non-uniform specified growth&#039;&#039;&#039; increases in proportion to the distance from the centre.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&#039;&#039;&#039;Into what shape will the disc grow?&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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] ).&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;  loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;GPT_tut_uniform_20110527-0006.flv|GPT_tut_uniform_20110527-0006_First.png&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Adding polariser==&lt;br /&gt;
===1 C===&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;700pt&amp;quot;|[[In the beginning Growing a cone|For tutorial on uniform growth non-uniform polariser click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
In the presence of polariser, &#039;&#039;GFtbox&#039;&#039; 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: &#039;&#039;Kapar&#039;&#039; and &#039;&#039;Kaper&#039;&#039; (&#039;&#039;A&#039;&#039; side) and &#039;&#039;Kbpar&#039;&#039; and &#039;&#039;Kbper&#039;&#039; (&#039;&#039;B&#039;&#039; side).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
We now&#039;&#039;&#039; add polariser&#039;&#039;&#039;.  Start with example A - uniform growth - and add a radial polarising gradient.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;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 (&#039;&#039;Kpar&#039;&#039;) or perpendicular to (&#039;&#039;Kper&#039;&#039;) that direction.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Given a &#039;&#039;&#039;uniform pattern of specified growth parallel&#039;&#039;&#039; to the polariser and &#039;&#039;&#039;zero specified growth perpendicular&#039;&#039;&#039; to the polariser.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &#039;&#039;&#039;What will be the final shape?&#039;&#039;&#039;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot;   loop=&amp;quot;true&amp;quot; background=&amp;quot;white&amp;quot;&amp;gt;GPT_in_the_beginning_2_20110510-0003.flv|GPT_in_the_beginning_2_20110510-0003_First.png&amp;lt;/wikiflv&amp;gt;&amp;lt;small&amp;gt;Note: the gradient of the polariser, green to cyan, is shown using the arrows. Specified growth rate parallel to the arrows, red, is uniform.&amp;lt;/small&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=&#039;&#039;&#039;2&#039;&#039;&#039; Modelling using a combination of GUI and interaction function=&lt;br /&gt;
&#039;&#039;&#039;Programmatic modelling&#039;&#039;&#039;. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;How to use these tutorials.&#039;&#039;&#039; 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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The &#039;&#039;&#039;full specification&#039;&#039;&#039; of a &#039;&#039;GFtbox&#039;&#039; model is stored in a combination of the mesh data structure (&#039;&#039;&#039;Mesh&#039;&#039;&#039;) and the &#039;&#039;&#039;interaction function&#039;&#039;&#039;. 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 &#039;&#039;&#039;interaction function&#039;&#039;&#039; (a Matlab program file &#039;&#039;.m&#039;&#039;) contains all the details of the growth regulation system: morphogen concentrations, signal interactions etc. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
When a new project is first edited&#039;&#039;&#039; the interaction function is generated automatically&#039;&#039;&#039;. 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 &#039;&#039;&#039;always invoke the Editor from the GUI&#039;&#039;&#039; (Panel: Interaction Function: Edit).&lt;br /&gt;
&lt;br /&gt;
===2 A===&lt;br /&gt;
&#039;&#039;&#039;Basic interaction function&#039;&#039;&#039;&lt;br /&gt;
The patterns of morphogens A and B are set up by &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        id_a_p(m.nodes(:,1)&amp;lt;-0.03)=1; &lt;br /&gt;
        id_b_p(m.nodes(:,2)&amp;lt;-0.01)=1; &lt;br /&gt;
&lt;br /&gt;
where &#039;&#039;id_a_p&#039;&#039; is the A morphogen. &#039;&#039;m.node(:,1)&#039;&#039; refers to the &#039;&#039;x&#039;&#039; coordinates of all nodes (vertices) in the mesh&amp;lt;br&amp;gt;&lt;br /&gt;
The expression &#039;&#039;(m.nodes(:,1)&amp;lt;-0.03)&#039;&#039; means find all vertices with &#039;&#039;x&#039;&#039; coordinates that are less than -0.03.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Similarly, &#039;&#039;(m.nodes(:,2)&amp;lt;-0.01)&#039;&#039; means find all vertices with &#039;&#039;y&#039;&#039; coordinates that are less than -0.01.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And the pattern of polariser (P) is set up by&amp;lt;br&amp;gt;        &lt;br /&gt;
&lt;br /&gt;
        P((m.nodes(:,1)&amp;lt;-0.05)&amp;amp;(m.nodes(:,2)&amp;gt;0.03))=1;&lt;br /&gt;
Where &#039;&#039;(m.nodes(:,1)&amp;lt;-0.05)&amp;amp;(m.nodes(:,2)&amp;gt;0.03)&#039;&#039; means find all vertices with &#039;&#039;x,y&#039;&#039; coordinates that are less than -0.05 and greater than 0.03 respectively&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Thus the full code describing the model is:&lt;br /&gt;
    if (Steps(m)==0) &amp;amp;&amp;amp; m.globalDynamicProps.doinit  % Initialisation code.&lt;br /&gt;
        id_a_p(m.nodes(:,1)&amp;lt;-0.03)=1; % setup region for A where identity factor A is represented by id_a_p&lt;br /&gt;
        id_b_p(m.nodes(:,2)&amp;lt;-0.01)=1; % setup region for B&lt;br /&gt;
    else&lt;br /&gt;
        % @@KRN Growth Regulatory Network&lt;br /&gt;
        kapar_p(:) = id_a_l .* inh(1,id_b_l); % growth rate&lt;br /&gt;
        kaper_p(:) = kapar_p; % isotropic growth&lt;br /&gt;
        kbpar_p(:) = kapar_p; % same on both sides of the sheet&lt;br /&gt;
        kbper_p(:) = kapar_p; % same&lt;br /&gt;
        knor_p(:)  = 0;       % thickness not growing&lt;br /&gt;
    end&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|[[Tutorial on the basic interaction function|For tutorial on a basic interaction function click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The tutorial explains how the code shown above appears in the interaction function. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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 (&#039;&#039;Kapar&#039;&#039;, etc.) that have already been set through the GUI.&lt;br /&gt;
[[Types of morphogens and factors| Types of morphogens and factors are given here]].&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_why_matlab-2011-05-05-0005.flv|GPT_why_matlab-2011-05-05-0005_First.png‎&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
|-align=&amp;quot;top&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
||&amp;lt;center&amp;gt;Play and the mesh will grow and subdivide. Normally we do not want to see the mesh. Red is growth rate&amp;lt;/center&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
===2 B===&lt;br /&gt;
&#039;&#039;&#039;Interaction function in detail&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
([[Full freshly minted interaction function|A newly created interaction function is shown here - this one has two, user specified morphogens: &#039;&#039;id_a&#039;&#039; and &#039;&#039;id_b&#039;&#039;.]])&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|[[Tutorial on the interaction function details|Tutorial on the interaction function details click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Types of morphogens and factors| Types of morphogens and factors are given here]].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Submodel 1&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0002.flv|GPT_tut_interaction_example_20110601-0002.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1&amp;lt;/center&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Submodel 2. Growth in the region that has no arrows is isotropic and, as result, the outgrowth is blunt.&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0007.flv|GPT_tut_interaction_example_20110601-0006_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 2&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
=Output and Results=&lt;br /&gt;
===2 C Illustrating two independent ways to form shapes and the use of submodels. ===&lt;br /&gt;
Conclusion: interesting shapes can be generated either by &#039;&#039;&#039;patterns of differential growth&#039;&#039;&#039; or&#039;&#039;&#039; patterns of local growth axe&#039;&#039;&#039;s. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorial on two romatic hearts|Tutorial on two romatic hearts click here]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|Submodel 1. Uniform specified polariser (&#039;&#039;&#039;no polariser gradient&#039;&#039;&#039;). Creating a shape using a specified pattern of isotropic growth.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Result&#039;&#039;&#039;: simple patterns of differential growth can readily produce blobby shapes. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_TwoWayHeart_20110531-0001.flv|GPT_TwoWayHeart_20110531-0001_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1. Pattern of isotropic specified growth (no polariser)&amp;lt;/center&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|Submodel 2.&#039;&#039;&#039;Uniform specified growth&#039;&#039;&#039;. Creating a shape using a specified pattern of diffusable polariser.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Result&#039;&#039;&#039;: simple patterns organising a diffusable polariser can readily produce sharp shapes. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_TwoWayHeart_20110531-0002.flv|GPT_TwoWayHeart_20110531-0002_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 2. Pattern of specified polariser levels (green-cyan). Polariser can diffuse and the gradient is arrowed. Uniform specified growth (red).&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
===2 D===&lt;br /&gt;
&#039;&#039;&#039;Retaining strain and cutting the mesh&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorial on retaining residual strain and cutting|Tutorial on retaining residual strain and cutting]]&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|&lt;br /&gt;
[[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.&lt;br /&gt;
|width=&amp;quot;120pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_RetainStrainAndCut_20110603-0006.flv|GPT_RetainStrainAndCut_20110603-0006.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;| [[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.&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_RetainStrainAndCut_20110603-0004.flv|GPT_RetainStrainAndCut_20110603-0004.png‎&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;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.&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
===2 E===&lt;br /&gt;
&#039;&#039;&#039;Patterning and growth&#039;&#039;&#039;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
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). &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Tutorial on the patterning interaction function|Tutorial on the patterning interaction function]]&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|something here&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0002.flv|GPT_tut_interaction_example_20110601-0002.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 1&amp;lt;/center&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|width=&amp;quot;400pt&amp;quot;|something here&lt;br /&gt;
|width=&amp;quot;200pt&amp;quot;|&amp;lt;wikiflv width=&amp;quot;300&amp;quot; height=&amp;quot;300&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_tut_interaction_example_20110601-0007.flv|GPT_tut_interaction_example_20110601-0006_Last.png‎&amp;lt;/wikiflv&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;Play submodel 2&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=&#039;&#039;&#039;3&#039;&#039;&#039; Running models without the GUI=&lt;br /&gt;
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 &#039;&#039;GFtbox&#039;&#039; 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 &#039;&#039;GFtbox&#039;&#039; compatible with [http://www.gnu.org/software/octave/ Octave].)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;How to use these tutorials.&#039;&#039;&#039;  First ensure that your model is working as you would expect using the GUI. Then run the model from the Matlab command line. Finally, submit the project to the linux computing cluster with one or more ranges of parameters.&lt;br /&gt;
For further details [[Running example models and using a cluster|Running example models and using a cluster]]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=GFtbox&amp;diff=4830</id>
		<title>GFtbox</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=GFtbox&amp;diff=4830"/>
		<updated>2011-06-10T16:27:58Z</updated>

		<summary type="html">&lt;p&gt;Jrk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[GFtbox Tutorial pages|&#039;&#039;Tutorials&#039;&#039;]] and [https://sourceforge.net/p/gftbox/ &#039;&#039;Download&#039;&#039;]&amp;lt;br&amp;gt;&lt;br /&gt;
==What is &#039;&#039;GFtbox&#039;&#039;?==&lt;br /&gt;
[[Image:GPT_thumbnail2.png|thumb|left|100px]]&lt;br /&gt;
&#039;&#039;&#039;We wish to understand&#039;&#039;&#039; how patterns of gene activity in biological organs influence the developing shape. Our suggestion is that genes may regulate growth direction independently of growth rate. We formalised our ideas in the Growing Polarised Tissue Framework (reference 1, below). The icon is based on Fig. 4 of reference 1, and shows an asymmetrical spur that has grown under the influence of a polariser gradient, indicated by the arrows.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Intuition is not&#039;&#039;&#039; a good guide to the behaviour of tissue growing under the influence of patterns of growth. Patterns interact with each other and the continuous sheet of tissue to produce complex shapes. It is therefore necessary to translate intuition into a mathematical model whose behaviour can be calculated. &#039;&#039;GFtbox&#039;&#039; is a package for creating and simulating such models.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;A &#039;&#039;GFtbox&#039;&#039; project comprises two parts&#039;&#039;&#039;, the Mesh and the Interaction function. The Mesh is a finite element model of the tissue, together with patterns of gene activity, tissue identity, and biochemical properties. The Interaction function specifies the local interactions of these properties.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Does &#039;&#039;GFtbox&#039;&#039; work correctly?&#039;&#039;&#039; Validation is an important question to be asked of all modelling software. There are various simple models for which analytical solutions can be obtained and compared with the computations performed by GFtbox. An extensive range of such validation tests can be found in Supplemental Text 1 of reference 1.&lt;br /&gt;
&lt;br /&gt;
We have used the &#039;&#039;&#039;GPT-framework&#039;&#039;&#039; to understand the development of the Snapdragon flower (reference 2 below). &#039;&#039;&#039;Using &#039;&#039;GFtbox&#039;&#039;&#039;&#039;&#039; we started with a crown shaped sheet of tissue (the canvas), laid out observed or hypothesised patterns of regulatory activity and then grew the canvas in 3D. Patterning can continue during growth and the final shape was compared quantitatively with its biological counterpart -- so &#039;&#039;&#039;testing the hypotheses&#039;&#039;&#039; made in the model (reference 3 below).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;To work with &#039;&#039;GFtbox&#039;&#039;&#039;&#039;&#039; is to practice thinking quantitatively about the relationship between genes, growth and form.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;References&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;1. Richard Kennaway, Enrico Coen, Amelia Green, Andrew Bangham, &amp;quot;Generation of diverse biological forms through combinatorial interactions between tissue polarity and growth&amp;quot;, PLoS Comp Biol, 2011. (In press.)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;2. Amelia Green, Richard Kennaway, Andrew Hanna, Andrew Bangham, Enrico Coen, &amp;quot;Genetic Control of Organ Shape and Tissue Polarity&amp;quot;, PLoS Biol, 2010, vol.8, no.11. [http://dx.doi.org/10.1371/journal.pbio.1000537 Link.]&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;3. Min-Long Cui, Lucy Copsey, Amelia Green, Andrew Bangham, Enrico Coen, &amp;quot;Quantitative Control of Organ Shape by Combinatorial Gene Activity&amp;quot;, PLoS Biol, 2010, vol.8, no.11. [http://dx.doi.org/10.1371/journal.pbio.1000538 Link.]&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==What does &#039;&#039;GFtbox&#039;&#039; require?==&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;GFtbox&#039;&#039; is written in [http://en.wikipedia.org/wiki/MATLAB  Matlab].&#039;&#039;&#039; It does not require any extra Mathworks toolboxes, nor any separately compiled modules. Matlab is available as a [http://www.mathworks.com/products/matlab/tryit.html 30 day free trial] and as a [http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition]. &#039;&#039;GFtbox&#039;&#039; comprises around 1000 subroutines and 50,000 lines of code. It allows individual models, the part that a user writes, to be very compact -- 10 to 100 lines of Matlab code. For example, the model shown in Fig. 1 has a mesh that was created using the graphical user interface, and this code in its interaction function:&lt;br /&gt;
&lt;br /&gt;
    if (Steps(m)==0) &amp;amp;&amp;amp; m.globalDynamicProps.doinit  % Initialisation code.&lt;br /&gt;
        id_a_p(m.nodes(:,1)&amp;lt;-0.03)=1; % set up region for A where identity factor A is represented by id_a_p&lt;br /&gt;
        id_b_p(m.nodes(:,2)&amp;lt;-0.01)=1; % set up region for B&lt;br /&gt;
    else&lt;br /&gt;
        % @@KRN Growth Regulatory Network&lt;br /&gt;
        kapar_p(:) = id_a_l .* inh(1,id_b_l); % growth rate&lt;br /&gt;
        kaper_p(:) = kapar_p; % isotropic growth&lt;br /&gt;
        kbpar_p(:) = kapar_p; % same on both sides of the sheet&lt;br /&gt;
        kbper_p(:) = kapar_p; % same&lt;br /&gt;
        knor_p(:)  = 0;       % thickness not growing&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|[[Image:GPT_why_matlab-2011-05-05-0005_First.png|288px|left|The Labguide logo]]&lt;br /&gt;
||&amp;lt;wikiflv width=&amp;quot;352&amp;quot; height=&amp;quot;288&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_why_matlab-2011-05-05-0005.flv|GPT_why_matlab-2011-05-05-0005.png‎&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
|-align=&amp;quot;top&amp;quot;&lt;br /&gt;
|&amp;lt;center&amp;gt;Fig. 1. Mesh with two intersecting patterns of growth factors.  Blue is factor A, Green factor B&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;A movie of the mesh growing and subdividing. The intensity of red represents the growth rate&amp;lt;/center&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why Matlab?&#039;&#039;&#039; The language suits our problem - the reasoning goes like this. Tissue is represented by a thin 3D mesh. Growth factors levels vary spatially forming patterns, e.g. Fig. 1. Here there are two, &#039;&#039;A&#039;&#039; and &#039;&#039;B&#039;&#039;. We might make the hypothesis that the growth rate is specified by &#039;&#039;A&#039;&#039; but partially inhibited by &#039;&#039;B&#039;&#039; (inhibited by an amount &#039;&#039;K&#039;&#039;). This is a simple idea that can be expressed in Matlab equally simply by writing &#039;&#039;Growth=A .* inh(K, B)&#039;&#039;. This is because variables &#039;&#039;A&#039;&#039; and &#039;&#039;B&#039;&#039; can represent vectors - in this case a level for each node in the mesh. We also define a general inhibition function (&#039;&#039;inh&#039;&#039;).  It means that it is straightforward to convert our thoughts on the biology into a programmatic description of a computational model. Moreover, the language is well documented with lots of convenient tools. In particular, Matlab has an extensive library of portable graphical user interface (GUI) functions - and this is convenient for producing tools to visualise the mesh and patterns of growth factors. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The computational bottleneck&#039;&#039;&#039; in &#039;&#039;GFtbox&#039;&#039; is solving the finite element equations. We find that the Matlab [http://www.mathworks.com/help/techdoc/ref/cgs.html cgs] function is quicker and more accurate than alternatives from other sources ([http://software.intel.com/en-us/articles/intel-mkl/ lsqr], [http://www.culatools.com/forums/viewtopic.php?f=14&amp;amp;t=721 culaSgesvd], there are options to choose these solvers and the speed of computation is displayed constantly at the bottom of the GUI). The speed of &#039;&#039;GFtbox&#039;&#039; appears to be limited by memory-cpu bandwidth rather than cpu speed. It runs best interactively on a 64 bit machine, lots of memory and a silicon hard-drive. Growing &#039;&#039;GFtbox&#039;&#039; models does not require the GUI - we can run multiple models on a computing cluster and then visualise the results on the GUI. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Matlab is a weakly typed&#039;&#039;&#039; language and that too is an advantage whilst we develop the necessary concepts for &#039;&#039;GFtbox&#039;&#039;. (Whilst it is possible to create a dedicated class library, we defer that until we are clearer about what functionality will be needed to model most biology.) In addition, Matlab is sufficiently flexible that inexperienced programmers, half our team are biologists, can pick it up on-the-fly. It behaves as an interpreted language, which makes it easy to break and step through code to follow what is happening. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Matlab runs on&#039;&#039;&#039; Windows, Mac and Linux. It is freely available and well supported -- but not free of cost. Programmers need to earn a living. We prefer our paid experts to focus on our speciality and let Mathworks maintain compatibility with new processors, OpenGL, multi-threading, algebraic algorithms (appropriate LAPACK and machine-specific BLAS libraries), user interfaces and handle multi-platform problems. The key Matlab numerical algorithms are documented and generally visible and there is a large user-base providing lots of web based help. &lt;br /&gt;
&lt;br /&gt;
==How to start using &#039;&#039;GFtbox&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
[http://sourceforge.net/p/gftbox/home/ &#039;&#039;&#039;&#039;&#039;GFtbox&#039;&#039; can be freely downloaded&#039;&#039;&#039; from sourceforge]. After downloading, start Matlab, cd to the GFtbox directory, and give the command &amp;lt;code&amp;gt;GFtbox&amp;lt;/code&amp;gt;. GFtbox will start and present you with its graphic interface.&lt;br /&gt;
&lt;br /&gt;
GFtbox automatically adds all of its subdirectories to the Matlab command path. If you give a &amp;lt;code&amp;gt;savepath&amp;lt;/code&amp;gt; command at the Matlab console, then Matlab will remember where GFtbox is, and on subsequent runs of Matlab you will not have to cd to the GFtbox directory before running it.&lt;br /&gt;
&lt;br /&gt;
[[GFtbox Tutorial pages|&#039;&#039;&#039;In addition to the tutorials given here&#039;&#039;&#039;]], GFtbox comes with several example projects and the projects behind our published Figures. These projects appear on the Projects menu of the GFtbox window, in the Models submenu. There is a Help menu and when a new project is formed - the new associated interaction function is filled with comments that illustrate how the model can be written.  In the GUI, mouseover text is provided for each of the GUI functions and the last item in every menu is a local help submenu. Documentation files can be found in the &#039;&#039;doc&#039;&#039; subdirectory of GFtbox.&lt;br /&gt;
&lt;br /&gt;
[[GFtbox Tutorial pages|&#039;&#039;&#039;Tutorial pages&#039;&#039;&#039;]]&lt;br /&gt;
==Limitations of &#039;&#039;GFtbox&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
GFtbox is primarily for modelling curved finitely thick surfaces and does not handle bulk three-dimensional solids.&lt;br /&gt;
&lt;br /&gt;
(More stuff to appear...)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&amp;lt;wikiflv width=&amp;quot;360&amp;quot; height=&amp;quot;288&amp;quot;  logo=&amp;quot;false&amp;quot;&amp;gt;test.flv&amp;lt;/wikiflv&amp;gt;--&amp;gt;&lt;br /&gt;
&amp;lt;!--&amp;lt;wikiflv width=&amp;quot;640&amp;quot; height=&amp;quot;288&amp;quot;  logo=&amp;quot;false&amp;quot;&amp;gt;test.flv&amp;lt;/wikiflv&amp;gt;--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=GFtbox&amp;diff=4829</id>
		<title>GFtbox</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=GFtbox&amp;diff=4829"/>
		<updated>2011-06-10T16:24:18Z</updated>

		<summary type="html">&lt;p&gt;Jrk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[GFtbox Tutorial pages|&#039;&#039;Tutorials&#039;&#039;]] and [https://sourceforge.net/p/gftbox/ &#039;&#039;Download&#039;&#039;]&amp;lt;br&amp;gt;&lt;br /&gt;
==What is &#039;&#039;GFtbox&#039;&#039;?==&lt;br /&gt;
[[Image:GPT_thumbnail2.png|thumb|left|100px]]&lt;br /&gt;
&#039;&#039;&#039;We wish to understand&#039;&#039;&#039; how patterns of gene activity in biological organs influence the developing shape. Our suggestion is that genes may regulate growth direction independently of growth rate. We formalised our ideas in the Growing Polarised Tissue Framework (reference 1, below). The icon is based on Fig. 4 of reference 1, and shows an asymmetrical spur that has grown under the influence of a polariser gradient, indicated by the arrows.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Intuition is not&#039;&#039;&#039; a good guide to the behaviour of tissue growing under the influence of patterns of growth. Patterns interact with each other and the continuous sheet of tissue to produce complex shapes. It is therefore necessary to translate intuition into a mathematical model whose behaviour can be calculated. &#039;&#039;GFtbox&#039;&#039; is a package for creating and simulating such models.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;A &#039;&#039;GFtbox&#039;&#039; project comprises two parts&#039;&#039;&#039;, the Mesh and the Interaction function. The Mesh is a finite element model of the tissue, together with patterns of gene activity, tissue identity, and biochemical properties. The Interaction function specifies the local interactions of these properties.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Does &#039;&#039;GFtbox&#039;&#039; work correctly?&#039;&#039;&#039; Validation is an important question to be asked of all modelling software. There are various simple models for which analytical solutions can be obtained and compared with the computations performed by GFtbox. An extensive range of such validation tests can be found in Supplemental Text 1 of reference 1.&lt;br /&gt;
&lt;br /&gt;
We have used the &#039;&#039;&#039;GPT-framework&#039;&#039;&#039; to understand the development of the Snapdragon flower (reference 2 below). &#039;&#039;&#039;Using &#039;&#039;GFtbox&#039;&#039;&#039;&#039;&#039; we started with a crown shaped sheet of tissue (the canvas), laid out observed or hypothesised patterns of regulatory activity and then grew the canvas in 3D. Patterning can continue during growth and the final shape was compared quantitatively with its biological counterpart -- so &#039;&#039;&#039;testing the hypotheses&#039;&#039;&#039; made in the model (reference 3 below).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;To work with &#039;&#039;GFtbox&#039;&#039;&#039;&#039;&#039; is to practice thinking quantitatively about the relationship between genes, growth and form.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;References&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;1. Richard Kennaway, Enrico Coen, Amelia Green, Andrew Bangham, &amp;quot;Generation of diverse biological forms through combinatorial interactions between tissue polarity and growth&amp;quot;, PLoS Comp Biol, 2011. (In press.)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;2. Amelia Green, Richard Kennaway, Andrew Hanna, Andrew Bangham, Enrico Coen, &amp;quot;Genetic Control of Organ Shape and Tissue Polarity&amp;quot;, PLoS Biol, 2010, vol.8, no.11. [http://dx.doi.org/10.1371/journal.pbio.1000537 Link.]&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;3. Min-Long Cui, Lucy Copsey, Amelia Green, Andrew Bangham, Enrico Coen, &amp;quot;Quantitative Control of Organ Shape by Combinatorial Gene Activity&amp;quot;, PLoS Biol, 2010, vol.8, no.11. [http://dx.doi.org/10.1371/journal.pbio.1000538 Link.]&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==What does &#039;&#039;GFtbox&#039;&#039; require?==&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;GFtbox&#039;&#039; is written in [http://en.wikipedia.org/wiki/MATLAB  Matlab].&#039;&#039;&#039; It does not require any extra Mathworks toolboxes, nor any separately compiled modules. Matlab is available as a [http://www.mathworks.com/products/matlab/tryit.html 30 day free trial] and as a [http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition]. &#039;&#039;GFtbox&#039;&#039; comprises around 1000 subroutines and 50,000 lines of code. It allows individual models, the part that a user writes, to be very compact -- 10 to 100 lines of Matlab code. For example, the model shown in Fig. 1 has a mesh that was created using the graphical user interface, and this code in its interaction function:&lt;br /&gt;
&lt;br /&gt;
    if (Steps(m)==0) &amp;amp;&amp;amp; m.globalDynamicProps.doinit  % Initialisation code.&lt;br /&gt;
        id_a_p(m.nodes(:,1)&amp;lt;-0.03)=1; % set up region for A where identity factor A is represented by id_a_p&lt;br /&gt;
        id_b_p(m.nodes(:,2)&amp;lt;-0.01)=1; % set up region for B&lt;br /&gt;
    else&lt;br /&gt;
        % @@KRN Growth Regulatory Network&lt;br /&gt;
        kapar_p(:) = id_a_l .* inh(1,id_b_l); % growth rate&lt;br /&gt;
        kaper_p(:) = kapar_p; % isotropic growth&lt;br /&gt;
        kbpar_p(:) = kapar_p; % same on both sides of the sheet&lt;br /&gt;
        kbper_p(:) = kapar_p; % same&lt;br /&gt;
        knor_p(:)  = 0;       % thickness not growing&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|[[Image:GPT_why_matlab-2011-05-05-0005_First.png|288px|left|The Labguide logo]]&lt;br /&gt;
||&amp;lt;wikiflv width=&amp;quot;352&amp;quot; height=&amp;quot;288&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_why_matlab-2011-05-05-0005.flv|GPT_why_matlab-2011-05-05-0005.png‎&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
|-align=&amp;quot;top&amp;quot;&lt;br /&gt;
|&amp;lt;center&amp;gt;Fig. 1. Mesh with two intersecting patterns of growth factors.  Blue is factor A, Green factor B&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;A movie of the mesh growing and subdividing. Intensity of red represents growth rate&amp;lt;/center&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why Matlab?&#039;&#039;&#039; The language suits our problem - the reasoning goes like this. Tissue is represented by a thin 3D mesh. Growth factors levels vary spatially forming patterns, e.g. Fig. 1. Here there are two, &#039;&#039;A&#039;&#039; and &#039;&#039;B&#039;&#039;. We might make the hypothesis that the growth rate is specified by &#039;&#039;A&#039;&#039; but partially inhibited by &#039;&#039;B&#039;&#039; (inhibited by an amount &#039;&#039;K&#039;&#039;). This is a simple idea that can be expressed in Matlab equally simply by writing &#039;&#039;Growth=A .* inh(K, B)&#039;&#039;. This is because variables &#039;&#039;A&#039;&#039; and &#039;&#039;B&#039;&#039; can represent vectors - in this case a level for each node in the mesh. We also define a general inhibition function (&#039;&#039;inh&#039;&#039;).  It means that it is straightforward to convert our thoughts on the biology into a programmatic description of a computational model. Moreover, the language is well documented with lots of convenient tools. In particular, Matlab has an extensive library of portable graphical user interface (GUI) functions - and this is convenient for producing tools to visualise the mesh and patterns of growth factors. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The computational bottleneck&#039;&#039;&#039; in &#039;&#039;GFtbox&#039;&#039; is solving the finite elements equation: we find that the Matlab [http://www.mathworks.com/help/techdoc/ref/cgs.html cgs] function is quicker and more accurate than alternatives from other sources ([http://software.intel.com/en-us/articles/intel-mkl/ lsqr], [http://www.culatools.com/forums/viewtopic.php?f=14&amp;amp;t=721 culaSgesvd], there are options to choose these solvers and the speed of computation is displayed constantly at the bottom of the GUI). The speed of &#039;&#039;GFtbox&#039;&#039; appears to be limited by memory-cpu bandwidth rather than cpu speed. It runs best interactively on a 64 bit machine, lots of memory and a silicon hard-drive. Growing &#039;&#039;GFtbox&#039;&#039; models does not require the GUI - we can run multiple models on a computing cluster and then visualise the results on the GUI. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Matlab is a weakly typed&#039;&#039;&#039; language and that too is an advantage whilst we develop the necessary concepts for &#039;&#039;GFtbox&#039;&#039;. (Whilst it is possible to create a dedicated class library, we defer that until we are clearer about what functionality will be needed to model most biology.) In addition, Matlab is sufficiently flexible that inexperienced programmers, half our team are biologists, can pick it up on-the-fly. It behaves as an interpreted language, which makes it easy to break and step through code to follow what is happening. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Matlab runs on&#039;&#039;&#039; Windows, Mac and Linux. It is freely available and well supported - but not free of cost. Programmers need to earn a living. We prefer our paid experts to focus on our speciality and let Mathworks maintain compatibility with new processors, OpenGL, multi-threading, algebraic algorithms (appropriate LAPACK and machine-specific BLAS libraries), user interfaces and handle multi-platform problems. The key Matlab numerical algorithms are documented and generally visible and there is a large user-base providing lots of web based help. &lt;br /&gt;
&lt;br /&gt;
==How to start using &#039;&#039;GFtbox&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
[http://sourceforge.net/p/gftbox/home/ &#039;&#039;&#039;&#039;&#039;GFtbox&#039;&#039; can be freely downloaded&#039;&#039;&#039; from sourceforge]. After downloading, start Matlab, cd to the GFtbox directory, and give the command &amp;lt;code&amp;gt;GFtbox&amp;lt;/code&amp;gt;. GFtbox will start and present you with its graphic interface.&lt;br /&gt;
&lt;br /&gt;
GFtbox automatically adds all of its subdirectories to the Matlab command path. If you give a &amp;lt;code&amp;gt;savepath&amp;lt;/code&amp;gt; command at the Matlab console, then Matlab will remember where GFtbox is, and on subsequent runs of Matlab you will not have to cd to the GFtbox directory before running it.&lt;br /&gt;
&lt;br /&gt;
[[GFtbox Tutorial pages|&#039;&#039;&#039;In addition to the tutorials given here&#039;&#039;&#039;]], GFtbox comes with several example projects and the projects behind our published Figures. These projects appear on the Projects menu of the GFtbox window, in the Models submenu. There is a Help menu and when a new project is formed - the new associated interaction function is filled with comments that illustrate how the model can be written.  In the GUI, mouseover text is provided for each of the GUI functions and the last item in every menu is a local help submenu. Documentation files can be found in the &#039;&#039;doc&#039;&#039; subdirectory of GFtbox.&lt;br /&gt;
&lt;br /&gt;
[[GFtbox Tutorial pages|&#039;&#039;&#039;Tutorial pages&#039;&#039;&#039;]]&lt;br /&gt;
==Limitations of &#039;&#039;GFtbox&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
GFtbox is primarily for modelling curved finitely thick surfaces and does not handle bulk three-dimensional solids.&lt;br /&gt;
&lt;br /&gt;
(More stuff to appear...)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&amp;lt;wikiflv width=&amp;quot;360&amp;quot; height=&amp;quot;288&amp;quot;  logo=&amp;quot;false&amp;quot;&amp;gt;test.flv&amp;lt;/wikiflv&amp;gt;--&amp;gt;&lt;br /&gt;
&amp;lt;!--&amp;lt;wikiflv width=&amp;quot;640&amp;quot; height=&amp;quot;288&amp;quot;  logo=&amp;quot;false&amp;quot;&amp;gt;test.flv&amp;lt;/wikiflv&amp;gt;--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
	<entry>
		<id>http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=GFtbox&amp;diff=4827</id>
		<title>GFtbox</title>
		<link rel="alternate" type="text/html" href="http://cmpdartsvr3.cmp.uea.ac.uk/wiki/BanghamLab/index.php?title=GFtbox&amp;diff=4827"/>
		<updated>2011-06-10T16:23:11Z</updated>

		<summary type="html">&lt;p&gt;Jrk: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[GFtbox Tutorial pages|&#039;&#039;Tutorials&#039;&#039;]] and [https://sourceforge.net/p/gftbox/ &#039;&#039;Download&#039;&#039;]&amp;lt;br&amp;gt;&lt;br /&gt;
==What is &#039;&#039;GFtbox&#039;&#039;?==&lt;br /&gt;
[[Image:GPT_thumbnail2.png|thumb|left|100px]]&lt;br /&gt;
&#039;&#039;&#039;We wish to understand&#039;&#039;&#039; how patterns of gene activity in biological organs influence the developing shape. Our suggestion is that genes may regulate growth direction independently of growth rate. We formalised our ideas in the Growing Polarised Tissue Framework (reference 1, below). The icon is based on Fig. 4 of reference 1, and shows an asymmetrical spur that has grown under the influence of a polariser gradient, indicated by the arrows.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Intuition is not&#039;&#039;&#039; a good guide to the behaviour of tissue growing under the influence of patterns of growth. Patterns interact with each other and the continuous sheet of tissue to produce complex shapes. It is therefore necessary to translate intuition into a mathematical model whose behaviour can be calculated. &#039;&#039;GFtbox&#039;&#039; is a package for creating and simulating such models.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;A &#039;&#039;GFtbox&#039;&#039; project comprises two parts&#039;&#039;&#039;, the Mesh and the Interaction function. The Mesh is a finite element model of the tissue, together with patterns of gene activity, tissue identity, and biochemical properties. The Interaction function specifies the local interactions of these properties.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Does &#039;&#039;GFtbox&#039;&#039; work correctly?&#039;&#039;&#039; Validation is an important question to be asked of all modelling software. There are various simple models for which analytical solutions can be obtained and compared with the computations performed by GFtbox. An extensive range of such validation tests can be found in Supplemental Text 1 of reference 1.&lt;br /&gt;
&lt;br /&gt;
We have used the &#039;&#039;&#039;GPT-framework&#039;&#039;&#039; to understand the development of the Snapdragon flower (reference 2 below). &#039;&#039;&#039;Using &#039;&#039;GFtbox&#039;&#039;&#039;&#039;&#039; we started with a crown shaped sheet of tissue (the canvas), laid out observed or hypothesised patterns of regulatory activity and then grew the canvas in 3D. Patterning can continue during growth and the final shape was compared quantitatively with its biological counterpart -- so &#039;&#039;&#039;testing the hypotheses&#039;&#039;&#039; made in the model (reference 3 below).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;To work with &#039;&#039;GFtbox&#039;&#039;&#039;&#039;&#039; is to practice thinking quantitatively about the relationship between genes, growth and form.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;References&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;1. Richard Kennaway, Enrico Coen, Amelia Green, Andrew Bangham, &amp;quot;Generation of diverse biological forms through combinatorial interactions between tissue polarity and growth&amp;quot;, PLoS Comp Biol, 2011. (In press.)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;2. Amelia Green, Richard Kennaway, Andrew Hanna, Andrew Bangham, Enrico Coen, &amp;quot;Genetic Control of Organ Shape and Tissue Polarity&amp;quot;, PLoS Biol, 2010, vol.8, no.11. [http://dx.doi.org/10.1371/journal.pbio.1000537 Link.]&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;3. Min-Long Cui, Lucy Copsey, Amelia Green, Andrew Bangham, Enrico Coen, &amp;quot;Quantitative Control of Organ Shape by Combinatorial Gene Activity&amp;quot;, PLoS Biol, 2010, vol.8, no.11. [http://dx.doi.org/10.1371/journal.pbio.1000538 Link.]&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==What does &#039;&#039;GFtbox&#039;&#039; require?==&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;GFtbox&#039;&#039; is written in [http://en.wikipedia.org/wiki/MATLAB  Matlab].&#039;&#039;&#039; It does not require any extra Mathworks toolboxes, nor any separately compiled modules. Matlab is available as a [http://www.mathworks.com/products/matlab/tryit.html 30 day free trial] and as a [http://www.mathworks.com/academia/student_version/?s_cid=global_nav student edition]. &#039;&#039;GFtbox&#039;&#039; comprises around 1000 subroutines and 50,000 lines of code. It allows individual models, the part that a user writes, to be very compact -- 10 to 100 lines of Matlab code. For example, the model shown in Fig. 1 has a mesh that was created using the graphical user interface, and this code in its interaction function:&lt;br /&gt;
&lt;br /&gt;
    if (Steps(m)==0) &amp;amp;&amp;amp; m.globalDynamicProps.doinit  % Initialisation code.&lt;br /&gt;
        id_a_p(m.nodes(:,1)&amp;lt;-0.03)=1; % set up region for A where identity factor A is represented by id_a_p&lt;br /&gt;
        id_b_p(m.nodes(:,2)&amp;lt;-0.01)=1; % set up region for B&lt;br /&gt;
    else&lt;br /&gt;
        % @@KRN Growth Regulatory Network&lt;br /&gt;
        kapar_p(:) = id_a_l .* inh(1,id_b_l); % growth rate&lt;br /&gt;
        kaper_p(:) = kapar_p; % isotropic growth&lt;br /&gt;
        kbpar_p(:) = kapar_p; % same on both sides of the sheet&lt;br /&gt;
        kbper_p(:) = kapar_p; % same&lt;br /&gt;
        knor_p(:)  = 0;       % thickness not growing&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;15&amp;quot; cellspacing=&amp;quot;3&amp;quot;&lt;br /&gt;
|[[Image:GPT_why_matlab-2011-05-05-0005_First.png|288px|left|The Labguide logo]]&lt;br /&gt;
||&amp;lt;wikiflv width=&amp;quot;352&amp;quot; height=&amp;quot;288&amp;quot; logo=&amp;quot;false&amp;quot; loop=&amp;quot;true&amp;quot;&amp;gt;GPT_why_matlab-2011-05-05-0005.flv|GPT_why_matlab-2011-05-05-0005.png‎&amp;lt;/wikiflv&amp;gt;&lt;br /&gt;
|-align=&amp;quot;top&amp;quot;&lt;br /&gt;
|&amp;lt;center&amp;gt;Fig. 1. Mesh with two intersecting patterns of growth factors.  Blue is factor A, Green factor B&amp;lt;/center&amp;gt;||&amp;lt;center&amp;gt;Play and the mesh will grow and subdivide. Normally we do not want to see the mesh. Red is growth rate&amp;lt;/center&amp;gt; &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Why Matlab?&#039;&#039;&#039; The language suits our problem - the reasoning goes like this. Tissue is represented by a thin 3D mesh. Growth factors levels vary spatially forming patterns, e.g. Fig. 1. Here there are two, &#039;&#039;A&#039;&#039; and &#039;&#039;B&#039;&#039;. We might make the hypothesis that the growth rate is specified by &#039;&#039;A&#039;&#039; but partially inhibited by &#039;&#039;B&#039;&#039; (inhibited by an amount &#039;&#039;K&#039;&#039;). This is a simple idea that can be expressed in Matlab equally simply by writing &#039;&#039;Growth=A .* inh(K, B)&#039;&#039;. This is because variables &#039;&#039;A&#039;&#039; and &#039;&#039;B&#039;&#039; can represent vectors - in this case a level for each node in the mesh. We also define a general inhibition function (&#039;&#039;inh&#039;&#039;).  It means that it is straightforward to convert our thoughts on the biology into a programmatic description of a computational model. Moreover, the language is well documented with lots of convenient tools. In particular, Matlab has an extensive library of portable graphical user interface (GUI) functions - and this is convenient for producing tools to visualise the mesh and patterns of growth factors. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The computational bottleneck&#039;&#039;&#039; in &#039;&#039;GFtbox&#039;&#039; is solving the finite elements equation: we find that the Matlab [http://www.mathworks.com/help/techdoc/ref/cgs.html cgs] function is quicker and more accurate than alternatives from other sources ([http://software.intel.com/en-us/articles/intel-mkl/ lsqr], [http://www.culatools.com/forums/viewtopic.php?f=14&amp;amp;t=721 culaSgesvd], there are options to choose these solvers and the speed of computation is displayed constantly at the bottom of the GUI). The speed of &#039;&#039;GFtbox&#039;&#039; appears to be limited by memory-cpu bandwidth rather than cpu speed. It runs best interactively on a 64 bit machine, lots of memory and a silicon hard-drive. Growing &#039;&#039;GFtbox&#039;&#039; models does not require the GUI - we can run multiple models on a computing cluster and then visualise the results on the GUI. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Matlab is a weakly typed&#039;&#039;&#039; language and that too is an advantage whilst we develop the necessary concepts for &#039;&#039;GFtbox&#039;&#039;. (Whilst it is possible to create a dedicated class library, we defer that until we are clearer about what functionality will be needed to model most biology.) In addition, Matlab is sufficiently flexible that inexperienced programmers, half our team are biologists, can pick it up on-the-fly. It behaves as an interpreted language, which makes it easy to break and step through code to follow what is happening. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Matlab runs on&#039;&#039;&#039; Windows, Mac and Linux. It is freely available and well supported - but not free of cost. Programmers need to earn a living. We prefer our paid experts to focus on our speciality and let Mathworks maintain compatibility with new processors, OpenGL, multi-threading, algebraic algorithms (appropriate LAPACK and machine-specific BLAS libraries), user interfaces and handle multi-platform problems. The key Matlab numerical algorithms are documented and generally visible and there is a large user-base providing lots of web based help. &lt;br /&gt;
&lt;br /&gt;
==How to start using &#039;&#039;GFtbox&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
[http://sourceforge.net/p/gftbox/home/ &#039;&#039;&#039;&#039;&#039;GFtbox&#039;&#039; can be freely downloaded&#039;&#039;&#039; from sourceforge]. After downloading, start Matlab, cd to the GFtbox directory, and give the command &amp;lt;code&amp;gt;GFtbox&amp;lt;/code&amp;gt;. GFtbox will start and present you with its graphic interface.&lt;br /&gt;
&lt;br /&gt;
GFtbox automatically adds all of its subdirectories to the Matlab command path. If you give a &amp;lt;code&amp;gt;savepath&amp;lt;/code&amp;gt; command at the Matlab console, then Matlab will remember where GFtbox is, and on subsequent runs of Matlab you will not have to cd to the GFtbox directory before running it.&lt;br /&gt;
&lt;br /&gt;
[[GFtbox Tutorial pages|&#039;&#039;&#039;In addition to the tutorials given here&#039;&#039;&#039;]], GFtbox comes with several example projects and the projects behind our published Figures. These projects appear on the Projects menu of the GFtbox window, in the Models submenu. There is a Help menu and when a new project is formed - the new associated interaction function is filled with comments that illustrate how the model can be written.  In the GUI, mouseover text is provided for each of the GUI functions and the last item in every menu is a local help submenu. Documentation files can be found in the &#039;&#039;doc&#039;&#039; subdirectory of GFtbox.&lt;br /&gt;
&lt;br /&gt;
[[GFtbox Tutorial pages|&#039;&#039;&#039;Tutorial pages&#039;&#039;&#039;]]&lt;br /&gt;
==Limitations of &#039;&#039;GFtbox&#039;&#039;==&lt;br /&gt;
&lt;br /&gt;
GFtbox is primarily for modelling curved finitely thick surfaces and does not handle bulk three-dimensional solids.&lt;br /&gt;
&lt;br /&gt;
(More stuff to appear...)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&amp;lt;wikiflv width=&amp;quot;360&amp;quot; height=&amp;quot;288&amp;quot;  logo=&amp;quot;false&amp;quot;&amp;gt;test.flv&amp;lt;/wikiflv&amp;gt;--&amp;gt;&lt;br /&gt;
&amp;lt;!--&amp;lt;wikiflv width=&amp;quot;640&amp;quot; height=&amp;quot;288&amp;quot;  logo=&amp;quot;false&amp;quot;&amp;gt;test.flv&amp;lt;/wikiflv&amp;gt;--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jrk</name></author>
	</entry>
</feed>