Analysis of single-cell capture efficiency

Hello everyone,

I hope this awesome community can help me with the following issue.

I’d like to establish a pipeline for batch image analysis of single-cell encapsulation efficiency.

The typical output looks like this 300K 1.tif (7.5 MB)

The picture shows droplets (big blue circles) and cells (small blue dots within droplets)

I want the software to perform the following steps:

  1. Increase general brightness (optional, only if it’s necessary for next steps)
  2. Identify droplets - big blue circles
  3. Identify cells - small blue dots within droplets
  4. Define if there is only one cell inside a droplet or there are several cells
  5. Calculate the ratio for single cells (number of droplets with only one cell inside/number of droplets)
  6. Calculate the ratio for multiple cells (number of droplets with more than one cell inside/number of droplets)
  7. As I mentioned in the beginning, do this for a series of images and generate a report

I’ll be happy to hear all suggestions. Thank you in advance.

Hello @isnapkov,

please find below a starting point for your project .

//Parameters
cell_Size = 10 ; //define cell size 

// Clear environment
close("\\Others");
roiManager("reset");
if ( isOpen("Summary") ) Table.reset("Summary"); 

// The image contains 3 channels 
// The only one tha contains some info, seems to be the channel 3 
Stack.setChannel(3);
run("Duplicate...", "title=[chOInterest]");
run("Duplicate...", "title=droplets_mask");

// Detect droplets
run("Subtract Background...", "rolling=200");
setAutoThreshold("Percentile dark");
run("Convert to Mask");
run("Fill Holes");
run("Analyze Particles...", "size=1000-Infinity exclude add");
droplets_nbr = roiManager("count");


// Detect Cells 
selectImage("chOInterest");
setAutoThreshold("Intermodes dark");

//iterate through the droplets and identify cells 
for (i = 0; i < droplets_nbr; i++) {
	 roiManager("Select", i );
	 run("Analyze Particles...", "size="+cell_Size+"-Infinity summarize");
	 
	 selectWindow("Summary");// add ROI index to facilitate review
	 Table.set("ROI n", Table.size-1, i+1);
	 Table.update; 
}

et here some specific answers :

this is not necessary, as changing brightness is only for display

this is not too difficult ( as you can see in the code).
I would recommend to exclude droplets on edges as you can’t be sure if it contains a cell if you do not see the whole droplet.

You could try different ways:

  • measuring area : can tell you if you have 1 cell or more if you set a threshold on area. But all the cells should have the same intensity, and all the cells should be in the same focus plan.
  • measuring maxima : this could be more accurate BUT in you case it is a bit more challenging as your images contains some weird artefacts, see image below
    artefact_ch3

you can either continue playing with the Table functions in ImageJ or go to R .

Best ,

Romain