Team:Carnegie Mellon/Device
Modeling.
Rule-based modeling for our estrogen sensor.
Purpose
Our original goal was to be able to design a fluorimeter solely using the materials available in the Arduino Ultimate Starter Kit. This package came with an Arduino Uno along with several helpful components such as LEDs, buzzers, relays, and a Light Dependent Resistor (LDR). The LDR is a resistor that has resistance inversely proportional to light: it has tiny resistance (100s of ohms) when a lot of light strikes it and very large resistance (10,000s of ohms) when in complete darkness. It soon became apparent, however, that the LDR would not be sufficient for our purposes: the device was not sensitive in low light, the signal was small, and the response time was very slow. Here is a graph of one of our trials where we simply turned the lights off and slowly changed the screen brightness of a computer in the room:
As the graph shows, there was no discernible change between each level of brightness (just a general upward trend), there is an incredible amount of noise making a stable reading impossible, and the response time was in the order of tens of seconds. We decided to tackle these problems individually. First, we tried to smooth out the signal. For those who are not in the field of electrical engineering, this required the use of either an inductor or a capacitor. We decided use capacitors since they were more readily available. A capacitor is a device made up of two parallel metal plates that are not touching each other so that, when a voltage is applied to these plates, an electrical field is created in between them! This field stores energy proportional to its capacitance, so it will store energy when voltage is applied over it and it will give off a voltage when there is no voltage across it. To simplify this thought, a capacitor can almost be thought of as a really small rechargeable battery. Thus, when we place a capacitor in parallel with our LDR, if the signal is high it will store energy and if the signal is low it will raise give off energy! Assuming we are using only a small capacitor, this signal will look smoother with the possible trade off of a small time delay capacitor discharges.
And here we have a much smoother signal! However, the signal is still much too small and is very slow to respond. To tackle both of these problems together, we ordered some new parts: a simple photodiode ($2) and two operational amplifiers (op amps, also roughly $2). Photodiodes are essentially small solar panels and op amps are a complex weave of transistors and capacitors that serve to amplify signals. This lead to the design of our complete circuit:
Two capacitors were used, one to smooth the signal and one to stabilize the voltage source (the Arduino). Our device measures voltage at the V nodes shown in the graph (also done by the Arduino) and the resistors connected to the negative pin of the op amp determine the amplificiation of the signal. The trade off between capacitors of different sizes is always a matter of speed versus smoothness. We tried three different capacitors and found the one that worked best to be the second:
Compare that with the original photodiode circuit unmodified here!
As you can see, things are much better now. Reattempting our original experiment, we closed the doors and turned off the lights to see how well our new circuit could detect us changing a laptop's backlit display from the six feet away facing away from the circuit:
And it worked! It can clearly be seen when the light changes and the response time is around two seconds per change. Our circuit was finally ready to test on cells! We further diminished noise by soldering our components to a PCB board (the shorter the wires, the less the noise), surrounding our circuit board with aluminum (known as a Faraday Cage, this technique prevents outside signals like radio waves from entering), and we added a Bluetooth chip to our circuit so that there was no light in the room at all. For this experiment, we used our Gaussia luciferase and tested it fully saturated to see if we could see anything at that dark. While the biologists added the Coelenterazine in the dark room, the engineers stood outside with laptops to see the results:
It was a success! The point of reaction can clearly be seen, the signal was smooth and fast, and the signal was big (meaning it should work on even diluted solutions). Our luminometer works. Of course, because things can always be improved, we have now been in the process of further amplifying the signal and diminishing noise. We have done this in several ways:
*3D printed a casing for the reaction to take place to further diminish background light
*Bought more enhanced, larger signal photodiodes (approximately $17)
*Changed the resistors so that our op amp gain increased from 4 to 11.
Future directions will also include extending our implementation to a fluorimeter. This simply requires printing a second half to the casing where we will attach an LED to excite the test tube specimens followed by a lens to only allow the wavelengths we want to measure to pass through.
As the graph shows, there was no discernible change between each level of brightness (just a general upward trend), there is an incredible amount of noise making a stable reading impossible, and the response time was in the order of tens of seconds. We decided to tackle these problems individually. First, we tried to smooth out the signal. For those who are not in the field of electrical engineering, this required the use of either an inductor or a capacitor. We decided use capacitors since they were more readily available. A capacitor is a device made up of two parallel metal plates that are not touching each other so that, when a voltage is applied to these plates, an electrical field is created in between them! This field stores energy proportional to its capacitance, so it will store energy when voltage is applied over it and it will give off a voltage when there is no voltage across it. To simplify this thought, a capacitor can almost be thought of as a really small rechargeable battery. Thus, when we place a capacitor in parallel with our LDR, if the signal is high it will store energy and if the signal is low it will raise give off energy! Assuming we are using only a small capacitor, this signal will look smoother with the possible trade off of a small time delay capacitor discharges.
And here we have a much smoother signal! However, the signal is still much too small and is very slow to respond. To tackle both of these problems together, we ordered some new parts: a simple photodiode ($2) and two operational amplifiers (op amps, also roughly $2). Photodiodes are essentially small solar panels and op amps are a complex weave of transistors and capacitors that serve to amplify signals. This lead to the design of our complete circuit:
Two capacitors were used, one to smooth the signal and one to stabilize the voltage source (the Arduino). Our device measures voltage at the V nodes shown in the graph (also done by the Arduino) and the resistors connected to the negative pin of the op amp determine the amplificiation of the signal. The trade off between capacitors of different sizes is always a matter of speed versus smoothness. We tried three different capacitors and found the one that worked best to be the second:
Compare that with the original photodiode circuit unmodified here!
As you can see, things are much better now. Reattempting our original experiment, we closed the doors and turned off the lights to see how well our new circuit could detect us changing a laptop's backlit display from the six feet away facing away from the circuit:
And it worked! It can clearly be seen when the light changes and the response time is around two seconds per change. Our circuit was finally ready to test on cells! We further diminished noise by soldering our components to a PCB board (the shorter the wires, the less the noise), surrounding our circuit board with aluminum (known as a Faraday Cage, this technique prevents outside signals like radio waves from entering), and we added a Bluetooth chip to our circuit so that there was no light in the room at all. For this experiment, we used our Gaussia luciferase and tested it fully saturated to see if we could see anything at that dark. While the biologists added the Coelenterazine in the dark room, the engineers stood outside with laptops to see the results:
It was a success! The point of reaction can clearly be seen, the signal was smooth and fast, and the signal was big (meaning it should work on even diluted solutions). Our luminometer works. Of course, because things can always be improved, we have now been in the process of further amplifying the signal and diminishing noise. We have done this in several ways:
*3D printed a casing for the reaction to take place to further diminish background light
*Bought more enhanced, larger signal photodiodes (approximately $17)
*Changed the resistors so that our op amp gain increased from 4 to 11.
Future directions will also include extending our implementation to a fluorimeter. This simply requires printing a second half to the casing where we will attach an LED to excite the test tube specimens followed by a lens to only allow the wavelengths we want to measure to pass through.
Biosensor Overview
Before we began writing code to generate our model, it was important to create a visualization of our model to serve as a template which we would base our code on. A legend for the components can be seen below:
Rule-Based Model
The general outline for constructing a rule-based model is shown below:
Our RFP reporter estrogen model captures a total of 16 different reactions:
Our gaussia reporter estrogen model captures a total of 22 different reactions:
Before the written descriptions of the rules can be transformed into code, it is imperative that a class definition for each of the components be instantiated, as the model needs to know which cellular components must be included in the module, and which components are not being directly analyzed. A class definition essentially specifies the name of the component as it will appear in the code, all the possible binding sites of the component and to which molecules it can bind, and the possible states of the component (i.e., phosphorylation state, methylation state, etc.). Below is the class definition used for the RFP reporter estrogen model:
In the BioNetGen code estrogen will now be represented as E(). The full class definition of estrogen is E(S~U~B,L~I~O). The S~U~B, indicates that the estrogen can either be bound or unbound to the ligand binding domain of T7 RNA polymerase, and the L~I~O indicates that the estrogen can either be inside or outside of the cell.
After the class definitions are provided, it is important to initialize each particular component to a predetermined value in order to begin the simulation. For components whose class definition includes multiple states, each particular instance must be initialized. Below is the initialization code used in the RFP reporter estrogen model:
The final step before assembling the reaction rules, is to determine the rate constants of each reaction. Certain rate constants can be obtained directly from literature, whereas others must be approximated as a function of literature values and our experimental data. The code for the rate constants in the RFP reporter estrogen model is shown below:
The rate constants for the diffusion of estrogen into and out of the cell are provided by the equations below:
The rate at which estrogen diffuses through membrane was found indirectly via the synthesis of literature values from a variety of sources. One of the most difficult tasks of modeling involves parsing through multiple pieces of literature in order to derive a particular rate constant. A common problem in constructing biological models is that individuals with strong computational backgrounds are not always well versed in sorting through wet lab literature for relevant information. Luckily iGEM stresses the intersectionality of synthetic biology, and our diverse team was able to overcome this issue as the modelers were able to tell those with strong wet lab backgrounds exactly what they needed from the literature, and in turn the wet lab students were able to efficiently parse through the literature to find the relevant data. It is shown below exactly how the cell's permeability to estrogen was derived:
A similar process was used to computer many of the other rate constants. However, certain rate constants had to be lifted from our team’s wet lab trials. For example, the diffusion of estrogen is not only dependent on the cell membrane’s permeability to estrogen, but also upon the estrogen concentration gradient. As the initial concentration of estrogen outside the cell was set in the wet lab, it was imperative for the team to run wet lab trials with various concentrations of estrogen in order to confirm the model’s correctness.
The final step of constructing a rule-based model is to compile all of the aforementioned information into single lines of executable code, which correspond to a reaction rule. This can be seen below for the RFP reporter estrogen model:
Each of the above lines will be turned into a differential equation or sets of differential equations, and run for a specified amount of cycles.
Our RFP reporter estrogen model captures a total of 16 different reactions:
Our gaussia reporter estrogen model captures a total of 22 different reactions:
Before the written descriptions of the rules can be transformed into code, it is imperative that a class definition for each of the components be instantiated, as the model needs to know which cellular components must be included in the module, and which components are not being directly analyzed. A class definition essentially specifies the name of the component as it will appear in the code, all the possible binding sites of the component and to which molecules it can bind, and the possible states of the component (i.e., phosphorylation state, methylation state, etc.). Below is the class definition used for the RFP reporter estrogen model:
In the BioNetGen code estrogen will now be represented as E(). The full class definition of estrogen is E(S~U~B,L~I~O). The S~U~B, indicates that the estrogen can either be bound or unbound to the ligand binding domain of T7 RNA polymerase, and the L~I~O indicates that the estrogen can either be inside or outside of the cell.
After the class definitions are provided, it is important to initialize each particular component to a predetermined value in order to begin the simulation. For components whose class definition includes multiple states, each particular instance must be initialized. Below is the initialization code used in the RFP reporter estrogen model:
The final step before assembling the reaction rules, is to determine the rate constants of each reaction. Certain rate constants can be obtained directly from literature, whereas others must be approximated as a function of literature values and our experimental data. The code for the rate constants in the RFP reporter estrogen model is shown below:
The rate constants for the diffusion of estrogen into and out of the cell are provided by the equations below:
The rate at which estrogen diffuses through membrane was found indirectly via the synthesis of literature values from a variety of sources. One of the most difficult tasks of modeling involves parsing through multiple pieces of literature in order to derive a particular rate constant. A common problem in constructing biological models is that individuals with strong computational backgrounds are not always well versed in sorting through wet lab literature for relevant information. Luckily iGEM stresses the intersectionality of synthetic biology, and our diverse team was able to overcome this issue as the modelers were able to tell those with strong wet lab backgrounds exactly what they needed from the literature, and in turn the wet lab students were able to efficiently parse through the literature to find the relevant data. It is shown below exactly how the cell's permeability to estrogen was derived:
A similar process was used to computer many of the other rate constants. However, certain rate constants had to be lifted from our team’s wet lab trials. For example, the diffusion of estrogen is not only dependent on the cell membrane’s permeability to estrogen, but also upon the estrogen concentration gradient. As the initial concentration of estrogen outside the cell was set in the wet lab, it was imperative for the team to run wet lab trials with various concentrations of estrogen in order to confirm the model’s correctness.
The final step of constructing a rule-based model is to compile all of the aforementioned information into single lines of executable code, which correspond to a reaction rule. This can be seen below for the RFP reporter estrogen model:
Each of the above lines will be turned into a differential equation or sets of differential equations, and run for a specified amount of cycles.
Results
Unlike the intein-based estrogen sensor from this year, the ligand binding domain based estrogen sensor is able to produce a detectable RFP signal as shown in the graph below:
The units for the x-axis are time (minutes), and the units of the y-axis are concentration (nM). Unlike last year’s sensor, the amount of RFP produced within a few hours is significantly greater than the minimum threshold detection of 100 µm. Thus the model is able to be successfully validated via our results from the wet lab.
The units for the x-axis are time (minutes), and the units of the y-axis are concentration (nM). Unlike last year’s sensor, the amount of RFP produced within a few hours is significantly greater than the minimum threshold detection of 100 µm. Thus the model is able to be successfully validated via our results from the wet lab.
Code Files
Working BioNetGen files of the two estrogen models can be found in the following zip file.
References