Difference between revisions of "Team:SYSU-Software/Techniques"

Line 5: Line 5:
 
         <h1>Backend</h1>
 
         <h1>Backend</h1>
 
         <h2>Framework</h2>
 
         <h2>Framework</h2>
         <p class = "wenzi">&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.</p>
+
         <p class = "wenzi">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.</p>
  
 
         <h2>Friendly User System</h2>
 
         <h2>Friendly User System</h2>
         <p class = "wenzi">&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.</p>
+
         <p class = "wenzi">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.</p>
  
 
         <h2>Flexible Deployment</h2>
 
         <h2>Flexible Deployment</h2>
         <p class = "wenzi">&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.</p>
+
         <p class = "wenzi">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.</p>
  
 
         <h2>Extensible Interfaces and Automated Documentation</h2>
 
         <h2>Extensible Interfaces and Automated Documentation</h2>
         <p class = "wenzi">&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. </p>
+
         <p class = "wenzi">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. </p>
  
 
         <h2>Miscellaneous Models and Unit test</h2>
 
         <h2>Miscellaneous Models and Unit test</h2>
         <p class = "wenzi">&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. </p>
+
         <p class = "wenzi">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. </p>
  
 
         <h2>On the shoulders of giants</h2>
 
         <h2>On the shoulders of giants</h2>
         <p class = "wenzi">&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. </p>
+
         <p class = "wenzi">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. </p>
  
 
         <h2>For Silver.3 and techniques page</h2>
 
         <h2>For Silver.3 and techniques page</h2>
         <p class = "wenzi">&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. </p>
+
         <p class = "wenzi">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. </p>
  
 
         <h3>Continuous Integration</h3>
 
         <h3>Continuous Integration</h3>
         <p class = "wenzi">&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.</p>
+
         <p class = "wenzi">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.</p>
  
 
         <h3>Bug Tracking Facilities</h3>
 
         <h3>Bug Tracking Facilities</h3>
         <p class = "wenzi">&nbsp &nbsp We use <a href = "https://github.com/igemsoftware/SYSU-Software-2015/issues">Github Issues</a> for bug tracking and features requesting.</p>
+
         <p class = "wenzi">We use <a href = "https://github.com/igemsoftware/SYSU-Software-2015/issues">Github Issues</a> for bug tracking and features requesting.</p>
  
 
         <h3>Changes Between Releases</h3>
 
         <h3>Changes Between Releases</h3>
         <p class = "wenzi">&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 <a href = "https://github.com/igemsoftware/SYSU-Software-2015">Github project page</a>.</p>
+
         <p class = "wenzi">We would like to continue developing C.O.R.E. even after the competition ends. Changes between releases will be posted on our <a href = "https://github.com/igemsoftware/SYSU-Software-2015">Github project page</a>.</p>
  
  
Line 38: Line 38:
  
 
         <h2>Logistic Regression</h2>
 
         <h2>Logistic Regression</h2>
         <p class = "wenzi">&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.</p>
+
         <p class = "wenzi">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.</p>
 
   <img src = "https://static.igem.org/mediawiki/2015/a/a8/SYSU-Software_newtu1.png">
 
   <img src = "https://static.igem.org/mediawiki/2015/a/a8/SYSU-Software_newtu1.png">
  
Line 44: Line 44:
  
 
         <h2>Largest Set Matching</h2>
 
         <h2>Largest Set Matching</h2>
         <p class = "wenzi">&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. </p>
+
         <p class = "wenzi">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. </p>
 
       </div>
 
       </div>
 
<html>
 
<html>
 
{{SYSU-Software/FOOTER}}
 
{{SYSU-Software/FOOTER}}

Revision as of 03:41, 19 September 2015

SYSU-SOFTWARE IGEM 2015

Backend

Framework

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

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

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

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

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

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

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

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

We use Github Issues for bug tracking and features requesting.

Changes Between Releases

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

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

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}}