MTtbox documentation

From BanghamLab
Revision as of 16:30, 27 April 2012 by AndrewBangham (talk | contribs)
Jump to navigation Jump to search

Return to Bangham Lab Software

Current Status

MTtbox is currently under test and further development
The main data structure is called: 'data'. It can be accessed from the Matlab command line by declaring data to be global.

global data

at any time. The following documentation will refer to fields in data. It also refers to the custom menu items by menu:name.

First view of the MTtbox

1 A

The toolbox is launched with the command
MTtbox

Which will cause the interface to appear at the top left of the monitor.
The left panel (accessed through the handle: data.PanelH) provides control and the right panel (data.plotprops.AxesH) displays the output. They can be dragged anywhere and returned to the top-left using menu:View:Controls to top-left.

MTtbox GUI

1 B

A default project is created by selecting: menu:File:New Project

It forms a cell bounded by regions labelled: Outside, cell_wall, plasma_membrane, cytoplasm and vacuole. These are concentric volumes. Length is measured in microns (time in seconds). The axis labels indicate the thickness of each layer in terms of voxels in this particular model. This is extremely low resolution - it means that the microtubules will have to be unrealistically large. This is convenient for debugging and illustrating the system but not for simulations. The outer surface of each region is coloured, e.g. (Fig. on right) the vacuole is yellow and the cytoplasm is pale green.

The cell can be rotated etc. using the panels at the top of the display panel. Fig. below: all the regions have been hidden (uncheck each item in menu:View) and the mesh associated with the cytoplasm outer surface is displayed (check menu:View:Organelle meshes)
MTtbox GUI

MTtbox GUI

1 C

A project is saved by selecting: menu:File:Save as

Having first saved a project a default Interaction Function is created by selecting Edit. A default project file contains lots of comments to provide help on how to develop the project.

At present the Interaction Functions is not copied to the new project on each Save as command - this has to be done manually.
(Comments are in green - this web version of the matlab file is created using webify_interaction_function('MT_Edinb_20120427.m')).

The default file is largely a copy of MTtbox_BoilerPlate.txt which should be updated to reflect the latest ideas on how to build the function.

function data = MT_Edinb_20120427( data, before )
    if nargin < 1, return; end
% 
%
% extract factors from structure
    for i=1:size( data.factorprops.Concentration,2)
        factname=lower(data.factorprops.Index2Name{i});
        eval([[factname,'_p'],'=reshape(','data.factorprops.Concentration(:,i),[ data.cellprops.cellsize]);']);
        eval([[factname,'_i'],'=','data.factorprops.Name2Index.(factname);']);
    end
% insert model in here
%    data=setupDiffusion(data,'Factorname','s_micplm','DiffK',[0.2,0.2],...
%        'RegionLists',{{'cytoplasm','vacuole','cell_wall'},{'plasma_membrane','microtubules'}});
%    data=setupDiffusion(data,'Factorname','id_micplm','DiffK',[0,0],...
%        'RegionLists',{{'cytoplasm','vacuole','cell_wall'},{'plasma_membrane','microtubules'}});
%    data.factorprops.DiffusionConst(:,1)=0.1; % This should be superceed by the above
%    data.factorprops.DiffusionConst(:,2)=0.05;% This should be superceed by the above
    if data.iterations<0
        % insert initialisation code here - use Initialise button to jump to here
        % modify default cell specifications, etc. to modify how the cell volume is partitioned, e.g.
        % data.organelleprops.plasma_membrane.size=0.95; % fraction of longest dimension
        % data.organelleprops.cytoplasm.size=0.80;
        % data.organelleprops.vacuole.size=0.4;
        % data.organelleprops.microtubules.nuclspont=0.0012; % observed nucleations per square (cubic) micron per sec
    elseif data.iterations==0
        % insert startup code here - use Restart button to jump to here
        %% setup MT size
        %if data.cellprops.cellsize(1)>25
        %    data=mtSETprops(data,'microtubules','size',0.01,'microtubules','growthrate',0.025);
        %    data=mtSETprops(data,'microtubules','shrinkrate',0.005);
        %end
    else
        %id_micplm_p(:)=0; % clear
        %id_micplm_p(data.cellprops.Vol==data.organelleprops.cytoplasm.Label)=0.8; % set cytoplasm region to 1
        %id_micplm_p(round(data.cellprops.cellsize(1)/3):end,:,:)=0; % then set right hand end back to zero
        %s_micplm_p(id_micplm_p>0.1)=0.1;
        %%       limit spontaneous nucleation to a region specified by id_micplm_p
        %        data.organelleprops.microtubules.nuclspont=id_micplm_p;
        %data.cellprops.colourType=0; % set to 1 if colour is to be specified by individual MT property

        %Work through all the microtubules updating properties depending on flags
        %Average number of MT's present is observed to be about 80 i.e. 80/300 square microns (say 1 micron thick
        %so ~0.25 per square (cubic) micron
        for i_MT=1:length(data.working.dyn.microtubules.Org)
            MT=data.working.dyn.microtubules.Org(i_MT);
            % MTtbox monitors ...
            % MT.Props.growthrate
            % MT.Props.shrinkrate
            % MT.Props.maxbend
            % MT.Props.maxAge
            % MT.Props.nuclspont
            % MT.Props.nuclonMT
            % Make changes here, i.e.
            % diffs=diff(MT.Verts).^2; % calculate length of MT
            % MTlength=sum(sqrt(sum(diffs')'))*data.cellprops.micronsPerVoxelEdge; % microns
            % if MTlength>0.5
            %    MT.Props.nuclonMT=min(1,0.4*MTlength); % observed approx. 0.007 per micron per sec
            % else
            %    MT.Props.nuclonMT=0;
            % end
            %ageMT=data.working.CellAge;% seconds
            %maxAgeColour=20;
            %MT.Props.FaceColor=[max(0,min(1,1-ageMT/maxAgeColour)), 0.5, max(0,min(1,ageMT/maxAgeColour))];
%             if  MT.BoundPLM %&& MT.Growing  % it must have hit the plasma_membrane and not aligned
%                 MT.Props.shrinkrate=20; % force it to shrink to oblivion
%                 fprintf(1,'MT(%d) Collided with PLM fastshrink\n',i_MT);
%             end
%             if  MT.BoundMic %&& MT.Growing  % it must have hit the plasma_membrane and not aligned
%                 MT.Props.shrinkrate=20; % force it to shrink to oblivion
%                 fprintf(1,'MT(%d) Collided with MT fastshrink\n',i_MT);
%             end
            % Keep the following
            % Clear flags from collision detector
            MT.BoundPLM=false;
            MT.BoundMic=false;
            MT.BoundVac=false;
            data.working.dyn.microtubules.Org(i_MT)=MT;
        end
    end

% put factors back into structure
    for i=1:size( data.factorprops.Concentration,2)
        factname=lower(data.factorprops.Index2Name{i});
        eval(['data.factorprops.Concentration(:,i)=',[factname,'_p(:);']]);
    end    

end

% This space intentionally left blank.
% Default factor parameters
% Default organelle parameters

%      cell_wall.size          =0.000000
%      cell_wall.offset        =0.500000
%      cell_wall.micronthick   =0.100000
%      cell_wall.minvox        =1.000000
%      cell_wall.FaceColor     =[1.000000,0.000000,1.000000,]
%      cell_wall.FaceAlpha     =0.010000
%      cell_wall.Label         =-5.000000
%      cell_wall.isLayer       =1.000000
%      cell_wall.Static        =1.000000
%      cell_wall.InUse         =1.000000

%plasma_membrane.size          =0.000000
%plasma_membrane.offset        =0.500000
%plasma_membrane.micronthick   =0.010000
%plasma_membrane.minvox        =3.000000
%plasma_membrane.FaceColor     =[1.000000,1.000000,0.000000,]
%plasma_membrane.FaceAlpha     =0.020000
%plasma_membrane.Label         =-4.000000
%plasma_membrane.isLayer       =1.000000
%plasma_membrane.Static        =1.000000
%plasma_membrane.InUse         =1.000000

%      cytoplasm.size          =0.000000
%      cytoplasm.offset        =0.500000
%      cytoplasm.micronthick   =1.000000
%      cytoplasm.minvox        =5.000000
%      cytoplasm.FaceColor     =[0.000000,1.000000,0.000000,]
%      cytoplasm.FaceAlpha     =0.020000
%      cytoplasm.Label         =0.000000
%      cytoplasm.isLayer       =1.000000
%      cytoplasm.Static        =1.000000
%      cytoplasm.InUse         =1.000000

%   microtubules.size          =0.025000
%   microtubules.minvoxel      =3.000000
%   microtubules.growthrate    =0.100000
%   microtubules.shrinkrate    =0.010000
%   microtubules.maxbend       =40.000000
%   microtubules.MaxAngle      =20.000000
%   microtubules.maxAge        =0.000000
%   microtubules.nuclspont     =0.050000
%   microtubules.nuclonMT      =0.090000
%   microtubules.probCatastrophe=0.300000
%   microtubules.FaceColor     =[0.000000,0.000000,1.000000,]
%   microtubules.FaceAlpha     =0.400000
%   microtubules.Label         =-6.000000
%   microtubules.isLayer       =0.000000
%   microtubules.Static        =0.000000
%   microtubules.InUse         =1.000000
% Default cell parameters
% cellprops.shape          ='Sphere'
% cellprops.sheetmodel     =0
% cellprops.maxLengthMicrons=20
% cellprops.secondsPerStep =1
% cellprops.micronsPerVoxelEdge=0.800000
% cellprops.cubicMicronsPerVoxel=0.512000
% cellprops.cellsize       =[25,25,25,]
% cellprops.colourType     =1
% cellprops.Vol            =[-1,-1,-1,-1, ... ]
% cellprops.Smooth         ='None'
% cellprops.dynamic        ='microtubules'...
% cellprops.bound_distance =5
% cellprops.collide_distance=10
% cellprops.% vacuole.Vol=struct
% vacuole.EdgeVol=struct
% cellprops.% cell_wall.Vol=struct
% cell_wall.EdgeVol=struct
% cellprops.% plasma_membrane.Vol=struct
% plasma_membrane.EdgeVol=struct
% cellprops.% cytoplasm.Vol=struct
% cytoplasm.EdgeVol=struct
% cytoplasm.Indexes=struct
% cellprops.% Diameter.microtubules=struct
% cellprops.% microtubules.Vol=struct
% microtubules.Offsets=struct
% cellprops.sheetPlaneNormal=[0,1,0,]

Graphical User Interface

2 A Changing organelles in the cell

menu:Organelles shows a list of organelles, check those that are required and then re-establish the working volumes (used for collision detection) by using menu:Prefs:Cell size and shape

2 B Changing working volumes used for collision detection

menu:Prefs:Cell size and shape establishes the collision detection system. data.
data.cellprops.Vol

is a volume filled with labels (range 0 to -7) representing the: not-cell, cell-wall, plasma-membrane, cytoplasm, vacuole, etc. It is re-formed whenever the cell is redefined

data.working.Vol

is a copy of data.cellprops.Vol which also contains regions representing dynamic organelles (microtubules and actin). It is re-zeroed by Restart