Skip to content

Protocol

ERICZHANGLAB\Eric edited this page May 1, 2017 · 8 revisions

Multi-dimensional Imaging Protocol

Here we will overview the components and capabilities of defining and running a multi-dimensional imaging protocol. The protocol example as written assumes the scope was initialized using the variable name Scp: Scp = Scope;.

Contents

User data

Here the username, project and dataset will be defined.

basePath: Path of the hard drive that the user's folder is stored on, e.g. 'D:' or 'E:'.

Username: Name reference for each user, e.g. 'jDoe' for Jane Doe.

Project: Name of the project that this imaging dataset is a part of, e.g. 'Neural_cAMP' for a study of cAMP signaling in neurons.

Dataset: Name of this specific dataset/experiment, e.g. 'Dendrite_ICUE_170110' for imaging ICUE targeted to dendrites on 1/10/17.

%% User Data
Scp.basePath = 'D:\'; % The base hard drive the user's images are on for this computer
Scp.Username = 'jDoe'; % your username!
Scp.Project = 'Neural_cAMP'; % the project this dataset correspond to
Scp.Dataset = 'Dendrite_ICUE_170110';  % the name of this specific image dataset - i.e. this experiment.

Inside the base path folder each user will have a folder, within that folder will be folders for each project and each project will have a folder for each dataset. Note: Whenever the 'Dataset' parameter is set for the 'Scope' variable, all other variables besides 'Scp' will be cleared in the MATLAB workspace.

Acqusition Data

The AcquisitionData Class contains the information defining the conditions under which the images in a acquisition are acquired. First, an instance of the [AcquisitionData] Class is created.

%% Acquisition Data
AcqData = AcquisitionData; % Initalize new instance of AcquisitionData class

Then for each channel that you want to acquire an image in the Channel (as a string) and exposure time (as a double) must be defined for a seperate index of the initialized AcquisitionData class. Other optional parameters can be defined in the same way. In the example below, the image acquisition would acquire 3 images:

  1. Rhodamine channel for 300 ms
  2. DAPI channel for 200 ms
  3. Cy5 channel for 400 ms
AcqData(1).Channel='Rhodamine';
AcqData(1).Exposure=300;
 
AcqData(2).Channel='DAPI';
AcqData(2).Exposure=200;

AcqData(3).Channel='Cy5';
AcqData(3).Exposure=400;

NOTE: Each time you wish to start a new image acqusition a new AcquisitionData class must be initialized (but you can just rerun AcqData = AcquisitionData; over the previous variable)

See AcquisitionData for additional image acquisition parameters (e.g. fluorophore, target, etc.) that can be annotated within the AcqusitionData class.

Imaging Timepoints

  1. Initalize a Timepoints class within the Scope class in the following variable - Scp.Tpnts = Timepoints;.
  2. Use the createEqualSpacingTimelapse(Tpnts,N,dt); function to specify the number of timepoints N and the time interval between images dT (default is in seconds). Save as the Scp.Tpnts. For example, the following will create 4 time points that are 30 s appart:
Scp.Tpnts = Timepoints;
Scp.Tpnts = createEqualSpacingTimelapse(Scp.Tpnts,4,30);

See Timepoints for additional optional variables, such as changing the time spacing units.

Define Imaging Chamber

The type of imaging dish used in given protocol must be defined using the Chamber class variable that is already initialized upon startup of Scope. The default imaging chamber can be set in the ScopeStartup.m file.

The type of chamber used can be defined by setting the Scp.Chamber variable to a Plate class with a given plate type as a string. For example:

Scp.Chamber = Plate('Costar24 (3526)');

Then the origin of the A1 well and the directionXY, which specifies what direction the plate moves relative to the stage units, needs to be set.

Scp.Chamber.x0y0 = [50055      -29678];
Scp.Chamber.directionXY = [-1 1];

Define Imaging Positions

The MATscope library is able to take images from multiple positions within a dish or in different wells if the microscope is fitted with an automated stage.

Single location

To take images from a fixed location without moving you can use the "Microfluidics Wounding Device Ver 3.0" and just specify the chamber x0y0 as the current XY position.

Scp.Chamber = Plate('Microfluidics Wounding Device Ver 3.0');
Scp.Chamber.x0y0 = Scp.XY;
Scp.Chamber.directionXY = [-1 1];

Then just run the "useCurrentPosition" Scope method without any inputs.

Scp.useCurrentPosition();

Multiple wells

The MATscope library can also acquire images from multiple wells, from either the center of the well or in a grid in the center of the well. To use this make sure your multi-well imaging chamber is defined. Then, run the "createPositions" Scope method without any inputs for taking an image from every well in the center of the well. Optional inputs can be used to change which wells are imaged and how each well is imaged. Some of the more important optional inputs are to specify which wells to image using a binary mask, "msk", grid size per well, "sitesperwell", or to optimize the order in which the wells are acuired, "optimize".

For example, to image just wells B3, C3 and D3 of a Costar 24 well plate, using a 2x2 grid in the center of the wells, and optimizing the order we could use the following code.

%% Set chambers
Scp.Chamber = Plate('Costar24 (3526)');
Scp.Chamber.x0y0 = [50055      -29678];
Scp.Chamber.directionXY = [-1 1];

%% define mask
c = 3;            % Do just the 3rd column,
r = [2 3 4];      % and the 2nd, 3rd and 4th rows.
msk = false(8,12);% Initialize the binary matrix 
msk(r,c) = 1;	  % and change the indicies of the mask matrix for the wells we want to image

%% Define positions
Scp.createPositions([],'msk',msk,'sitesperwell',[2 2],'optimize',true); %Create imaging positions for imaging wells B3, C3 and D3 with a 2x2 grid in the center and optimize the order.

Additional optional inputs for createPositions can be found at Scope.

Using Micro-manager's position list

Finally, the user can select and save multiple positions from within a well or plate using micro-managers built in position list GUI. To use these positions from within the MATscope you can use the 'createPositionFromMM' method instead.

Scp.createPositionFromMM();

When using this method, the 'Stage Position List...' will open and you can use positions that were already specified or specify the points then and then close the MATLAB dialogue window to continue.

If you would like to specify the position names and how they are grouped together, before running this method you can open the micro-manager stage position dialog box in 'Tools>Stage Position List...' from the GUI. Then when in that dialog box you can save the stage positions and then when you run 'createPositionFromMM' you can specify the labels of the positions and how the positions are grouped as inputs to the 'createPositionFromMM'.

Initalize and Start Acquisition

Once the user data, acqusition data, timepoints, chamber,and positions defined, we must initalize the acqusition.

Start Acquisition

With the user data, acqusition data, timepoints, chamber,and positions defined we can now start the acqusition. Details for starting an acquisition can be found at the next page:

Next Step: Start Acquisition

Links

Home

Clone this wiki locally