Difference between revisions of "Team:Vilnius-Lithuania/Measurement"

 
(7 intermediate revisions by 2 users not shown)
Line 9: Line 9:
 
}
 
}
 
</style>
 
</style>
 +
    <script>
 +
          document.getElementById("fixedOverlay").classList.add("dl");
 +
setHeading('Best Measurement');
 +
    </script>
 
</head>
 
</head>
 
<body>
 
<body>
 
     <main id="section-text">
 
     <main id="section-text">
         <input id="headingTitleText" type="hidden" value="Measurement"/>
+
         <input id="headingTitleText" type="hidden" value="Best Measurement"/>
 
         <div class="contentBlock">
 
         <div class="contentBlock">
 
             <div class="content">
 
             <div class="content">
                 <div class="h2 larger">Measurement</div>
+
                 <div class="h3">Overview</div>
                 <div class="h3">Detection System</div>
+
                <p class="content-paragraph">After integrated meetings with specialists we saw a huge need to make our tests suitable for <b>quantitative determination</b> of analyte concentration. Thus, to solve this problem we have decided to build a strong foundation by developing a <b>universal protocol</b> and a <b>Python script</b> that would detect strips and measure the signal intensity on the test line. Such an approach would facilitate the development of quantitative LFA strip tests in the future.</p>
                 <p class="content-paragraph">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi quis ante odio. Sed eleifend, eros at bibendum ullamcorper, nisl nisl mattis ligula, ut euismod lorem elit sit amet ipsum. Suspendisse scelerisque, odio vitae malesuada mattis, sem augue mattis velit, sit amet ornare lacus velit nec nibh. Curabitur sed lectus sapien. Suspendisse finibus urna volutpat mi consequat lacinia. In ut felis quis purus tempus gravida. Vestibulum eget gravida risus. Vivamus porta dui et nulla fringilla, nec fermentum felis placerat. Pellentesque dictum risus quis aliquam lacinia. Duis mauris arcu, rhoncus eu felis a, laoreet volutpat ipsum. Ut sed aliquam libero. Sed placerat sem nec hendrerit pellentesque.</p>
+
                <div class="h3">Measurement</div>
                 <div class="h3">Treatment</div>
+
                <p class="content-paragraph">One of the most important things is to make such measurements repeatable by any iGEM teams in the future. Thus, we have set some rules that teams have to follow in order to obtain standardized results of the intensity on the test line. Such measurement could be performed by any <b>digital camera</b> by taking a picture at desired time points. The strips should be placed on <b>black</b> or similar color paper. The script successfully completed testing both with pictures taken with a good camera (Canon EOS 80D) and with a regular phone camera (Xiaomi Mi Mix 3).</p>
                 <p class="content-paragraph">Maecenas in orci non risus fringilla maximus. Morbi id erat commodo, feugiat ante a, ullamcorper urna. Interdum et malesuada fames ac ante ipsum primis in faucibus. Mauris ligula nunc, gravida in interdum non, pellentesque eget libero. Aliquam porta purus nec arcu sodales, eget sagittis purus lacinia. Aliquam dictum augue id lacinia lacinia. Ut et elementum nunc, nec tempus lacus. Fusce vel mauris ante. Suspendisse bibendum quam tortor, vitae congue urna facilisis at. Aliquam erat volutpat. Sed sit amet magna in nunc ullamcorper porta id et dui. Vestibulum in eros nisi. Proin cursus nisl eu justo laoreet interdum. Suspendisse eu tellus vel felis iaculis posuere.</p>
+
                 <div class="h3">Protocol</div>
                 <div class="h3">Prevention</div>
+
                 <p class="content-paragraph" style="margin-bottom:0;">Finally, we have written a detailed protocol and explained the Python script for such measurement. The Python script has multiple comments that will guide the user through the code and explain the most important parameters that have to be set manually. Here we briefly present the whole protocol and explain <b>key points</b> in the code that one has to follow to obtain the best results.<br><b>Steps:</b></p>
                 <p class="content-paragraph">In porttitor, est at porta luctus, dolor mi sollicitudin libero, id placerat urna ipsum vitae metus. Vivamus ornare rhoncus est, ut condimentum sem vulputate eget. Praesent et tortor non eros molestie interdum. Vivamus ut eros quis nulla gravida placerat viverra non libero. Sed feugiat sapien feugiat, gravida risus in, luctus dolor. Donec sed nibh arcu. Sed sollicitudin lorem eu magna eleifend molestie. Nulla eu urna quis nisl aliquam feugiat. Praesent semper nec sem ut ultricies. Ut sit amet pulvinar odio. In laoreet lectus nulla, a vulputate magna porta eget. Cras ac placerat libero. Donec sollicitudin bibendum ex, at pellentesque urna.</p>
+
                <ol style="margin-top:8px;">
                 <div class="h3">Outcomes</div>
+
                    <li>Run <b>LFA assay</b> by applying analyte on the sample pad</li>
                 <p class="content-paragraph">Cu esse case euripidis qui. Nonumes mediocrem vel ut. At cum meis velit, nec at dissentias cotidieque, ea modus nulla lobortis ius. Cum timeam probatus persecuti eu, sea latine debitis id, qui dolor mandamus molestiae ei. In audiam impetus eam, ius an tamquam detraxit tincidunt. Epicurei interpretaris no eos. Ne habeo scaevola sapientem sed, unum inani ubique ius ex.</p>
+
                    <li>After 20 minutes place the LFA strips on the black paper on any other <b>contrasting color</b>. Align strips as it will reduce additional editing in the script.</li>
                 <div class="h3">Proposed Future Project</div>
+
                    <li>Take a picture of strips. We recommend <b>no more than 12</b> strips per picture.</li>
                 <p class="content-paragraph">Risus at ultrices mi tempus imperdiet nulla. A cras semper auctor neque vitae tempus quam pellentesque. In dictum non consectetur a erat nam at lectus urna. In aliquam sem fringilla ut. Fermentum iaculis eu non diam phasellus. Pulvinar etiam non quam lacus suspendisse faucibus interdum. Congue eu consequat ac felis donec et odio pellentesque diam.</p>
+
                    <li>Transfer picture to the computer and open our<b> provided Python script</b>.</li>
 +
                </ol>
 +
                <p class="content-paragraph" style="margin:16px 0 0"><b>Steps inside the Python script:</b> (required user changes are marked with comment blocks in the script)</p>
 +
                <ol style="margin-top:8px;">
 +
                    <li>Specify the <b>file name</b> into the <code>cv2.imread()</code> function</li>
 +
                    <li>Set the appropriate <b>threshold value</b> to obtain contours of strip tests (default value is 120)</li>
 +
                    <li><b>Select and rotate</b> images if needed with appropriate rotation function <code>cv2.ROTATE_90_COUNTERCLOCKWISE, cv2.ROTATE_180, cv2.ROTATE_90_CLOCKWISE</code></li>
 +
                    <li><b>Important!</b> Specify the profile line location that will measure the test line intensity. Use previously obtained images as a guide.</li>
 +
                    <li>Select sensitivity of peak determination by changing <b>prominence value</b> (default value 0.2)</li>
 +
                </ol>
 +
                <p class="content-paragraph">The script can be copied straight from our wiki page or can be downloaded as a jupyter notebook file.</p>
 +
                <a href="https://2020.igem.org/wiki/index.php?title=Template:Vilnius-Lithuania/MeasurementScript&action=raw" target="_blank" download="measurement.ipynb"><button style="margin-top:0">Download .ipynb file</button></a>
 +
                <a href="https://static.igem.org/mediawiki/2020/5/51/T--Vilnius-Lithuania--measurement-script.pdf" target="_blank"><button style="margin-top:0">View PDF</button></a>
 +
                <p class="content-paragraph">Example of image processing:</p>
 +
                 <div class="photos-wrapper full-width">
 +
                    <div class="photos photo-grid one-part"><img src="https://static.igem.org/mediawiki/2020/9/96/T--Vilnius-Lithuania--measurementFig1.png" style="outline: none;"></div>
 +
                </div>
 +
                 <p class="photo-desc"><b>Figure 1.</b> Initial photo taken with a camera. Analyte concentrations are: 40 µM, 20 µM, 10 µM, 5 µM and 0 µM.</p>
 +
                <div class="photos-wrapper full-width">
 +
                    <div class="photos photo-grid one-part"><img src="https://static.igem.org/mediawiki/2020/2/28/T--Vilnius-Lithuania--measurementFig2.png" style="outline: none;"></div>
 +
                </div>
 +
                <p class="photo-desc"><b>Figure 2.</b> Red numbers – arbitrary stirps labels.</p>
 +
                <p class="content-paragraph">Parameters: <code>threshold = 0</code>.</p>
 +
                <div class="photos-wrapper full-width">
 +
                    <div class="photos photo-grid one-part"><img src="https://static.igem.org/mediawiki/2020/9/91/T--Vilnius-Lithuania--measurementFig3.png" style="outline: none;"></div>
 +
                 </div>
 +
                <p class="photo-desc"><b>Figure 3.</b> Strips with a profile line that measures the intensity of the test line.</p>
 +
                 <p class="content-paragraph">Parameters: <code>warp[3] = cv2.rotate(warp[3], cv2.ROTATE_90_CLOCKWISE), start=(150,25), end=(250,25)</code>.</p>
 +
                <div class="photos-wrapper full-width">
 +
                    <div class="photos photo-grid one-part"><img src="https://static.igem.org/mediawiki/2020/3/3f/T--Vilnius-Lithuania--measurementFig4.png" style="outline: none;"></div>
 +
                </div>
 +
                <p class="photo-desc"><b>Figure 4.</b> Final analysis picture with peak intensities. Blue color - intensity read from profile line. Yellow color – smoothed signal. Red triangles – detected peaks.</p>
 +
                <p class="content-paragraph">Parameters: <code>prominence = 0.5</code>.</p>
 +
                 <div class="h3">Future Implementations</div>
 +
                 <p class="content-paragraph">The protocol is very simple, so anyone could follow it in any <b>lab or home</b> conditions. It could allow other further projects without any effort quantitatively measure the test line intensity, thus calibrate their LFA design, or even such approach latter could be integrated into a software tool that would measure the intensity on the go, for example with a smartphone’s camera shot.</p>
 +
                <p class="content-paragraph">Because LFA is a very popular method with its speed and simplicity, this measurement procedure can be applied to many types of LFA tests. The same principles can be used and script code can be modified to be used in other similar types of projects where <b>quantitative determination</b> is required.</p>
 +
                 <div class="h3">Calibration and normalization</div>
 +
                 <p class="content-paragraph">We used a calibration procedure to validate the whole measurement process.  
 +
Calibration procedure consists of 5 assays (Fig. 1) where analyte concentration is serially diluted. The picture is then analyzed via the script and intensities could be correlated to the appropriate concentration (Fig. 5).</p>
 +
                <p class="content-paragraph">In the script another precaution is made: first of all the baseline of the signal is measured from every strip and subtracted from the initial signal. Basically, every strip baseline serves as a control for that test, meaning, that different <b>lighting</b> conditions <b>should not affect</b> the final result. After that, the signal is smoothened via <b>Savitzky-Golay filter</b> to eliminate the noise. Now the peaks can be determined from the smoothened signal. However, it is important to note that the peak values are obtained from the unfiltered data as smoothing always drastically reduces the signal amplitude.</p>
 +
                <p class="content-paragraph">Every user of our measurement protocol should perform the same or similar <b>calibration experiment</b> in order to calibrate their own LFA strip test.</p>
 
             </div>
 
             </div>
 
         </div>
 
         </div>
 
     </main>
 
     </main>
    <script>
 
          document.getElementById("fixedOverlay").classList.add("dl")
 
    </script>
 
 
</body>
 
</body>
 
</html>
 
</html>
 
{{Vilnius-Lithuania/footer}}
 
{{Vilnius-Lithuania/footer}}

Latest revision as of 02:21, 19 December 2020

Overview

After integrated meetings with specialists we saw a huge need to make our tests suitable for quantitative determination of analyte concentration. Thus, to solve this problem we have decided to build a strong foundation by developing a universal protocol and a Python script that would detect strips and measure the signal intensity on the test line. Such an approach would facilitate the development of quantitative LFA strip tests in the future.

Measurement

One of the most important things is to make such measurements repeatable by any iGEM teams in the future. Thus, we have set some rules that teams have to follow in order to obtain standardized results of the intensity on the test line. Such measurement could be performed by any digital camera by taking a picture at desired time points. The strips should be placed on black or similar color paper. The script successfully completed testing both with pictures taken with a good camera (Canon EOS 80D) and with a regular phone camera (Xiaomi Mi Mix 3).

Protocol

Finally, we have written a detailed protocol and explained the Python script for such measurement. The Python script has multiple comments that will guide the user through the code and explain the most important parameters that have to be set manually. Here we briefly present the whole protocol and explain key points in the code that one has to follow to obtain the best results.
Steps:

  1. Run LFA assay by applying analyte on the sample pad
  2. After 20 minutes place the LFA strips on the black paper on any other contrasting color. Align strips as it will reduce additional editing in the script.
  3. Take a picture of strips. We recommend no more than 12 strips per picture.
  4. Transfer picture to the computer and open our provided Python script.

Steps inside the Python script: (required user changes are marked with comment blocks in the script)

  1. Specify the file name into the cv2.imread() function
  2. Set the appropriate threshold value to obtain contours of strip tests (default value is 120)
  3. Select and rotate images if needed with appropriate rotation function cv2.ROTATE_90_COUNTERCLOCKWISE, cv2.ROTATE_180, cv2.ROTATE_90_CLOCKWISE
  4. Important! Specify the profile line location that will measure the test line intensity. Use previously obtained images as a guide.
  5. Select sensitivity of peak determination by changing prominence value (default value 0.2)

The script can be copied straight from our wiki page or can be downloaded as a jupyter notebook file.

Example of image processing:

Figure 1. Initial photo taken with a camera. Analyte concentrations are: 40 µM, 20 µM, 10 µM, 5 µM and 0 µM.

Figure 2. Red numbers – arbitrary stirps labels.

Parameters: threshold = 0.

Figure 3. Strips with a profile line that measures the intensity of the test line.

Parameters: warp[3] = cv2.rotate(warp[3], cv2.ROTATE_90_CLOCKWISE), start=(150,25), end=(250,25).

Figure 4. Final analysis picture with peak intensities. Blue color - intensity read from profile line. Yellow color – smoothed signal. Red triangles – detected peaks.

Parameters: prominence = 0.5.

Future Implementations

The protocol is very simple, so anyone could follow it in any lab or home conditions. It could allow other further projects without any effort quantitatively measure the test line intensity, thus calibrate their LFA design, or even such approach latter could be integrated into a software tool that would measure the intensity on the go, for example with a smartphone’s camera shot.

Because LFA is a very popular method with its speed and simplicity, this measurement procedure can be applied to many types of LFA tests. The same principles can be used and script code can be modified to be used in other similar types of projects where quantitative determination is required.

Calibration and normalization

We used a calibration procedure to validate the whole measurement process. Calibration procedure consists of 5 assays (Fig. 1) where analyte concentration is serially diluted. The picture is then analyzed via the script and intensities could be correlated to the appropriate concentration (Fig. 5).

In the script another precaution is made: first of all the baseline of the signal is measured from every strip and subtracted from the initial signal. Basically, every strip baseline serves as a control for that test, meaning, that different lighting conditions should not affect the final result. After that, the signal is smoothened via Savitzky-Golay filter to eliminate the noise. Now the peaks can be determined from the smoothened signal. However, it is important to note that the peak values are obtained from the unfiltered data as smoothing always drastically reduces the signal amplitude.

Every user of our measurement protocol should perform the same or similar calibration experiment in order to calibrate their own LFA strip test.