Please take a look at our journey through the development of our simulation. We hope future iGEM teams will be able to take inspiration from our approach.
Week 23/06 - 29/06
We made a start on modelling the Brownian motion of the toehold switches and RNA using MATLAB. Many hours were spent toiling over getting the simulation just right, it seemed every time we thought we fixed something it caused something else to go wrong. Thankfully, by the end of the week we had a basic ‘working’ 3D model of the brownian motion, although it only worked using a few of each of the molecules (laptops don’t have much computing power surprisingly - time to look into accessing the university supercomputers!).
The main aims for the model this week were:
- Making individual toehold and RNAs bind irreversibly to each other only.
- Initially creating a 2D simulation which could then easily transferred to 3D using plot3 statements.
Week 30/06 - 06/07
After speaking to the lab and getting a long list of requirements, the simulation got more complicated as we started to build a list of variables within the system as well as an accurate description of how the system should behave. Achieving this included:
- Getting the complexes to split after being combined for some time, as realistically the combined toehold and RNA would not stay bound indefinitely. This was achieved through changing the way the coordinates were generated after the split - they were randomly created after splitting for the number of remaining time steps. However, this also broke our code so we lost a few days trying to fix it
- Establishing which variables had values that could be researched, finding these values and applying them to our model. These included:
- Binding distances
- Small tweaks to make the simulation more realistic, this included incorporating a spherical binding site at the end of each path. If these overlap, the toehold and trigger will bind.
Another major part of this week was getting to grips with our toehold creating software, NUPACK. This took us a significant amount of time. First we attempted to install the source code, which was quickly abandoned in favour of using the online tools. Our next task was to learn NUPACK’s input, a series of paired and unpaired bases. This allowed us to make the secondary structure we needed and hence generate the optimal sequence. Once the modelling team had familiarised themselves with the software, they passed their knowledge on to lab team, who picked it up very swiftly and quickly began making toeholds.
As we progressed with our research we asked Dr Nic Harmer advice on what the molecules would do at the edge of the tube. He told us that we could get low affinity binding tubes to negate our worries about modelling this aspect as it would almost entirely negate the sticking.
Week 07/07 - 13/07
We finally achieved a full working script with basic confinement, delay, joining and splitting! This was after extensive work on confinement of the system to a cylinder of volume equal to an eppendorf tube - as recommended by the lab team. If a point was deemed to fall outside of the boundary it was placed back to the edge of the cylinder, a basic assumption that will hopefully be improved with trajectories added later as a separate function.
On Friday we had a meeting with Jonathan Fieldsend to showcase our model and get advice on its improvement. He suggested:
- Improvement of our model through vectorisation (an optimisation technique), generating time steps in real time, and more accurate confinement into a compound cylinder cone shape.
- Statistical modelling on numerical data and getting the model ready to handle data from the lab team in order to shape our project.
- Thinking about the variation of parameters and how best to implement this in order to best describe the real world system.
Week 14/07 - 20/07
We started to try and implement the alterations suggested by Jonathan which started with putting pen to paper in order to outline the basic structure of the new code.
In order to translate this to our code we first worked on breaking the code into smaller chunks based on the action they performed i.e. plotting or coordinate generation. These chunks were then turned into individual functions. This took up a considerable portion of our time and has changed numerous times along the way. However, the code is now a lot more simple and easier to debug!
Notably the biggest improvement of the week was changing the code to generate the coordinates on each time step rather than all at once - these values are then stored in an array of vectors ready for plotting. Originally, plotting occurred after each timestep but this was deemed to be inefficient and instead we decided to plot the function at the end of all the timesteps using the generated array. This sped up our model by about half (according to the timing function within MatLab).
Separating the plotting into a function that occurs after all time steps also made it easier to remove it as it is very time consuming. This means that pure numerical information can be extracted in the future.
Week 21/07 - 27/07
More optimising! This week involved a lot of debugging and general tidying up (a running theme!) including:
- Rearranging for loops - this needed to be changed as some of the coordinates were being made too many times
- Changing the way toeholds and RNA bind - a vector called check was created in order to see which toeholds bind to which RNA.
- Removing unnecessary lines
- Making sure the toeholds and RNA cannot join and then split instantly. They now require a cooldown period countdown which took a while to get working (this was achieved by counting up from negative numbers instead of counting down)
Following a further meeting with Jonathan fieldsend on Monday we found more problems within our code and come up with some new ways to work around them.
- Firstly he told us about version control and gave us a tutorial on setting up a GitHub account.
- Next he pointed out we could create a function to generate the random walk. This will optimise our code as it will remove large sections.
- A few more code optimisations were pointed out such as, defining loop variables instead of adding t+r etc, and moving j==1 loops outside of others
We also spoke in detail about parameter scanning so that we can use our model to optimise the experimental system:
- This could be done with reductionist gridding or a genetic algorithm.
- This will be explored in more detail soon.
The next steps will be to get the plotting to work to create a visual output and to introduce a trajectory function at the container walls.
Week 27/07 - 02/08
The big project this week involved researching trajectory/collision functions to simulate particles bouncing off the walls of the tube. (A big thankyou to this website for teaching us trigonometry). This involved some intense vector calculus - starting with the 2D system before moving on to 3D. Many hours were spent in front of a white board drawing numerous diagrams (and slugs)!
Obviously this wouldn’t be a modelling diary entry without mentioning optimisations:
- The coordinate storage structure was altered to have columns adjacent to each complex coordinate column. This allowed us to denote status and record the identity of each toehold and RNA trigger.
- We almost fixed the plotting function but for a few cases which resulted in extra lines being plotted. Plotting was based on conditional statements that exploited the addition columns and their information introduced in the new points structure.
The plan for the coming weeks will be to explore the numerical output, start to split down functions and implement bouncing in 3D and parameter scanning.
Week 03/08 - 09/08
Monday was spent getting GitHub to work so that we could use version control. It was setup successfully on Todd’s laptop but Dan’s required more work. Now that is good to go we can both edit the same script and upload it in a secure location. It will also keep track of the changes we've made and allow use to revert back to earlier versions.
The modelling diary, action plan and meeting notes were looked through and any missing information added, bringing these documents up to date!
Week 10/08 - 16/08
Todd was away but started to write about the simulation for the modelling wiki. Dan continued to work on the data structures used for recording the coordinates and smoothing out the bugs with it in preparation for adding in the bouncing from the edges of the tube later on in the week. Integration of this bouncing code would lead to many a problem and was carried over into the next week.
The data structuring included modifying the coordinates array so that a timestep (row) could accommodate two points rather than one (the point before contact with the boundary and the point of contact on the boundary). This was fiddly and some of the inflexible conditional statements elsewhere needed to be changed.
A modelling introduction was also written up for the wiki (finally!)
We also lost Amy to America this week, we know life will be that much harder without her :(
Week 17/08 - 23/08
This week was cut short by the absence of the Wiki team on Thursday and Friday. Regardless, the focus shifted onto writing for the wiki as Monday saw the finalisation of the wiki modelling page for the simulation. This was proof read and new information approved. We also started the week with the intention of writing various in depth pieces for the wiki including pieces explaining the maths and a piece on parameter scanning.
More bug fixing and general tinkering occurred, with the main focus being trajectory maths - the z coordinate needed to be found at the point the random walk path left the cone section.
Week 24/08 - 30/08
Another slightly emptier week for the modelling diary as the modelling team was used elsewhere within the project:
- Our matlab skills were used to analyse and produce data for the interlab study. A script file was made to produce graphs of the data, which we also extracted means and standard deviations from.
- General computer skills were used to make the poster and banner as they needed to be made using a high quality vector graphics application.
- A lot of time this week was spent making presentation material in preparation for the UK meet up in London.
We expect more of the same next week as we prepare for the UK meetup - things are really hotting up!
Week 31/08 - 06/09
This was the week of the UK meetup and as a result Monday through Wednesday were spent working on presentation material and practicing our presentation, this also included finalisation of the poster material as well as other meetup related activities.
UK meet up in Westminster!
- We presented on the process of building our simulation, our influences from the lab and human practices and what we hope to gain from each through parameter scanning.
- We also spoke to members of other teams about some of their modelling practices and made some friends along the way.
- Westminster University did a phenomenal job of hosting everyone, the event was fantastic!
As a brief aside regarding actual modelling, attempts at successful parameter scans were made, but yielded nothing :(
Week 07/09 - 13/09
We were back to modelling this week, with the lab team aiming to get us some data to feed into the model. This included the processing of in silico data from NUPACK in order to obtain probability distributions for the binding and splitting elements in the simulation. These replaced the pre-existing estimation for the likelihood of these mechanics occurring.
Week 14/09 - 18/09 (Wiki freeze!)
This week has definitely been one of the most stressful as everything is wrapping up - nicely timed alongside freshers week! Around the partying and commitments we had to societies we managed to work on
- The scaling of model, to better reflect how we’ve simulated a portion of the total number of particles in the cell free system
- Production of wiki content ahead of the freeze this included construction of graphics and diagrams for the modelling pages.
This brings us to this very moment, as I (Amy) am sat in my dorm at 10pm in America proof reading and tidying up parts of the wiki for my very tired team mates in England! This has been a really stressful week but we’ve managed to get a (somewhat) working model, although there were definitely a few things we would have loved to have added given more time (you can find these on the previous page). Below you'll find how our model helped the lab team as well as a few extra points!
- We’ve asked a lot of the experiment team and they’ve since found these out or looked it up. This has helped them focus their experiments as they have had to design them with what we need in mind.
- We asked about rate limiting steps after talking with Peter Winlove - this was then simplified after talking with the experimentalists.
- Rate of ribosome movement contains the rate of RNA, amino acid production, etc.
- Ribosome stays bound until it makes GFP.
- It also lead us to investigate the rate limiting steps. Anything to do with the cell free kit was assumed to be in excess. The main limiting step was determined to be the RNA binding event.
- During the meeting about experimental design, our inputs and considerations for the model were used to question the decisions of the lab team. These included:
- Accuracy and precision
- Listing their assumptions