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

m
Line 15: Line 15:
 
         <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">We would like 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.</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 digital camera by taking a picture at desired time points. The stirps 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).</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 key points 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:0;">
                 <div class="h3">Outcomes</div>
+
                    <li>Run the LFA assay 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 palace the LFA strips on the black paper on any other contrasting color. 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 no more than 12 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 provided Python script.</li>
 +
                </ol>
 +
                <p class="content-paragraph" style="margin:0"><b>Steps inside the Python script:</b> (required user changes are marked with comment blocks in the script)</p>
 +
                <ol style="margin-top:0;">
 +
                    <li>Specify the file name into the <code>cv2.imread()</code> function</li>
 +
                    <li>Set the appropriate threshold value to obtain contours of strip tests (default value is 120)</li>
 +
                    <li>Select and rotate images if needed with appropriate rotation function <code>cv2.ROTATE_90_COUNTERCLOCKWISE, cv2.ROTATE_180, cv2.ROTATE_90_CLOCKWISE</code></li>
 +
                    <li>(This step is very important) 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 prominence value (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" download="measurement-script.pdf"><button style="margin-top:0">Download PDF file</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> Photo of the strips.</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> Strip detection and separation.</p>
 +
                <p class="content-paragraph">parametrai ir rotations?</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">parametrai ir profile line</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.</p>
 +
                <p class="content-paragraph">parametrai ir profile line</p>
 +
                 <div class="h3">Future Implementations</div>
 +
                 <p class="content-paragraph">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.</p>
 +
                <p class="content-paragraph"></p>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.</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 12 assays where analyte concentration is serially diluted. The picture is then analyzed via the script and intensities could be correlated to the appropriate concentration.</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 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.</p>
 +
                <p class="content-paragraph">Every user of our measurement protocol should perform the same or similar calibration experiment in order to calibrate their own LFA strip test.</p>
 
             </div>
 
             </div>
 
         </div>
 
         </div>

Revision as of 10:42, 27 October 2020

Overview

We would like 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 stirps 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 the LFA assay by applying analyte on the sample pad
  2. After 20 minutes palace 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. (This step is very 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. Photo of the strips.

Figure 2. Strip detection and separation.

parametrai ir rotations?

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

parametrai ir profile line

Figure 4. Final analysis picture with peak intensities.

parametrai ir profile line

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 12 assays where analyte concentration is serially diluted. The picture is then analyzed via the script and intensities could be correlated to the appropriate concentration.

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.