Given a multichannel fluorescent image, we can:
"That looks great! Now repeat it with 4 genotypes, 5 treatments, 3 concentrations, 3 fields of view and 5 replicates. Oh, and it could have a developmental effect, so maybe image it over 4 time points."
Assoc. Prof. Idon'tcareif Youdon'tsleep
That's 10,800 individual images to process.
Thankfully, computers are really good at automating repetitive tasks.
Let's remind ourselves of the process for scoring cells manually:
Note: We will introduce Geodesic reconstruction again later.
Don't worry about the details, the aims are:
# This is a comment
"""So is this"""
# Basic Types and Variables
variable = "This is a string of characters (or simply a string)."
another_variable = "Hello, world!"
five = 5
exact = 10.23
liar = True
# We can also define functions. Think of these like
# a mathematical function.
# e.g. y = x²
def square(x):
return x*x
y = square(2)
print y # outputs 4
# It doesn't have to be mathematical though
def say_hello(name):
print "Hello, " + name
say_hello("john") # outputs: Hello, John
We will also make use of many functions/tools that are defined in the ImageJ core libraries and its plugins:
from ij import IJ, ImagePlus, ImageProcessor
from ij.measure import ResultsTable
from ij.plugin import ChannelSplitter
Admittedly, these are not very discoverable, but here are a couple useful resources to get you started:
ImagePlus and ImageProcessor are very important data abstractions i.e., this is how images are represented in ImageJ.
ImagePlus:
ImageProcessor:
Don't worry if this is not immediately clear, just understand that underlying the images you see in the ImageJ user interface is an ImagePlus and that each image plane has an ImageProcessor.