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

m
Line 15: Line 15:
 
         <div class="contentBlock">
 
         <div class="contentBlock">
 
             <div class="content">
 
             <div class="content">
                <div class="h2 larger">onFlow</div>
 
 
                 <div class="h3">Overview</div>
 
                 <div class="h3">Overview</div>
                 <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>
+
                 <p class="content-paragraph">Lateral flow assay (LFA) tests are becoming more popular each year because of its ability to rapidly and cheaply detect small amounts of analyte<sup>3</sup>. However, straightforward questions, for instance, the appropriate concentration of capture sites, optimal test line location, or sufficient amount of sample volume can be answered only by experimentation<sup>4</sup>. Thus, the development of LFA tests is very tedious work and can exhaust the most valuable resources - time and money.</p>
                 <div class="h3">Mathematical background</div>
+
                <a href="https://onflow.site/" target="_blank"><button style="margin-top:0">Visit the site</button></a>
                 <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>
+
                <p class="content-paragraph">Although LFA strip tests are widely used in the healthcare industry, home care and in the monitoring of the water quality and food supply, software that would facilitate the development of such tests are not freely available on the market<sup>5</sup>. After we started to plan our experiments, it became hard to decide where to put control and capture probes. Also the optimal reagent concentrations should be known. Such problems are usually faced by anybody who has ever tried to design a LFA strip test. It would be desirable and convenient to have a sophisticated and easy to use tool that could rapidly and inexpensively predict various parameters of LFA. To solve this problem, our team presents a novel software tool - onFlow.</p>
                 <div class="h3">Software design</div>
+
                <p class="content-paragraph">To implement this, we utilized the classic Waterfall engineering model. Even though more advanced models that use iterative approaches exist, we chose this one because it is the most appropriate choice for projects that are well defined, their requirements are clear and fixed, the duration of the project is short and the idea is concise. The waterfall model describes five main steps of the software life cycle: communication, planning, modelling, construction and deployment, all of which will be described in the further sections.</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>
+
                <div class="photos-wrapper full-width">
                 <div class="h3">Deployment</div>
+
                    <div class="photos photo-grid one-part"><img src="https://static.igem.org/mediawiki/2020/9/95/T--Vilnius-Lithuania--softwareDLC.svg"></div>
                 <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>
+
                </div>
 +
                <p class="photo-desc"><b>Figure 1.</b> Diagram of the waterfall software development process model.</p>
 +
                 <div class="h3">Communication</div>
 +
                 <p class="content-paragraph">The first stage in designing any type of software is to gather all the requirements and specify what features will be implemented.</p>
 +
                <p class="content-paragraph">Since onFlow is a web based user interface of our <a href="https://2020.igem.org/Team:Vilnius-Lithuania/Model">mathematical model on LFA parameters</a>, it requires only a few important features - fields for user inputs, API for front end and back end communication and clear output of results. We also added a feature that allows users to search for the values of several parameters in an external database and alleviates the workload even more.</p>
 +
                <p class="content-paragraph">As for the requirements, there were only a few - onFlow had to be intuitive and quick. Besides these, the most important requirement for the software was clear and easy-to-understand documentation of different parameters, utilized in the mathematical model of the system. Keeping these requirements and features in mind, we continued on to the planning stage of the engineering cycle.</p>
 +
                <div class="h3">Planning</div>
 +
                <p class="content-paragraph">Second stage of the software development life cycle usually involves three main steps: estimating the cost and schedule of the project as well as deciding on progress management principles. Firstly, we estimated the cost, which consisted of two parts - website domain registration and buying Virtual Private Server (VPS) for hosting onFlow (it was also used for <a href="https://2020.igem.org/Team:Vilnius-Lithuania/The_6th_SynBio_Sense">‘The 6th SynBio Sense’</a>). Secondly, we planned our schedules to fit into the deadline of Wiki Freeze - October 27th. Since we came up with the idea for the software in mid-August, we had two months to finish our project. We distributed different tasks (e.g. front end, back end, external database integration, etc.) amongst ourselves and worked in parallel to speed up the process. Lastly, to keep track of our progress we held weekly meetings where we discussed what was done in that time period and what tasks await us in the next one. These steps helped us to ensure that onFlow would be delivered on time.</p>
 +
                 <div class="h3">Modelling</div>
 +
                 <p class="content-paragraph">We divided our software architecture into two main parts - the back end, which is the logical component, and the front end, the graphical user interface. While the software front end is only used for taking user inputs and showing the results, the back end does all the ‘heavy lifting’ - obtaining suitable strip test design and sending API requests to the KOFFI external database. In this section we will describe the thought process of designing the back end structure of onFlow.</p>
 +
                <div class="photos-wrapper full-width">
 +
                    <div class="photos photo-grid one-part"><img src="https://static.igem.org/mediawiki/2020/2/2b/T--Vilnius-Lithuania--softwareSequenceDiagram.svg"></div>
 +
                </div>
 +
                <p class="photo-desc"><b>Figure 2.</b> Diagram showing the sequence of operations in the software.</p>
 +
                <p class="content-paragraph">The whole data flow of the software is displayed in the diagram (Fig. 2). Most of the steps are straightforward. It must be noted that steps 1-4 are optional, because the user can input the association and dissociation rates themselves.</p>
 +
                <p class="content-paragraph">The back end and front end split is beneficial, because we can test the components individually and they can be reused later. The back end includes two API endpoints: one for accessing the rates from KOFFI DB, and the other one for the actual calculation interface.</p>
 +
                <div class="h3">Mathematical model</div>
 +
                <p class="content-paragraph">Not every LFA user is able to understand Partial Differential Equations (PDEs), not to mention correctly formulate variational problems and simulate the whole nonlinear PDEs system. Therefore, as great agreement was met with our wet lab results, we decided to fill this gap by integrating our LFA mathematical model in the software.</p>
 +
                <p class="content-paragraph">We chose to implement the model using the Python-friendly computational finite element method platform FEniCS. This was done because it is open-source, has a Python interface, and its back-end is implemented in C++, as a result it does not compromise speed. The model simulates a partial differential advection-convection-reaction equation system and estimates the optimal test line location.</p>
 +
                <p class="content-paragraph">In the mathematical modeling section we describe the mathematical background of LFA, the problems that we have faced and the way how our modeling helped us to answer questions related to LFA strip design and facilitated the development process. Details can be found in the <a href="https://2020.igem.org/Team:Vilnius-Lithuania/Model">modelling page</a>.</p>
 +
                 <div class="h3">Construction</div>
 +
                <div class="h4">Back End</div>
 +
                 <p class="content-paragraph">Briefly, at the initial user request the software’s back end uses FeniCS platform to generate two simulations that are based on PDEs. The first simulation evaluates the test line’s optimal location on the strip, which is the place where a sufficient amount of analyte-detection probe complex is formed. The second simulation then uses results from the first simulation to calculate the duration of the test and the minimum volume of the analyte, thus the amount of analyte needed to obtain sufficient sensitivity on the test line. Therefore, our software onFlow allows users to vary different lateral flow assay parameters such as capillary flow time, analyte concentration, probe concentration or affinity constants, in order to obtain suitable strip design, optimize reagent consumption and decrease the timeline and cost.</p>
 +
                <p class="content-paragraph">However during the development of our model and software we noticed that manual or experimental search of kinetic constants, which are important parameters for the lateral flow assay model, could take a lot of precious time. Therefore, we decided to broaden the scope of our software by incorporating the ability to extract the kinetic constants from recently published platform<sup>1</sup> that stores binding rates (association, dissociation) in a novel database<sup>2</sup>. In short, our software can use KOFFI platform’s API to search for user defined dissociation or association rates of biomolecular interactions. In this way users can find the necessary kinetic constants of biomolecular interactions between DNA, RNA, proteins and chemical compounds that are necessary for LFA development. However, if such parameters are not available in the KOFFI platform’s database, the users can either use default values or specify their own binding parameters.</p>
 +
                <p class="content-paragraph">The overall structure of our back end is not complicated: it is split into two python scripts that are run consecutively. First, the test line location simulation is run, to find the optimal distance. Then, the second simulation is run with results from the first simulation, to determine the optimal concentration of the signal. The results are then sent to the front end.</p>
 +
                <div class="h4">Back End</div>
 +
                <p class="content-paragraph">onFlow uses quite a lot of different parameters (5 main parameters, and 8 association/dissociation rates) in order to make a rapid and accurate prediction of results. The amount of these parameters might be overwhelming for the user, therefore we had a goal to make our UI user-friendly as much as it was possible. To implement this, we documented each parameter not only with their descriptions but also short animations that visualise how the parameter fits into the whole system. This ought to help users to navigate the software easily even if it is their first time using complex mathematical modelling software such as this one.</p>
 +
                <p class="content-paragraph">For the front end of our software we used a modern Javascript library React. It allowed us to create an easily scalable and fast user interface while also maintaining our teams’ <a href="https://2020.igem.org/Team:Vilnius-Lithuania/Graphic_Design">design brand</a>.</p>
 +
               
 +
                <!-- Experimental validation -->
 +
 
 +
                <a href="https://github.com/PauliusSasnauskas/igem-vilnius-2020-software" target="_blank"><button style="margin-top:0">View GitHub</button></a>
 +
 
 +
                <div class="references beforeWave">
 +
                    <h3>References</h3>
 +
                    <ol>
 +
                        <li>Norval, L. W. <i>et al.</i> KOFFI and Anabel 2.0—a new binding kinetics database and its integration in an open-source binding analysis software. <i>Database</i> <b>2019</b>, (2019).</li>
 +
                        <li>KOFFI-DB at <a href="http://koffidb.org/">http://koffidb.org/</a>.</li>
 +
                        <li>Cate, D. M., Adkins, J. A., Mettakoonpitak, J. & Henry, C. S. Recent Developments in Paper-Based Microfluidic Devices. <i>Anal. Chem.</i> <b>87</b>, 19–41 (2015).</li>
 +
                        <li>Berli, C. L. A. & Kler, P. A. A quantitative model for lateral flow assays. <i>Microfluid Nanofluid</i> <b>20</b>, 104 (2016).</li>
 +
                        <li>Qian, S. & Bau, H. H. A mathematical model of lateral flow bioreactions applied to sandwich assays. <i>Analytical Biochemistry</i> <b>322</b>, 89–98 (2003).</li>
 +
                        <li>Yager, P. <i>et al.</i> Microfluidic diagnostic technologies for global public health. <i>Nature</i> <b>442</b>, 412–418 (2006).</li>
 +
                    </ol>
 +
                </div>
 +
 
 
             </div>
 
             </div>
 
         </div>
 
         </div>

Revision as of 17:03, 27 October 2020

Overview

Lateral flow assay (LFA) tests are becoming more popular each year because of its ability to rapidly and cheaply detect small amounts of analyte3. However, straightforward questions, for instance, the appropriate concentration of capture sites, optimal test line location, or sufficient amount of sample volume can be answered only by experimentation4. Thus, the development of LFA tests is very tedious work and can exhaust the most valuable resources - time and money.

Although LFA strip tests are widely used in the healthcare industry, home care and in the monitoring of the water quality and food supply, software that would facilitate the development of such tests are not freely available on the market5. After we started to plan our experiments, it became hard to decide where to put control and capture probes. Also the optimal reagent concentrations should be known. Such problems are usually faced by anybody who has ever tried to design a LFA strip test. It would be desirable and convenient to have a sophisticated and easy to use tool that could rapidly and inexpensively predict various parameters of LFA. To solve this problem, our team presents a novel software tool - onFlow.

To implement this, we utilized the classic Waterfall engineering model. Even though more advanced models that use iterative approaches exist, we chose this one because it is the most appropriate choice for projects that are well defined, their requirements are clear and fixed, the duration of the project is short and the idea is concise. The waterfall model describes five main steps of the software life cycle: communication, planning, modelling, construction and deployment, all of which will be described in the further sections.

Figure 1. Diagram of the waterfall software development process model.

Communication

The first stage in designing any type of software is to gather all the requirements and specify what features will be implemented.

Since onFlow is a web based user interface of our mathematical model on LFA parameters, it requires only a few important features - fields for user inputs, API for front end and back end communication and clear output of results. We also added a feature that allows users to search for the values of several parameters in an external database and alleviates the workload even more.

As for the requirements, there were only a few - onFlow had to be intuitive and quick. Besides these, the most important requirement for the software was clear and easy-to-understand documentation of different parameters, utilized in the mathematical model of the system. Keeping these requirements and features in mind, we continued on to the planning stage of the engineering cycle.

Planning

Second stage of the software development life cycle usually involves three main steps: estimating the cost and schedule of the project as well as deciding on progress management principles. Firstly, we estimated the cost, which consisted of two parts - website domain registration and buying Virtual Private Server (VPS) for hosting onFlow (it was also used for ‘The 6th SynBio Sense’). Secondly, we planned our schedules to fit into the deadline of Wiki Freeze - October 27th. Since we came up with the idea for the software in mid-August, we had two months to finish our project. We distributed different tasks (e.g. front end, back end, external database integration, etc.) amongst ourselves and worked in parallel to speed up the process. Lastly, to keep track of our progress we held weekly meetings where we discussed what was done in that time period and what tasks await us in the next one. These steps helped us to ensure that onFlow would be delivered on time.

Modelling

We divided our software architecture into two main parts - the back end, which is the logical component, and the front end, the graphical user interface. While the software front end is only used for taking user inputs and showing the results, the back end does all the ‘heavy lifting’ - obtaining suitable strip test design and sending API requests to the KOFFI external database. In this section we will describe the thought process of designing the back end structure of onFlow.

Figure 2. Diagram showing the sequence of operations in the software.

The whole data flow of the software is displayed in the diagram (Fig. 2). Most of the steps are straightforward. It must be noted that steps 1-4 are optional, because the user can input the association and dissociation rates themselves.

The back end and front end split is beneficial, because we can test the components individually and they can be reused later. The back end includes two API endpoints: one for accessing the rates from KOFFI DB, and the other one for the actual calculation interface.

Mathematical model

Not every LFA user is able to understand Partial Differential Equations (PDEs), not to mention correctly formulate variational problems and simulate the whole nonlinear PDEs system. Therefore, as great agreement was met with our wet lab results, we decided to fill this gap by integrating our LFA mathematical model in the software.

We chose to implement the model using the Python-friendly computational finite element method platform FEniCS. This was done because it is open-source, has a Python interface, and its back-end is implemented in C++, as a result it does not compromise speed. The model simulates a partial differential advection-convection-reaction equation system and estimates the optimal test line location.

In the mathematical modeling section we describe the mathematical background of LFA, the problems that we have faced and the way how our modeling helped us to answer questions related to LFA strip design and facilitated the development process. Details can be found in the modelling page.

Construction
Back End

Briefly, at the initial user request the software’s back end uses FeniCS platform to generate two simulations that are based on PDEs. The first simulation evaluates the test line’s optimal location on the strip, which is the place where a sufficient amount of analyte-detection probe complex is formed. The second simulation then uses results from the first simulation to calculate the duration of the test and the minimum volume of the analyte, thus the amount of analyte needed to obtain sufficient sensitivity on the test line. Therefore, our software onFlow allows users to vary different lateral flow assay parameters such as capillary flow time, analyte concentration, probe concentration or affinity constants, in order to obtain suitable strip design, optimize reagent consumption and decrease the timeline and cost.

However during the development of our model and software we noticed that manual or experimental search of kinetic constants, which are important parameters for the lateral flow assay model, could take a lot of precious time. Therefore, we decided to broaden the scope of our software by incorporating the ability to extract the kinetic constants from recently published platform1 that stores binding rates (association, dissociation) in a novel database2. In short, our software can use KOFFI platform’s API to search for user defined dissociation or association rates of biomolecular interactions. In this way users can find the necessary kinetic constants of biomolecular interactions between DNA, RNA, proteins and chemical compounds that are necessary for LFA development. However, if such parameters are not available in the KOFFI platform’s database, the users can either use default values or specify their own binding parameters.

The overall structure of our back end is not complicated: it is split into two python scripts that are run consecutively. First, the test line location simulation is run, to find the optimal distance. Then, the second simulation is run with results from the first simulation, to determine the optimal concentration of the signal. The results are then sent to the front end.

Back End

onFlow uses quite a lot of different parameters (5 main parameters, and 8 association/dissociation rates) in order to make a rapid and accurate prediction of results. The amount of these parameters might be overwhelming for the user, therefore we had a goal to make our UI user-friendly as much as it was possible. To implement this, we documented each parameter not only with their descriptions but also short animations that visualise how the parameter fits into the whole system. This ought to help users to navigate the software easily even if it is their first time using complex mathematical modelling software such as this one.

For the front end of our software we used a modern Javascript library React. It allowed us to create an easily scalable and fast user interface while also maintaining our teams’ design brand.

References

  1. Norval, L. W. et al. KOFFI and Anabel 2.0—a new binding kinetics database and its integration in an open-source binding analysis software. Database 2019, (2019).
  2. KOFFI-DB at http://koffidb.org/.
  3. Cate, D. M., Adkins, J. A., Mettakoonpitak, J. & Henry, C. S. Recent Developments in Paper-Based Microfluidic Devices. Anal. Chem. 87, 19–41 (2015).
  4. Berli, C. L. A. & Kler, P. A. A quantitative model for lateral flow assays. Microfluid Nanofluid 20, 104 (2016).
  5. Qian, S. & Bau, H. H. A mathematical model of lateral flow bioreactions applied to sandwich assays. Analytical Biochemistry 322, 89–98 (2003).
  6. Yager, P. et al. Microfluidic diagnostic technologies for global public health. Nature 442, 412–418 (2006).