 Okay, so I'll give you an overview now of, so I'm speaking this morning mainly about neuroconstruct, but I'll give you an overview of this and the first hour or so of the tutorial we have this afternoon. So this morning I'm going to be talking about neuroconstruct. So as you've heard, it's a graphical application for developing networks of biophysically detailed neurons in, with more of a focus on the three-dimensional structures, whereas something like topographic yesterday was more concerned with two-dimensional layers and simulators like Nest are dealing with kind of point neurons, which don't necessarily have any three-dimensional structure. Neuroconstruct is focused around trying to incorporate as much of the anatomical detail as possible into the construction of the networks. So that's what I'll be talking about for this hour this morning. I'll also talk about neuromel, which is a standard language for describing these types of neurons that I've been working on as well for the past number of years. It's not just used by neuroconstruct, but there's a number of other applications out there which will use this language, and it covers various things from morphologies, ion channels, networks and so on. So I'll talk a little bit about that this afternoon and how that relates to neuroconstruct and a number of other tools that are out there at the moment. Also this afternoon I'll give some examples. So I'll mainly focus on the use of neuroconstruct this morning, but I'll give some examples of work in progress and work that's already been published. Both examples are from the Silver Lab, but using neuroconstruct, using neuromel in real, to do real neuroscience as opposed to just developing software and so on. So this is an example of a layer 5 pyramidal cell, and this study is investigating NMDA spikes in layer 5 pyramidal cells and the effect of background excitation on the synaptic integration in these types of cells. Another example which has been published is of creating a detailed electrically coupled Golgi cell network, Golgi cells in the granular cell layer of the cerebellum, and this has been two papers come out of this already, incorporating a large amount of anatomically measured detail electrically measured properties of these cells into a very detailed model of this Golgi cell network of the cerebellum and using neuroconstruct. And hopefully at the end of the day I'll talk just briefly about a project we're working on at the moment called the open source brain, opensourcebrain.org, where we're trying to make it easier for people to build these type of models, to share components, to reuse components, and to kind of collaborate on these very complex models. I mean no one lab can come up with a very detailed model of the cerebellum or cortex even though they may seem to be, but you do need expertise from lots and lots of different labs, so this is an attempt to try and get people to share these models, to work on them together and do this in a completely open source kind of manner. Okay, so I will just start off with presentation on neuroconstruct. Okay, so as I've shown already it's a graphical application, so whereas many of the tools have been developed, very good tools, very useful tools over the last 20 or 30 years, have focused on coming up with a simulator, developing a script perhaps that's native to that simulator for creating these detailed networks. Neuroconstruct started off as a, to try to create a tool which showed you graphically the types of cells, types of networks that are being created and then go about generating the very complex scripts for these specific simulators, so to make it easier for somebody just to look at something in front of them on the screen and then compare that visually to the systems that they're actually studying and then also be able to make it easier to click around, select a cell, look at the behavior of that and then analyze that in the same way as you might analyze if you had the data on the corresponding network from Slicer from in vivo and so on. So the background to this, it's been developed to the last number of years, it's written in Java, but hopefully you don't have to see too much of that, but it's been developed in Angus Silver's lab for the past number of years, I haven't been the main developers on that but there's a number of other people have contributed to it over the years and so the key thing is to help you develop three-dimensional network models of biologically realistic cells, so the assumption here is that they are conductance-based cells, you can develop integrate and fire in simpler kind of point neurons with this structure but the focus has always been on multi-compartmental conductance-based cells with ion channels with incorporating anatomical and physiological detail and it also allows, because you have the full three-dimensional detail, allows positioning of these cells, hopefully along with the same density, with the same relative position as would be found in cortical structures like neocortex or cerebellum or hippocampus and so on. And it automatically generates a script for these types of similars that are current simulators that are supported. Neural and genesis have been the ones which have been supported longest, but Moose that you've heard about as well is also supported and P6 and various other ones, Nest is to a certain extent supported but only for very simplified models. But different simulators have different capabilities so, but what's very good is the ability to actually compare across these different simulators because the models themselves are very complex because there could be something which is simulator specific built into your model, you don't necessarily want that. You want a model which is a model of the physiology which should produce the same behavior independent of what piece of software you've actually run it on. Okay, so it's been around for since 2007, first public release. There's a publication on it that's getting old at this stage, but it covers most of the aspects of it, published in Neuron in 2007, Neuroconstruct. There's a mailing list which is fairly low volume so if you do feel like signing up, it's open source and anybody can download it, edit it, send me feedback and so on. And we have funding for another couple of years and we're going to be hopefully getting some more so it's going to be around for a while hopefully and supported and hopefully as more people get to use it, there'll be more people who can answer questions and so on. Okay, so I've got a slide here on getting Neuroconstruct but thankfully it's already installed so you don't have to worry too much about this but there's various binary installers available. You can get a zip file with the current release that includes all the source code. You can also, because it's open source, go to its open source and it's being distributed under subversion so you can actually check out the very latest version that I've checked in last night and pull everything you need for it including Neuromel and so on and build it locally if you want but as I say it's installed already on the machines in the towers so you don't need to worry too much about that and if you do feel like browsing the source code, hopefully it's arranged in some logical fashion but I'd advise downloading NetBeans and there is a NetBeans project associated with the code and you can browse through it and hopefully get an idea for how it's internally structured but again you don't necessarily need to worry too much about that. So this is just a very quick overview of the overall functionality of the application. So what it involves is building cells that these can either be detailed, morphologically detailed cells or more abstract morphologies, adding to these cell models, information on ion channels, location of synapses and so on, creating detailed spiking cells, positioning these cells in three dimensions once you have connected a network of neurons exporting them into various different languages like neuron and genesis and so on and then browsing them the details of those simulations back in the three-dimensional through the three dimensional interface and analyzing the population behavior and so on. So to hopefully give you a very quick overview of what it will involve I've got neural construct here, hopefully that's reasonably well so it's an interface it's organized with various tabs along the top here for but I'll go through those in a little bit more details but what I'll just very quickly do is generate a network. Now this is a network of the cerebellum so I'll just give you to indicate what I'm trying to generate here so this is the cerebellum cortex I don't know very many people are familiar with the structure of the cerebellum you don't need to be very familiar with it but it's basically organized along the lines of the cerebellum cortex and a number of Prokinja cells well there's various different types of input into the cerebellum cortex but the main feature of it is these parallel fibers which intersect this planar dendritic tree of the Prokinja cell and a granule cell layer which recedes this mossy fiber input and these granule cells form these parallel fibers and the Prokinja cells have the main output of the cerebellum so in neural construct I've defined kind of abstract cells for each of these well for mainly three main types here so this is the structure here and what it's basically done is this is the granule cell layer here these are the parallel fibers and it's specified the general shape of each of these types of cells a kind of abstract representation of the Prokinja cell and specified how many connections between each of these how many connections here within the granule cell layer and so you can have a look at this and see whether you're happy with the relative connectivity here so once you've done with that you can select your simulator here whether it's neuron dendritic and so on we'll just generate neuron code so from that representation so each one of those cells has details on the ion channels present and the structure and so on and what we'll do here is generate all of the neuron files neuron specific files for each of these and let you run that simulation in neuron hopefully this will pop up okay so this is actually neuron running here this is the existing three-dimensional interface for neuron and you can see the general spiking pattern each of each of these cells now you don't necessarily have to plot this while you're actually running you can run it in the background or run it on a cluster and it can be calculating the behavior of all these cells but once it's actually finished here quit you can load this back into neural construct and hopefully replay that here so the advantage of loading this in here you can pause it you can go to various different places in the simulation you can zoom in but you can also select different cells and plot these look at the behavior look at the population rest of plots of various things here so there's various different functionality that you can actually analyze once you get it back into neural construct but again this simulation could have been running neuron it could be running genesis as well could be running the cluster you could run to the python interface for this you need to even open the graphical interface here you could run a hundred different permutations of this network here on the simulator and analyze them either through the interface or offline and so on so that's the very brief introduction to the interface so I'll give a little bit more detail now on that any questions at this stage of general everybody's got the general picture behind us okay okay so as I said it's all the main interface here is organized into tabs so you can click on each of these for the different cell types cell mechanisms the network and so on the general flow is that you start on the left and work right so you set your project details add some cells add some mechanisms like ion channels and so on generate the network and then export and there's other functionality if you click through on these menu to access the rest of the functionality and as I say best advice I can do is just create a new project click on everything you see and see what it does it won't erase your hard drive but just play around with it get a feel for it and maybe there are a number of existing examples included with the standard distribution so you have any of the examples I show here you have those there and you can just play around with those generate some networks and see what it does okay so the first tab here is for the project it just gives a quick overview of the brief description of the project but it would also list the cells and cell groups that are present and these here so for listing these different cell types here all these are clickable so once you've seen interesting cell here you can click on that and go to the tab and list the properties of that and you can also see the date and version that it's previously been stored with for the cell types the second tab here that's not very clear but hopefully you can see there that it'll just give a brief overview of the properties of the cell the specific capacitance the cell channel mechanisms present and so on and the number of sections and so on if you want more information on that you can click on full cell info and then it'll go through if it's a detailed 3d model it just gives a brief summary here but if you click on full cell info it should give all the information it has on the three-dimensional structure and what it will also do is down at the bottom of this because it can analyze the cell if it's missing some ion channels if it's disconnected if you've loaded in a morphology from a reconstruction and for some reason there's a break in the dendrites it'll list various different problems that is found with the cell here there's also actually a validate button which can just validate all the cells in project and give you a brief overview of any problems that might come up and you can also click on this button here for viewing it viewing morphology in 3d and I'll show some examples of later you can also create copies of cells I think one of these is here yes create copy of cell type so it's it makes it easier to just take a cell copy it's remove a channel modify the cell remove all the dendrites and see what it does and as I say info on validity of cell and okay so what also is at this tab here is add new cell type to project so at this point here what you're able to do is click on this and what you what you can import at this stage is a very various different cell type so there are some structured cell descriptions in neuron genesis and so on and newer lucida which is this software for reconstructing detailed morphologies at this if you click this button here you'll get options for importing various cell types here so they can import from a multiple different formats and convert to a newer construct project and at that stage it'll tell you if there's any problems it'll probably warn you that there's no channels on the cell but at that stage it's in newer construct and then you can start exporting to other formats from there okay so and there's also help functionality available on this if you click on help importing morphology files you get more information on the types that are there yep So when you save a project, is it not format as it is? Does that depend on what simulation you expect to do or is it something like your own algorithm? Well originally I mean so all of the details like the project description project name and so on what it actually is I mean technically speaking it's Java in the background and then there's a native Java method for saving those Java classes to it's actually an XML file but it's basically a serialization of that Java classes so originally all of the information was in that serialization of this Java classes so it was very newer construct specific but what it's moving more towards now is saving as much as possible in newer ML format so at the moment the channels are saved in newer ML the morphologies can be saved in newer ML as well so that when you actually go into the newer construct project and browse through it the majority of the interesting stuff that you're finding is in newer ML so it's kind of multi multiple different tools can actually load that up but once you load it in newer construct it'll it'll search through those folders find the channels and so on and give you the details here internally in extracted from that newer ML yeah yeah yeah I mean yeah so you get an option for saving the morphologies I mean you can actually save them morphologies in Java XML format you can save it in a kind of binary format which is very fast to load if you have very detailed cells you it's a little bit slower saving it in XML than loading it back in so you can save it into this binary format but I mean it's completely backward compatible and and so on okay so you probably I think aren't has given you a kind of brief overview of the concept of cable modeling and compartmental modeling so I mean if this is a kind of typical neuron a compartmental representation of this might be this approximation here where you've just measured various points along this and decided that okay these are my interesting points here and you want to create a compartmental representation of this this is the kind of equivalent electrical circuit where you have well basically each of these represents an electrical circuit with various different conductances for the active membrane conductance is lead conductance and synaptic input and so on but we'll go into that in too much detail so I mean that's the general idea behind these kind of approximation of real neurons but the thing is that each of these different tools like neuron and genesis have their their own slightly different ways of handling these representations so a lot of them actually are based on newer looser we construction so hopefully a lot of people have heard of new lucida okay so it's basically a tool for graphically tracing these neurons and converting confocal stacks images of filled neurons into a kind of 3d representation of these so you will go from the original neuron you'll have z stack images of this and pick out your interesting points here so what you'll actually come out with is three dimensional 3d points and radii for each of the locations along the cell here you might actually just have a rough outline of the cell body so but that representation there is handled in as I say slightly different ways by neuron and genesis neuron can has a much slightly better functionality for representing these cables along dendrites genesis and moose represent everything as a cylindrical compartments here so what basically what newer construct tries to do is kind of create a superset of all of these representations here to not lose any of the detail when you import this newer lucida we can reconstruction and internally provide mappings onto these simulator specific formats so it knows about the representation in genesis here it knows that it has to convert this more detailed dendritic section into a smaller number of compartments for genesis it knows that neuron is happy to handle this but it just happens to prefer cylindrical somas instead of spherical somas and so on so what newer construct and actually newer mel try to do is try to incorporate all of this information and then for the specific requirements of a simulator map it onto that and then let the simulator execute it in its own particular way okay so okay so once you have your cells you want to actually define where they're located in three-dimensional space so this tab region allows you to create a number of three-dimensional regions so for example if you're want to simulate the cortex you might have various layers and put in some approximation for the XYZ corners of rectangular box for each of these layers these regions can be used for packing cells in three dimensions but it can also select within three-dimensional structure a region where you want to apply electrical input you can select a subset of cells using these 3d regions that you want to analyze or plot separately you can also define that'll say a little bit more about axonal arbor for next network connections so you can define a 3d volume around a cell where you can where that cell can find connections but I'll say a little bit more about that later and so the three-dimensional regions that are supported moment or a rectangular box a sphere a cone and a cylinder others can potentially be added but that should be enough to simulate for the moment to simulate most types of structure and there are associated with neuroconstruct I'll just show you here let's shut that down when you open up neuro construct you will get a list of examples here so if you click on load example project you'll get a list of these examples here you also have detailed models that are the more kind of physiological models like the granule cell and see a one-paramidal cell but included in these examples is this one here example to packing so when I go through the presentation here I'll yes so I mentioned some of these is specific examples so if any of these are interesting for you you can go later and actually try to generate these and look at them yourselves so okay so once you have defined your regions so you wanted to find some cell groups or populations so these will be multiple instances of identical cells so some simulators out there will give you the option for generating new morphologies from a class of cells and creating a population of pyramidal cells and so on the thing when you're constructed the moment is that within a cell population all of the cells are identical and they're associated with a 3d region so each of these cell types is associated with a specific region that 3d region that you've created before you can specify a priority it's not just the order in which they're placed here you can specify a priority so if you're packing these in 3d which ones to create first and then pack around those there's various options for packing them in three-dimensional space you can do it randomly a regular packing in three dimensions in two dimensions hexagonal and give a specified position for each of the cells and again this example shows some of those so this is basically what you can generate here so there's various options for randomly placing cells in a spherical location or a cone creating them in a cylindrical column and some of these are the regular packing of cells so I think this is a regular packing and this is kind of cubic close packing where it's slightly greater density you can place cells at specific locations and then pack other cells around these so it's this example just shows you some of the options there so depending on the particular structure you want to simulate you can pack them in various different ways okay so that's fine you have your cell morphologies you have them placed in three-dimensional space but you want to actually make them spike so at this tab cell mechanism what you can actually add is active membrane conductance mechanisms so sodium channels potassium channels and so on synaptic mechanisms so the properties of synaptic connections between cells so AMPA, NMDA but also plastics synapses like if you want to simulate a short-term plasticity or spike-time independent plasticity but also iron concentration dynamics now I don't know if you've covered in any great detail but quite a number of these detailed cell models will also include a calcium accumulation mechanism so for the behavior of a number of cells is highly dependent on the interaction of calcium which flows in through calcium specific calcium permeable ion channels but that internal calcium also affects other channels which are dependent on the concentration of calcium like SK and BK channels so through those channels those are actually permeable to potassium but it won't just be the membrane the difference in membrane potential which affects their behavior but it will also be the internal calcium concentration so this is one of the very interesting parts of these type of conductance-based models getting the balance right between the potassium channels the calcium currents and so on and the internal calcium mechanism and the interplay of all of these can be quite complex but you can so basically you can include this type of ion calcium concentration dynamics here in this mech in these type of mechanisms here I'll show a brief example of that later as well so they can be specified in a number of different formats here you can have native genesis or even moose scripts for defining the behavior of these but the preference is for describing them in channel mel now channel mel is part of neuro mel that I've mentioned once or twice and I'll go into a little bit more detail this afternoon this is just a the standardized language which you can describe these mechanisms in in XML now neuron genesis moose even p6 all deal with the same types of channels sodium channels potassium channels and so on but each of them has had for a number of years their own native way for actually specifying these but none of these are anything more than the equations you would see in hila or any of these other books describing the properties of ion channels the physiology behind all of these implementations is identical so what channel mel and what neuro mel in general tries to do is to abstract out the physiological properties of these so if you look in the channel mel file you just have the physiological properties of the gates and the rate variables between the different states of the gates and neuro mel and neuro construct specifically will enable you to map this onto the specific format the specific moose file that moose favors for describing this sodium channel or to the neuron mod file for describing this sodium channel but have it in a simulator independent format so in that way that's the preferred format for storing it in neuro construct and there's a number of examples out there for these channels converted to that format and hopefully more and more applications will start supporting these simulator independent formats but also as I say I mean if you do have something in a neuron mod file or a moose specific file you can actually use it here you'll only be able to map it to that particular simulator but it might make it easy well it should make it easier to eventually start converting it to the simulator independent format okay so these channels are independent of any given cell that can be reused on multiple different cells it's easy to cut and paste these from one neuro construct project to another by looking in the cell mechanism folder but I'll go into that in too much detail okay so to give an actual example of a cell which is specified which has its channel specified in this format this is just a single compartment model it's actually a cerebellar granule cell and it has I think seven different types of channel here so it has a leak conductance it has a fast sodium channel it has a number of types of potassium channel it also has a calcium dependent potassium channel a calcium channel which allows calcium to flow in but also this internal exponentially decaying pool of calcium so calcium comes in through this calcium channel slowly decays to arresting potential but the transient concentration of calcium influences this potassium channel here so all of these mechanisms are specified in channel ML and you can see here the behavior of the cell over about a second or so in neuron and genesis matches quite closely you can run this model later and see in a little bit more detail the different properties of the individual ion channels the behavior of the internal calcium but the idea here is that it's complex model if you have this simulator independent physiological description of the channels and it behaves the same on neuron and genesis then you can be more confident that it's actually described in physiology rather than something specific for one particular simulator okay so that was a single compartment cell you can also specify so these here are the list of ion channels present in the project so persistent sodium m-type potassium these are all listed at the cell type mechanism but this is actually a visualization of the cell where you're actually specifying in different locations on the cell on the soma and den writes the densities of each of these channels so this is just an interface that I'll say a little bit more about later but just to specify that okay these individuals channels aren't specific to one particular cell you could have multiple different cells and distributed in multiple different ways on these cells but I'll say a little bit more about that later okay so networks there's a number of different options for building networks in neuroconstruct this one here is the at the tab new network so this one here is the morphology-based connection so the idea here is that so as in the earlier example I showed you can specify the locations on the presynaptic and postsynaptic cells where you want a particular type of connection to be created so for example in this connection here you say okay this parallel fiber and the tips of the dendrites of the prokinja cell are where I want my connections you can specify the number of connections between these you can also specify multiple different types so again specified at the cell mechanism tab you have description of AMPA and NMDA which is a voltage dependent synaptic mechanism you specify what types of synaptic mechanism you want between these number of cells and so on and it's a little bit difficult to see there but it's probably well hopefully you saw it on the earlier example as well where there are just connections between these parallel fibers and those regions on the dendritic tree so again you can generate this example later you have a number of options for the synaptic weights between these there could be random there could be Gaussian values you can also actually specify an action potential propagation delay where you don't actually simulate all of this structure here you can just specify that okay the action potential is generated in soma and it will take as have a certain speed to get to any particular point on this axon and so when this network is generated instead of simulating a compartment for this compartment for this here it will just generate a fixed value which corresponds to the time it would take for that action potential to travel to that point there so it makes it a lot more efficient to simulate but you can also then incorporate the delay it would take for action potential to propagate down parallel fibers a slightly different take on generating networks is with this second option here for volume-based connections so what this actually says is that you specify a region in 3d space around the cell and say okay this is where the axon a diffuse axon is actually present on this cell type and i want to only create connections in that region you specify in the post-synaptic cell where you want your post-synaptic connections and then it will actually generate only connections within this volume here where it intersects with this region of the post-synaptic cell and again you can have various options on numbers of connections and so on but you can also actually specify a functional expression for the connection probability within this volume so if you want to say that it it's actually a large volume but it dies off as a kind of Gaussian with a Gaussian probability of connection you can specify that and again you have various different connect possibilities for numbers of connections pre and post so there's these two slightly different ways of generating these networks but again they're really based on a three-dimensional representation of the structures of pre and post-synaptic cells and try to get as much information in there as you would actually obtain if you went and looked at the number of connections between different cell types in a layer and in a post-synaptic layer okay so again included with neural construct there's a number of examples here for example nine synapses and a pine demo where you can have generate different types of networks different types of synaptic connections so i think this is a example with short-term plasticity and generate these play around with them look at the implementations and so on and try to get a feel for the the possibilities okay so the tab let's go through this briefly the tab input and output specifies the types of electrical inputs you can apply to your networks this for example it allows you to add a current clamp input to different cell groups but also you can apply a Poisson train of synaptic input so if your network is connected up it's probably not going to do very much by itself you want to maybe simulate some background input so you specify that okay this particular cell type receives input at 50 hertz through this particular type of synaptic mechanism and that will hopefully make one cell group spike and it will propagate true to the rest of the network you can have various options here for specifying a function for the rate and amplitude so if you want to apply a sine wave either a sine sinusoidally varying current or a different amplitude which varies with a specific period then you can apply these to through this tab here at the bottom of this you can save you specify what values you want to save and plot from your simulation so you don't necessarily have to save everything but alternatively you could save every compartment in the cell and then visualize the propagation of the action potential through an individual cell or alternatively just save 10 percent of the population of the cells you can as I say plot it during the simulation but that slows it down a lot or you can just completely turn off the plotting of this and just save it to file and lots of things you can actually lots of options here for what you want to plot not just the membrane potential but if you want to get into the rate variables of any of the ion channels if you want to plot the calcium concentration the reversal potential of various ions and so on okay okay so associated with each of these neuroconstruct projects will be a lot of different cells a lot of different options for networks a lot of different options for what stimuli you want to apply and this concept of simulation configuration is so within one particular project it allows you to specify what sub elements of the project you want to include when you're generating this so here for example in a cerebellar example you can have you can select either the 3d network model or you don't want to just generate a single granule cell single Golgi cell so associated with each of these you get options for which cell groups to include which network connections to include which electrical inputs to include and what to plot so in this way you can actually hopefully create a series of different configurations so when somebody else gives it to them they'll be able to see okay I want to generate the large 3d network and the appropriate cell populations and inputs and so on will be generated with that you can also give them different simulation durations for each of these so that makes it easier to give it to someone else and they'll know what you were intending to generate one nice scenario would be there's a simulation configuration related to each of the figures in the publication so if figure one you have just the single cell properties figure two you have a small network configuration figure three you have the network with a particular cell group knocked out you could conceivably have all these figures up here and then they'd just be able to generate them from there okay so at the tab generate what you would actually do is select one of these simulation configurations and then generate the cell positions and connections on that you get a brief summary here of the cell groups numbers and cell groups and so on that have been generated numbers of connections generated so and there's some options here for analyzing numbers of connections and links of connections and so on what you can also do here at this stage is if it is a very large network and might take usually they're just a few seconds to generate if it does take 10 minutes to generate what you can do is save it in network and l this can either be in xml format or a binary format here and this allows you to generate a network save it and come back next day and reload it and it's much faster to reload it from one of these formats than it is to generate the connections again the other option you have is to specify random seed so if you have a kind of stochastic connection if it's randomly placed in 3d you press the button again it'll be completely different but you can also set this random seed so that you know that for a specific random seed it will regenerate the same network again if it doesn't take too long it might be easier just to store these seeds rather than the full xml description okay so at the tab for visualization there's two options for what you can visualize you can either visualize a single cell in in great detail and look at the channels and so on or you can generate visualize the 3d generated network so for the single cells you have this morphological description where you can see the 3d endpoints you can look at the various different groups in order to show an example of that for for specifying the axon and dendrites and so on you can see where the channels are placed you can see where different types of synapses are allowed if you click on a 3d segment you select that segment and then it gives more details on that segment itself so say the other option is viewing a generated network you can view the 3d location of all the cells and there is an optional for specifying the connectivity so in the earlier example I showed you can actually see the physical the connections between pre and post synaptic locations if it is a very large network there's also an option for a transparent view where you click on one cell or select one cell or even a group of cells and then everything else can be transparent so that if it is a cortical column model you can select one or two cell types and make the rest partially transparent so that you can see the positioning of that within the network itself so there's lots of options if you go to 3d settings on the file menu for options for these how much 3d info you want and you can have a great amount of 3d detail for each of these cells but it does depend a lot on your video card if you have a nice graphics card in your machine then you can set it a lot of detail but it was slightly older machine you might want to just have kind of ball and stick representation for your network okay so again just to show some of the visualization aspects for specifying groups and this is just an example here where you visualize a single cell and you select groups in this drop-down box you get the list of groups that are included with this cell so for example the axon group basal dendrites and so on you can edit these groups by clicking the button edit groups and select which compartments are part of the group which are outside of the group and in this way hopefully make a more detailed representation of the structure of that and these in turn these groups can be used for specifying ion channels so here you've set up your cell a pyramidal cell here with axon group dendrite group and so on you have a list of the ion channels present and in this way you can select which ion channels are present in which parts of the cell and in that way you can investigate properties of having different concentrations of ion channels in the apod dendrites and so on thankfully you don't have to do all this through the interface there are functions for example in neuron where if you have an existing model in neuron with this 3d structure and somebody's optimized their model in neuron specified where all the channels are you can just export all of that from neuron in neural format load it up here and then just visualize it in this way where all the ion channels are present okay and there is also the option of conductance density as a function of distance along the cell so if you open up the example see a one pyramidal you can you actually have a function I think it's one of the h-current where it varies as a specified function along the cell so you give the conductance density as a function of or which would be distance along distance from the soma which is a feature of many ion channels in that you know that have heard from Matt okay so at the tab export you get a number of options as shown earlier you can generate neuron but there's also options for generating genesis and mousse and so on I don't think you're actually going to be able so in the examples later this afternoon when you're playing with it the preferred simulator will be neuron I don't think you're going to be able to generate for mousse because that was on a virtual machine but if you do have a machine with neuron or with neural construct and mousse installed on the same operating system it's quite straightforward to generate for mousse again what you're able to do is incorporate blocks of native code so if you do want something very specific to neuron if you have somebody's existing model and they've tweaked a number of things in existing neuron code you can add a block of that native code and in through neural construct and then the generated neuron script will include that block of code and kind of just your model in that way but obviously it breaks the simulator independence of neuron of neural construct and ideally the simulators will be identical on neuron genesis and so on if they're not and if it's specified in channel mail it can be very informative about why well you'll obviously have to investigate further but it can lead I've investigated a number of models in these specific formats and it can be very informative about where the problem is whether it's a problem with a simulator or the numerical integration method and so on as I say you can export the structure of network to neural mail the various options were neuron like the variable time step specifying the random seed genesis you have options for this compartmentalization which I won't say too much about but that was just the mapping of very detailed morphology and to a simpler representation for genesis in the tab visualization there is this simulation browser which which lists the various different simulations so if you run multiple different simulations in neuron and moose and so on you can select at the tab visualization the simulation browser and it will show you the various different simulations you've run the simulation times and so on click one of these and reload it into neural construct there's options for visualization of network activity once you've got it back into neural construct so as I showed plotting voltage at different locations timing spikes firing frequency population raster plots and so on histogram of cell spiking so this is just an example which a cortical column model which I'll say a little bit about later so plotting individual traces plotting histograms of population spiking this is just a sum of population activity and these are raster plots of one specific cell group so as I say there's various different options with this this is just a figure from that neural construct paper where it's visualized some of the other features like creating cross correlations between cells in different regions and showing that these cell this cell is has a higher correlation with spiking of other cells in this region compared to a different region okay I'm running a little bit behind so I won't go into this in great detail one of the things actually that there's a number of options in the settings general properties one thing that we'll have to do later is specify the location of neuron and we have a slide on this for when the tutorial later but you just have to tell it where neuron is if it's installed in a standard location it'll usually find it but it's slightly different so you know need to set that later various options for logging to screen and logging to file you have options for what to save it in as I mentioned earlier there's various options for xml binary and neural mel you can set lots of colors so you can choose nice pink background if you so desire and the level of detail for three-dimensional objects again depending on your video card and so on and level of transparency I won't go into this too much but there's options for each of these plot frames when you're visualizing the membrane firing and so on you have options for saving it for importing data to compare it to experimental traces okay okay so very briefly two final things I'll mention this part of the advanced functionality it's not actually built into the version that's actually no it is so this python interface can be quite useful if okay it's fine doing things through the graphical interface clicking on options changing your channels and so on but if you want to do that for a hundred different values of your conductance density it's going to take quite a long time so once you've built a project in neuro construct once you've saved it you can actually access that full functionality in neuro construct behind the scenes using a python script which loads in the project you have access to changing any of the properties in there you have access to generating the code for any of the simulators and you can do this in a nice small script and run hundreds of simulations in that way it uses jython which is slightly different version slightly different version of python which is implemented in java but the majority of their code is identical and as I say it can be used for creating scripts which access this code functionality from a script without loading up the graphical interface it can be launched in this way but if anybody doesn't have any questions I can show them later and I won't go through this in any great detail but this is just a typical script and all of these functions here for loading the project naming the given name of the project setting the number of cells generating this script in neuro construct setting the random seed generating the genesis files all of these are the functionality that I just showed through the interface there but just accessed in a script in this way so if you wanted to run a hundred of these simulations just put in a for loop generate the genesis files a hundred times and you get the files back they're just text files basically with membrane potential and so on and you can do any other functionality here to analyze these scripts and so on and generate an fi curve or do whatever else but the key thing here is that all this functionality that you've shown through the interface can be accessed in a nice little script some scenarios for this as I say generating the input generating a fi curve for the behavior of a cell under different input currents testing robustness of parameters adjusting everything by five percent and seeing if it still behaves similarly tuning model to experimental data you could implement a mechanism where you have your experimental data you have your model you adjust the variables as Astrid I'm sure will be talking about so basically trying to get your model to reproduce with a specific set of channels to reproduce your experimental data generating populations of models if it's stochastic if the stochastic input you don't just want to analyze one instance of the cell you want to analyze multiple instances of the population and just using a subset of newer construct functionality so you could potentially have a script which loads in a neuron file saves that as newer ml and does that for a hundred different neuron files so if you just want to access one small part of the functionality you could have a python script which does lots and lots of things but just calls in newer constructed one point does one specific task and then gets on with the rest of its functionality so the the idea there is that the good thing with python there's lots of different libraries lots of different tools neuron or newer construct can then just be one more module which you incorporate into your tool chain okay so this is just an example of the cortical column model I showed earlier has multiple different cell types and this is a fi curves which have been generated for different input currents and this is the firing frequency of each of these different cell types and this was just generated with one python script from that newer construct project and you can see various dodgy things about spontaneously active into neurons and things like this from that interface there but as I say you could generate all this through the GUI with individual changing the values for the currents and so on but it's actually easier with a nice python script okay and there is more detail on the newer construct website if you go to I think contents here you'll get a link for examples of python scripts in newer construct okay so the one other piece of advanced functionality that I want to mention very briefly is you haven't had an introduction to neuron but I don't know has anybody have very many people actually used neuron in the past one or two one of the very good things about neuron is that it can be generated across parallel computing resources so that not just on one simulator if you have a supercomputer with a few hundred or a few thousand processors you can run split up your cell model or split up your network model run cells on each of those processors and generate very large networks in that way and it's actually what the blue brain project one of the main simulators that they're using is parallel neuron and thankfully it's freely available to anybody who wants to download neuron so what newer construct can do now is and I won't go into this in great detail but it's a bit of detail is in the slides here it can generate transparently code for parallel neuron you just tell it okay I have eight processors my machine is located here and in the same way you just press generate code for neuron and it will behind the scenes allocate yourselves to those different eight processors zip up your files send it to the remote computer resource start up parallel neuron there save the results bring it back and you can analyze it through the interface in exactly the same way as if you run it serially locally there's some details there used with caution we've had a few publications using this functionality and we are happy to use it but it's it is useful to actually know the structure behind the scenes what it's actually doing so you can generate very large networks but it's also easy to generate very large networks which are completely meaningless but if you do want to do this get in contact I'll happily give lots more detail but yeah again I will go to that in great detail one of the things there is that some information on how it's actually zipped up and sent to remote processes and brought back but this is just some of the results here with parallel neurons so this actually is the I think it is the same granule cell layer model that I showed earlier but with a realistic cell density so I think this is 100 microns by 100 microns and so but each of these cell types here is at the anatomically realistic density and so it's a fairly simple network but it's just very large numbers of cells so what you can see here is that with 10,000 cells and 50,000 cells as you increase the number of processors the simulation time goes down linearly so this kind of indicates that if you double the number of processors you're using you'll have the simulation time we've tested this up to about 200 processors we've also tested having a the same number of cells per processor so 500 of these single compartment cell or 5,000 of these single compartment cells per processors up to 200 processors so we've run a simulation with a million cells here and it's staying quite steady here so it takes the same amount of simulation time if you have two 200 processors as you would for eight processors with a corresponding number of cells and this again is that cortical column which I'll talk a little bit more about later and similarly here for slightly low numbers of cells but each of these is a multi-compartmental cell model it's also quite linear up to about 200 or so processors and if you scale your network for 50 cells per processor you can get up to a cortical column with about 10,000 cells which is approaching well if you believe in cortical columns here the number of cells in a real cortical column and again this is staying quite constant here so all of this code is generated through neural constructs and simulated completely transparently to the user and a remote cluster pulls back the results and then you can analyze I don't think you can actually view 10,000 cells but you can definitely get back the amount of detail the spike times or member potential traces from each of these cells that you specify and the Python scripts for example make this much easier to manage and just scaling up and down the number of cells in each of these populations okay so that's pretty much it welcome trust and previously medical research council they're funders for these and these are some of the various people who've contributed to it a number of people in the neural male community and as I say I'll say a little bit more about neural male later and some of the project in the afternoon some of the projects that we've actually used neural construct for and then briefly about the open-source brain we're trying to get lots more input on the specific models from various different people about these thanks