The wound healing assay is a fairly common technique in the Cell Biology Research toolkit. The idea is simple: grow cells to cover a surface, scratch a ‘wound’ into the cells then see how well the cells can close the wound (either by replication, migration or a combination of both).
In this post, we’ll be using Fiji to analyse this type of assay which will give us lots of flexibility in both methodology and visualisation options.
It’s worth pointing out that several companies (including incucyte and Cell-IQ) offer hardware and software solutions to perform this type of experiment and analysis. Aside from the cost, they often are not clear about the processing that is undertaken, and I do so hate black-boxes when it comes to image analysis.
The first cut is the deepest…
As mentioned at the top of this post, a wound healing assay is very simple and can be described in 3 (or 4) steps:
Above, left to right:
- (optional) Lay down a substrate such as an extracellular matrix component
- Grow a lawn of cells to completely cover the bottom of your dish or well
- Mechanically scratch the lawn of cells to create a wound (see top image on this post)
- Add growth media and follow the healing over time
Of course, the interesting science happens when you use different cells (knock-outs, knock-ins, over-expression systems &c), treat with drugs or alter the surface coating and see how the cells migrate differently. You can even overlay ECM in step 4 and turn it into an invasion assay.
For the purposes of this post, we’ll only be talking about analysing transmitted-light images. Of course much of this can be applied (and may even be easier) if your cells are expressing a fluorescent protein or are otherwise labelled.
As usual with image quantitation we need a metric. What do we want to measure? The obvious choices are wound width (although this falters a bit with uneven recovery) and what is probably a more accurate choice: wound area (or fractional wound area if there is inconsistency in your wound size).
A quick aside on measuring wound width
One of the problems with using wound width as a metric is demonstrated in the image above. While the initial wound leaves quite a uniform edge, the wound recovery is anything but far less uniform. This makes an estimate of wound width difficult and inaccurate. There are some ways to do it but I’ll save those for another aside post.
Back to the wound area
The basic technique here is one that we’ve used before on the blog. Turn the image into a mask (keeping only the bit we want to measure) then use analyse particles to measure the area of the mask.
First things first, we need a mask. To get there we’re going to use an entropy filter. This filter is a measure of the local intensity variance (see footnote #1). If you’re unfamiliar with such things, you may be asking yourself how this helps (or why we’re even doing this). Let’s zoom in on the wound (box 1) and non-wound (box 2) areas and use a visual example:
Just by observation, you can see that the wound (top left) is a lot less ‘textured’ than the area with cells (top right). Once an entropy filter has been applied, the wound is basically black (low variance) while the cells are white (high variance). Now we have the ability to discern wound from non-wound here are the steps towards quantitation: One at a time:
- Apply the variance mask using [ Process > Filters > Variance ]
- Make a threshold using [ Image > Adjust > Threshold ]. Default auto thresholding will probably work well. Other good options (although it depends upon your image) are Otsu or Minimum.
- Hit apply to make a mask. Your cells will be positive (white) and the wound negative. Invert this mask [ Edit > Invert ] to make the wound the object of interest.
- Refine and measure the mask (in one step) by running [ Analyze > Analyze Particles ].
- In the dialog (shown above) increase the minimum size to remove small (white) objects. Above, I’ve used 20,000 (see footnote #2) and checked the box to use pixel units. Check the boxes for “Display results” and “Include Holes” (the black spots in your wound). Also select “Masks” in the Show box.
Congratulations, you’ve just measured a wound area! It seems like a lot of work but the steps can easily be applied to a whole stack of images. Once you have your wound area values for each time point, you can plot this against the time points:
From this of course you can calculate the rate of wound area decrease by fitting the data to a suitable model.
In this case, we get a ‘healing’ rate of 1186 μm2/min.
Getting pretty…wound healing visualisations
The numbers are really important, but it would be remiss of me not to mention the awesome power of visualisations in getting across your message. Using the refined masks from the above processing, you can make some really nice visualisations of your data.
For example, if you take your refined mask and merge it (using [Image > Color > Merge Channels…]) with your original transmitted light image and you get the following:
The other neat thing that you can do is to delineate the edge of the wound. There are a couple of ways to do this, but the easiest is to run [Analyze > Analyze Particles] again on your refined mask and select to Show “Bare Outlines”. You can then [Edit > Invert] and [Process > Binary > Dilate] to make the edge thicker. Repeat the channel merge as above for the wound edge overlaid on the original image (shown below).
There really is no limit to what you can do here using these and similar tricks. What about overlaying the original wound edge with the wound area. Easy! Can’t easily play a movie (perhaps you’re writing a report or presenting a poster), what about a montage?
Epilogue: Bringing out the lasers
When I was working on this analysis project some months ago, I came across a paper that uses a very similar technique for analysis but has one major experimental variant: A circular wound is created using laser ablation! You can read the paper here.
1: The sample variance can be calculated for a given mask (say a 3×3 pixel grid) by calculating the sum of the squared distance from the mean and dividing this by one fewer than the number of values:
2: This is a trade off between what you want to consider a wound and how noisy your data become. When your wound drops below 20,000 pixels, you will get a value of 0 (that is, full wound closure), even if the wound is not fully closed. To get around this, you should only fit the regression to the earlier part of the curve.
Attribution: The raw experimental data featured in this post came from a collaboration with Daimark Bennett at the University of Liverpool.
Thanks for your very valuable posts. Was just wondering, if you could cover maybe how people can analyse their FRAP datasets (more than one point) to plot the (average) FRAP curves using open sourced softwares/ excel? People tend to fit their curves using different model equations too.
Hi and thanks for the comment. I actually have a draft post on the theory and practicalities of FRAP data analysis. It’s becoming a monster-post though because there are so many things to cover. Choice of fit equation is a great example as it largely depends on the system you’re using (1D, 2D or 3D, single or multi component &c.)
I’ll see if I can post it in the near future. For the most part I do FRAP analysis in MATLAB, but any spreadsheet app is also an option (this can be further automated with macros). If you can’t wait and want something a little more automated, I’ve heard good things about easyFRAP (see doi:10.1093/bioinformatics/bts241) but I’ve not used it so I’m afraid I can’t vouch for it.
LikeLiked by 1 person