back-ground
Software

Software

Index

Introduction

In our project, we developed a dengue virus serotype detection and prediction system. However, to get the prediction results, you need to organize the environment where the models are executed and have some experience in programming and this causes less accessibility to work this system to prevent epidemic dengue. We developed a web app with which you collect patients’ data about serotypes, execute computational predictions, and visualize the results for everyone by manipulating only a simple GUI to solve this problem.


fig1: our app's home imagefig1: our app's home image


App design for more accessibility

To collect serotypes' data, run the computational predictions, and get the results, you will be required to have professional skills in programming, but many people do not have skills. Because of it, we cannot have enough data to predict, and also can not get the results of predictions, and then the system becomes meaningless. To improve accessibility to this system, we developed a web app having the following features.

  • Posting patients’ serotype data and saving them in the database
  • Getting data sent before
  • Executing prediction
  • Visualization of the results
  • You can use these functions only through a simple-designed GUI

 posting a serotype posting a serotype

 getting the visualized results getting the visualized results

In addition to the improvement of accessibility, everybody can visit a web page, so people who live in the area where the epidemic occurs can also visit the page and watch the results. Therefore, this app contributes to people's paying attention to the epidemic.

Technical details of the application

This web application has back-end and front-end systems and the details are as follows.

Back-end system

  • The back-end system of this software is built with Rust programming language.
  • This language emphasizes type safety, concurrency. Because of Rust, we could create a secure system. The estimated number of bugs is measurably reduced.
  • Rust also emphasizes performance. And we chose actix-web framework, which boasts top-class performance, for a middleware. Thanks to these technologies, our back-end system achieves very small latency.
  • We use SQLite as the RDBMS(Relational DataBase Management System). SQLite requires no complicated setup. This software requires just installing it from the package repository. All table data et cetera is stored in one file, and it’s easy to transfer.
  • To authenticate a user, our back-end system uses “auth_code”. The auth_code is a random generated token. An unique auth_code is distributed to each user of this software. And to sign-in to the system, the user types one’s auth_code to the sign-in screen. Usually, the pair of mail address and password is used for the authentication procedure. However, the pair is often predictable, and a computer-generated token is more safe.

Front-end system

  • The front-end is written in TypeScript, which meets type safety and prevents illegal operations. We also used Next.JS; the React framework offers high performance due to pre-rendering[1]. App pages are constructed with MUI (Material UI), an open-source library that offers us beautiful and functional React components[2], so we were able to make the page designs simple and modern.

How to run in a local environment

back-end

In general, the setup and deployment of a web application is a complicated task. Although we chose a simple software stack, it remains a little complicated task.

- Install Git, Rust, SQLite
- Install SQLx CLI: run the command cargo install sqlx-cli
- Clone our source code repository of back-end server
- Create .env file and write DATABASE_URL=sqlite3:iGEM2022.db to the file
- Migrate database: run the command sqlx migrate run
- Execute the server: run the command cargo run

front-end

- install Node.js
- command npm run dev on "frontend" repository

Results

We don’t have enough time to implement the function to run prediction through GUI. However, we developed an app with which everybody can send data and get the results of the predictions easily and managed to improve accessibility to our detection and prediction system.

Future prospects

The main aim of developing this app is to improve accessibility to modeling, which requires professional skills. However, considering our whole project, especially the hardware section, if the app has a function that can distinguish fluorescence, people can do a series of serotype detection and prediction with just one device. Therefore, to realize the higher efficiency of our system’s working and prevention of epidemics, we have to develop a V2, which offers us a series of detection and prediction.

Discussion

We tried to implemente a function to run prediction in our app, but we didn't have enough time to do that.

Reference

[1] Basic Features: Pages | Next.js [2022 Oct 10 accessed] https://nextjs.org/docs/basic-features/pages#pre-rendering

[2] Overview - Material UI [2022 Oct 10 accessed] https://mui.com/material-ui/getting-started/overview/