Automated detection of bacterial growth on 96-well plates (AMyGDA)

I am involved in an international collaboration, the Comprehensive Resistance Prediction for Tuberculosis: an International Consortium (CRyPTIC), that is collecting 30-50,000 clinical samples from patients with tuberculosis (TB). Although often viewed as a historical disease, TB kills more people globally than any other infectious disease, with 1.7 million people dying from it in 2016. The ultimate goal of CRyPTIC is identify as many of the genetic determinants of antibiotic resistance  in TB as possible, thereby enabling the rapid and accurate diagnosis of individual TB cases by examining the genome of the pathogen. Crucially, the clinician is provided with a list of which antibiotics are likely to be effective and which will not. Each sample collected by CRyPTIC therefore has the genome of the infection M. tuberculosis (MTB) pathogen sequenced and its susceptibility to 14 different antibiotics determined using a bespoke 96-well AST plate manufactured by Thermo Fisher. Each plate is inoculated for two weeks and then each well is examined by a laboratory scientist to determine if MTB has grown or not. Since each drug is present at a range of concentrations, the minimum concentration that kills the bacterium can be determined. A photograph of each plate is taken at the point of reading. For more detail, please see my Research page.

A potential weakness in this approach is that assessing each plate for growth is a subjective task; often it is straightforward, but some plates are difficult to “read”, usually because MTB has not grown well. To allow the project to objectively compare the results of different laboratories I developed some software, called the Automated Mycobacterial Growth Detection Algorithm (AMyGDA), that first processes the photograph to improve contrast, then identifies the location of each well and finally assesses whether MTB is growing in each well. According to our preliminary study, a preprint of which is free to download from the biorXiv, AMyGDA is sufficiently reproducible and agrees well enough with the human readings that we could use to supplement measurement by laboratory scientists in the CRyPTIC project.

You can download the AMyGDA software here. It is a python module and instructions on how to install the prerequisites are included, as is a short tutorial and a number of test images.

I will be shortly submitting the manuscript to a peer-reviewed journal and I will update this post when it is accepted and published.



2018 PhD projects announced

As described here, one of the main ways of getting funding to studying for a DPhil with me is to apply for an NDM Prize Studentship. There is a competition held each year and the successful applicants have all their fees paid and get a generous £18,000 pa tax-free stipend. The deadline is 12 noon GMT Monday 8th January 2018.

This year I have put forward two projects, based roughly on the second and third areas of my research as described here. The titles are

I am flexible and we can discuss tweaking these proposals to fit your interests. If you are interested in applying through a different programme, such as the MPLS Doctoral Training Centre, these proposals are a good starting point as well. Any questions please get in touch.

Going tubeless

Bit off top-topic, but without my bikes it would be a whole lot harder to get to the John Radcliffe hospital. Decided to bite the bullet and try going tubeless, especially after I realised my Shimano Ultra 6800 wheelset was “tubeless ready” (the inside of the rim is completely smooth with the ends of the spokes completely hidden away). Then I read several glowing reviews of Schwalbe’s G-One Speed. A bit of Googling revealed that fitting the tyres was either going to somewhere between hard and impossible and a lot seemed to depend on the millimetre differences in circumference between your rims and the tyres. I was frustrated not to find any evidence via Google of G-One Speeds fitting onto my Ultegra wheelset, as knowing someone else has managed it is reassuring before you spend an not-inconsiderable sum on a fancy new tyre, sealant etc: hence this quick post. So what do I do and did it work?

First, as I’d read about how hard it was to get these type of tyres on a rim, I thought I’d put one on with an inner tube, just to see. Hopefully, this might have the benefit of also ironing out any kinks as the tyre came, as usual, folded up, and might help me. And, yes, it was hard. About as hard as a Schwalbe Marathon Plus, which are my current winter tyre of choice and, whilst very puncture resistant, have always been, in my experience, hard to get on and off rims. And I had to ignore the instructions and has a (plastic) tyre lever. So far, so good. Then I set off on Monday to cycle to work. And punctured after 3 miles. Now, getting the tyre off the rim by the side of the road is always harder and I broke one tyre lever doing it. I got another tube in and, with a bit of luck, it re-seated using a CO2 canister.

The following weekend, I had to try getting the tube out, and the sealant in. First problem: I now have a hole from the puncture. So, I “seal” it using electrical tape and the plan is when I’ve got the sealant in, this will do its magic and fix the wee hole. Hopefully.

So, in the spirit of these things, this is what I used. (1) Electrical tape, (2) some plastic tyre levers (unless you have thumbs of steel you probably will need a bit of help), (3) CO2 canister (and re-fills), (4) some sealant, (5) valve and nut (that came with my wheelset) and (6) some washing up liquid and water.

First, pop off a rim (with levers, being careful not to damage the bead) and remove the inner tube. Hopefully pack it away to rot. Then put the special valve in and screw on the nut to hold it in place. Start pushing the tyre back onto the rim, notice that it is sticking up a bit around the valve. Think, oh well, that will sort itself out (Mistake #1). Keep pushing the bead back on until there is about 10cm left. Squirt in the sealant and rotate the wheel round, carefully holding it upright so I don’t spill any precious sealant. Think: this is going well (Mistake #2). Again with the help of levers, finally get the bead on the rim. Feel smug, get a CO2 canister and try inflating. All the gas immediately escapes around the badly fitted rim by the valve. Swear. Throw canister away. Try with the track pump. That is NEVER going to work. Push and pull the bead, thinking if I can just line it up it will work. Try again. I can SEE the gas escaping this time! Realise I’ve spilt some sealant. Swear again.

Decide that I must have managed to exactly line up a slight kink in the bead from where it was folded with my valve. Pop off one bead again (not easy). Shuffle the tyre around a couple of inches. Notice that there is still a lot of sealant. Phew. “Pop” the rim back on. Exactly the same problem. Liberally apply lots of water and washing up liquid in vain attempt that this might (a) help seal it and (b) help ease the bead up. Carefully push the tyre around the valve. Deep breath. Try a third CO2 canister. Same as below. Swear and wonder how this is going to work.

Go and have a sit down away from the bike. Have a think. Then I have a brainwave: the valve can be, of course, pushed in and out. Undo the nut and push the valve into the tyre, freeing the space by the rim and push the tyre down so it sits properly around the valve. Pull the valve back out again and do up the nut. Feeling optimistic, try the track pump. Tyre inflates, lots of encouraging “pops” and sure enough, it even seats correctly on the rim! So:

HARD-WON-TIP: fit the valve loosely, seat the tyre around the valve, by wiggling the valve backwards and forwards, then tighten the nut and try inflating. Check the next day and it has only lost 10 PSI.