Template loop detected: Template:Grenoble-Alpes
In our Top10 competent bacteria, we previously inserted, thanks to a bacterial transformation process, the pSB1C3-BBa_J04450 backbone that contains a gene coding for mRFP1. Hence, when the bacteria will express this gene, they will start producing fluorescence, which is related to the presence of the pathogenic bacterium.
The fluorescence expressed by the Top10 comes from the mRFP1 protein, whose spectrum is given in figure 1.
This fluorescence is detected thanks to our home-made unit which is shown here:
Light pathway through the fluorescence sensor
1. Excitation light
To excite the fluorophore, it is necessary to use a light which emission spectrum is the narrower possible. Therefore, LEDs are much appreciated as their emission spectrum are usually very narrow. Moreover, they are easy to supply (they just need a resistance to protect them and keep the light intensity constant) and very small. We used 565 nm LNJ309GKGAD LEDs (Panasonic) whose spectrum is given in Figure 3.
It is a small and cheap LED, which light is not that bright, but sufficiently focused to excite the bacteria as it is showcased in Figure 4:
If the red circle is not obvious enough on your screen, you may check the histogram of the picture in the “Learn more” section; each picture is associated to its histogram, which displays the number of pixels having the same intensity given as the grey level. It is a very useful tool in image processing to avoid being abused by our eyes. Concerning the camera, it does not face such problems, it sees the picture as it is.
Before reaching the camera, it is mandatory for the incoming light to be filtered, that is to say to get rid of all the background light, mainly coming from the LEDs. A simple way to do it is to use what is called an optical filter. This device can, depending on its characteristics, filter the light to keep some colors and turn others off. This filter is highly recommended to reduce the noise level. For instance, our filter is theoretically able to switch off completely the yellowish-green LEDs (Figure 5):
The picture in Figure 6 is completely dark. It means that the LED light cannot be seen by the camera. It is a primordial condition to confirm to make sure that no light is captured by the camera under control measurement, which is actually the case as Figure 7 shows it:
This proves that the light that is detected by the camera comes from fluorescence only, which makes the processing easier.
2. Detecting fluorescence
All of these pictures were taken with the camera that we used in our module. It is a Pi noIR Camera V2 . This camera is perfectly suited to our application, as it can be easily controlled by a little computer called a Raspberry Pi  that also monitors the touch screen. Moreover, this camera has the same performance as a middle-class smartphone, to give an idea of the quality of the pictures.
Eventually, calculating the overall intensity of each picture gives the linear graph Figure 8:
About the geometry adopted
One problem in fluorescence analysis, which might seem anecdotal but is actually primordial, is the geometry. Depending on the position of the light sensor, the sample or the light source, the results can vary a lot. The geometry adopted, which is equivalent to the epifluorescence, places the camera on a perpendicular axis to the light source (Figure 9):
In practice, the prototype looks like in Figure 2. It is just the prototype that was used for the experiments, the parts do not suit the final device. However, this prototype was designed to look alike the final device as much as possible, for which dark condition would be ensured thanks to an enclosed box isolating the diagnosis system from exterior light. In particular, a sliding part was printed in order to place the fluorescent sample at the exact same location for each experiment to ensure its repeatability. Holes were drilled in the sample holder to place the LED as close as possible to the sample and orthogonally to the camera to minimize the noise level.
About the camera performances
The camera is located above the sample. It means that the top surface of the sample is pictured, displaying a circle (Figure 10):
As you can see, the picture is not that clear. Despite its very high resolution (8 MPx) which ranks it among the high-quality smartphones (8 to 12 MPx usually), the Depth Of Field (DOF) is of 1m which limits the quality of the pictures. The DOF is the minimal distance to get unblurred objects on a picture . The nearer an object is to the DOF, the sharper the details are. Yet, in a fluorescence detection application, the light sensor should be as near as possible to the fluorescent sample to capture as much light as possible. Here is why a lens is used: to get the smoothest pictures in spite of this camera’s impairment.
Why using this camera and not another one with a better DOF then? First of all, it is the first camera we had in hands and we could work with it quickly. Moreover, it is a user-friendly camera, adapted to the Raspberry Pi we already planned to use to monitor the touchscreen. The hardware has some characteristics, but they can be easily adjusted through the software, thanks to the Pillow library (Python). The advantage of Pillow over OpenCV, a classic image processing library, on Raspbian is that it is easier to install. Yet, if you feel brave enough to install OpenCV , let us advise you to do so, as OpenCV's functions are faster than Pillow’s. We decided not to install OpenCV as we do not have any speed constraint.
Finally, the camera is still able to detect low fluorescent light, even when the human eye struggles with. It can then be useful to plot the histogram of a picture. A histogram classifies pixels having the same value, that is to say, having the same color. For instance, there is no doubt that the sample Figure 3 is fluorescent thanks to its histogram (Figure 11):
The greatest bar is at 0, which is normal as the picture is mainly dark, but others pixels have a grey level greater than 0 which means they are colored. And this color can come from fluorescence only as it is explained hereinabove. As a comparison, Figure 12 displays the histogram of Figure 7, a non-fluorescent sample:
About the image processing
1. Shortcoming light detection compensation
It was explained earlier that fluorescence light only is detected by the camera, and it is very true. Yet, we are not sheltered to unexpected hardware degradation. For instance, a door that cannot be closed correctly may let ambient light gets to the camera, reducing the fluorescence level on the picture. To prevent that, the subtract() function from the ImageChops module is used with fluorescent and non-fluorescent pictures as arguments. Figure 13 shows an example of what this function does:
The right picture is a little darker than the left one. Subtracting a picture from another is what this function does. As no fluorescence is expressed with non-fluorescent bacteria, the captured light with such a sample can be noisy only. Hence subtracting a fluorescent picture to a control picture enables to keep the fluorescence contribution only.
2. The fluorescence intensity
This intensity is obtained by summing the grey level of each pixel. The grey level is obtained from the RGB code by a relationship based on the human eye’s sensitivity :
By the way, it is to notice that the pictures are beforehand converted into 3D arrays containing the RGB code of each pixel thanks to the getTabPxl() function to enable the analysis.
Finally, plotting the fluorescence intensity as a function of the optical density of the samples gives the graph Figure 8. The curve follows an affine function (good determination coefficient), which is coherent as the sensor should reach a limit of sensitivity.
This graph can be compared to the one obtained with the Tristar [LB 941] microplate reader (Figure 14):
The curve is much more linear. It is not surprising as the sensitivity of a professional microplate reader is expected to be much better than a handmade one. It is however comforting that the shapes look almost the same.
3. The fitted curve
Figure 8 displays 2 curves: the experimental and the fitted ones. An easy way to get a fitted curve with Python is using the linregress() function which returns, among other data, the theoretical coefficients of the curve and the determination coefficient of the fit. It is therefore necessary, as for any fit actually, to know what shape the experimental curve should have. A first feeling would be to think that fluorescence is proportional to the number of fluorescent bacteria; the more present bacteria are, the more fluorescent the sample should be. This hypothesis is confirmed by the Tristar’s calibration curve Figure 14 and retrieved on our fluorescence unit’s calibration curve, although the curves are affine rather than linear. This result is, in fact, consistent as fluorescence detection is limited by the performances of the device. A linear curve would mean that fluorescence from a single bacterium could be detected. It is a performance that any fluorescence sensor tries to get closer but it can harshly be reached, especially with a cheap unit.