Team:METU Turkey Software

From 2010.igem.org

(Difference between revisions)
Line 10: Line 10:
<script type="text/javascript">
<script type="text/javascript">
 +
 +
;(function( $ ){
 +
 +
var $scrollTo = $.scrollTo = function( target, duration, settings ){
 +
$(window).scrollTo( target, duration, settings );
 +
};
 +
 +
$scrollTo.defaults = {
 +
axis:'xy',
 +
duration: parseFloat($.fn.jquery) >= 1.3 ? 0 : 1
 +
};
 +
 +
// Returns the element that needs to be animated to scroll the window.
 +
// Kept for backwards compatibility (specially for localScroll & serialScroll)
 +
$scrollTo.window = function( scope ){
 +
return $(window)._scrollable();
 +
};
 +
 +
// Hack, hack, hack :)
 +
// Returns the real elements to scroll (supports window/iframes, documents and regular nodes)
 +
$.fn._scrollable = function(){
 +
return this.map(function(){
 +
var elem = this,
 +
isWin = !elem.nodeName || $.inArray( elem.nodeName.toLowerCase(), ['iframe','#document','html','body'] ) != -1;
 +
 +
if( !isWin )
 +
return elem;
 +
 +
var doc = (elem.contentWindow || elem).document || elem.ownerDocument || elem;
 +
 +
return $.browser.safari || doc.compatMode == 'BackCompat' ?
 +
doc.body :
 +
doc.documentElement;
 +
});
 +
};
 +
 +
$.fn.scrollTo = function( target, duration, settings ){
 +
if( typeof duration == 'object' ){
 +
settings = duration;
 +
duration = 0;
 +
}
 +
if( typeof settings == 'function' )
 +
settings = { onAfter:settings };
 +
 +
if( target == 'max' )
 +
target = 9e9;
 +
 +
settings = $.extend( {}, $scrollTo.defaults, settings );
 +
// Speed is still recognized for backwards compatibility
 +
duration = duration || settings.speed || settings.duration;
 +
// Make sure the settings are given right
 +
settings.queue = settings.queue && settings.axis.length > 1;
 +
 +
if( settings.queue )
 +
// Let's keep the overall duration
 +
duration /= 2;
 +
settings.offset = both( settings.offset );
 +
settings.over = both( settings.over );
 +
 +
return this._scrollable().each(function(){
 +
var elem = this,
 +
$elem = $(elem),
 +
targ = target, toff, attr = {},
 +
win = $elem.is('html,body');
 +
 +
switch( typeof targ ){
 +
// A number will pass the regex
 +
case 'number':
 +
case 'string':
 +
if( /^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(targ) ){
 +
targ = both( targ );
 +
// We are done
 +
break;
 +
}
 +
// Relative selector, no break!
 +
targ = $(targ,this);
 +
case 'object':
 +
// DOMElement / jQuery
 +
if( targ.is || targ.style )
 +
// Get the real position of the target
 +
toff = (targ = $(targ)).offset();
 +
}
 +
$.each( settings.axis.split(''), function( i, axis ){
 +
var Pos = axis == 'x' ? 'Left' : 'Top',
 +
pos = Pos.toLowerCase(),
 +
key = 'scroll' + Pos,
 +
old = elem[key],
 +
max = $scrollTo.max(elem, axis);
 +
 +
if( toff ){// jQuery / DOMElement
 +
attr[key] = toff[pos] + ( win ? 0 : old - $elem.offset()[pos] );
 +
 +
// If it's a dom element, reduce the margin
 +
if( settings.margin ){
 +
attr[key] -= parseInt(targ.css('margin'+Pos)) || 0;
 +
attr[key] -= parseInt(targ.css('border'+Pos+'Width')) || 0;
 +
}
 +
 +
attr[key] += settings.offset[pos] || 0;
 +
 +
if( settings.over[pos] )
 +
// Scroll to a fraction of its width/height
 +
attr[key] += targ[axis=='x'?'width':'height']() * settings.over[pos];
 +
}else{
 +
var val = targ[pos];
 +
// Handle percentage values
 +
attr[key] = val.slice && val.slice(-1) == '%' ?
 +
parseFloat(val) / 100 * max
 +
: val;
 +
}
 +
 +
// Number or 'number'
 +
if( /^\d+$/.test(attr[key]) )
 +
// Check the limits
 +
attr[key] = attr[key] <= 0 ? 0 : Math.min( attr[key], max );
 +
 +
// Queueing axes
 +
if( !i && settings.queue ){
 +
// Don't waste time animating, if there's no need.
 +
if( old != attr[key] )
 +
// Intermediate animation
 +
animate( settings.onAfterFirst );
 +
// Don't animate this axis again in the next iteration.
 +
delete attr[key];
 +
}
 +
});
 +
 +
animate( settings.onAfter );
 +
 +
function animate( callback ){
 +
$elem.animate( attr, duration, settings.easing, callback && function(){
 +
callback.call(this, target, settings);
 +
});
 +
};
 +
 +
}).end();
 +
};
 +
 +
// Max scrolling position, works on quirks mode
 +
// It only fails (not too badly) on IE, quirks mode.
 +
$scrollTo.max = function( elem, axis ){
 +
var Dim = axis == 'x' ? 'Width' : 'Height',
 +
scroll = 'scroll'+Dim;
 +
 +
if( !$(elem).is('html,body') )
 +
return elem[scroll] - $(elem)[Dim.toLowerCase()]();
 +
 +
var size = 'client' + Dim,
 +
html = elem.ownerDocument.documentElement,
 +
body = elem.ownerDocument.body;
 +
 +
return Math.max( html[scroll], body[scroll] )
 +
- Math.min( html[size]  , body[size]  );
 +
 +
};
 +
 +
function both( val ){
 +
return typeof val == 'object' ? val : { top:val, left:val };
 +
};
 +
 +
})( jQuery );
$(document).ready(function() {
$(document).ready(function() {

Revision as of 11:15, 26 October 2010

Team

METU Turkey Software is an interdisciplinary team of 8 students and 3 advisors from various backgrounds such as Molecular Biology, Bioinformatics, Computer Engineering and Computer Education and Instructional Technology. We have put our knowledge and experience in our fields together to bring a much needed solution to a daily problem in field of synthetic biology for iGEM 2010

Motivation

Since 2008, we have been participating in iGEM as METU ( Middle East Technical University) wet-lab team, and each year we have noticed the increasing number of teams participating, along with an increase in biobricks entries at partsregistry.org. While having more choices of biobricks to choose from is incredible, searching for and choosing the appropriate parts is becoming a challenge. This year during the construction process of iGEM biobrick parts for our new project, we felt the need for an application to find interacting parts based on an input/output model to design the genetic constructs. Using a specialized software for searching the parts registry to find possible biobricks to include into our construct would be much easy, fast and accurate than manual. We have shared our need with a group of friends who are software engineers, and initiated the METU_Turkey_SOFTWARE team where we worked together over this summer to build the BIO-Guide software.

Scope and Future Aspects

The partsregistry.org is a continuously growing collection of standard genetic parts that can be mixed and matched to build synthetic biology devices and systems. The Registry is based on the principle of "get some, give some". Registry users benefit from using the parts and information available in the Registry for designing their own genetically engineered biological systems. In exchange, the expectation is that Registry users will contribute back to the information and the data on existing parts and will submit new parts they have designed in order to improve this community resource.

As an expanding database partsregistry.org needs to be more organized and the standardization template needs to be improved. Additionally, the potential of multiple ways of using each part in different construct combination brings out the necessity for an application to search through the database. BIO-Guide is the first designed software that organizes over 1000 parts in partsregistry.org as possible atomics parts to build new biological device and systems for specific input and outputs based on graph theory. The requirement of similar applications and software tools are now inevitable in the emerging field of synthetic biology. The innovative approach that makes the partsregistry.org easy to use for synthetic biology applications is the collection of standardized parts that can be used in any combination with minimal effort under one database. But while working on our algorithm to search for possible combinations of parts depending on the given input and output, we have realized that present standards are inadequate and parts registry form must be improved.

In very near future a new format for parts registry form is needed and few additional features should be implemented to have more control on the database. We are planning to suggest a new format and features for the parts registry based on the survey results we have received. And planning to build the next version of BIO-guide based on the revised parts registry form. Along with using new parts registry standards we will be improving the algorithm, so that the software can search through more complex relations and returns all possible functional constructs.

Project Introduction

As the field of Synthetic Biology is on the rise, iGEM is growing up very fast and the number of parts in the parts registry is increasing with the addition of more complex parts each day. After facing some difficulty while running our algorithms on the parts registry, the need for more effective standardization of parts entry was apparent. We have investigated the information on parts in iGEM’s 2010 distribution and reorganized the information on the parts registry forms according to the needs of our algorithm. Then we have used graph theoretic modeling to visualize the relations between iGEM Parts and to standardize the representation of the parts as much as possible by graph theoretical methods. This helped us to find input output relations between the parts. Furthermore, our program BIO-Guide is now able to provide alternative pathways to construct the most reliable and functional Biobrick devices with respect to given inputs and expected outputs as a guide to Biobricks parts registry.

Notebook
Download
Misc - Collaboration
Material and Methods

Our material for B-IO Guide Software Program was the all background information of parts stated in distributed 2010 iGEM plates to whole wetlab teams. Data of a part having specific part ID has been parsed by writing a parsing code. Then, other data which needs to be standardized according to biological importance which has been get out from the Registry of Parts Page manually. These standardized data are;

  • working conditions of biobricks involved within the parts
  • properties of inputs and outputs

We named as "Inputs" because an effector which may be chemical(IPTG, galactose etc.) and physical (UV irradiation, temperature etc) external inputs or may be proteins synthesized from a biobrick coding sequence can affect promoters on the parts. The effects of these mentioned inputs have been determined as inducer (a molecule that starts gene expression), repressor (blocker of attachment of RNA polymerase to promoter), activator (increasing the rate of transcription) and inhibitor (decreasing the rate of transcription). Moreover, the promoters may have additional property at which they may become constitutively ON without seen any effect.

On the other hand, for output section, we add new approach which is "working condition" parameter because the expressed proteins from biobrick coding sequences may come from different organisms to run mostly in E.coli. However, in some cases these proteins may not work well as expected unless suitable and optimum conditions are provided in the host. Thus, we have thought that natural(in vivo) or experimental(in vitro) working conditions of the synthesized proteins from the certain biobricks or constructs should be stated during submitting to Parts Registry. Nevertheless, our 2010 iGEM Software Program version 1.0 mostly does not have any experimental data since the data had not been added for pages of the parts regularly and true. Therefore, if our advised Parts Registry interfaces are used in iGEM in future and our standards are used, then we will be able to add such an information to the database of the program for better performance.

Code
Human Practices
Database
User Guide
Safety
Modelling
Support
Future Plan
Algorithm
Contact
Results