Array Tomography

Array Tomography workflow and progress

    1. Photograph the ribbon

      1. Automate detection of the location of the ribbon

      2. Identify the boundaries of the individual slices in the ribbon

      3. Photograph the slices at high resolution

    2. Digital alignment of ribbon slices across Z

      1. Current method: (use ImageJ and produce a stack of TIFF images with multiple depths and colors)

    1. Particle detection [Aish has done a first-generation version]

      1. Method A: Load in Imaris, set thresholds, get an X, Y, Z center location of each particle

      2. Method B: Load in Matlab, set thresholds, get regions of interest

        1. Regions of interest could be connected blobs

        2. Regions of interest could be determined through template matching with a set of pre-determined templates

    1. Particle analysis [Aish has done a first-generation version]

      1. Calculate parameters such as volume, integrated brightness, localized brightness, distance to center-of-mass, first moment of intertia

    1. Colocalization analysis [future, perhaps best reserved for academic year]

      1. Method A: channel by channel cross-correlation

Papers

    • Micheva KD, Smith SJ Array tomography: a new tool for imaging the molecular architecture and ultrastructure of neural circuits. Neuron 55:25-36, 2007.

  • Micheva KD, Busse B, Weiler NC, O'Rourke N, Smith SJ Single-synapse analysis of a diverse synapse population: proteomic imaging methods and markers. 68:639-53. 2010

    • Thesis of Programmer in the original AT team:

      • https://stacks.stanford.edu/file/druid:tq652pp7498/thesis-augmented.pdf

      • Read Section 1.1.1 on automatic acquisition

Code Reference:

Python Image Processing Library

http://www.pythonware.com/products/pil/

BUnwarpJ:

http://fiji.sc/wiki/index.php/BUnwarpJ

http://biocomp.cnb.csic.es/~iarganda/bUnwarpJ/API/index.html

Elastic Alignment & montage

http://fiji.sc/wiki/index.php/Elastic_Alignment_and_Montage

Straightener:

http://fiji.sc/wiki/index.php/Straighten...

Kalman Stack Filter

http://fiji.sc/wiki/index.php/Kalman_Stack_Filter

Micromanager:

http://valelab.ucsf.edu/~MM/MMwiki/index.php/Micro-Manager_Programming_Guide

http://valelab.ucsf.edu/~MM/MMwiki/index.php/Matlab_Configuration

Possibly Useful:

ICY: http://bioimageanalysis.org/icy/index.php

Biomedical Imaging & Analysis Issue of Nature Methods

http://www.nature.com/nmeth/journal/v9/n7/index.html

Other FIJI tools http://fiji.sc/wiki/index.php/Category:Plugins

etc...

Python/C++ Open Source extensive suites of software tools for image analysis

http://www.bioimagexd.net/

http://www.vtk.org/

http://www.itk.org/

Array Tomography workflow [old]

    1. Photograph the ribbon

    2. Alignment (use ImageJ and produce a stack of TIFF images with multiple depths and colors)

    3. Particle detection

      1. Method A: Load in Imaris, set thresholds, get an X, Y, Z center location of each particle

      2. Method B: Load in Matlab, set thresholds, get regions of interest

        1. Regions of interest could be connected blobs

        2. Regions of interest could be determined through template matching with a set of pre-determined templates

    4. Particle analysis

      1. Calculate parameters such as volume, integrated brightness, localized brightness, distance to center-of-mass, first moment of intertia

    1. Colocalization analysis

      1. Method A: channel by channel cross-correlation

Implementation [old]:

    1. Start with particle detection

      1. Week 1-2, let's get familiar with the concepts of image data and correlation

        1. Get help for the function imread (help imread)

        2. Download any old color jpeg you like and open it with myimage = imread('yourfilename.jpg');

        3. Use the image function to display the image: image(myimage)

        4. Use the size function to see what format the image is in; if size(myimage) is NxMx3, then it is in RGB format with one image plane for each of the three primary lights red, green, and blue; if it is NxM, then it is either an intensity image (where each pixel indicates brightness), or it is an indexed image, where each pixel is a number that has a corresponding RGB color entry in a color table for the image (if this is the case, the color table for the image can often be read with [myimage, mycolortable] = imread('yourfilename.whatever');

        5. Plot a line of your image as data to see the relationship between the image and the underlying numbers. figure; plot(myimage(30,:)); This will plot row 30 of your image (and all columns) so you can see that there are numbers underlying the colors.

        6. Read the portion of the imread function's help that deals with tiff images carefully.

        7. Read in a tiff of confocal data; do you need to read in the color map, too? Not sure, sometimes yes, sometimes no. Plot the image using the image function.

        8. Again, plot a line of your image (maybe pick a column instead of a row) and look at the numeric values that are present. If you have an RGB image, you may need to pick one channel to plot (such as plot(myimage(:,40,1)) to plot the red channel of an RGB image).

        9. Now we want to move to correlation. Read the help for the matlab function conv2. Create a little ball using the following code:

        10. rad = 20;

        11. xi_ = ((-rad):1:(rad));

        12. yi_p = sqrt(rad^2-xi_.^2);

        13. yi_m = - sqrt(rad^2-xi_.^2);

        14. xi = [xi_ xi_(end:-1:1)];

        15. yi = [yi_p yi_m(end:-1:1)];

        16. [X,Y] = meshgrid(-40:40,-40:40); % look up meshgrid

        17. mycorrelationimage =inpolygon(X,Y,xi,yi);

        18. Take a look at this little tiny image of a circle by running image(mycorrelationimage).

        19. Now, look at the correlation between that little sphere and your image by running mynewimage = conv2(myimage,mycorrelationimage,'same');

        20. Plot the resulting image, look at the "hot spots" image(mynewimage)

      2. Try to make your own shape for correlating; you might use a gaussian shape mylittlegaussian = exp(- (X.^2+Y.^2)); image(mylittlegaussian); (and then try the conv2 function with that)

      3. Create a function called makesphereimage.m that will make a sphere image for you

      4. Make a companion function called makeelipseimage.m that makes an elipse (where radius can vary in X and Y)

      5. Explore the function imrotate (get 'help imrotate') to rotate your elipse to different angles, and explore correlating elipses of different angles with the features in your images

    2. Week 3: function scheme

    3. Week 4: 3-D

Types of images (grayscale, color, color look up images)

Classes of objects / numbers