Endy:Notebook/BioBrick Open Language Specification/Doug Approach

From OpenWetWare
Revision as of 17:07, 10 August 2009 by Douglas Densmore (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

Response to Emma's Requirements

//Sample "Eugene" (BOL) file which illustrates the requests from SynBioSS Group
//Doug Densmore
//Date - 7/10/09

/*
 Components/Devices

   * BioBrick ID: To allow for the design of custom BioBricks, I think this property should be defined by default but not mandatory.
   * BioBrick nickname: Mandatory. For naming custom bricks, and convenience; "pTet" is more descriptive than "BBa_R0040".
   * BioBrick type: Promoter, RBS, Coding DNA, Terminator, etc. SynBioSS only cares about these four types, but obviously BOL should support every type in the Parts Registry.
   * BioBrick order: For devices and whatnot. 
*/

Property BioBrickID(txt);
Property Nickname(txt);
//Type and order will not be properties ; order can be determined by other things 

/*  
Type-Specific Characteristics
Promoters

   * Constitutively ON/OFF: That is, whether a promoter is "ON" or "OFF" when no protein is bound to it.
   * Operator Site Name(s): Such as tetO, lacO, etc....
   * Operator Site Location(s): A start/end is all we need.
   * Location of -10/-35 sites: Start/end. We are interested in this because the leakiness of a system is affected by the location of any operator site(s) relative to these sites. 
*/

Property OnOff(boolean); //we added a boolean type, "true" or "false" are possible values (without quotes)
Property OperatorSiteName(txt[]); //changed to reflex Emma's comments
Property OperatorSiteLocation(num[]); //changed to reflex Emma's comments
Property Negative10Negative35(num[]); //changed to reflex Emma's comments

/*
Coding DNA

   * Corresponding protein: For example, BBa_E0040 codes for GFP. 
*/

Property Protein(txt);

/*
Regulatory/System Information

I do not know if the scope of BOL will eventually include entire systems, instead of just BioBrick devices. If so, the following information would be helpful to us:
Protein Properties

   * Constitutive or Non-Constitutive: Self-explanatory.
   * Protein "type": The general behavior of the protein. Currently, SynBioSS can handle activators, repressors, and reporters.
   * Binding Sites: A list of operator sites that the protein can bind do.
   * Complex: This is just an integer representing the number of protein monomers that are in an active complex. For example, TetR and LacI bind DNA as dimers(2) and tetramers(4), respectively. 
*/

Property Constitutive(boolean); //Changed to boolean
Property ProteinType(txt);
Property BindingSites(txt[]);
Property Complex(num);

/*
Effector Properties

Such as aTc, IPTG, etc....

   * Binding behavior: Protein(s) that the effector binds to.
   * Act in Concert: For every protein/effector pair, this is a yes-no question. Some proteins (e.g. LuxR) will not bind to DNA until a small molecule (e.g. HSL) first binds to them. 
*/

Property BindingBehavior(txt);
Property ActInConcert(num);

/*
All properties about can be kept in a header file called SynBioSSProperties.h
*/

//Examples of part
Part Promoter(BioBrickID, Nickname, OnOff, OperatorSiteName, OperatorSiteLocation, Negative10Negative35);
Part RBS(BioBrickID, Nickname);
Part CodingDNA(BioBrickID, Nickname, Protein);
Part Terminator(BioBrickID, Nickname);

/*
All components definintions can be in a headerfile called SynBioSSComponents.h
*/

Promoter p("BBa_R0040", "ptet", true, ["TetR1", "TetR2"] , [1, 19, 26, 44], [19,44]); //reflects Emma's comments
RBS r("BBa_R0040", "rbs");
CodingDNA c("BBa_R0040", "CDS", "lasR");
Terminator t("BBa_B0010", "term");

/*
All instantiations can be in a headerfile called <x>instantiations.h
This will be created by parsing information from a database, xml file, etc
*/


//Now once all this has been captured in header files, devices can be defined

Device d(p, r, c, t);
Device d2(p, d);

//sample print statements
print(d2.Nickname
print(d[0].OperatorSiteName);