Team:SYSU-Software/Techniques

SYSU-SOFTWARE IGEM 2015

Backend

Framework

&nbsp &nbsp CORE uses Flask, an extensible framework as its backend. And it uses SQLalchemy as the Object Relational Mapper, with which CORE is portable with many kinds of SQL databases (CORE works with SQLite by default). We also use gevent to provide a high-level synchronous running environment, which can greatly shorten the response time when numerous users interact with CORE at the same time.

Friendly User System

&nbsp &nbsp CORE has a friendly user system. Anyone can register a CORE account for free. With an account, a user can ask/answer/comment a question, build/share/mark a brand new design, schedule the experiments and so on. Also CORE can remind you through messages and emails when your schedule is about to happen or your question is answered by other users.

Flexible Deployment

&nbsp &nbsp CORE can be deployed in two levels. For common users, we release CORE with executable programs in different platforms. Therefore one can just double-click the executable program to deploy CORE. For high-level users or developers, we also provide a management script and detailed instructions for them to operate.

Extensible Interfaces and Automated Documentation

&nbsp &nbsp CORE’s frontend and backend communicate with each other by using RESTful APIs. All APIs’ documentation can be built automatically. Every API’s usage will be illustrated with detailed instructions and examples. Documentation is built by Sphinx automatically. Developers can deploy CORE on an accessible server at first, and access it with different platforms, likes Android software or IOS application.

Miscellaneous Models and Unit test

&nbsp &nbsp CORE processes miscellaneous models to provide various functions, such as cooperate platform, redesigning circuits or sharing designs. It also comes with all-around unit tests, with which users can know what goes wrong before deploying CORE.

On the shoulders of giants

&nbsp &nbsp The primitive CORE contains a few necessary information to support the software. User can also start with some parts, devices and tasks that our team collected from previous iGEM projects for you. Users can acquire many useful components and feel less lonely.

For Silver.3 and techniques page

&nbsp &nbsp We have employed various techniques to ensure the quality of our software and make the developing process as smooth as possible. These techniques proves to be software developing best practices for years.

Continuous Integration

&nbsp &nbsp We've introduced Travis CI into our developing procedures, which brings us the advantages of Continuous Integration. By integrating our individual works into the mainline version several times a day, we've been successfully keeping our software.

Bug Tracking Facilities

&nbsp &nbsp We use Github Issues for bug tracking and features requesting.

Changes Between Releases

&nbsp &nbsp We would like to continue developing C.O.R.E. even after the competition ends. Changes between releases will be posted on our Github project page.

Algorithms

Logistic Regression

&nbsp &nbsp When judging whether a shared design should be public or not, we use Logistic Regression Algorithm in Machine Learning to find out the judgment criteria. By checking data marked by people, Logistic Regression can learn to distinguish a good design from a bad one. We use stochastic gradient descent to train the classifier. In average, after training for 500 times (about 0.46 seconds), our algorithm can get a high accuracy (around 90%) on the training set.

Figure.1

Largest Set Matching

&nbsp &nbsp In modeling parts, we use Largest Set Matching to determine which equation we should include in our system. We use the target name as the filter of equations. And we set the number of involved value as the index in the database to accelerate the query. When matching, we also find out whether the promoter and gene/protein are located on the same circuit to ensure the accuracy of the simulation. Our set matching algorithm also support user to include multiple equations as long as they are not in conflict with each other. Searching the corresponding equation system of a 22-parts design in a dataset which processes 453 equations takes only 0.2 seconds.

{{SYSU-Software/FOOTER}}