I have some data that I would like to segment and quantify, but I’m not sure of the best tool for the job. I’ve been experimenting with the trainable weka, but I have some problems with it and before I go further I wanted to see if it’s even the right tool for me to be using!
My data are max projection movies of patterns on the cell surface. The patterns look like waves moving across (see attached still-frames). I want to segment the waves and extract measurements such as number of waves, average end-to-end length of a wave, wavelength (the distance between wave in xy), and possibly even things like period, frequency and velocity.
The way I’m currently doing things for measuring end-to-end length is:
- Filter the raw data using a median filter with value = 1.
- Make a max projection
- Make a difference (subtraction) movie of 5 frames (roughly 30-40 seconds). This eliminates the background and makes the waves easier to see
- Select a single frame from the movie (this is what I have attached)
- Open the frame in the trainable weka software and add traces for “wave” and “background” categories
- Save the classifier
- Apply the classifier to selected still-frames from other movies
- Take the segmentation (which is red and green), convert to 8-bit and then make it a binary
- For end-to-end length, I hand-measured each wave from where it began to where it ended using the segmented line tool. This was really tedious because some waves are extremely branched so I needed to make multiple ROIs and then sum the lengths in a spreadsheet.
The problems I have are:
There is a lot of variation between conditions, and even within the same condition. Sometimes the waves are blobby and other times they are long and thin and connected. Should I be training the classifier on multiple images from different types of waves? How do I do that? If I load the classifier on a new image and run it and it is incorrect, do I trace the new image and “train” again and save as a new classifier? How do I know how many images to train on before I’m “over training” ? Can I then include the training set images in my quantification?
Once I get my segmentation, I couldn’t figure out how to automatically measure the total length of each wave. I tried to skeletonize and it didn’t work out so well. I also tried to use the count particles which was a bit better, but only gives me area, which I’m not interested in. I ended up measuring by hand but this took a long time! The segmentation also isn’t perfect, and sometimes the waves are very fat and connected when they shouldn’t be, vs very thin other times.
A still-frame doesn’t hold much information. I can only get metrics like period, frequency and velocity from feeding a kymograph or something. Would that require a second trainable weka classifier for only kymographs? I tried segmenting a movie and that caused Fiji to eat up all of my memory and crash.
Any input or help is appreciated! Thank you @etadobson for helping me connect with the correct people!
Summary of attached data:
There is a folder of original still-frames and a folder of the resulting binaries I’ve made from training on one image (120-006). There is one negative control with no patterning (124-013).
data.zip (1.5 MB)