TAMiT (Toolkit for Automated Microtubule Tracking) is a microtubule detection and tracking software. It was developed for use with 3D Fission yeast and Budding yeast cells. TAMiT finds a variety of microtubule-based structures:
- Spindle-Pole Bodies (Fission and Budding yeast)
- Spindles (Fission and Budding yeast)
- Rigid Microtubules (Fission yeast)
- Curved Microtubules (Budding yeast)
TAMiT is designed to be fully automated and written in MATLAB using Object-Oriented Programing.
You can download TAMiT using git.
git clone https://github.com/saadjansari/TAMiT.git
git submodule init
git submodule update
Dependencies: MATLAB (R2019b and later), utrack
There are 3 essential initial files that TAMiT needs to run.
initParams.m
is provided in the TAMiT directory.
initCellInfo.m
and initConfiguration.m
are not present in the TAMiT directory, and must be supplied by the user.
TAMiT expects all 3 of these files to be present in the TAMiT directory.
For convenience, we provide sample files in the InitialConfigFiles directory that the user can copy.
cp InitialConfigFiles/initCellInfo.m .
cp InitialConfigFiles/initConfiguration.m .
This file creates the main parameters file for running TAMiT.
It runs both the initCellInfo.m and the initConfiguration.m files.
In initParams.m
, the user needs to set the following paths:
exec_loc.local.runpath = <path to the TAMiT repo>
exec_loc.local.savepath = <path to results folders>
This is called by initParams. It specifies information about the cells of interest. User needs to set the following:
% Path to parent folder containing segmented cell movies
movieParent = '/Users/saadjansari/Documents/Projects/ImageAnalysis/FY Datasets';
% Relative path to segment cell movies
moviePath = {...
'sid1_cut7/1032_100msR_50msG_7Z_106_cells/1032_100msR_50msG_7Z_106_1.mat',...
};
% Frames to analyze for each cell
lifetime = { ...
[],...
};
% Cell Type : 'Mitosis' / 'Monopolar'
type = 'Mitosis';
% Channels to Fit (list of channel numbers)
% Example: [1], [1,2], [] (empty brackets denote all channels)
% Note: length must match the length of channelFeatures. Order must also match the o rder of features in channelFeatures)
channelsToFit = [1,2];
% Features to fit
% Current available features:
% 'Microtubule', 'Sid4', 'Cut7', 'KC'
channelFeatures = {'Sid4', 'Cut7'};
This is called by the initParams.m file and contains the configuration parameters. Users can change parameters here, if desired, to fit their needs.
TAMiT can be run via:
TAMiT()
To use the active display mode, run:
TAMiT('Display',1)
This does a few things, in this order:
- Runs
initParams.m
to create aparams.mat
parameters file. TAMiT creates a time-labeled folder in the save path specified by the user. This contains theparams.mat
file. It does it for each cell specified in theinitCellInfo.m
file. - Runs
TAMiT_cell.m
in serial fashion for each cell. It provides as input the path to the savedparams.mat
file.
Once you have updated the initParams.m
file, you can use the demos that come with TAMiT.
We provide 3 sample cells for a user to test. These are provided here:
- Fission Yeast Bipolar :
demos/FissionYeastBipolar
- Fission Yeast Monopolar:
demos/FissionYeastMonopolar
- Budding Yeast Bipolar :
demos/BuddingYeastBipolar
To demo TAMiT on the Fission Yeast Bipolar cell, run:
cp -r demos/FissionYeastBipolar/init* .
TAMiT('Display',1)
Other demos can be run in a similar fashion.
Note: initParams.m
file must be updated by the user for this to work.
A major strength of TAMiT lies in its detection / estimation capability. Here, we show how TAMiT extracts features from microscopy images.
Take the following 2D grayscale intensity image. This shows 2 clearly visible spots. The goal is to detect the locations of the spots. We start by passing the iage through a gaussian filter of some width (1 pixel in this case). This suppresses noise pixels and bring out the relevant signal. The improvement is evident below.
Original image | Gaussian filtered image |
---|---|
![]() |
![]() |
Next, we use apriori knowledge about the system.
- There are only 2 spots. *
- The spots have small extent in XY. * With this knowledge, we employ an iterative thresholding procedure that masks out background pixels. This stops when the number of unmasked pixels is some small number (in this case 25).
We start by applying MATLAB's bwareafilt
to remove any connected regions smaller than some area (in this case 7). Then, we use regionprops
to extract connected regions. The centroids of these regions correspond are good estimates for the spot positions (red).
Coming soon...