47
Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata Institue of Fundamental Research Bangalore, INDIA BrainScaleS CodeJam 5, Edinburgh 2012

Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

Multi-compartmental and multi-scale modeling in MOOSE via Python

Subhasis RayNational Centre for Biological SciencesTata Institue of Fundamental ResearchBangalore, INDIA

BrainScaleS CodeJam 5, Edinburgh 2012

Page 2: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

Outline

● Walk through: simple compartmental model● Multiscale modeling outline● Architecture of MOOSE● Extensions● Preview of upcoming version● Future directions

Page 3: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

3

the Multiscale Object- Oriented Simulation Environment

● A general purpose simulator framework● Draws from experience with GENESIS

Logo credit: Upi Bhalla

Page 4: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

4

What is MOOSE?

Depends on what you are and where you look.

Page 5: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

5

A single passive compartment

Cm Rm

Em

Cell membrane

Cytoplasm

Extracellular medium

Vm

import moosesoma = moose.Compartment('soma')soma.Rm = 7.6e6soma.Cm = 7e­9soma.Em = ­70e­3

 soma.inject = 1e­6

● Getting help:

moose.doc('Compartment')

moose.doc('HHChannel.channel')

Page 6: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

6

Recording data

vm_table = moose.Table('/vm')

vm_table.stepMode = 3

 

vm_table.connect('inputRequest', soma, 'Vm')

Page 7: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

7

Scheduling

moose.context.setClock(0, sim_dt)

moose.context.setClock(1, sim_dt)

moose.context.setClock(2, plot_dt)

moose.context.useClock(0, '/soma', 'init')moose.context.useClock(1, '/##[TYPE=Compartment]', 'process')moose.context.useClock(2, '/vm')

Page 8: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

8

Running the simulation

moose.context.reset()

moose.context.step(50e­3)

vm_table.dumpFile('soma_vm.txt')

Page 9: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

9

Adding another compartment

Cm Rm Rm'

Ra'

Cm'

Ra

Em Em'

Vm Vm'

soma axon

Vm, Ra

Vm'

Page 10: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

10

soma.Ra = 1e6

axon = moose.Compartment('axon')

soma.connect('raxial', axon, 'axial')

Cm Rm Rm'

Ra'

Cm'

Ra

Em Em'

Vm Vm'

Page 11: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

11

Inserting Hodgkin-Huxley-type ion channels

Cm

Rm

Em

Ra

Cell membrane

Cytoplasm

Extracellular medium

Vm

Gk

Ek

Ik

Page 12: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

12

Setting up the channel

na_chan = moose.HHChannel('/soma/Na')

na_chan.Gbar = 1e­9

na_chan.Xpower = 3

na_chan.Ypower = 1

na_chan.connect('channel', soma, 'channel')

Gk=Gbar∗m3∗h

Page 13: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

13

Setting up the gates

na_chan.setupAlpha('xGate',                alphaA,alphaB,alphaC,alphaD,alphaF,

betaA,betaB,betaC,betaD,betaF,

  divs,vmin,vmax)

alpha=A+B∗Vm

C+exp (D+Vm

F)

dmdt

=alpha∗(1−m)−beta∗m

Equation for beta has same form as alpha

Page 14: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

14

Or simply ...

from moose import neuroml

reader = neuroml.NeuroML()

reader.readNeuroMLFromFile(

'GranuleGenerated.net.xml')

cell = moose.Cell('/Gran_0')

Page 15: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

15

Even simpler: use MOOSE GUI

Page 16: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

16

Multiscale modeling

● Ticks with different time-steps run different components of a model at different rates.

Enzyme

Substrate Product

Tick2dt=1s

Chemical compartment

Page 17: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

17

Multiscale modeling

● Ticks with different time-steps run different components of a model at different rates.

Soma

K_AHP

channel

Tick 0dt=0.1ms

[Ca2+]

Electrical model

Page 18: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

18

Multiscale modeling

● Ticks with different time-steps run different components of a model at different rates.

Enzyme

Substrate Product

Tick 2dt=1s

Chemical compartment

Soma

K_AHP

channel

Tick 0dt=0.1ms

Electrical model

Page 19: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

19

Multiscale modeling

● Ticks with different time-steps run different components of a model at different rates.

Enzyme

Substrate Product

Tick 2dt=1s

Chemical compartment

Soma

K_AHP

channel

Tick 0dt=0.1ms

concentration

Electrical model

Page 20: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

20

A more realistic system

Chemical Compartment Electrical Compartment (spine)

NMDA Channel

Ca ChannelCa Pool

Page 21: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

21

Multiscale modeling: networks

● You can connect neuronal compartments via synapse to create a network.

soma_0

axon_0

soma_1

axon_1SpikeGen_0

SynChan_0

Vm

Spike event

Gk/Ek

Page 22: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

22

Multiscale modeling: networks

● You can connect neuronal compartments via synapse to create a network.

soma_0

axon_0SpikeGen_0Vm

soma_1

axon_1

Page 23: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

23

Multiscale modeling: networks

● You can connect neuronal compartments via synapse to create a network.

soma_0

axon_0SpikeGen_0Vm

Spike event soma_1

axon_1

Page 24: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

24

Multiscale modeling: networks

● You can connect neuronal compartments via synapse to create a network.

soma_0

axon_0

soma_1

axon_1SpikeGen_0

SynChan_0

Vm

Spike event

Page 25: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

25

Multiscale modeling: networks

● You can connect neuronal compartments via synapse to create a network.

soma_0

axon_0

soma_1

axon_1SpikeGen_0

SynChan_0

Vm

Spike event

Gk/Ek

Page 26: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

26

Multiscale modeling: Olfactory bulb

By Aditya GilraAditya Gilra

Page 27: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

27

Multiscale modeling: Cortical column

● Detailed biophysical model of single thalamocortical column (based on Traub et al 2005) of rat barrel cortex:

14 cell types

50-120 compartments

11 ion channel types

~3500 cellsthalamus

Page 28: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

28

MOOSE ArchitectureFigure: Upi Bhalla

Page 29: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

29

MOOSE Architecture: scripting interface

file

database

SBW/other model

system

Derived from: http://moose.sourceforge.net/images/stories/architecture_65.jpg

Com

man

d lin

e/sc

riptin

g in

terf

ace

The command line / scripting interface is where modeler interacts with MOOSE.

user

Page 30: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

30

MOOSE Architecture: Shell

shellfile

database

SBW/other model

system

Derived from: http://moose.sourceforge.net/images/stories/architecture_65.jpg

Com

man

d lin

e/sc

riptin

g in

terf

ace

The user interface talks to

Shell - the single point of access to all functionalities available to the user

user

Page 31: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

31

MOOSE Architecture

shellfile

database

SBW/other model

system

Derived from: http://moose.sourceforge.net/images/stories/architecture_65.jpg

Com

man

d lin

e/sc

riptin

g in

terf

ace

Shell creates, deletes and queries other MOOSE objects.

It also executes some of the built-in functionalities reinit, start.

user

Simulation entities

Page 32: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

32

soma

MOOSE Architecture: Messaging

Objects communicate state variables during simulation.

Destination fields give handle to functions for callback.

na_channel.connect('channel',

                   soma, 'channel')

na_channel

Gk/Ek

Vm

handleChannel()

handleVm()

Page 33: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

33

MOOSE Architecture: scheduling

shellfile

database

SBW/other model

system

Derived from: http://moose.sourceforge.net/images/stories/architecture_65.jpg

Com

man

d lin

e/sc

riptin

g in

terf

ace

At start-up, the scheduling system is initialized

user

Simulation entities

scheduler

Page 34: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

34

MOOSE Architecture: scheduling

database

Derived from: http://moose.sourceforge.net/images/stories/architecture_65.jpg

shellfile

SBW/other model

system

Com

man

d lin

e/sc

riptin

g in

terf

ace

user

Simulation entities

Clock

Page 35: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

35

MOOSE Architecture: scheduling

database

Derived from: http://moose.sourceforge.net/images/stories/architecture_65.jpg

shellfile

SBW/other model

system

Com

man

d lin

e/sc

riptin

g in

terf

ace

user

Simulation entities

Tick 0: dt0 Tick 1: dt1

Clock

Page 36: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

36

MOOSE Architecture: scheduling

database

Derived from: http://moose.sourceforge.net/images/stories/architecture_65.jpg

shellfile

SBW/other model

system

Com

man

d lin

e/sc

riptin

g in

terf

ace

user

Simulation entities

Tick 0: dt0 Tick 1: dt1

Clock

init() process()

Compartment

Page 37: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

37

MOOSE Architecture: solvers

shellfile

database

SBW/other model

system

Derived from: http://moose.sourceforge.net/images/stories/architecture_65.jpg

Com

man

d lin

e/sc

riptin

g in

terf

ace

Solvers can take over the calculation from simulation entities

user

Simulation entities

scheduler

solvers

Page 38: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

38

Solvers: Avoid the penalty of object orientation

Compartment 1 Compartment 2 Compartment 3 Compartment 4

Tick0

Page 39: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

39

Solvers: Avoid the penalty of object orientation

Compartment 1 Compartment 2 Compartment 3 Compartment 4

Tick0

Solver

Page 40: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

40

Solvers: Avoid the penalty of object orientation

Compartment 1 Compartment 2 Compartment 3 Compartment 4

Tick0

Solver

Hsolve – neuronal (Niraj)Ksolve – biochemical (Upi)Gillespie – biochemical (Upi)

Page 41: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

41

Extensions

● NeuroML and SBML support (9ml partially) (Aditya Gilra, Siji George).

● MUSIC API for runtime interaction with other simulators (Niraj Dudani, Johannes Hjorth)

● Smoldyn engine for reaction diffusion systems at cellular scale (Steve Andrews, Upi Bhalla).

● Markov models of ion channels (Vishaka Datta)

● Generally, MOOSE C++ API allows incorporation of other specialized simulation engines as solvers.

Page 42: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

42

New MOOSE: sneak preview

● Complete rewrite applying lessons learned from previous releases.

● Facilities for dynamic class information.● Focus on utilizing multi-core CPUs and multi-

node clusters.

Page 43: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

43

New MOOSE: sneak preview

● Complete switch to Python interface (kinetikit and GENESIS prototype files still supported).

● Computation cleanly separated from user interaction (runs in separate thread). No more blocking during long running simulation.

● Automatic distribution of load among different threads/nodes.

● Most of biophysics and biochemistry classes have been ported. Porting of Hsolve, NeuroML-reader, SBML-reader and the GUI are under development.

● Native support for saving data in HDF5 format.

Page 44: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

44

New MOOSE: sneak preview

● Python interface rewritten using Python/C API

● Much slimmer and more efficient than SWIG-based interface.

● C++ programmer need not worry about Python – it dynamically queries the MOOSE core and generates the class hierarchy using metaprogramming.

Page 45: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

45

Future developments

● Smoldyn support being ported.

● SigNeur – a specialized solver combining signaling models with neuronal models.

● Solvers to utilize GPU for computation in plan.

● Scope for many other solvers at/between various scales.

Join us at:

moose.sourceforge.netmoose.ncbs.res.in

Page 46: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

46

Trying out new moose:

● To check out:

svn checkout \

http://moose.svn.sourceforge.net/svnroot/moose/moose/branches/dh_branch/ \

new_moose

● To compile (needs g++, make, python-dev, gsl-dev [optional HDF5-dev])

cd new_moose

make pymoose [optional USE_HDF5=1]

● To try squid axon demo (requires numpy, PyQt4 and matplotlib):

export PYTHONPATH={path to new_moose}/python:$PYTHONPATH

cd {path to new_moose}/Demos/squid

python squid_demo.py

Page 47: Multi-compartmental and multi-scale modeling in MOOSE via ...Multi-compartmental and multi-scale modeling in MOOSE via Python Subhasis Ray National Centre for Biological Sciences Tata

47

Thank you!

● Upi, Niraj Dudani, Harsharani, Chaitanya, Aditya Gilra and many other contributors to the MOOSE project.

● NCBS/TIFR, DAE/SRC, INCF, SBCNY