Metadata info with image stacks


I have been learning how to use CP and find it a brilliant tool. However I am stuck on a specific problem at the moment, trying to analyse immunofluorescence images from 96well plates.

I am trying to load a series of greyscale tif files with metadata. The images were taken from 96well plates in three wavelengths, with six tiles (panels) and seven Z-slices per well, i.e. 126 images per well. I want to be able to use MakeProjection to sum pixels through the Z-stack for certain channels, and perform wavelength-specific Object-ID and processing modules on the projected images.

image file naming:

Using the regex below to capture metadata

I haven’t been able to work out how to load the images in. I can load all images (Text-Exact match = “.tif”) and group on metadata using well, tile and wavelength, which does allow me to use MakeProjection to sum pixels in the Z-stack and save output projected-images. But this loads all images as one set meaning I can’t do channel-specific object ID in that pipeline. (I could load the output into a second pipeline, but wonder if I’m missing something re how to use metadata).

Trying to load one image set for each wavelength by matching text to “w435” and “w594” leads to a conflict when trying to use metadata - regardless of which metadata tags I select to group images by.

Any advice would be appreciated,


Amend - first post should have included screenshot of metadata error msg, file attached.

Hi Sam,

You’re on the right track, but what’s going wrong is a completely understandable mistake.

First, I would use “w435” and “w594” as the text to match in LoadImages. Then, rather than using ^(?P<Well>.*)_w(?P<wavelength>[0-9]{3})_t(?P<Tile>[0-9])_z(?P<Zslice>[0-9]) for both channels, you should use^(?P<Well>.*)_.*_t(?P<Tile>[0-9])_z(?P<Zslice>[0-9]) for both DNA and GreenProtein (in other words, leave out the wavelength). Lastly, group by Tile and Well under "Specify metadata fields to group by (you can select multiple fields by Ctrl-clicking).

The reason for this is that LoadImages is trying to match up the wavelengths as metadata even though you’ve specified them as the matching text for the channels. In other words, it’s trying to find the “w594” that goes with each “w435”, not realizing that it’s already taken care of through another setting, and failing as a result. It’s a bit confusing but the above should work. It’s also probably a bug, but it should be straightened out for the next release (we’re changing the way metadata is handled).