Convenient
& Free Use
CRAFT do not need the users master complex operation flow. All
the users should do is setting their own restrictions and clicking
“Next”. Moreover, CRAFT allowed users to input multiple products
at same time, and give every single target a restriction. Users
are also allowed to change background environment, or customize
environment by uploading files, ensuring the users can design
the synthetic biological system that they really want.
Users can also feel free to change the regulatory elements in
generated circuits. CRAFT allows users to change the strength of
regulatory elements and the software will generate elements
matching the strength.
Standard
Protocol
Using “Design and Redesign” concept in synthetic biology,
CRAFT can generate standard protocols aiming at specific
synthetic biological system designs.
CRAFT also provide channels of experiment data feedback for
every single user and system design. The experiment data can
be referred by other researchers directly and used to update
model in the future.
Share
& Collaboration
Users can issue their own work on CRAFT Square and share
their ideas with other researchers. They can also scan other
designs and get inspired.
CRAFT Square provide a platform for collaboration, including
undertaking calculation missions of other users’ design, designing
or redesigning the existed system and validating synthetic
biological system following the standard protocols.
Extensible
CRAFT offers two levels of extensibility, from high to low: functional
extensibility and code extensibility.
Functional extensibility: users can customize and extend the
functions of CRAFT.
1. In addition to the bacterial communities data offered by CRAFT,
users can upload their data file of bacterial communities or media
for customization of media background.
2. In CRAFT there are channels for experimental data feedbacks,
which can also modify the parameters of the models in CRAFT.
3. If the protocols offered by CRAFT are irrelevant or inappropriate
to the users' requirements, users can uplode the protocols to CRAFT
to expand the protocol databases.
Code extensibility: we followed the best practices in software
engineering andtried our best to enhance the reusability of code.
1. Best practices in coding for readability and understandability:
we adopted the standardized variable naming and clear indentations.
2. Modular design: algorithms are designed to be modular for easy
migration to other programs.
3. Bug tracking facilities: we use Github Issue as the bug tracking
facilities. When users find a bug, they can easily report the bug either
to the Github Issue or through the email address provided in CRAFT
underneath.
4. Documentation: thorough and thoughtful via Github and Wiki. In Github
there are more details on the dependencies of CRAFT. In wiki we demonstrate
the requirement for CRAFT in Description, and also illustrate the design
of CRAFT in Design. Functions of some dependencies used in CRAFT are
offered below. For the installability test, user studies and wet-lab
validation of our software, please see the correponding wiki pages.
5. Flask: We also use flask as our frmework, it is extensible and easy
to deploy.
6. SBOLv: CRAFT use SBOLv as its output, thus it can connect with other
results also in SBOLv.
Techniques
Backend Dependencies and Functions
Flask: CRAFT use flask, a light-weight extensible framework and also
easy to be deployed.
flask sqlalchemy: CRAFT uses SQLalchemy as the Object Relational Mapper,
with which CRAFT is portable with many kinds of SQL databases
(CRAFT works with SQLite by default).
wkhtmltopdf: for dynamic generation of protocols. Protocol pdfs are
dynamically generated from backend html using wkhtmltopdf, a framework for
python pdf modification.
xlrd
pytz
pdfkit
uwsgi
nginx
Frontend-Backend Interactive Graphic
Whenever front-end changes data on the pages, backend will receive,
requests, and immediately send results back to front-end, with no
need for refresh the sites.
Frontend Dependencies Semantic UI - http://semantic-ui.com/
jQuery - https://jquery.com/
Sweetalert2 - https://limonte.github.io/sweetalert2/
AngularPlasmid - https://github.com/vixis/angularplasmid
Backstretch - http://srobbin.com/jquery-plugins/backstretch/
jQuery-MD5 - https://github.com/placemarker/jQuery-MD5
Semantic-UI-range - https://github.com/tyleryasaka/semantic-ui-range
Algorithms
Search part: We used greedy search to screen a number of non-
feasible solution for the reason that the feasible region is very
small in the search part. The algorithm performs a exact match on
a small graph with large amount of patterns.
The linear bi-level programming is transformed to a non-linear
programming by the method of penalty function and dual theory of
linear programming, increasing the efficiency of the algorithm.
Dynamic programming: obtain the most stable secondary structure
of a mRNA strand penalty function method: transform the linear bi-
level programming to a non-linear programming.
Interior method: solve the non-linear programming efficiently.