Team:Exeter/Modelling Diary

Modelling Diary

Introduction

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
    • This was achieved through changing the way in which the coordinates where generated after the split. They were made in randomly after the event for the number of remaining time steps.
  • Tweaking small things trying to get it as close to simulating real life as possible (e.g. spherical area of binding).
    • i.e there are two spheres at the end on the current path which if they overlap will bind.
  • Researching where we could get the required variable values from and how to implement these into the model.
  • This lead on to applying real world values into our modelling after researching them online. We found binding distances, viscosities, temperatures.
  • Getting NUPACK to work:
    • This took us a significant amount of time. We decided to abandon the source code and use the online tools.
    • We learnt the input of Nupack which is a series of paired and unpaired bases. Using this we could make the secondary structure we needed and hence generate the optimal sequence.
    • The modeling team informed the lab team on how to use nupack initially they then ran with it and quickly started making the toeholds.
      • Their knowledge grew considerably and they no longer needed our help.
  • As we progressed with our research we asked Nick Harmor what the molecules would do at the edge of the tube, he told us that we could get low affinity binding tubes to essentially reduce sticking to nothing.

Week 07/07 - 13/07

  • We worked on confinement of the system to a cylinder of volume equal to an eppendorf tube, after consulting with the lab team.
    • This was done by moving the particles back to the edge of the cylinder. This is basic and shall be improved with trajectories.
    • Trajectories will be added in as a separate function.
  • On the 9th we had a full working script with basic confinement, delay, joining and splitting.
  • On the 10th of July we had a meeting with Jonathan Fieldsend and we discussed numerous things.
    • He thought we could improve our model through vectorisation (and 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.
    • He spoke briefly 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.
    • This started with making a plan on paper of the basic structure of the new code.
    • We then put this into practice by breaking the previous code into smaller parts to turn in functions. This was based on the function they performed, i.e plotting and coordinate generation.
    • This took a considerable amount of time and has changed a lot along the way.
  • The biggest improvement is generating the coordinates on each time step rather than all at once. These are then stored in an array of vectors for plotting.
    • Plotting is done at the end of all the time steps using the array generated. This has sped up our model by about half after using the timing function within matlab.
    • This took some time to implement and originally plotting was done on each time step but this was found to be inefficient and was changed to the above.
  • The code is now a lot more simple and easier to debug since it is separated into functions.
  • Another benefit is that the plotting does not have to run which would save a considerable amount of time, allowing pure numerical information to be extracted in the future.

Week 21/07 - 27/07

  • So far we have been optimising our code by arranging for loops better, changing the way toeholds and RNA bind, and removing unnecessary lines.
    • For loops needed to be changed as coordinates were being made too many times.
    • A vector called check was needed to see what toeholds and RNA bind.
  • A week of debugging has been taking place, the code has been meticulously looked through and a whole load of issues fixed.
    • Toeholds and RNA cannot join then split instantly.
    • Cooldown period countdown fixed and it now works - had to count up from minus numbers.
  • We had a meeting with Jonathan fieldsend on Monday 27th, this helped find more problems within our code and come up with some new ways to work.
    • 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 optimising our code this will remove large sections of our code.
    • A few more code optimisations were pointed out like, define loop variable instead of adding t+r etc, and moving j==1 loops outside.
  • We spoke in detail about parameter scanning to 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 provide a visual output and introduce a trajectory function to help the model simulate real life more.

Week 27/07 - 02/08

  • This week involved researching trajectory/collision functions to simulate particles bouncing off the walls of the tube trajectory maths. This involved some intense vector calculus and considering the 2D problem before working on the 3D.
  • Coordinate storage structure altered to have columns adjacent to each complex coordinate column to denote status and record identity of toehold and rna trigger.
  • Plotting function almost fixed 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.
  • Moving on to focus on Numerical Output / Split down functions / Bouncing in 3D and finally 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 anything missing information added meaning that these documents were as up to date as they could be.

Week 10/08 - 16/08

  • Todd was away but started to write up some stuff for the modelling wiki regarding the simulation. 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.

Week 17/08 - 23/08

  • On Monday the wiki modelling page for the simulation was finalised. This was proof read and new information was approved.
  • A to do list of task was produced for the week ahead this included:
    • Writing up all of the maths used for the simulation.
    • Writing up a piece for the wiki on parameter scanning.
  • The simulation was worked on more with bug fixing taking place and new code being added. The new code added was related to the trajectory stuff.
  • On Tuesday maths was worked on, this was again related to the trajectory stuff. The z coordinate needed to be found at the point the random walk path left the cone section.
  • On Wednesday more maths was undertaken.
  • The modelling team were away on Thursday and Friday.

Week 24/08 - 30/08

  • 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, we also extracted means and standard deviations from this.
    • 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.

Week 31/08 - 06/09

  • Monday through Wednesday were spent working on presentation material and practicing our presentation, this also included finalisation of the poster material for the (as well as from other areas).
  • Attempts at successful parameter scans were made, but yielded nothing.
  • 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 it 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!

Other points

  • We’ve asked a lot of the experiment team and they’ve since found these out or looked it up. This had helped them focus their experiments by designing them to find out what we want.
    • 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 was used to questions the decisions of the lab team, this included:
      • Temperatures,
      • Repeats,
      • Accuracy and precision,
      • Listing their assumptions.
  • We also wanted to measure the binding affinity of RNA and the toehold however we cannot do that with our equipment. We spoke to Tom Howard and he said that Manchester might be able to so we have since contacting the igem team there about using this machine. Dr Heyes was the academic.
  • Contact us:
    exeterigem@gmail.com