junlabucsd / mm3

Version 3 of Python mother machine analysis code
11 stars 19 forks source link

Improved channel designation #80

Open jtsauls opened 5 years ago

jtsauls commented 5 years ago

Right now the cross correlation method for designating channels as empty, full, or ignore, leaves a lot to be desired. Improvements desired.

jwschroeder3 commented 5 years ago

I'll work on a deep learning solution to this. It should be fairly trivial. One thing that would help would be to have a directory for a keras image generator to look in for training data. I'll set the directory up in our shared Google drive folder and be in touch with details soon.

jtsauls commented 5 years ago

Cool.

I guess it could be easy to just run segmentation looking for cells on a few time points per channel and then just simply check if there are enough pixels with value 1 that warrant analyzing everything.

The params file has first_image and last_image, which are the index of the images to be shown in the GUI/fov.pdf files. So if you wanted to test two time points you could use those. Or honestly 10 time points spaced evenly through the experiment would probably be worth it, and some sort of graph that takes the place of the cross correlation graph could be used (or it could be an and/or choice).

jtsauls commented 5 years ago

This is also related to issue #33

jwschroeder3 commented 5 years ago

OK....

I wrote and trained a CNN to classify channels as either good, empty, out-of-focus, or defective. I haven't tested it on many scenarios yet, but so far it looks like it is working well. I have a bit more work to do on it to ensure it generalizes well to videos of varying length, since I trained it only on videos that were 210 frames long. Once I am comfortable with its performance on videos of other lengths, I'll do a PR.

The attached pdf shows the current result of running mm3_ChannelPicker.py, using the CNN for channel picking.

The bottom plots are now horizontal bar plots, each bar representing the probability that the given channel is either good, empty, out-of-focus, or defective.

fov_xy001.pdf

jtsauls commented 5 years ago

Awesome