# Team:Groningen/Brainstorm/Modelling

### From 2009.igem.org

m (Template header.) |
(Demo of interactive plots) |
||

Line 59: | Line 59: | ||

Other potentially interesting software tools: | Other potentially interesting software tools: | ||

*[https://2008.igem.org/Team:UC_Berkeley_Tools UC Berkeley's Clotho] | *[https://2008.igem.org/Team:UC_Berkeley_Tools UC Berkeley's Clotho] | ||

- | *SBML | + | *[http://sbml.org/ SBML], a standard to define models. |

*[https://2008.igem.org/Team:KULeuven/Software/Simbiology2LaTeX KU Leuven's Simbiology2LaTeX] | *[https://2008.igem.org/Team:KULeuven/Software/Simbiology2LaTeX KU Leuven's Simbiology2LaTeX] | ||

+ | |||

+ | ==Interactive Graphs?== | ||

+ | It might be interesting to use JavaScript to present simulation results. This would allow for some degree of interaction (like resizing graphs, linked views, etc.) and may even make it somewhat easier to use graphs, we'd simply have some on-line repository of simulation results (a spreadsheet for example) and we could select which graphs to use on the Wiki. | ||

+ | |||

+ | Below an example of a JavaScript generated graph is shown. Note that the two views of the data are linked (although at this time both the kind of graph and the link is not optimal) and that it would be possible to create templates for creating these linked graphs. The current demo is based on Google technology, but it looks like [http://www.dojotoolkit.org/ the Dojo Toolkit] has more advanced charting capabilities at this moment (although I don't know how well they're supported in different browsers). | ||

+ | |||

+ | <html> | ||

+ | <div> | ||

+ | <span id="chart1"></span> | ||

+ | <span id="chart2"></span> | ||

+ | </div> | ||

+ | <script type="text/javascript" src="http://www.google.com/jsapi"></script> | ||

+ | <script type="text/javascript"> | ||

+ | |||

+ | // Load the Visualization API and the scatterchart package. | ||

+ | google.load('visualization', '1', {'packages':['scatterchart']}); | ||

+ | |||

+ | // Set a callback to run when the API is loaded. | ||

+ | google.setOnLoadCallback(initialize); | ||

+ | |||

+ | var data, chart = [], view = []; | ||

+ | |||

+ | function initialize() { | ||

+ | // Initialize some global variables | ||

+ | chart[0] = new google.visualization.ScatterChart(document.getElementById('chart1')); | ||

+ | chart[1] = new google.visualization.ScatterChart(document.getElementById('chart2')); | ||

+ | google.visualization.events.addListener(chart[0], 'select', handleSelect ); | ||

+ | //google.visualization.events.addListener(chart[1], 'select', function() { handleSelect(1); } ); | ||

+ | |||

+ | // Query spreadsheet and let result be drawn | ||

+ | var query = new google.visualization.Query('http://spreadsheets.google.com/pub?key=rRnyFyi-bgqsjT3SdJBdKKw'); | ||

+ | query.send(drawChart); | ||

+ | } | ||

+ | |||

+ | function drawChart(response) { | ||

+ | if (response.isError()) { | ||

+ | alert('Error in query: ' + response.getMessage() + ' ' + response.getDetailedMessage()); | ||

+ | return; | ||

+ | } | ||

+ | |||

+ | data = response.getDataTable(); | ||

+ | view[0] = new google.visualization.DataView(data); | ||

+ | view[1] = new google.visualization.DataView(data); | ||

+ | view[1].hideColumns([0]); | ||

+ | |||

+ | chart[0].draw(view[0], {width: 400, height: 240, lineSize: 1}); | ||

+ | chart[1].draw(view[1], {width: 400, height: 240, lineSize: 1}); | ||

+ | } | ||

+ | |||

+ | function handleSelect() { | ||

+ | var chartIndex = 0; | ||

+ | var selection_org = chart[chartIndex].getSelection(); | ||

+ | var view_org = view[chartIndex]; | ||

+ | for(var c=0; c<chart.length; c++) { | ||

+ | if (c==chartIndex) continue; | ||

+ | var selection_new = []; | ||

+ | var view_new = view[c]; | ||

+ | for(var i=0; i<selection_org.length; i++) { | ||

+ | var item_org = selection_org[i]; | ||

+ | var item = {'row': (item_org.row!=null ? view_org.getTableRowIndex(item_org.row) : null), | ||

+ | 'column': (item_org.column!=null ? view_org.getTableColumnIndex(item_org.column) : null)} | ||

+ | var item_new = {'row': (item.row!=null ? view_new.getViewRowIndex(item.row) : null), | ||

+ | 'column': (item.column!=null ? view_new.getViewColumnIndex(item.column) : null)} | ||

+ | if (item_new.row==-1) continue; // Skip items that are not represented in this view | ||

+ | if (item_new.column==-1) continue; | ||

+ | selection_new.push(item_new); | ||

+ | } | ||

+ | chart[c].setSelection(selection_new); | ||

+ | } | ||

+ | } | ||

+ | |||

+ | </script> | ||

+ | </html> | ||

+ | |||

+ | Taking this idea (much) further it would even be possible to run simulations using JavaScript (and charting the results), based on SBML models. However, this would involve much, much more effort than just showing a few interactive plots. | ||

==Literature== | ==Literature== | ||

See our [[Team:Groningen/Literature/Modelling|literature list]]. For our team members that are looking for books on the subject, have a look under code [http://opc.ub.rug.nl/DB=1/SET=2/TTL=1/CLK?IKT=8110&TRM=605B 605B] (Bernoulliborg library, lower floor), as well as 605C/D/E (A and Z also exist but seem to be less interesting) and 610A (and possibly 625, 715). | See our [[Team:Groningen/Literature/Modelling|literature list]]. For our team members that are looking for books on the subject, have a look under code [http://opc.ub.rug.nl/DB=1/SET=2/TTL=1/CLK?IKT=8110&TRM=605B 605B] (Bernoulliborg library, lower floor), as well as 605C/D/E (A and Z also exist but seem to be less interesting) and 610A (and possibly 625, 715). |

## Revision as of 14:29, 28 April 2009

## Software tools from previous years

- RNA folding (secondary structure)
- Alberta 2008, using RNAstructure and UNAFold (with a front-end), they used both programs (presumably to get an idea of the certainty)

- Molecular/genetic Circuit (?), (small) systems of (non-linear) ODEs
- Bologna 2008, using Simulink (Mathworks)
- ETH Zurich 2008, using the Symbiology toolbox in Matlab
- IHKU 2008
- (?)Istanbul 2008, using the Symbiology toolbox
- LCG-UNAM-Mexico 2008, using the Symbiology toolbox
- NTU Singapore 2008, using Simulink, Systems Biology Toolbox 2 (sensitivity analysis) and CellWare (stochastic analysis)
- Purdue 2008, using Excel and Mathcad
- TU Delft 2008, using CellDesigner and the Synthetic Biology Workbench for Matlab
- Edinburgh 2008, using COPASI
- Freiburg 2008, using Matlab
- Johns Hopkins 2008, using Matlab (for population dynamics of yeast)
- Michigan 2008, using Mathematica
- Pavia 2008, using Matlab and Simulink
- Ottawa 2008, using Matlab
- Washington 2008, using Mathematica
- Tsinghua 2008, using Matlab
- BCCS-Bristol 2008, Matlab
- Groningen 2008!, using Matlab and some custom tools to construct the models
- KULeuven, using Matlab and Celldesigner, site done very decently
- Montreal, using Mathematica
- Paris 2008, using BIOCHAM
- UCSF, using Matlab, Klaas Bernd: perhaps for growth stages?
- Cambridge, using an unspecified tool
- Imperial College Londen, using Matlab
- Peking, using Symbiology

- Cell processes
- Calgary 2008, using their own tool (transcription and translation)
- Waterloo 2008, using Cell++

- Static genome analysis (?)
- ETH Zurich 2008, using their own tool

- Genome Scale Model (whole cell response)
- ETH Zurich 2008, using the Cobra Toolbox for Matlab
- ?Wisconsin 2008, using GAMS

- Chemostat simulation
- ETH Zurich 2008, using their genome scale model data

- Cell movement
- IHKU 2008, as random walks
- Lethbridge 2008, using BCT (a tool to model the chemotaxis pathway of E. Coli?)
- Tsinghua 2008, using their own code?

- Group behaviour
- BCCS-Bristol 2008, movement of groups of cells, using a home-grown Java tool
- Groningen 2008!, spatial interaction
- Heidelberg, two population distributions and some substance concentrations using custom Matlab code
- Montreal, interaction in Repressilator network, using Mathematica
- Cambridge, quorum sensing
- Imperial College Londen, growth curve and motility, using Matlab

- Mutation

Other potentially interesting software tools:

- UC Berkeley's Clotho
- SBML, a standard to define models.
- KU Leuven's Simbiology2LaTeX

## Interactive Graphs?

It might be interesting to use JavaScript to present simulation results. This would allow for some degree of interaction (like resizing graphs, linked views, etc.) and may even make it somewhat easier to use graphs, we'd simply have some on-line repository of simulation results (a spreadsheet for example) and we could select which graphs to use on the Wiki.

Below an example of a JavaScript generated graph is shown. Note that the two views of the data are linked (although at this time both the kind of graph and the link is not optimal) and that it would be possible to create templates for creating these linked graphs. The current demo is based on Google technology, but it looks like the Dojo Toolkit has more advanced charting capabilities at this moment (although I don't know how well they're supported in different browsers).

Taking this idea (much) further it would even be possible to run simulations using JavaScript (and charting the results), based on SBML models. However, this would involve much, much more effort than just showing a few interactive plots.