Skip to content
tim smith edited this page Jan 12, 2016 · 3 revisions

elisascripts

This documentation describes how the elisascripts are used in the Wendy Liu lab at UC Irvine. Some of the documentation is specific to our equipment.

Overview

  1. Capture live/dead and ELISA montages with Micro-Manager, each saved as a single image stack
  2. Stitch live/dead images together with Fiji
  3. Correct uneven illumination in ELISA images with normalize_bg.py
  4. Stitch corrected ELISA images together with stitch.py
  5. Manually identify matching landmarks in the stitched ELISA and live/dead images and save paired ROIsets with Fiji
  6. Run id_singlets.py against the live/dead image to find single cells in wells
  7. Run register_elisa.py against the ELISA image to measure the intensity of spots corresponding to wells containing singlets
  8. Plot results

Stitch live/dead images together with Fiji

Open Fiji. Do not open the image you wish to stitch. Find the Open the Grid/Collection Stitching plugin from Plugins -> Stitching. Choose "Positions from file" from Type and then "Defined by image metadata" from Order.

For "multi-series file," select the live/dead .ome.tiff file you saved with Micro-Manager. (You can either hit Browse or drag and drop a file from Finder into the text box.)

For "Fusion method," use "Linear blending."

Make your other settings match these (non-default settings are highlighted):

Save the stitched image as a .tiff.

Correct uneven illumination in ELISA images with normalize_bg.py

python normalize_bg.py my_elisa.ome.tiff

Input:

  • the stack of ELISA coverslip images saved by Micro-Manager
  • if it exists, background.tif will be used instead of recomputing the background image

Output:

  • background.tif, a single image of the 5%th percentile intensity projection over the input stack
  • normalized.tif (TODO: specify a different name with -o), a TIFF stack with normalized intensity

Stitch corrected ELISA images together with stitch.py

python stitch.py my_elisa.ome.tiff normalized.tif

Input:

  • the stack of ELISA coverslip images saved by Micro-Manager (used for its metadata)
  • the stack of normalized images produced by normalize_bg.

Output:

  • stitched.tif, a stitched, background-normalized image

Tip: if you want to stitch the un-normalized image stack, you can just give it to stitch twice, like python stitch.py my_elisa.ome.tiff my_elisa.ome.tiff.

Identify landmarks

TODO: Document this

Manually identify matching landmarks in the stitched ELISA and live/dead images and save paired ROIsets with Fiji.

Run id_singlets.py against the stitched live/dead image to find single cells in wells

usage: id_singlets.py [-h] --threshold THRESHOLD [--channel CHANNEL]
                      [--cell-size min max] [--distance DISTANCE]
                      [--annotate ANNOTATE] [--output OUTPUT]
                      stitched_livedead.tif

Example: python id_singlets.py --cell-size 10 32 --annotate annotated_singlets.jpg

Before running id_singlets, you should know

  • the minimum and maximum area (in pixel units) of cells in your live stain; provide this with --cell-size or -s
  • the intensity threshold you want to use to segment cells from background in the live image; provide this with --threshold or -t
  • how far apart (in pixel units) your wells are in the live/dead image; provide this with --distance or -d

Input:

  • "stitched_livedead.tif" (or whatever you named it), the live/dead image you stitched with Fiji

Output:

  • livedead_results.txt (specify another name with -o), which contains the image coordinates of singlets and information about their live/dead staining intensity
  • optionally, an image annotating the singlets which were identified in the input image

Run register_elisa.py against the ELISA image to measure the intensity of spots corresponding to wells containing singlets

usage: register_elisa.py [-h] [--well-radius WELL_RADIUS] [--tx-plot TX_PLOT]
                         [--exclude exclude-RoiSet.zip] [--output OUTPUT]
                         livedead_results.txt livedead-RoiSet.zip elisa.tif
                         elisa-RoiSet.zip

Before running register_elisa, you should know:

  • the radius of the circle to measure for each well, in pixel units; provide this with --well-radius

Input:

  • livedead-RoiSet.zip and elisa-RoiSet.zip, the paired list of landmarks in the stitched live/dead and ELISA images
  • stitched_elisa.tif, the stitched, background-normalized ELISA image you wish to measure
  • livedead_results.txt, the output produced by id_singlets
  • optionally, exclude-RoiSet.zip, a set of polygon or freehand ImageJ ROIs drawn against the stitched ELISA image demarcating regions that you do not wish to measure in the ELISA coverslip

Output:

  • elisa_results.txt (choose another name with -o), a CSV file with measurements of the spots on the coverslip image corresponding to the singlets in livedead_results.txt. The cells_row column of the output corresponds to the base-0 index of rows in livedead_results.txt.
  • annotated.jpg, showing the boundaries of each measured well against the ELISA coverslip image
  • transform.png (choose another name with --tx-plot), which plots the (x,y) locations of the landmarks from the ELISA coverslip as well as the transformed locations of the landmarks from the live/dead image; if the affine transformation is correct, the points should be overlapping.

Plot results

We like ggplot.