You can subscribe to this list here.
2005 |
Jan
|
Feb
|
Mar
|
Apr
(4) |
May
(2) |
Jun
|
Jul
(1) |
Aug
(6) |
Sep
|
Oct
|
Nov
|
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
2007 |
Jan
(4) |
Feb
(2) |
Mar
(3) |
Apr
(6) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
2010 |
Jan
(7) |
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Padraig G. <p.g...@uc...> - 2010-02-05 15:37:51
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type"> </head> <body bgcolor="#ffffff" text="#000000"> Hi,<br> <br> I assume you mean a case where the thickness of the shell varies on different parts of the cell? If it's uniform over all the cell, no extra info is needed in the mechanism element and the thickness should be set in the ion_concentration element. If it varies the following can be used:<br> <br> <bio:mechanism name="CaPool" type="Ion Concentration"><br> <bio:parameter name="thickness" value="0.02"><br> <bio:group>soma</bio:group><br> </bio:parameter><br> </bio:mechanism><br> <br> <bio:mechanism name="CaPool" type="Ion Concentration"><br> <bio:parameter name="thickness" value="0.01"><br> <bio:group>dendrite_group</bio:group><br> </bio:parameter><br> </bio:mechanism><br> <br> How does this sound?<br> <br> The second scenario you describe below (an ion conc mechanism on a group other than all, with no parameters different than the ion_concentration element) is more problematic, as the current mechanism/parameter/group structure assumes a parameter element is present. The new representation for these in NeuroML version 2 will have to account for your scenario. For convenience the easiest way to do this now might be to use:<br> <br> <bio:mechanism name="CaPool" type="Ion Concentration"><br> <bio:parameter name="thickness" value="0.02"><br> <bio:group>soma</bio:group><br> </bio:parameter><br> </bio:mechanism><br> <br> i.e. simply repeat one of the parameters from the ChannelML mechanism. <br> <br> Re the example using fixed_pool_info, see the attached. Note that this example is for the Traub et al [Ca2+] pool mechanism here:<br> <br> <a class="moz-txt-link-freetext" href="http://senselab.med.yale.edu/modeldb/ShowModel.asp?model=82894&file=\nrntraub\mod\cad.mod">http://senselab.med.yale.edu/modeldb/ShowModel.asp?model=82894&file=\nrntraub\mod\cad.mod</a><br> <br> and the "fixed pool info" parameter phi is a scaling factor on the Ca current per unit surface area, rather than a scaling on the total Ca current. This is not an ideal way to specify this parameter (as this scaling should be independent of compartment/section size) and so while this element does allow somewhat unsound modelling practice, it makes it easier to determine if best practices are being used in models.<br> <br> Regards,<br> Padraig<br> <br> <br> <br> <br> Siji P George wrote: <blockquote cite="mid:524...@ma..." type="cite"> <pre wrap="">Hi, can you also suggest a way to describe, scaling with respect to shell thickness. when you say that the parameter is not specified, do you mean that, will the xml look like the following: <bio:mechanism name="CaPool" type="Ion Concentration"> <bio:group>soma</bio:group> </bio:mechanism> can you point to an example where 'fixed_pool_info' is used? </pre> <blockquote type="cite"> <pre wrap="">Hi, I'd suggest in this case to use parameters named according to what they represent, rather than basing the naming on usage in GENESIS, so: <bio:mechanism name="CaPool" type="Ion Concentration"> <bio:parameter name="specific_current_scaling_factor" value="17.402e12"> <bio:group>soma</bio:group> </bio:parameter> </bio:mechanism> <bio:mechanism name="CaPool" type="Ion Concentration"> <bio:parameter name="fixed_current_scaling_factor" value="8.96e-3"> <bio:group>lat</bio:group> </bio:parameter> </bio:mechanism> Where the first case assumes the form of the equation for conc is: d[Ca]/dt = volume * specific_current_scaling_factor * Ik - ([Ca] - resting_conc)/decay_constant and the second case represents: d[Ca]/dt = fixed_current_scaling_factor * Ik - ([Ca] - resting_conc)/decay_constant with Ik being the total Ca current into the compartment, and resting_conc & decay_constant set in the ChannelML for the CaPool. Again, if neither of these parameters are specified in the <bio:mechanism> element, the simulator can assume all the correct parameters for the current scaling are set in the ChannelML (i.e. in pool_volume_info or fixed_pool_info) How does that sound? Padraig Siji P George wrote: </pre> <blockquote type="cite"> <pre wrap="">Hi Padraig, Thanks for the comments. i need to clarify one thing. In CaPool, scaling for one group is 'off' and other is 'volume', then how to represent using 'pool_volume_info' or 'fixed_pool_info'? for eg: <bio:mechanism name="CaPool" type="Ion Concentration"> <bio:parameter name="B" value="17.402e12" scaling="off"> <bio:group>soma</bio:group> </bio:parameter> </bio:mechanism> <bio:mechanism name="CaPool" type="Ion Concentration"> <bio:parameter name="B" value="8.96e-3" scaling="volume"> <bio:group>lat</bio:group> </bio:parameter> </bio:mechanism> </pre> <blockquote type="cite"> <pre wrap="">Hi Siji, Thanks for these points. They're all issues that have come up before as possible shortcomings of NeuroML version 1.x, and need to be dealt with properly in v2.0. The main question will be how much effort to put into them getting v1 to support these features, and whether it would be better to wait to v2.0. See below for specific comments... Siji P George wrote: </pre> <blockquote type="cite"> <pre wrap="">Dear all, We have been implementing NeuroML reading functionality inside MOOSE using a little libNeuroML implementation that we are coding alongside. We are using NeuroML models available on the NeuroML website, and also files generated by neuroConstruct. Finally we have been also trying to encode (by hand) a slightly modified version of Traub's early CA1 model, and reading it in. We ran into some difficulties with the grammar of these NeuroML files. For now, we have made some changes in the grammar of these files so that we could continue with the implementation/testing. These changes were usually such that our needs were met, and we did not try very much to come up with the most general/clean solution. Perhaps these problems have already been addressed in the latest version of NeuroML 2, but in absence of concrete examples from this specification, we have been trying to implement the old version. Below we list these difficulties, and our attempts at fixing them: 1. Calcium Pool in MorphML file: The existing MorphML files treated Calcium pools just like ion channels, and just by looking at a MorphML file, it was impossible to ascertain whether a given mechanism is a channel or a Ca-pool. </pre> </blockquote> <pre wrap="">True. This is probably due to the Ca pool being added in NEURON (insert statement)/GENESIS (read cellfiles) in a similar way to how channels are added. </pre> <blockquote type="cite"> <pre wrap="">The alternative was to load the corresponding ChannelML file which was making the implementation unnecessarily complicated. Further, in GENESIS style, these MorphML files specified the Ca-pools as having a "gmax" attribute, which stood in for the Ca-pools' "B" value. Example of existing MorphML: Changes we made: The attribute - type - is given as 'Ion Pool' instead of 'Channel Mechanism' </pre> </blockquote> <pre wrap="">In the Schema file for ChannelML, "Ion Concentration" is a valid type for mechanism. </pre> <blockquote type="cite"> <pre wrap=""> The parameter name is B instead of gmax and another attribute 'scaling' is allowed which can have any one of the following values. "off" : The B value will not be scaled. "shell" : B will be scaled by the volume of a shell with a given thickness. "volume" : B will be scale by the volume of the corresponding segment (i.e., compartment). eg: <bio:mechanism name="CaPool" type="Ion Pool"> <bio:parameter name="B" value="17.402e12" scaling="off"> <bio:group>soma_group</bio:group> </bio:parameter> </bio:mechanism> </pre> </blockquote> <pre wrap="">I agree that gmax is a bad name for this parameter. I think however that this "B" value should be calculated from the info in the CaPool description itself, i.e. if a thickness is specified there it's a shell or if the fixed_pool_info element is used it's a fixed value, etc. So the preferred form you should output is: <bio:mechanism name="CaPool" type="Ion Concentration"/> and an appropriate ChannelML file with <ion_concentration> should be created with a pool_volume_info or a fixed_pool_info element as appropriate. If you have a cell where the B parameter of the Ca pool varies over the cell, then maybe you should include the group specific value above. The meaning of "B" then should be clear from the form of the mechanism ChannelML file. I'll update the exported NeuroML from neuroConstruct to export info on calcium pools in this way. An update for NeuroML version 2 will have to treat this in a better, more generic way. One possible way is that interactions of subcellular species in a region of the cell will be specified by an SBML file. Extra info in the cell description will have to say how the species might diffuse along the cell but everywhere this SBML pathway is present, all of its species are found. </pre> <blockquote type="cite"> <pre wrap="">2. Rate constants for Hodgkin-Huxley channels have so far been specified either by mentioning the function type (one of "sigmoid", "exponential" and "exponential_linear"), or by specifying the math expression in a string (e.g.: expr="ca_conc < 0.00025 ? (ca_conc / 0.00025) : 1"). In implementing the Traub's CA1 cell, we came across some rate-constant curves which could not be specified using any of the 3 stereotyped functions. While most of these curves could be approximated by fitting one of these 3 functions, one of the important cases (a roughly bell-shaped curved) could not be specified using this either. Writing a general math expression parser is not straightforward, and we will like to avoid this route at least for now. We strongly think that one should be able to specify rates by giving an explicit table. This is not in keeping with the internal lookup-table style representations of MOOSE and GENESIS, but rather simply because this method is enormously simple and completely general at the same time. Perhaps even more importantly, original data from ion-channel electrophysiology is usually in the form of tabulated rates, and it seems inappropriate to demand that mathematical abstractions, but not the original data may be included. Please refer to the attached file (K_AHPConductance.xml) to see how we tried to include a table in a channel definition. We considered two options for specifying a table: - A list of ( x, y ) pairs. - First specify a grid along X-axis with uniformly spaced points, followed by a list of corresponding "y" values. This is done simply by specifying the function's domain ("xmin" and "xmax"), while the number of points in the grid is implicitly specified by the number of table entries. The first option seems cleaner and more general. For now, however, we have picked the second option simply because MOOSE uses a uniform grid internally. </pre> </blockquote> <pre wrap="">I agree that this might be useful. I've added a v1.8.2 version of the specifications in the NeuroML SVN repository which includes such as example (voltage dependence only so far), along with an initial mapping to a NEURON mod file. I'll try adding another mapping to a GENESIS.g file too (or if anyone else is happy to edit the XSL file, be my guest!). Your format seems fine for specifying these tables. </pre> <blockquote type="cite"> <pre wrap="">3. In the existing MorphML, channels can be plugged into groups of cables, where each cable is a container for adjacent segments. This means that all the segments in a given cable must have the same channel composition. In the extreme case where every segment in a cell has a unique channel composition, one must create one cable for every segment. A good solution is perhaps to leave out cables completely, and allow one to group together segments, where a segment may belong to more than one group. For now, however, we have opted for the most straightforward method: allowing channels to be plugged into individual segments directly. eg: <bio:mechanism name="CaConductance" type="Channel Mechanism"> <bio:parameter name="gmax" value="50.0"> <bio:seg>2</bio:seg> <bio:seg>3</bio:seg> <bio:seg>7</bio:seg> </bio:parameter> </bio:mechanism> </pre> </blockquote> <pre wrap="">The full segment/cable/cable group structure will be overhauled in version 2, and so unfortunately this issue will have to wait until then (cables will be removed and there will only be segmentGroups). We can add the ability to put channels directly onto segments then too. For now it may be best just to automatically create a "cable" for each compartment and groups for each cable and add the conductances like that. If there are a number of individual compartments each with different conductances, then it's likely it's a relatively small cell and the overhead of creating groups, etc. shouldn't be too high For larger cells it may be possible to create an algorithm to group together comps with the same value of cond density and make unique groups for those, this is what NEURON's Model View does. Unfortunately GENESIS/MOOSE doesn't store any grouping information from the readcell import (correct?) and so that can't be used. </pre> <blockquote type="cite"> <pre wrap="">4. We were looking for ChannelML examples with Ca-dependent channels. All examples we found had exactly one gate, where the Ca-dependence was encoded as an attribute for the entire channel, rather than for the gate. Since we were writing Ca-dependent channels with multiple gates, we tried to include an attribute in each of the gates specifying what it depends upon. For now we have kept it crude but simple by adding an attribute called "x_variable" to gates. The value of this variable may be simply either "concentration" or "voltage". Of course, this needs to be improved by specifying which Ca-pool entity needs to be referred, but we have kept that implicit for now. The motivation behind the attribute name "x_variable" is that some gates depend on both membrane potential as well as ion concentration, and this may perhaps be specified using "x_variable" and "y_variable" attributes. eg: Please find the attached K_CConductance.xml </pre> </blockquote> <pre wrap="">I have some other examples of voltage and concentration dependent channels, unfortunately some are in pre NML v1.7.3 format. I'll try to add these to the Example set for v1.8.2. I suspect the example you sent would be supported if the rates were expressed in equations so hopefully the extension above for supporting tabulated channels can be used for concentration dependence also. Can you send me on the original GENESIS/MOOSE files for these channels? Thanks, Padraig </pre> <blockquote type="cite"> <pre wrap="">thanks & regards, Siji ------------------------------------------------------------------------ ------------------------------------------------------------------------------ This SF.Net email is sponsored by the Verizon Developer Community Take advantage of Verizon's best-in-class app development support A streamlined, 14 day to market process makes app distribution fast and easy Join now and get one step closer to millions of Verizon customers <a class="moz-txt-link-freetext" href="http://p.sf.net/sfu/verizon-dev2dev">http://p.sf.net/sfu/verizon-dev2dev</a> ------------------------------------------------------------------------ _______________________________________________ Neuroml-channels mailing list <a class="moz-txt-link-abbreviated" href="mailto:Neu...@li...">Neu...@li...</a> <a class="moz-txt-link-freetext" href="https://lists.sourceforge.net/lists/listinfo/neuroml-channels">https://lists.sourceforge.net/lists/listinfo/neuroml-channels</a> </pre> </blockquote> </blockquote> <pre wrap="">thanks & regards, Siji </pre> </blockquote> <pre wrap=""> </pre> </blockquote> <pre wrap=""><!----> thanks & regards, Siji </pre> </blockquote> <br> <br> <pre class="moz-signature" cols="72">-- ----------------------------------------------------- Padraig Gleeson Room 321, Anatomy Building Department of Neuroscience, Physiology & Pharmacology University College London Gower Street London WC1E 6BT United Kingdom +44 207 679 3214 <a class="moz-txt-link-abbreviated" href="mailto:p.g...@uc...">p.g...@uc...</a> -----------------------------------------------------</pre> </body> </html> |
From: Siji P G. <si...@nc...> - 2010-01-27 05:40:04
|
Hi, can you also suggest a way to describe, scaling with respect to shell thickness. when you say that the parameter is not specified, do you mean that, will the xml look like the following: <bio:mechanism name="CaPool" type="Ion Concentration"> <bio:group>soma</bio:group> </bio:mechanism> can you point to an example where 'fixed_pool_info' is used? > Hi, > > I'd suggest in this case to use parameters named according to what they > represent, rather than basing the naming on usage in GENESIS, so: > > <bio:mechanism name="CaPool" type="Ion Concentration"> > <bio:parameter name="specific_current_scaling_factor" > value="17.402e12"> > <bio:group>soma</bio:group> > </bio:parameter> > </bio:mechanism> > > <bio:mechanism name="CaPool" type="Ion Concentration"> > <bio:parameter name="fixed_current_scaling_factor" value="8.96e-3"> > <bio:group>lat</bio:group> > </bio:parameter> > </bio:mechanism> > > Where the first case assumes the form of the equation for conc is: > > d[Ca]/dt = volume * specific_current_scaling_factor * Ik - ([Ca] - > resting_conc)/decay_constant > > and the second case represents: > > d[Ca]/dt = fixed_current_scaling_factor * Ik - ([Ca] - > resting_conc)/decay_constant > > with Ik being the total Ca current into the compartment, and > resting_conc & decay_constant set in the ChannelML for the CaPool. > > Again, if neither of these parameters are specified in the > <bio:mechanism> element, the simulator can assume all the correct > parameters for the current scaling are set in the ChannelML (i.e. in > pool_volume_info or fixed_pool_info) > > How does that sound? > Padraig > > > > > Siji P George wrote: >> Hi Padraig, >> >> Thanks for the comments. >> >> i need to clarify one thing. >> >> In CaPool, scaling for one group is 'off' and other is 'volume', then >> how >> to represent using 'pool_volume_info' or 'fixed_pool_info'? >> for eg: >> >> <bio:mechanism name="CaPool" type="Ion Concentration"> >> <bio:parameter name="B" value="17.402e12" scaling="off"> >> <bio:group>soma</bio:group> >> </bio:parameter> >> </bio:mechanism> >> >> <bio:mechanism name="CaPool" type="Ion Concentration"> >> <bio:parameter name="B" value="8.96e-3" scaling="volume"> >> <bio:group>lat</bio:group> >> </bio:parameter> >> </bio:mechanism> >> >> >> >> >>> Hi Siji, >>> >>> Thanks for these points. They're all issues that have come up before as >>> possible shortcomings of NeuroML version 1.x, and need to be dealt with >>> properly in v2.0. The main question will be how much effort to put into >>> them getting v1 to support these features, and whether it would be >>> better to wait to v2.0. >>> >>> See below for specific comments... >>> >>> >>> Siji P George wrote: >>> >>>> Dear all, >>>> >>>> We have been implementing NeuroML reading functionality inside MOOSE >>>> using >>>> a little libNeuroML implementation that we are coding alongside. We >>>> are >>>> using NeuroML models available on the NeuroML website, and also files >>>> generated by neuroConstruct. Finally we have been also trying to >>>> encode >>>> (by hand) a slightly modified version of Traub's early CA1 model, and >>>> reading it in. >>>> >>>> We ran into some difficulties with the grammar of these NeuroML files. >>>> For >>>> now, we have made some changes in the grammar of these files so that >>>> we >>>> could continue with the implementation/testing. These changes were >>>> usually >>>> such that our needs were met, and we did not try very much to come up >>>> with >>>> the most general/clean solution. Perhaps these problems have already >>>> been >>>> addressed in the latest version of NeuroML 2, but in absence of >>>> concrete >>>> examples from this specification, we have been trying to implement the >>>> old >>>> version. Below we list these difficulties, and our attempts at fixing >>>> them: >>>> >>>> 1. Calcium Pool in MorphML file: The existing MorphML files treated >>>> Calcium pools just like ion channels, and just by looking at a MorphML >>>> file, it was impossible to ascertain whether a given mechanism is a >>>> channel or a Ca-pool. >>>> >>> True. This is probably due to the Ca pool being added in NEURON (insert >>> statement)/GENESIS (read cellfiles) in a similar way to how channels >>> are >>> added. >>> >>>> The alternative was to load the corresponding >>>> ChannelML file which was making the implementation unnecessarily >>>> complicated. Further, in GENESIS style, these MorphML files specified >>>> the >>>> Ca-pools as having a "gmax" attribute, which stood in for the >>>> Ca-pools' >>>> "B" value. >>>> >>>> Example of existing MorphML: >>>> >>>> >>>> Changes we made: >>>> The attribute - type - is given as 'Ion Pool' instead of 'Channel >>>> Mechanism' >>>> >>>> >>> In the Schema file for ChannelML, "Ion Concentration" is a valid type >>> for mechanism. >>> >>>> The parameter name is B instead of gmax and another attribute >>>> 'scaling' >>>> is allowed which can have any one of the following values. >>>> "off" : The B value will not be scaled. >>>> "shell" : B will be scaled by the volume of a shell with a given >>>> thickness. >>>> "volume" : B will be scale by the volume of the corresponding >>>> segment >>>> (i.e., compartment). >>>> >>>> eg: >>>> <bio:mechanism name="CaPool" type="Ion Pool"> >>>> <bio:parameter name="B" value="17.402e12" scaling="off"> >>>> <bio:group>soma_group</bio:group> >>>> </bio:parameter> >>>> </bio:mechanism> >>>> >>>> >>> I agree that gmax is a bad name for this parameter. I think however >>> that >>> this "B" value should be calculated from the info in the CaPool >>> description itself, i.e. if a thickness is specified there it's a shell >>> or if the fixed_pool_info element is used it's a fixed value, etc. So >>> the preferred form you should output is: >>> >>> <bio:mechanism name="CaPool" type="Ion Concentration"/> >>> >>> and an appropriate ChannelML file with <ion_concentration> should be >>> created with a pool_volume_info or a fixed_pool_info element as >>> appropriate. If you have a cell where the B parameter of the Ca pool >>> varies over the cell, then maybe you should include the group specific >>> value above. The meaning of "B" then should be clear from the form of >>> the mechanism ChannelML file. >>> >>> I'll update the exported NeuroML from neuroConstruct to export info on >>> calcium pools in this way. >>> >>> An update for NeuroML version 2 will have to treat this in a better, >>> more generic way. One possible way is that interactions of subcellular >>> species in a region of the cell will be specified by an SBML file. >>> Extra >>> info in the cell description will have to say how the species might >>> diffuse along the cell but everywhere this SBML pathway is present, all >>> of its species are found. >>> >>> >>> >>> >>>> 2. Rate constants for Hodgkin-Huxley channels have so far been >>>> specified >>>> either by mentioning the function type (one of "sigmoid", >>>> "exponential" >>>> and "exponential_linear"), or by specifying the math expression in a >>>> string (e.g.: expr="ca_conc < 0.00025 ? (ca_conc / 0.00025) : 1"). In >>>> implementing the Traub's CA1 cell, we came across some rate-constant >>>> curves which could not be specified using any of the 3 stereotyped >>>> functions. While most of these curves could be approximated by fitting >>>> one >>>> of these 3 functions, one of the important cases (a roughly >>>> bell-shaped >>>> curved) could not be specified using this either. Writing a general >>>> math >>>> expression parser is not straightforward, and we will like to avoid >>>> this >>>> route at least for now. >>>> >>>> We strongly think that one should be able to specify rates by giving >>>> an >>>> explicit table. This is not in keeping with the internal lookup-table >>>> style representations of MOOSE and GENESIS, but rather simply because >>>> this >>>> method is enormously simple and completely general at the same time. >>>> Perhaps even more importantly, original data from ion-channel >>>> electrophysiology is usually in the form of tabulated rates, and it >>>> seems >>>> inappropriate to demand that mathematical abstractions, but not the >>>> original data may be included. >>>> >>>> Please refer to the attached file (K_AHPConductance.xml) to see how we >>>> tried to include a table in a channel definition. We considered two >>>> options for specifying a table: >>>> >>>> - A list of ( x, y ) pairs. >>>> - First specify a grid along X-axis with uniformly spaced points, >>>> followed by a list of corresponding "y" values. This is done simply by >>>> specifying the function's domain ("xmin" and "xmax"), while the number >>>> of points in the grid is implicitly specified by the number of table >>>> entries. >>>> >>>> The first option seems cleaner and more general. For now, however, we >>>> have >>>> picked the second option simply because MOOSE uses a uniform grid >>>> internally. >>>> >>>> >>> I agree that this might be useful. I've added a v1.8.2 version of the >>> specifications in the NeuroML SVN repository which includes such as >>> example (voltage dependence only so far), along with an initial mapping >>> to a NEURON mod file. I'll try adding another mapping to a GENESIS.g >>> file too (or if anyone else is happy to edit the XSL file, be my >>> guest!). Your format seems fine for specifying these tables. >>> >>>> 3. In the existing MorphML, channels can be plugged into groups of >>>> cables, >>>> where each cable is a container for adjacent segments. This means that >>>> all >>>> the segments in a given cable must have the same channel composition. >>>> In >>>> the extreme case where every segment in a cell has a unique channel >>>> composition, one must create one cable for every segment. A good >>>> solution >>>> is perhaps to leave out cables completely, and allow one to group >>>> together >>>> segments, where a segment may belong to more than one group. For now, >>>> however, we have opted for the most straightforward method: allowing >>>> channels to be plugged into individual segments directly. >>>> >>>> eg: >>>> <bio:mechanism name="CaConductance" type="Channel Mechanism"> >>>> <bio:parameter name="gmax" value="50.0"> >>>> <bio:seg>2</bio:seg> >>>> <bio:seg>3</bio:seg> >>>> <bio:seg>7</bio:seg> >>>> </bio:parameter> >>>> </bio:mechanism> >>>> >>>> >>> The full segment/cable/cable group structure will be overhauled in >>> version 2, and so unfortunately this issue will have to wait until then >>> (cables will be removed and there will only be segmentGroups). We can >>> add the ability to put channels directly onto segments then too. >>> >>> For now it may be best just to automatically create a "cable" for each >>> compartment and groups for each cable and add the conductances like >>> that. If there are a number of individual compartments each with >>> different conductances, then it's likely it's a relatively small cell >>> and the overhead of creating groups, etc. shouldn't be too high >>> >>> For larger cells it may be possible to create an algorithm to group >>> together comps with the same value of cond density and make unique >>> groups for those, this is what NEURON's Model View does. Unfortunately >>> GENESIS/MOOSE doesn't store any grouping information from the readcell >>> import (correct?) and so that can't be used. >>> >>> >>>> 4. We were looking for ChannelML examples with Ca-dependent channels. >>>> All >>>> examples we found had exactly one gate, where the Ca-dependence was >>>> encoded as an attribute for the entire channel, rather than for the >>>> gate. >>>> Since we were writing Ca-dependent channels with multiple gates, we >>>> tried >>>> to include an attribute in each of the gates specifying what it >>>> depends >>>> upon. >>>> >>>> For now we have kept it crude but simple by adding an attribute called >>>> "x_variable" to gates. The value of this variable may be simply either >>>> "concentration" or "voltage". Of course, this needs to be improved by >>>> specifying which Ca-pool entity needs to be referred, but we have kept >>>> that implicit for now. The motivation behind the attribute name >>>> "x_variable" is that some gates depend on both membrane potential as >>>> well >>>> as ion concentration, and this may perhaps be specified using >>>> "x_variable" >>>> and "y_variable" attributes. >>>> >>>> eg: Please find the attached K_CConductance.xml >>>> >>>> >>> I have some other examples of voltage and concentration dependent >>> channels, unfortunately some are in pre NML v1.7.3 format. I'll try to >>> add these to the Example set for v1.8.2. I suspect the example you sent >>> would be supported if the rates were expressed in equations so >>> hopefully >>> the extension above for supporting tabulated channels can be used for >>> concentration dependence also. Can you send me on the original >>> GENESIS/MOOSE files for these channels? >>> >>> Thanks, >>> Padraig >>> >>> >>>> thanks & regards, >>>> Siji >>>> ------------------------------------------------------------------------ >>>> >>>> ------------------------------------------------------------------------------ >>>> This SF.Net email is sponsored by the Verizon Developer Community >>>> Take advantage of Verizon's best-in-class app development support >>>> A streamlined, 14 day to market process makes app distribution fast >>>> and >>>> easy >>>> Join now and get one step closer to millions of Verizon customers >>>> http://p.sf.net/sfu/verizon-dev2dev >>>> ------------------------------------------------------------------------ >>>> >>>> _______________________________________________ >>>> Neuroml-channels mailing list >>>> Neu...@li... >>>> https://lists.sourceforge.net/lists/listinfo/neuroml-channels >>>> >>> >> >> >> thanks & regards, >> Siji >> >> > > thanks & regards, Siji |
From: Siji P G. <si...@nc...> - 2010-01-22 06:09:05
|
Hi Padraig, This sounds good . thank you for your suggestions. Siji > Hi, > > I'd suggest in this case to use parameters named according to what they > represent, rather than basing the naming on usage in GENESIS, so: > > <bio:mechanism name="CaPool" type="Ion Concentration"> > <bio:parameter name="specific_current_scaling_factor" > value="17.402e12"> > <bio:group>soma</bio:group> > </bio:parameter> > </bio:mechanism> > > <bio:mechanism name="CaPool" type="Ion Concentration"> > <bio:parameter name="fixed_current_scaling_factor" value="8.96e-3"> > <bio:group>lat</bio:group> > </bio:parameter> > </bio:mechanism> > > Where the first case assumes the form of the equation for conc is: > > d[Ca]/dt = volume * specific_current_scaling_factor * Ik - ([Ca] - > resting_conc)/decay_constant > > and the second case represents: > > d[Ca]/dt = fixed_current_scaling_factor * Ik - ([Ca] - > resting_conc)/decay_constant > > with Ik being the total Ca current into the compartment, and > resting_conc & decay_constant set in the ChannelML for the CaPool. > > Again, if neither of these parameters are specified in the > <bio:mechanism> element, the simulator can assume all the correct > parameters for the current scaling are set in the ChannelML (i.e. in > pool_volume_info or fixed_pool_info) > > How does that sound? > Padraig > > > > > Siji P George wrote: >> Hi Padraig, >> >> Thanks for the comments. >> >> i need to clarify one thing. >> >> In CaPool, scaling for one group is 'off' and other is 'volume', then >> how >> to represent using 'pool_volume_info' or 'fixed_pool_info'? >> for eg: >> >> <bio:mechanism name="CaPool" type="Ion Concentration"> >> <bio:parameter name="B" value="17.402e12" scaling="off"> >> <bio:group>soma</bio:group> >> </bio:parameter> >> </bio:mechanism> >> >> <bio:mechanism name="CaPool" type="Ion Concentration"> >> <bio:parameter name="B" value="8.96e-3" scaling="volume"> >> <bio:group>lat</bio:group> >> </bio:parameter> >> </bio:mechanism> >> >> >> >> >>> Hi Siji, >>> >>> Thanks for these points. They're all issues that have come up before as >>> possible shortcomings of NeuroML version 1.x, and need to be dealt with >>> properly in v2.0. The main question will be how much effort to put into >>> them getting v1 to support these features, and whether it would be >>> better to wait to v2.0. >>> >>> See below for specific comments... >>> >>> >>> Siji P George wrote: >>> >>>> Dear all, >>>> >>>> We have been implementing NeuroML reading functionality inside MOOSE >>>> using >>>> a little libNeuroML implementation that we are coding alongside. We >>>> are >>>> using NeuroML models available on the NeuroML website, and also files >>>> generated by neuroConstruct. Finally we have been also trying to >>>> encode >>>> (by hand) a slightly modified version of Traub's early CA1 model, and >>>> reading it in. >>>> >>>> We ran into some difficulties with the grammar of these NeuroML files. >>>> For >>>> now, we have made some changes in the grammar of these files so that >>>> we >>>> could continue with the implementation/testing. These changes were >>>> usually >>>> such that our needs were met, and we did not try very much to come up >>>> with >>>> the most general/clean solution. Perhaps these problems have already >>>> been >>>> addressed in the latest version of NeuroML 2, but in absence of >>>> concrete >>>> examples from this specification, we have been trying to implement the >>>> old >>>> version. Below we list these difficulties, and our attempts at fixing >>>> them: >>>> >>>> 1. Calcium Pool in MorphML file: The existing MorphML files treated >>>> Calcium pools just like ion channels, and just by looking at a MorphML >>>> file, it was impossible to ascertain whether a given mechanism is a >>>> channel or a Ca-pool. >>>> >>> True. This is probably due to the Ca pool being added in NEURON (insert >>> statement)/GENESIS (read cellfiles) in a similar way to how channels >>> are >>> added. >>> >>>> The alternative was to load the corresponding >>>> ChannelML file which was making the implementation unnecessarily >>>> complicated. Further, in GENESIS style, these MorphML files specified >>>> the >>>> Ca-pools as having a "gmax" attribute, which stood in for the >>>> Ca-pools' >>>> "B" value. >>>> >>>> Example of existing MorphML: >>>> >>>> >>>> Changes we made: >>>> The attribute - type - is given as 'Ion Pool' instead of 'Channel >>>> Mechanism' >>>> >>>> >>> In the Schema file for ChannelML, "Ion Concentration" is a valid type >>> for mechanism. >>> >>>> The parameter name is B instead of gmax and another attribute >>>> 'scaling' >>>> is allowed which can have any one of the following values. >>>> "off" : The B value will not be scaled. >>>> "shell" : B will be scaled by the volume of a shell with a given >>>> thickness. >>>> "volume" : B will be scale by the volume of the corresponding >>>> segment >>>> (i.e., compartment). >>>> >>>> eg: >>>> <bio:mechanism name="CaPool" type="Ion Pool"> >>>> <bio:parameter name="B" value="17.402e12" scaling="off"> >>>> <bio:group>soma_group</bio:group> >>>> </bio:parameter> >>>> </bio:mechanism> >>>> >>>> >>> I agree that gmax is a bad name for this parameter. I think however >>> that >>> this "B" value should be calculated from the info in the CaPool >>> description itself, i.e. if a thickness is specified there it's a shell >>> or if the fixed_pool_info element is used it's a fixed value, etc. So >>> the preferred form you should output is: >>> >>> <bio:mechanism name="CaPool" type="Ion Concentration"/> >>> >>> and an appropriate ChannelML file with <ion_concentration> should be >>> created with a pool_volume_info or a fixed_pool_info element as >>> appropriate. If you have a cell where the B parameter of the Ca pool >>> varies over the cell, then maybe you should include the group specific >>> value above. The meaning of "B" then should be clear from the form of >>> the mechanism ChannelML file. >>> >>> I'll update the exported NeuroML from neuroConstruct to export info on >>> calcium pools in this way. >>> >>> An update for NeuroML version 2 will have to treat this in a better, >>> more generic way. One possible way is that interactions of subcellular >>> species in a region of the cell will be specified by an SBML file. >>> Extra >>> info in the cell description will have to say how the species might >>> diffuse along the cell but everywhere this SBML pathway is present, all >>> of its species are found. >>> >>> >>> >>> >>>> 2. Rate constants for Hodgkin-Huxley channels have so far been >>>> specified >>>> either by mentioning the function type (one of "sigmoid", >>>> "exponential" >>>> and "exponential_linear"), or by specifying the math expression in a >>>> string (e.g.: expr="ca_conc < 0.00025 ? (ca_conc / 0.00025) : 1"). In >>>> implementing the Traub's CA1 cell, we came across some rate-constant >>>> curves which could not be specified using any of the 3 stereotyped >>>> functions. While most of these curves could be approximated by fitting >>>> one >>>> of these 3 functions, one of the important cases (a roughly >>>> bell-shaped >>>> curved) could not be specified using this either. Writing a general >>>> math >>>> expression parser is not straightforward, and we will like to avoid >>>> this >>>> route at least for now. >>>> >>>> We strongly think that one should be able to specify rates by giving >>>> an >>>> explicit table. This is not in keeping with the internal lookup-table >>>> style representations of MOOSE and GENESIS, but rather simply because >>>> this >>>> method is enormously simple and completely general at the same time. >>>> Perhaps even more importantly, original data from ion-channel >>>> electrophysiology is usually in the form of tabulated rates, and it >>>> seems >>>> inappropriate to demand that mathematical abstractions, but not the >>>> original data may be included. >>>> >>>> Please refer to the attached file (K_AHPConductance.xml) to see how we >>>> tried to include a table in a channel definition. We considered two >>>> options for specifying a table: >>>> >>>> - A list of ( x, y ) pairs. >>>> - First specify a grid along X-axis with uniformly spaced points, >>>> followed by a list of corresponding "y" values. This is done simply by >>>> specifying the function's domain ("xmin" and "xmax"), while the number >>>> of points in the grid is implicitly specified by the number of table >>>> entries. >>>> >>>> The first option seems cleaner and more general. For now, however, we >>>> have >>>> picked the second option simply because MOOSE uses a uniform grid >>>> internally. >>>> >>>> >>> I agree that this might be useful. I've added a v1.8.2 version of the >>> specifications in the NeuroML SVN repository which includes such as >>> example (voltage dependence only so far), along with an initial mapping >>> to a NEURON mod file. I'll try adding another mapping to a GENESIS.g >>> file too (or if anyone else is happy to edit the XSL file, be my >>> guest!). Your format seems fine for specifying these tables. >>> >>>> 3. In the existing MorphML, channels can be plugged into groups of >>>> cables, >>>> where each cable is a container for adjacent segments. This means that >>>> all >>>> the segments in a given cable must have the same channel composition. >>>> In >>>> the extreme case where every segment in a cell has a unique channel >>>> composition, one must create one cable for every segment. A good >>>> solution >>>> is perhaps to leave out cables completely, and allow one to group >>>> together >>>> segments, where a segment may belong to more than one group. For now, >>>> however, we have opted for the most straightforward method: allowing >>>> channels to be plugged into individual segments directly. >>>> >>>> eg: >>>> <bio:mechanism name="CaConductance" type="Channel Mechanism"> >>>> <bio:parameter name="gmax" value="50.0"> >>>> <bio:seg>2</bio:seg> >>>> <bio:seg>3</bio:seg> >>>> <bio:seg>7</bio:seg> >>>> </bio:parameter> >>>> </bio:mechanism> >>>> >>>> >>> The full segment/cable/cable group structure will be overhauled in >>> version 2, and so unfortunately this issue will have to wait until then >>> (cables will be removed and there will only be segmentGroups). We can >>> add the ability to put channels directly onto segments then too. >>> >>> For now it may be best just to automatically create a "cable" for each >>> compartment and groups for each cable and add the conductances like >>> that. If there are a number of individual compartments each with >>> different conductances, then it's likely it's a relatively small cell >>> and the overhead of creating groups, etc. shouldn't be too high >>> >>> For larger cells it may be possible to create an algorithm to group >>> together comps with the same value of cond density and make unique >>> groups for those, this is what NEURON's Model View does. Unfortunately >>> GENESIS/MOOSE doesn't store any grouping information from the readcell >>> import (correct?) and so that can't be used. >>> >>> >>>> 4. We were looking for ChannelML examples with Ca-dependent channels. >>>> All >>>> examples we found had exactly one gate, where the Ca-dependence was >>>> encoded as an attribute for the entire channel, rather than for the >>>> gate. >>>> Since we were writing Ca-dependent channels with multiple gates, we >>>> tried >>>> to include an attribute in each of the gates specifying what it >>>> depends >>>> upon. >>>> >>>> For now we have kept it crude but simple by adding an attribute called >>>> "x_variable" to gates. The value of this variable may be simply either >>>> "concentration" or "voltage". Of course, this needs to be improved by >>>> specifying which Ca-pool entity needs to be referred, but we have kept >>>> that implicit for now. The motivation behind the attribute name >>>> "x_variable" is that some gates depend on both membrane potential as >>>> well >>>> as ion concentration, and this may perhaps be specified using >>>> "x_variable" >>>> and "y_variable" attributes. >>>> >>>> eg: Please find the attached K_CConductance.xml >>>> >>>> >>> I have some other examples of voltage and concentration dependent >>> channels, unfortunately some are in pre NML v1.7.3 format. I'll try to >>> add these to the Example set for v1.8.2. I suspect the example you sent >>> would be supported if the rates were expressed in equations so >>> hopefully >>> the extension above for supporting tabulated channels can be used for >>> concentration dependence also. Can you send me on the original >>> GENESIS/MOOSE files for these channels? >>> >>> Thanks, >>> Padraig >>> >>> >>>> thanks & regards, >>>> Siji >>>> ------------------------------------------------------------------------ >>>> >>>> ------------------------------------------------------------------------------ >>>> This SF.Net email is sponsored by the Verizon Developer Community >>>> Take advantage of Verizon's best-in-class app development support >>>> A streamlined, 14 day to market process makes app distribution fast >>>> and >>>> easy >>>> Join now and get one step closer to millions of Verizon customers >>>> http://p.sf.net/sfu/verizon-dev2dev >>>> ------------------------------------------------------------------------ >>>> >>>> _______________________________________________ >>>> Neuroml-channels mailing list >>>> Neu...@li... >>>> https://lists.sourceforge.net/lists/listinfo/neuroml-channels >>>> >>> >> >> >> thanks & regards, >> Siji >> >> > > thanks & regards, Siji |
From: pgleeson <p.g...@uc...> - 2010-01-21 11:39:23
|
Hi, I'd suggest in this case to use parameters named according to what they represent, rather than basing the naming on usage in GENESIS, so: <bio:mechanism name="CaPool" type="Ion Concentration"> <bio:parameter name="specific_current_scaling_factor" value="17.402e12"> <bio:group>soma</bio:group> </bio:parameter> </bio:mechanism> <bio:mechanism name="CaPool" type="Ion Concentration"> <bio:parameter name="fixed_current_scaling_factor" value="8.96e-3"> <bio:group>lat</bio:group> </bio:parameter> </bio:mechanism> Where the first case assumes the form of the equation for conc is: d[Ca]/dt = volume * specific_current_scaling_factor * Ik - ([Ca] - resting_conc)/decay_constant and the second case represents: d[Ca]/dt = fixed_current_scaling_factor * Ik - ([Ca] - resting_conc)/decay_constant with Ik being the total Ca current into the compartment, and resting_conc & decay_constant set in the ChannelML for the CaPool. Again, if neither of these parameters are specified in the <bio:mechanism> element, the simulator can assume all the correct parameters for the current scaling are set in the ChannelML (i.e. in pool_volume_info or fixed_pool_info) How does that sound? Padraig Siji P George wrote: > Hi Padraig, > > Thanks for the comments. > > i need to clarify one thing. > > In CaPool, scaling for one group is 'off' and other is 'volume', then how > to represent using 'pool_volume_info' or 'fixed_pool_info'? > for eg: > > <bio:mechanism name="CaPool" type="Ion Concentration"> > <bio:parameter name="B" value="17.402e12" scaling="off"> > <bio:group>soma</bio:group> > </bio:parameter> > </bio:mechanism> > > <bio:mechanism name="CaPool" type="Ion Concentration"> > <bio:parameter name="B" value="8.96e-3" scaling="volume"> > <bio:group>lat</bio:group> > </bio:parameter> > </bio:mechanism> > > > > >> Hi Siji, >> >> Thanks for these points. They're all issues that have come up before as >> possible shortcomings of NeuroML version 1.x, and need to be dealt with >> properly in v2.0. The main question will be how much effort to put into >> them getting v1 to support these features, and whether it would be >> better to wait to v2.0. >> >> See below for specific comments... >> >> >> Siji P George wrote: >> >>> Dear all, >>> >>> We have been implementing NeuroML reading functionality inside MOOSE >>> using >>> a little libNeuroML implementation that we are coding alongside. We are >>> using NeuroML models available on the NeuroML website, and also files >>> generated by neuroConstruct. Finally we have been also trying to encode >>> (by hand) a slightly modified version of Traub's early CA1 model, and >>> reading it in. >>> >>> We ran into some difficulties with the grammar of these NeuroML files. >>> For >>> now, we have made some changes in the grammar of these files so that we >>> could continue with the implementation/testing. These changes were >>> usually >>> such that our needs were met, and we did not try very much to come up >>> with >>> the most general/clean solution. Perhaps these problems have already >>> been >>> addressed in the latest version of NeuroML 2, but in absence of concrete >>> examples from this specification, we have been trying to implement the >>> old >>> version. Below we list these difficulties, and our attempts at fixing >>> them: >>> >>> 1. Calcium Pool in MorphML file: The existing MorphML files treated >>> Calcium pools just like ion channels, and just by looking at a MorphML >>> file, it was impossible to ascertain whether a given mechanism is a >>> channel or a Ca-pool. >>> >> True. This is probably due to the Ca pool being added in NEURON (insert >> statement)/GENESIS (read cellfiles) in a similar way to how channels are >> added. >> >>> The alternative was to load the corresponding >>> ChannelML file which was making the implementation unnecessarily >>> complicated. Further, in GENESIS style, these MorphML files specified >>> the >>> Ca-pools as having a "gmax" attribute, which stood in for the Ca-pools' >>> "B" value. >>> >>> Example of existing MorphML: >>> >>> >>> Changes we made: >>> The attribute - type - is given as 'Ion Pool' instead of 'Channel >>> Mechanism' >>> >>> >> In the Schema file for ChannelML, "Ion Concentration" is a valid type >> for mechanism. >> >>> The parameter name is B instead of gmax and another attribute 'scaling' >>> is allowed which can have any one of the following values. >>> "off" : The B value will not be scaled. >>> "shell" : B will be scaled by the volume of a shell with a given >>> thickness. >>> "volume" : B will be scale by the volume of the corresponding segment >>> (i.e., compartment). >>> >>> eg: >>> <bio:mechanism name="CaPool" type="Ion Pool"> >>> <bio:parameter name="B" value="17.402e12" scaling="off"> >>> <bio:group>soma_group</bio:group> >>> </bio:parameter> >>> </bio:mechanism> >>> >>> >> I agree that gmax is a bad name for this parameter. I think however that >> this "B" value should be calculated from the info in the CaPool >> description itself, i.e. if a thickness is specified there it's a shell >> or if the fixed_pool_info element is used it's a fixed value, etc. So >> the preferred form you should output is: >> >> <bio:mechanism name="CaPool" type="Ion Concentration"/> >> >> and an appropriate ChannelML file with <ion_concentration> should be >> created with a pool_volume_info or a fixed_pool_info element as >> appropriate. If you have a cell where the B parameter of the Ca pool >> varies over the cell, then maybe you should include the group specific >> value above. The meaning of "B" then should be clear from the form of >> the mechanism ChannelML file. >> >> I'll update the exported NeuroML from neuroConstruct to export info on >> calcium pools in this way. >> >> An update for NeuroML version 2 will have to treat this in a better, >> more generic way. One possible way is that interactions of subcellular >> species in a region of the cell will be specified by an SBML file. Extra >> info in the cell description will have to say how the species might >> diffuse along the cell but everywhere this SBML pathway is present, all >> of its species are found. >> >> >> >> >>> 2. Rate constants for Hodgkin-Huxley channels have so far been specified >>> either by mentioning the function type (one of "sigmoid", "exponential" >>> and "exponential_linear"), or by specifying the math expression in a >>> string (e.g.: expr="ca_conc < 0.00025 ? (ca_conc / 0.00025) : 1"). In >>> implementing the Traub's CA1 cell, we came across some rate-constant >>> curves which could not be specified using any of the 3 stereotyped >>> functions. While most of these curves could be approximated by fitting >>> one >>> of these 3 functions, one of the important cases (a roughly bell-shaped >>> curved) could not be specified using this either. Writing a general math >>> expression parser is not straightforward, and we will like to avoid this >>> route at least for now. >>> >>> We strongly think that one should be able to specify rates by giving an >>> explicit table. This is not in keeping with the internal lookup-table >>> style representations of MOOSE and GENESIS, but rather simply because >>> this >>> method is enormously simple and completely general at the same time. >>> Perhaps even more importantly, original data from ion-channel >>> electrophysiology is usually in the form of tabulated rates, and it >>> seems >>> inappropriate to demand that mathematical abstractions, but not the >>> original data may be included. >>> >>> Please refer to the attached file (K_AHPConductance.xml) to see how we >>> tried to include a table in a channel definition. We considered two >>> options for specifying a table: >>> >>> - A list of ( x, y ) pairs. >>> - First specify a grid along X-axis with uniformly spaced points, >>> followed by a list of corresponding "y" values. This is done simply by >>> specifying the function's domain ("xmin" and "xmax"), while the number >>> of points in the grid is implicitly specified by the number of table >>> entries. >>> >>> The first option seems cleaner and more general. For now, however, we >>> have >>> picked the second option simply because MOOSE uses a uniform grid >>> internally. >>> >>> >> I agree that this might be useful. I've added a v1.8.2 version of the >> specifications in the NeuroML SVN repository which includes such as >> example (voltage dependence only so far), along with an initial mapping >> to a NEURON mod file. I'll try adding another mapping to a GENESIS.g >> file too (or if anyone else is happy to edit the XSL file, be my >> guest!). Your format seems fine for specifying these tables. >> >>> 3. In the existing MorphML, channels can be plugged into groups of >>> cables, >>> where each cable is a container for adjacent segments. This means that >>> all >>> the segments in a given cable must have the same channel composition. In >>> the extreme case where every segment in a cell has a unique channel >>> composition, one must create one cable for every segment. A good >>> solution >>> is perhaps to leave out cables completely, and allow one to group >>> together >>> segments, where a segment may belong to more than one group. For now, >>> however, we have opted for the most straightforward method: allowing >>> channels to be plugged into individual segments directly. >>> >>> eg: >>> <bio:mechanism name="CaConductance" type="Channel Mechanism"> >>> <bio:parameter name="gmax" value="50.0"> >>> <bio:seg>2</bio:seg> >>> <bio:seg>3</bio:seg> >>> <bio:seg>7</bio:seg> >>> </bio:parameter> >>> </bio:mechanism> >>> >>> >> The full segment/cable/cable group structure will be overhauled in >> version 2, and so unfortunately this issue will have to wait until then >> (cables will be removed and there will only be segmentGroups). We can >> add the ability to put channels directly onto segments then too. >> >> For now it may be best just to automatically create a "cable" for each >> compartment and groups for each cable and add the conductances like >> that. If there are a number of individual compartments each with >> different conductances, then it's likely it's a relatively small cell >> and the overhead of creating groups, etc. shouldn't be too high >> >> For larger cells it may be possible to create an algorithm to group >> together comps with the same value of cond density and make unique >> groups for those, this is what NEURON's Model View does. Unfortunately >> GENESIS/MOOSE doesn't store any grouping information from the readcell >> import (correct?) and so that can't be used. >> >> >>> 4. We were looking for ChannelML examples with Ca-dependent channels. >>> All >>> examples we found had exactly one gate, where the Ca-dependence was >>> encoded as an attribute for the entire channel, rather than for the >>> gate. >>> Since we were writing Ca-dependent channels with multiple gates, we >>> tried >>> to include an attribute in each of the gates specifying what it depends >>> upon. >>> >>> For now we have kept it crude but simple by adding an attribute called >>> "x_variable" to gates. The value of this variable may be simply either >>> "concentration" or "voltage". Of course, this needs to be improved by >>> specifying which Ca-pool entity needs to be referred, but we have kept >>> that implicit for now. The motivation behind the attribute name >>> "x_variable" is that some gates depend on both membrane potential as >>> well >>> as ion concentration, and this may perhaps be specified using >>> "x_variable" >>> and "y_variable" attributes. >>> >>> eg: Please find the attached K_CConductance.xml >>> >>> >> I have some other examples of voltage and concentration dependent >> channels, unfortunately some are in pre NML v1.7.3 format. I'll try to >> add these to the Example set for v1.8.2. I suspect the example you sent >> would be supported if the rates were expressed in equations so hopefully >> the extension above for supporting tabulated channels can be used for >> concentration dependence also. Can you send me on the original >> GENESIS/MOOSE files for these channels? >> >> Thanks, >> Padraig >> >> >>> thanks & regards, >>> Siji >>> ------------------------------------------------------------------------ >>> >>> ------------------------------------------------------------------------------ >>> This SF.Net email is sponsored by the Verizon Developer Community >>> Take advantage of Verizon's best-in-class app development support >>> A streamlined, 14 day to market process makes app distribution fast and >>> easy >>> Join now and get one step closer to millions of Verizon customers >>> http://p.sf.net/sfu/verizon-dev2dev >>> ------------------------------------------------------------------------ >>> >>> _______________________________________________ >>> Neuroml-channels mailing list >>> Neu...@li... >>> https://lists.sourceforge.net/lists/listinfo/neuroml-channels >>> >> > > > thanks & regards, > Siji > > |
From: Avrama B. <kbl...@gm...> - 2010-01-19 22:03:20
|
I want to point out one concern with the proposal for allowing tabulated channels in NeuroML. If a modeler can find only 6 values of, e.g., time constant, then _the modeler_ (or the software) always decides how to interpolate those 6 values to provide the time constant for the entire range of voltages used in the model. Unless the modeler specifies the equation used for interpolation, either cubic spline, or deriving alpha and beta values, or even having a step function, the implementation of the channel will vary widely between software. We had this problem when translating a model from Neuron to Genesis which had tabulated channels, because Neuron and Genesis interpolate differently. We could not get agreement unless we explicitly used the same equation to interpolate the values in the table (not surprisingly). In summary, allowing a channel to be specified by a small list of values instead of an equation will prevent sharing/consistent re-use of the channel. One possi ble solution is to include a general interpolation function along with the other standard functions. ----- Original Message ----- From: Siji P George <si...@nc...> Date: Friday, January 15, 2010 3:52 am Subject: Re: [Neuroml-channels] difficulties encountered with the present version NeuroML > Hi Padraig, > > Thanks for the comments. > > i need to clarify one thing. > > In CaPool, scaling for one group is 'off' and other is 'volume', > then how > to represent using 'pool_volume_info' or 'fixed_pool_info'? > for eg: > > <bio:mechanism name="CaPool" type="Ion Concentration"> > <bio:parameter name="B" value="17.402e12" scaling="off"> > <bio:group>soma</bio:group> > </bio:parameter> > </bio:mechanism> > > <bio:mechanism name="CaPool" type="Ion Concentration"> > <bio:parameter name="B" value="8.96e-3" scaling="volume"> > <bio:group>lat</bio:group> > </bio:parameter> > </bio:mechanism> > > > > > Hi Siji, > > > > Thanks for these points. They're all issues that have come up > before as > > possible shortcomings of NeuroML version 1.x, and need to be > dealt with > > properly in v2.0. The main question will be how much effort to > put into > > them getting v1 to support these features, and whether it would be > > better to wait to v2.0. > > > > See below for specific comments... > > > > > > Siji P George wrote: > >> Dear all, > >> > >> We have been implementing NeuroML reading functionality inside > MOOSE>> using > >> a little libNeuroML implementation that we are coding > alongside. We are > >> using NeuroML models available on the NeuroML website, and also > files>> generated by neuroConstruct. Finally we have been also > trying to encode > >> (by hand) a slightly modified version of Traub's early CA1 > model, and > >> reading it in. > >> > >> We ran into some difficulties with the grammar of these NeuroML > files.>> For > >> now, we have made some changes in the grammar of these files so > that we > >> could continue with the implementation/testing. These changes were > >> usually > >> such that our needs were met, and we did not try very much to > come up > >> with > >> the most general/clean solution. Perhaps these problems have > already>> been > >> addressed in the latest version of NeuroML 2, but in absence of > concrete>> examples from this specification, we have been trying > to implement the > >> old > >> version. Below we list these difficulties, and our attempts at > fixing>> them: > >> > >> 1. Calcium Pool in MorphML file: The existing MorphML files treated > >> Calcium pools just like ion channels, and just by looking at a > MorphML>> file, it was impossible to ascertain whether a given > mechanism is a > >> channel or a Ca-pool. > > True. This is probably due to the Ca pool being added in NEURON > (insert> statement)/GENESIS (read cellfiles) in a similar way to > how channels are > > added. > >> The alternative was to load the corresponding > >> ChannelML file which was making the implementation unnecessarily > >> complicated. Further, in GENESIS style, these MorphML files > specified>> the > >> Ca-pools as having a "gmax" attribute, which stood in for the > Ca-pools' > >> "B" value. > >> > >> Example of existing MorphML: > >> > >> > >> Changes we made: > >> The attribute - type - is given as 'Ion Pool' instead of 'Channel > >> Mechanism' > >> > > In the Schema file for ChannelML, "Ion Concentration" is a valid > type> for mechanism. > >> The parameter name is B instead of gmax and another attribute > 'scaling'>> is allowed which can have any one of the following values. > >> "off" : The B value will not be scaled. > >> "shell" : B will be scaled by the volume of a shell > with a given > >> thickness. > >> "volume" : B will be scale by the volume of the > corresponding segment > >> (i.e., compartment). > >> > >> eg: > >> <bio:mechanism name="CaPool" type="Ion Pool"> > >> <bio:parameter name="B" value="17.402e12" scaling="off"> > >> <bio:group>soma_group</bio:group> > >> </bio:parameter> > >> </bio:mechanism> > >> > > I agree that gmax is a bad name for this parameter. I think > however that > > this "B" value should be calculated from the info in the CaPool > > description itself, i.e. if a thickness is specified there it's > a shell > > or if the fixed_pool_info element is used it's a fixed value, > etc. So > > the preferred form you should output is: > > > > <bio:mechanism name="CaPool" type="Ion Concentration"/> > > > > and an appropriate ChannelML file with <ion_concentration> > should be > > created with a pool_volume_info or a fixed_pool_info element as > > appropriate. If you have a cell where the B parameter of the Ca pool > > varies over the cell, then maybe you should include the group > specific> value above. The meaning of "B" then should be clear > from the form of > > the mechanism ChannelML file. > > > > I'll update the exported NeuroML from neuroConstruct to export > info on > > calcium pools in this way. > > > > An update for NeuroML version 2 will have to treat this in a better, > > more generic way. One possible way is that interactions of > subcellular> species in a region of the cell will be specified by > an SBML file. Extra > > info in the cell description will have to say how the species might > > diffuse along the cell but everywhere this SBML pathway is > present, all > > of its species are found. > > > > > > > >> 2. Rate constants for Hodgkin-Huxley channels have so far been > specified>> either by mentioning the function type (one of > "sigmoid", "exponential" > >> and "exponential_linear"), or by specifying the math expression > in a > >> string (e.g.: expr="ca_conc < 0.00025 ? (ca_conc / 0.00025) : > 1"). In > >> implementing the Traub's CA1 cell, we came across some rate- > constant>> curves which could not be specified using any of the 3 > stereotyped>> functions. While most of these curves could be > approximated by fitting > >> one > >> of these 3 functions, one of the important cases (a roughly > bell-shaped > >> curved) could not be specified using this either. Writing a > general math > >> expression parser is not straightforward, and we will like to > avoid this > >> route at least for now. > >> > >> We strongly think that one should be able to specify rates by > giving an > >> explicit table. This is not in keeping with the internal lookup- > table>> style representations of MOOSE and GENESIS, but rather > simply because > >> this > >> method is enormously simple and completely general at the same > time.>> Perhaps even more importantly, original data from ion-channel > >> electrophysiology is usually in the form of tabulated rates, > and it > >> seems > >> inappropriate to demand that mathematical abstractions, but not the > >> original data may be included. > >> > >> Please refer to the attached file (K_AHPConductance.xml) to see > how we > >> tried to include a table in a channel definition. We considered two > >> options for specifying a table: > >> > >> - A list of ( x, y ) pairs. > >> - First specify a grid along X-axis with uniformly spaced > points,>> followed by a list of corresponding "y" values. This is > done simply by > >> specifying the function's domain ("xmin" and "xmax"), while the > number>> of points in the grid is implicitly specified by the > number of table > >> entries. > >> > >> The first option seems cleaner and more general. For now, > however, we > >> have > >> picked the second option simply because MOOSE uses a uniform grid > >> internally. > >> > > I agree that this might be useful. I've added a v1.8.2 version > of the > > specifications in the NeuroML SVN repository which includes such as > > example (voltage dependence only so far), along with an initial > mapping> to a NEURON mod file. I'll try adding another mapping to > a GENESIS.g > > file too (or if anyone else is happy to edit the XSL file, be my > > guest!). Your format seems fine for specifying these tables. > >> 3. In the existing MorphML, channels can be plugged into groups of > >> cables, > >> where each cable is a container for adjacent segments. This > means that > >> all > >> the segments in a given cable must have the same channel > composition. In > >> the extreme case where every segment in a cell has a unique channel > >> composition, one must create one cable for every segment. A good > >> solution > >> is perhaps to leave out cables completely, and allow one to group > >> together > >> segments, where a segment may belong to more than one group. > For now, > >> however, we have opted for the most straightforward method: > allowing>> channels to be plugged into individual segments directly. > >> > >> eg: > >> <bio:mechanism name="CaConductance" type="Channel > Mechanism">>> <bio:parameter name="gmax" value="50.0"> > >> <bio:seg>2</bio:seg> > >> <bio:seg>3</bio:seg> > >> <bio:seg>7</bio:seg> > >> </bio:parameter> > >> </bio:mechanism> > >> > > The full segment/cable/cable group structure will be overhauled in > > version 2, and so unfortunately this issue will have to wait > until then > > (cables will be removed and there will only be segmentGroups). > We can > > add the ability to put channels directly onto segments then too. > > > > For now it may be best just to automatically create a "cable" > for each > > compartment and groups for each cable and add the conductances like > > that. If there are a number of individual compartments each with > > different conductances, then it's likely it's a relatively small > cell> and the overhead of creating groups, etc. shouldn't be too high > > > > For larger cells it may be possible to create an algorithm to group > > together comps with the same value of cond density and make unique > > groups for those, this is what NEURON's Model View does. > Unfortunately> GENESIS/MOOSE doesn't store any grouping > information from the readcell > > import (correct?) and so that can't be used. > > > >> 4. We were looking for ChannelML examples with Ca-dependent > channels.>> All > >> examples we found had exactly one gate, where the Ca-dependence was > >> encoded as an attribute for the entire channel, rather than for the > >> gate. > >> Since we were writing Ca-dependent channels with multiple > gates, we > >> tried > >> to include an attribute in each of the gates specifying what it > depends>> upon. > >> > >> For now we have kept it crude but simple by adding an attribute > called>> "x_variable" to gates. The value of this variable may be > simply either > >> "concentration" or "voltage". Of course, this needs to be > improved by > >> specifying which Ca-pool entity needs to be referred, but we > have kept > >> that implicit for now. The motivation behind the attribute name > >> "x_variable" is that some gates depend on both membrane > potential as > >> well > >> as ion concentration, and this may perhaps be specified using > >> "x_variable" > >> and "y_variable" attributes. > >> > >> eg: Please find the attached K_CConductance.xml > >> > > I have some other examples of voltage and concentration dependent > > channels, unfortunately some are in pre NML v1.7.3 format. I'll > try to > > add these to the Example set for v1.8.2. I suspect the example > you sent > > would be supported if the rates were expressed in equations so > hopefully> the extension above for supporting tabulated channels > can be used for > > concentration dependence also. Can you send me on the original > > GENESIS/MOOSE files for these channels? > > > > Thanks, > > Padraig > > > >> > >> thanks & regards, > >> Siji > >> ---------------------------------------------------------------- > -------- > >> > >> ---------------------------------------------------------------- > -------------- > >> This SF.Net email is sponsored by the Verizon Developer Community > >> Take advantage of Verizon's best-in-class app development support > >> A streamlined, 14 day to market process makes app distribution > fast and > >> easy > >> Join now and get one step closer to millions of Verizon customers > >> http://p.sf.net/sfu/verizon-dev2dev > >> ---------------------------------------------------------------- > -------- > >> > >> _______________________________________________ > >> Neuroml-channels mailing list > >> Neu...@li... > >> https://lists.sourceforge.net/lists/listinfo/neuroml-channels > > > > > > > thanks & regards, > Siji > > > ------------------------------------------------------------------- > ----------- > Throughout its 18-year history, RSA Conference consistently > attracts the > world's best and brightest in the field, creating opportunities > for Conference > attendees to learn about information security's most important > issues through > interactions with peers, luminaries and emerging and established > companies.http://p.sf.net/sfu/rsaconf-dev2dev > _______________________________________________ > Neuroml-channels mailing list > Neu...@li... > https://lists.sourceforge.net/lists/listinfo/neuroml-channels > |
From: Siji P G. <si...@nc...> - 2010-01-15 08:55:53
|
Hi Padraig, Thanks for the comments. i need to clarify one thing. In CaPool, scaling for one group is 'off' and other is 'volume', then how to represent using 'pool_volume_info' or 'fixed_pool_info'? for eg: <bio:mechanism name="CaPool" type="Ion Concentration"> <bio:parameter name="B" value="17.402e12" scaling="off"> <bio:group>soma</bio:group> </bio:parameter> </bio:mechanism> <bio:mechanism name="CaPool" type="Ion Concentration"> <bio:parameter name="B" value="8.96e-3" scaling="volume"> <bio:group>lat</bio:group> </bio:parameter> </bio:mechanism> > Hi Siji, > > Thanks for these points. They're all issues that have come up before as > possible shortcomings of NeuroML version 1.x, and need to be dealt with > properly in v2.0. The main question will be how much effort to put into > them getting v1 to support these features, and whether it would be > better to wait to v2.0. > > See below for specific comments... > > > Siji P George wrote: >> Dear all, >> >> We have been implementing NeuroML reading functionality inside MOOSE >> using >> a little libNeuroML implementation that we are coding alongside. We are >> using NeuroML models available on the NeuroML website, and also files >> generated by neuroConstruct. Finally we have been also trying to encode >> (by hand) a slightly modified version of Traub's early CA1 model, and >> reading it in. >> >> We ran into some difficulties with the grammar of these NeuroML files. >> For >> now, we have made some changes in the grammar of these files so that we >> could continue with the implementation/testing. These changes were >> usually >> such that our needs were met, and we did not try very much to come up >> with >> the most general/clean solution. Perhaps these problems have already >> been >> addressed in the latest version of NeuroML 2, but in absence of concrete >> examples from this specification, we have been trying to implement the >> old >> version. Below we list these difficulties, and our attempts at fixing >> them: >> >> 1. Calcium Pool in MorphML file: The existing MorphML files treated >> Calcium pools just like ion channels, and just by looking at a MorphML >> file, it was impossible to ascertain whether a given mechanism is a >> channel or a Ca-pool. > True. This is probably due to the Ca pool being added in NEURON (insert > statement)/GENESIS (read cellfiles) in a similar way to how channels are > added. >> The alternative was to load the corresponding >> ChannelML file which was making the implementation unnecessarily >> complicated. Further, in GENESIS style, these MorphML files specified >> the >> Ca-pools as having a "gmax" attribute, which stood in for the Ca-pools' >> "B" value. >> >> Example of existing MorphML: >> >> >> Changes we made: >> The attribute - type - is given as 'Ion Pool' instead of 'Channel >> Mechanism' >> > In the Schema file for ChannelML, "Ion Concentration" is a valid type > for mechanism. >> The parameter name is B instead of gmax and another attribute 'scaling' >> is allowed which can have any one of the following values. >> "off" : The B value will not be scaled. >> "shell" : B will be scaled by the volume of a shell with a given >> thickness. >> "volume" : B will be scale by the volume of the corresponding segment >> (i.e., compartment). >> >> eg: >> <bio:mechanism name="CaPool" type="Ion Pool"> >> <bio:parameter name="B" value="17.402e12" scaling="off"> >> <bio:group>soma_group</bio:group> >> </bio:parameter> >> </bio:mechanism> >> > I agree that gmax is a bad name for this parameter. I think however that > this "B" value should be calculated from the info in the CaPool > description itself, i.e. if a thickness is specified there it's a shell > or if the fixed_pool_info element is used it's a fixed value, etc. So > the preferred form you should output is: > > <bio:mechanism name="CaPool" type="Ion Concentration"/> > > and an appropriate ChannelML file with <ion_concentration> should be > created with a pool_volume_info or a fixed_pool_info element as > appropriate. If you have a cell where the B parameter of the Ca pool > varies over the cell, then maybe you should include the group specific > value above. The meaning of "B" then should be clear from the form of > the mechanism ChannelML file. > > I'll update the exported NeuroML from neuroConstruct to export info on > calcium pools in this way. > > An update for NeuroML version 2 will have to treat this in a better, > more generic way. One possible way is that interactions of subcellular > species in a region of the cell will be specified by an SBML file. Extra > info in the cell description will have to say how the species might > diffuse along the cell but everywhere this SBML pathway is present, all > of its species are found. > > > >> 2. Rate constants for Hodgkin-Huxley channels have so far been specified >> either by mentioning the function type (one of "sigmoid", "exponential" >> and "exponential_linear"), or by specifying the math expression in a >> string (e.g.: expr="ca_conc < 0.00025 ? (ca_conc / 0.00025) : 1"). In >> implementing the Traub's CA1 cell, we came across some rate-constant >> curves which could not be specified using any of the 3 stereotyped >> functions. While most of these curves could be approximated by fitting >> one >> of these 3 functions, one of the important cases (a roughly bell-shaped >> curved) could not be specified using this either. Writing a general math >> expression parser is not straightforward, and we will like to avoid this >> route at least for now. >> >> We strongly think that one should be able to specify rates by giving an >> explicit table. This is not in keeping with the internal lookup-table >> style representations of MOOSE and GENESIS, but rather simply because >> this >> method is enormously simple and completely general at the same time. >> Perhaps even more importantly, original data from ion-channel >> electrophysiology is usually in the form of tabulated rates, and it >> seems >> inappropriate to demand that mathematical abstractions, but not the >> original data may be included. >> >> Please refer to the attached file (K_AHPConductance.xml) to see how we >> tried to include a table in a channel definition. We considered two >> options for specifying a table: >> >> - A list of ( x, y ) pairs. >> - First specify a grid along X-axis with uniformly spaced points, >> followed by a list of corresponding "y" values. This is done simply by >> specifying the function's domain ("xmin" and "xmax"), while the number >> of points in the grid is implicitly specified by the number of table >> entries. >> >> The first option seems cleaner and more general. For now, however, we >> have >> picked the second option simply because MOOSE uses a uniform grid >> internally. >> > I agree that this might be useful. I've added a v1.8.2 version of the > specifications in the NeuroML SVN repository which includes such as > example (voltage dependence only so far), along with an initial mapping > to a NEURON mod file. I'll try adding another mapping to a GENESIS.g > file too (or if anyone else is happy to edit the XSL file, be my > guest!). Your format seems fine for specifying these tables. >> 3. In the existing MorphML, channels can be plugged into groups of >> cables, >> where each cable is a container for adjacent segments. This means that >> all >> the segments in a given cable must have the same channel composition. In >> the extreme case where every segment in a cell has a unique channel >> composition, one must create one cable for every segment. A good >> solution >> is perhaps to leave out cables completely, and allow one to group >> together >> segments, where a segment may belong to more than one group. For now, >> however, we have opted for the most straightforward method: allowing >> channels to be plugged into individual segments directly. >> >> eg: >> <bio:mechanism name="CaConductance" type="Channel Mechanism"> >> <bio:parameter name="gmax" value="50.0"> >> <bio:seg>2</bio:seg> >> <bio:seg>3</bio:seg> >> <bio:seg>7</bio:seg> >> </bio:parameter> >> </bio:mechanism> >> > The full segment/cable/cable group structure will be overhauled in > version 2, and so unfortunately this issue will have to wait until then > (cables will be removed and there will only be segmentGroups). We can > add the ability to put channels directly onto segments then too. > > For now it may be best just to automatically create a "cable" for each > compartment and groups for each cable and add the conductances like > that. If there are a number of individual compartments each with > different conductances, then it's likely it's a relatively small cell > and the overhead of creating groups, etc. shouldn't be too high > > For larger cells it may be possible to create an algorithm to group > together comps with the same value of cond density and make unique > groups for those, this is what NEURON's Model View does. Unfortunately > GENESIS/MOOSE doesn't store any grouping information from the readcell > import (correct?) and so that can't be used. > >> 4. We were looking for ChannelML examples with Ca-dependent channels. >> All >> examples we found had exactly one gate, where the Ca-dependence was >> encoded as an attribute for the entire channel, rather than for the >> gate. >> Since we were writing Ca-dependent channels with multiple gates, we >> tried >> to include an attribute in each of the gates specifying what it depends >> upon. >> >> For now we have kept it crude but simple by adding an attribute called >> "x_variable" to gates. The value of this variable may be simply either >> "concentration" or "voltage". Of course, this needs to be improved by >> specifying which Ca-pool entity needs to be referred, but we have kept >> that implicit for now. The motivation behind the attribute name >> "x_variable" is that some gates depend on both membrane potential as >> well >> as ion concentration, and this may perhaps be specified using >> "x_variable" >> and "y_variable" attributes. >> >> eg: Please find the attached K_CConductance.xml >> > I have some other examples of voltage and concentration dependent > channels, unfortunately some are in pre NML v1.7.3 format. I'll try to > add these to the Example set for v1.8.2. I suspect the example you sent > would be supported if the rates were expressed in equations so hopefully > the extension above for supporting tabulated channels can be used for > concentration dependence also. Can you send me on the original > GENESIS/MOOSE files for these channels? > > Thanks, > Padraig > >> >> thanks & regards, >> Siji >> ------------------------------------------------------------------------ >> >> ------------------------------------------------------------------------------ >> This SF.Net email is sponsored by the Verizon Developer Community >> Take advantage of Verizon's best-in-class app development support >> A streamlined, 14 day to market process makes app distribution fast and >> easy >> Join now and get one step closer to millions of Verizon customers >> http://p.sf.net/sfu/verizon-dev2dev >> ------------------------------------------------------------------------ >> >> _______________________________________________ >> Neuroml-channels mailing list >> Neu...@li... >> https://lists.sourceforge.net/lists/listinfo/neuroml-channels > > thanks & regards, Siji |
From: pgleeson <p.g...@uc...> - 2010-01-13 17:19:56
|
Hi Siji, Thanks for these points. They're all issues that have come up before as possible shortcomings of NeuroML version 1.x, and need to be dealt with properly in v2.0. The main question will be how much effort to put into them getting v1 to support these features, and whether it would be better to wait to v2.0. See below for specific comments... Siji P George wrote: > Dear all, > > We have been implementing NeuroML reading functionality inside MOOSE using > a little libNeuroML implementation that we are coding alongside. We are > using NeuroML models available on the NeuroML website, and also files > generated by neuroConstruct. Finally we have been also trying to encode > (by hand) a slightly modified version of Traub's early CA1 model, and > reading it in. > > We ran into some difficulties with the grammar of these NeuroML files. For > now, we have made some changes in the grammar of these files so that we > could continue with the implementation/testing. These changes were usually > such that our needs were met, and we did not try very much to come up with > the most general/clean solution. Perhaps these problems have already been > addressed in the latest version of NeuroML 2, but in absence of concrete > examples from this specification, we have been trying to implement the old > version. Below we list these difficulties, and our attempts at fixing > them: > > 1. Calcium Pool in MorphML file: The existing MorphML files treated > Calcium pools just like ion channels, and just by looking at a MorphML > file, it was impossible to ascertain whether a given mechanism is a > channel or a Ca-pool. True. This is probably due to the Ca pool being added in NEURON (insert statement)/GENESIS (read cellfiles) in a similar way to how channels are added. > The alternative was to load the corresponding > ChannelML file which was making the implementation unnecessarily > complicated. Further, in GENESIS style, these MorphML files specified the > Ca-pools as having a "gmax" attribute, which stood in for the Ca-pools' > "B" value. > > Example of existing MorphML: > > > Changes we made: > The attribute - type - is given as 'Ion Pool' instead of 'Channel Mechanism' > In the Schema file for ChannelML, "Ion Concentration" is a valid type for mechanism. > The parameter name is B instead of gmax and another attribute 'scaling' > is allowed which can have any one of the following values. > "off" : The B value will not be scaled. > "shell" : B will be scaled by the volume of a shell with a given thickness. > "volume" : B will be scale by the volume of the corresponding segment > (i.e., compartment). > > eg: > <bio:mechanism name="CaPool" type="Ion Pool"> > <bio:parameter name="B" value="17.402e12" scaling="off"> > <bio:group>soma_group</bio:group> > </bio:parameter> > </bio:mechanism> > I agree that gmax is a bad name for this parameter. I think however that this "B" value should be calculated from the info in the CaPool description itself, i.e. if a thickness is specified there it's a shell or if the fixed_pool_info element is used it's a fixed value, etc. So the preferred form you should output is: <bio:mechanism name="CaPool" type="Ion Concentration"/> and an appropriate ChannelML file with <ion_concentration> should be created with a pool_volume_info or a fixed_pool_info element as appropriate. If you have a cell where the B parameter of the Ca pool varies over the cell, then maybe you should include the group specific value above. The meaning of "B" then should be clear from the form of the mechanism ChannelML file. I'll update the exported NeuroML from neuroConstruct to export info on calcium pools in this way. An update for NeuroML version 2 will have to treat this in a better, more generic way. One possible way is that interactions of subcellular species in a region of the cell will be specified by an SBML file. Extra info in the cell description will have to say how the species might diffuse along the cell but everywhere this SBML pathway is present, all of its species are found. > 2. Rate constants for Hodgkin-Huxley channels have so far been specified > either by mentioning the function type (one of "sigmoid", "exponential" > and "exponential_linear"), or by specifying the math expression in a > string (e.g.: expr="ca_conc < 0.00025 ? (ca_conc / 0.00025) : 1"). In > implementing the Traub's CA1 cell, we came across some rate-constant > curves which could not be specified using any of the 3 stereotyped > functions. While most of these curves could be approximated by fitting one > of these 3 functions, one of the important cases (a roughly bell-shaped > curved) could not be specified using this either. Writing a general math > expression parser is not straightforward, and we will like to avoid this > route at least for now. > > We strongly think that one should be able to specify rates by giving an > explicit table. This is not in keeping with the internal lookup-table > style representations of MOOSE and GENESIS, but rather simply because this > method is enormously simple and completely general at the same time. > Perhaps even more importantly, original data from ion-channel > electrophysiology is usually in the form of tabulated rates, and it seems > inappropriate to demand that mathematical abstractions, but not the > original data may be included. > > Please refer to the attached file (K_AHPConductance.xml) to see how we > tried to include a table in a channel definition. We considered two > options for specifying a table: > > - A list of ( x, y ) pairs. > - First specify a grid along X-axis with uniformly spaced points, > followed by a list of corresponding "y" values. This is done simply by > specifying the function's domain ("xmin" and "xmax"), while the number > of points in the grid is implicitly specified by the number of table > entries. > > The first option seems cleaner and more general. For now, however, we have > picked the second option simply because MOOSE uses a uniform grid > internally. > I agree that this might be useful. I've added a v1.8.2 version of the specifications in the NeuroML SVN repository which includes such as example (voltage dependence only so far), along with an initial mapping to a NEURON mod file. I'll try adding another mapping to a GENESIS.g file too (or if anyone else is happy to edit the XSL file, be my guest!). Your format seems fine for specifying these tables. > 3. In the existing MorphML, channels can be plugged into groups of cables, > where each cable is a container for adjacent segments. This means that all > the segments in a given cable must have the same channel composition. In > the extreme case where every segment in a cell has a unique channel > composition, one must create one cable for every segment. A good solution > is perhaps to leave out cables completely, and allow one to group together > segments, where a segment may belong to more than one group. For now, > however, we have opted for the most straightforward method: allowing > channels to be plugged into individual segments directly. > > eg: > <bio:mechanism name="CaConductance" type="Channel Mechanism"> > <bio:parameter name="gmax" value="50.0"> > <bio:seg>2</bio:seg> > <bio:seg>3</bio:seg> > <bio:seg>7</bio:seg> > </bio:parameter> > </bio:mechanism> > The full segment/cable/cable group structure will be overhauled in version 2, and so unfortunately this issue will have to wait until then (cables will be removed and there will only be segmentGroups). We can add the ability to put channels directly onto segments then too. For now it may be best just to automatically create a "cable" for each compartment and groups for each cable and add the conductances like that. If there are a number of individual compartments each with different conductances, then it's likely it's a relatively small cell and the overhead of creating groups, etc. shouldn't be too high For larger cells it may be possible to create an algorithm to group together comps with the same value of cond density and make unique groups for those, this is what NEURON's Model View does. Unfortunately GENESIS/MOOSE doesn't store any grouping information from the readcell import (correct?) and so that can't be used. > 4. We were looking for ChannelML examples with Ca-dependent channels. All > examples we found had exactly one gate, where the Ca-dependence was > encoded as an attribute for the entire channel, rather than for the gate. > Since we were writing Ca-dependent channels with multiple gates, we tried > to include an attribute in each of the gates specifying what it depends > upon. > > For now we have kept it crude but simple by adding an attribute called > "x_variable" to gates. The value of this variable may be simply either > "concentration" or "voltage". Of course, this needs to be improved by > specifying which Ca-pool entity needs to be referred, but we have kept > that implicit for now. The motivation behind the attribute name > "x_variable" is that some gates depend on both membrane potential as well > as ion concentration, and this may perhaps be specified using "x_variable" > and "y_variable" attributes. > > eg: Please find the attached K_CConductance.xml > I have some other examples of voltage and concentration dependent channels, unfortunately some are in pre NML v1.7.3 format. I'll try to add these to the Example set for v1.8.2. I suspect the example you sent would be supported if the rates were expressed in equations so hopefully the extension above for supporting tabulated channels can be used for concentration dependence also. Can you send me on the original GENESIS/MOOSE files for these channels? Thanks, Padraig > > thanks & regards, > Siji > ------------------------------------------------------------------------ > > ------------------------------------------------------------------------------ > This SF.Net email is sponsored by the Verizon Developer Community > Take advantage of Verizon's best-in-class app development support > A streamlined, 14 day to market process makes app distribution fast and easy > Join now and get one step closer to millions of Verizon customers > http://p.sf.net/sfu/verizon-dev2dev > ------------------------------------------------------------------------ > > _______________________________________________ > Neuroml-channels mailing list > Neu...@li... > https://lists.sourceforge.net/lists/listinfo/neuroml-channels |
From: Siji P G. <si...@nc...> - 2010-01-08 12:09:44
|
Dear all, We have been implementing NeuroML reading functionality inside MOOSE using a little libNeuroML implementation that we are coding alongside. We are using NeuroML models available on the NeuroML website, and also files generated by neuroConstruct. Finally we have been also trying to encode (by hand) a slightly modified version of Traub's early CA1 model, and reading it in. We ran into some difficulties with the grammar of these NeuroML files. For now, we have made some changes in the grammar of these files so that we could continue with the implementation/testing. These changes were usually such that our needs were met, and we did not try very much to come up with the most general/clean solution. Perhaps these problems have already been addressed in the latest version of NeuroML 2, but in absence of concrete examples from this specification, we have been trying to implement the old version. Below we list these difficulties, and our attempts at fixing them: 1. Calcium Pool in MorphML file: The existing MorphML files treated Calcium pools just like ion channels, and just by looking at a MorphML file, it was impossible to ascertain whether a given mechanism is a channel or a Ca-pool. The alternative was to load the corresponding ChannelML file which was making the implementation unnecessarily complicated. Further, in GENESIS style, these MorphML files specified the Ca-pools as having a "gmax" attribute, which stood in for the Ca-pools' "B" value. Example of existing MorphML: Changes we made: The attribute - type - is given as 'Ion Pool' instead of 'Channel Mechanism' The parameter name is B instead of gmax and another attribute 'scaling' is allowed which can have any one of the following values. "off" : The B value will not be scaled. "shell" : B will be scaled by the volume of a shell with a given thickness. "volume" : B will be scale by the volume of the corresponding segment (i.e., compartment). eg: <bio:mechanism name="CaPool" type="Ion Pool"> <bio:parameter name="B" value="17.402e12" scaling="off"> <bio:group>soma_group</bio:group> </bio:parameter> </bio:mechanism> 2. Rate constants for Hodgkin-Huxley channels have so far been specified either by mentioning the function type (one of "sigmoid", "exponential" and "exponential_linear"), or by specifying the math expression in a string (e.g.: expr="ca_conc < 0.00025 ? (ca_conc / 0.00025) : 1"). In implementing the Traub's CA1 cell, we came across some rate-constant curves which could not be specified using any of the 3 stereotyped functions. While most of these curves could be approximated by fitting one of these 3 functions, one of the important cases (a roughly bell-shaped curved) could not be specified using this either. Writing a general math expression parser is not straightforward, and we will like to avoid this route at least for now. We strongly think that one should be able to specify rates by giving an explicit table. This is not in keeping with the internal lookup-table style representations of MOOSE and GENESIS, but rather simply because this method is enormously simple and completely general at the same time. Perhaps even more importantly, original data from ion-channel electrophysiology is usually in the form of tabulated rates, and it seems inappropriate to demand that mathematical abstractions, but not the original data may be included. Please refer to the attached file (K_AHPConductance.xml) to see how we tried to include a table in a channel definition. We considered two options for specifying a table: - A list of ( x, y ) pairs. - First specify a grid along X-axis with uniformly spaced points, followed by a list of corresponding "y" values. This is done simply by specifying the function's domain ("xmin" and "xmax"), while the number of points in the grid is implicitly specified by the number of table entries. The first option seems cleaner and more general. For now, however, we have picked the second option simply because MOOSE uses a uniform grid internally. 3. In the existing MorphML, channels can be plugged into groups of cables, where each cable is a container for adjacent segments. This means that all the segments in a given cable must have the same channel composition. In the extreme case where every segment in a cell has a unique channel composition, one must create one cable for every segment. A good solution is perhaps to leave out cables completely, and allow one to group together segments, where a segment may belong to more than one group. For now, however, we have opted for the most straightforward method: allowing channels to be plugged into individual segments directly. eg: <bio:mechanism name="CaConductance" type="Channel Mechanism"> <bio:parameter name="gmax" value="50.0"> <bio:seg>2</bio:seg> <bio:seg>3</bio:seg> <bio:seg>7</bio:seg> </bio:parameter> </bio:mechanism> 4. We were looking for ChannelML examples with Ca-dependent channels. All examples we found had exactly one gate, where the Ca-dependence was encoded as an attribute for the entire channel, rather than for the gate. Since we were writing Ca-dependent channels with multiple gates, we tried to include an attribute in each of the gates specifying what it depends upon. For now we have kept it crude but simple by adding an attribute called "x_variable" to gates. The value of this variable may be simply either "concentration" or "voltage". Of course, this needs to be improved by specifying which Ca-pool entity needs to be referred, but we have kept that implicit for now. The motivation behind the attribute name "x_variable" is that some gates depend on both membrane potential as well as ion concentration, and this may perhaps be specified using "x_variable" and "y_variable" attributes. eg: Please find the attached K_CConductance.xml thanks & regards, Siji |
From: Robert C. <ro...@te...> - 2009-10-09 15:58:10
|
Hi, There are some problems with what I put in the channel proposal with regard to the migration to using TransMembraneProtein (TMP) as the main entity and then extending it separately for ion channels transporters and pumps. Previously, channels had gates and states, and states could have relative conductances. These were promoted into the TransMembraneProtein element without changing the names. The problem is that the concept expressed by a gate (part of the protein that can be in one of two or more states independent of the rest of the protein - eg as used for each alpha helix in a HH type K channel model) is present in TMPs but without any notion of gating. Ie, the "gate" element in a channel conflated the two notions of an isolated sub-scheme and a thing that affects the current. Now we need to separate these. PSICS uses "KSComplex" though that is not great either. Essentially, all we need here I think is a different term from "gate". The second problem is trickier. The spec has states supporting an optional "fractionalConductance" attribute, but this doesn't make any sense for a state of a TMP which has no conductance. We only want to talk about conductances if the thing is actually an ion channel. One option here would be to remove fractionalConductance from the state object and then add an element such as <ConductingConfiguration state="s1" fractionalConductance="1.0"/> within the ionChannel element. This refers to one of the states in the scheme by its ID and says that the channel conducts when it is in that state. One could also leave the fractionalConductance attribute in states and just not use it if the state is not part of an ion channel, but I think it would be nicer to avoid this kind of complexity if we can. Cheers, Robert -- Robert Cannon, A.nnotate.com, (Textensor Ltd - www.textensor.com) ro...@te... tel: +44 (0)131 2082026 fax: +44 (0)131 4644881 |
From: Padraig G. <p.g...@uc...> - 2007-04-24 12:06:15
|
Hi, I've changed the files with the recommendations you made, and the v1.6. version should work fine with oXygen. If you need to use the program in the meantime, just change your local v1.5 files in the way that you suggested. It shouldn't change the output of the XSL file in any significant way. The many empty <text> elements are there to ensure that the mod files and GENESIS scripts come out in a nicely readable format with appropriate spaces, carriage returns, etc. Padraig Nicolas Debeissat wrote: > Hi, > > Thank you for the answers. I don't know the meaning of the expression > "feel strongly about it" :-), but if it can remove one of those > <xs:restriction> that I can really manage in RelaxNG, well, I do feel > strongly! > > > I have a problem with the MorphML_v1.5_GENESIS.xsl, line 104, my xml > editor (I use oXigen) doesn't like that line : > /<xsl:text>// Name : <xsl:value-of > select="/mml:morphml/mml:name"/></xsl:text>/ > > It prefers that way (<xsl:value-of> outside the <xsl:text>) : > /<xsl:text>// Name : //</xsl:text>//<xsl:value-of > select="/mml:morphml/mml:name"/>/ > > > In MorphML_v1.5_NEURON.xsl : > > line 97 : same thing than in MorphML_GENESIS, for the line <xsl:text>// > MorphML file : <xsl:value-of select="/mml:morphml/@name"/></xsl:text> > > line 158, there is <xsl:apply-templates > select="mml:segments"/> inside the <xsl:text>where I have the same > errors. Seems <xsl:text> must be empty of any markup! > > should add </xsl:text><xsl:apply-templates > select="mml:segments"/><xsl:text> instead ? > > There are also lots of <text> markups without their namespace prefix > (xsl:?) in MorphML_v1.5_NEURON.xsl > > > > Regards > > Nicolas Debeissat > Inria Sophia Antipolis > > > > Padraig Gleeson wrote: > >> Hi, >> See below... >> >> Nicolas Debeissat wrote: >> >> >>> Hi, >>> >>> (I continue on my way ;-)) I saw some problems in those files : >>> >>> >>> Biophysics_v1.5.xsd : >>> >>> >>> <inhomogeneous_value> element line 143 : this element is empty, no type >>> and no content are specified. >>> >>> >>> >> Good point, it should be type InhomogeneousValue >> >> >> >> >>> ReversalPotentialValue type line 382 : that type doesn't add anything >>> (except a comment in the schema) to its restriction : >>> >>> <xs:restriction base="VoltageValue"/> >>> >>> >>> >>> >> True, it's a slightly different type of voltage specification though. I >> can take it away if you feel strongly about it... >> >> >>> /*ChannelML_v1.5.xsd :*/ >>> >>> >>> RateConstVoltConcDep : there is a <xs:choice> markup with only one >>> choice proposed : generic_equation_hh. >>> >>> >>> >>> >> This is to allow for the possibility of a parametrized form of the rate >> constant equation which has a calcium dependence, for example. When more >> channels are converted to ChannelML a pattern for these types of channel >> may emerge, but for the time being the generic equation is sufficient. >> >> >>> IonConcentration : there is choice between a documentation (which >>> shouldn't be under the choice markup in my opinion) and only one >>> element, line 773. >>> >>> >>> >> Again, this is to allow for other models of calcium pool dynamics. I've >> moved the comment inside the element. >> >> >>> GenericEquation : line 742 the values of minOccurs and maxOccurs are >>> both 0. Does that mean that should be a restriction of an equation where >>> there is no parameter at all ? >>> >>> <xs:annotation> >>> >>> <xs:documentation>Note: no parameters allowed!!</xs:documentation> >>> >>> </xs:annotation> >>> >>> <xs:element name="parameter" type="Parameter" minOccurs="0" maxOccurs="0"/> >>> >>> >>> >>> >> True, I can clean that up, the GenericEquation doesn't necessarily have >> to be a restriction of anything else. >> >> Thanks for the comments. >> Padraig >> >> >> >> >> >>> Nicolas Debeissat >>> Inria Sophia Antipolis >>> >>> >>> ------------------------------------------------------------------------- >>> Take Surveys. Earn Cash. Influence the Future of IT >>> Join SourceForge.net's Techsay panel and you'll get the chance to share your >>> opinions on IT & business topics through brief surveys-and earn cash >>> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV >>> _______________________________________________ >>> Neuroml-channels mailing list >>> Neu...@li... >>> https://lists.sourceforge.net/lists/listinfo/neuroml-channels >>> >>> >>> >> ------------------------------------------------------------------------- >> Take Surveys. Earn Cash. Influence the Future of IT >> Join SourceForge.net's Techsay panel and you'll get the chance to share your >> opinions on IT & business topics through brief surveys-and earn cash >> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV >> _______________________________________________ >> Neuroml-channels mailing list >> Neu...@li... >> https://lists.sourceforge.net/lists/listinfo/neuroml-channels >> >> > > > ------------------------------------------------------------------------- > This SF.net email is sponsored by DB2 Express > Download DB2 Express C - the FREE version of DB2 express and take > control of your XML. No limits. Just data. Click to get it now. > http://sourceforge.net/powerbar/db2/ > _______________________________________________ > Neuroml-channels mailing list > Neu...@li... > https://lists.sourceforge.net/lists/listinfo/neuroml-channels > |
From: Nicolas D. <Nic...@so...> - 2007-04-16 07:53:45
|
Hi, Thank you for the answers. I don't know the meaning of the expression "feel strongly about it" :-), but if it can remove one of those <xs:restriction> that I can really manage in RelaxNG, well, I do feel strongly! I have a problem with the MorphML_v1.5_GENESIS.xsl, line 104, my xml editor (I use oXigen) doesn't like that line : /<xsl:text>// Name : <xsl:value-of select="/mml:morphml/mml:name"/></xsl:text>/ It prefers that way (<xsl:value-of> outside the <xsl:text>) : /<xsl:text>// Name : //</xsl:text>//<xsl:value-of select="/mml:morphml/mml:name"/>/ In MorphML_v1.5_NEURON.xsl : line 97 : same thing than in MorphML_GENESIS, for the line <xsl:text>// MorphML file : <xsl:value-of select="/mml:morphml/@name"/></xsl:text> line 158, there is <xsl:apply-templates select="mml:segments"/> inside the <xsl:text>where I have the same errors. Seems <xsl:text> must be empty of any markup! should add </xsl:text><xsl:apply-templates select="mml:segments"/><xsl:text> instead ? There are also lots of <text> markups without their namespace prefix (xsl:?) in MorphML_v1.5_NEURON.xsl Regards Nicolas Debeissat Inria Sophia Antipolis Padraig Gleeson wrote: > Hi, > See below... > > Nicolas Debeissat wrote: > >> Hi, >> >> (I continue on my way ;-)) I saw some problems in those files : >> >> >> Biophysics_v1.5.xsd : >> >> >> <inhomogeneous_value> element line 143 : this element is empty, no type >> and no content are specified. >> >> > Good point, it should be type InhomogeneousValue > > > >> ReversalPotentialValue type line 382 : that type doesn't add anything >> (except a comment in the schema) to its restriction : >> >> <xs:restriction base="VoltageValue"/> >> >> >> > True, it's a slightly different type of voltage specification though. I > can take it away if you feel strongly about it... > >> /*ChannelML_v1.5.xsd :*/ >> >> >> RateConstVoltConcDep : there is a <xs:choice> markup with only one >> choice proposed : generic_equation_hh. >> >> >> > This is to allow for the possibility of a parametrized form of the rate > constant equation which has a calcium dependence, for example. When more > channels are converted to ChannelML a pattern for these types of channel > may emerge, but for the time being the generic equation is sufficient. > >> IonConcentration : there is choice between a documentation (which >> shouldn't be under the choice markup in my opinion) and only one >> element, line 773. >> >> > Again, this is to allow for other models of calcium pool dynamics. I've > moved the comment inside the element. > >> GenericEquation : line 742 the values of minOccurs and maxOccurs are >> both 0. Does that mean that should be a restriction of an equation where >> there is no parameter at all ? >> >> <xs:annotation> >> >> <xs:documentation>Note: no parameters allowed!!</xs:documentation> >> >> </xs:annotation> >> >> <xs:element name="parameter" type="Parameter" minOccurs="0" maxOccurs="0"/> >> >> >> > True, I can clean that up, the GenericEquation doesn't necessarily have > to be a restriction of anything else. > > Thanks for the comments. > Padraig > > > > >> Nicolas Debeissat >> Inria Sophia Antipolis >> >> >> ------------------------------------------------------------------------- >> Take Surveys. Earn Cash. Influence the Future of IT >> Join SourceForge.net's Techsay panel and you'll get the chance to share your >> opinions on IT & business topics through brief surveys-and earn cash >> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV >> _______________________________________________ >> Neuroml-channels mailing list >> Neu...@li... >> https://lists.sourceforge.net/lists/listinfo/neuroml-channels >> >> > > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share your > opinions on IT & business topics through brief surveys-and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > _______________________________________________ > Neuroml-channels mailing list > Neu...@li... > https://lists.sourceforge.net/lists/listinfo/neuroml-channels > |
From: Padraig G. <p.g...@uc...> - 2007-04-11 17:18:53
|
Hi, See below... Nicolas Debeissat wrote: > Hi, > > (I continue on my way ;-)) I saw some problems in those files : > > > Biophysics_v1.5.xsd : > > > <inhomogeneous_value> element line 143 : this element is empty, no type > and no content are specified. > Good point, it should be type InhomogeneousValue > > ReversalPotentialValue type line 382 : that type doesn't add anything > (except a comment in the schema) to its restriction : > > <xs:restriction base="VoltageValue"/> > > True, it's a slightly different type of voltage specification though. I can take it away if you feel strongly about it... > > /*ChannelML_v1.5.xsd :*/ > > > RateConstVoltConcDep : there is a <xs:choice> markup with only one > choice proposed : generic_equation_hh. > > This is to allow for the possibility of a parametrized form of the rate constant equation which has a calcium dependence, for example. When more channels are converted to ChannelML a pattern for these types of channel may emerge, but for the time being the generic equation is sufficient. > IonConcentration : there is choice between a documentation (which > shouldn't be under the choice markup in my opinion) and only one > element, line 773. > Again, this is to allow for other models of calcium pool dynamics. I've moved the comment inside the element. > GenericEquation : line 742 the values of minOccurs and maxOccurs are > both 0. Does that mean that should be a restriction of an equation where > there is no parameter at all ? > > <xs:annotation> > > <xs:documentation>Note: no parameters allowed!!</xs:documentation> > > </xs:annotation> > > <xs:element name="parameter" type="Parameter" minOccurs="0" maxOccurs="0"/> > > True, I can clean that up, the GenericEquation doesn't necessarily have to be a restriction of anything else. Thanks for the comments. Padraig > > Nicolas Debeissat > Inria Sophia Antipolis > > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share your > opinions on IT & business topics through brief surveys-and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > _______________________________________________ > Neuroml-channels mailing list > Neu...@li... > https://lists.sourceforge.net/lists/listinfo/neuroml-channels > |
From: Padraig G. <p.g...@uc...> - 2007-04-11 16:53:46
|
Good point. It can probably be moved to Metadata.xsd without invalidating the existing files. Padraig Nicolas Debeissat wrote: > Hi, > > In the Level2/ChannelML_v1.5.xsd schema line 837, you define a > simpleType "Units" whereas you already defined a simpleType "Units" in > the file Level2/Biophysics_v1.5.xsd line 257 > > Actually they have exactly the same definitions in both, except that you > give more comments in Biophysics_v1.5.xsd, but that gives me a > validation error :-( > > > P.S. : I just subscribed to the "technology" list, will I receive > answers from that ? > > > Nicolas Debeissat > Inria Sophia Antipolis > > > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share your > opinions on IT & business topics through brief surveys-and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > _______________________________________________ > Neuroml-channels mailing list > Neu...@li... > https://lists.sourceforge.net/lists/listinfo/neuroml-channels > |
From: Nicolas D. <Nic...@so...> - 2007-04-06 13:07:14
|
Hi, In the Level2/ChannelML_v1.5.xsd schema line 837, you define a simpleType "Units" whereas you already defined a simpleType "Units" in the file Level2/Biophysics_v1.5.xsd line 257 Actually they have exactly the same definitions in both, except that you give more comments in Biophysics_v1.5.xsd, but that gives me a validation error :-( P.S. : I just subscribed to the "technology" list, will I receive answers from that ? Nicolas Debeissat Inria Sophia Antipolis |
From: Nicolas D. <Nic...@so...> - 2007-04-06 12:54:53
|
Hi, (I continue on my way ;-)) I saw some problems in those files : Biophysics_v1.5.xsd : <inhomogeneous_value> element line 143 : this element is empty, no type and no content are specified. ReversalPotentialValue type line 382 : that type doesn't add anything (except a comment in the schema) to its restriction : <xs:restriction base="VoltageValue"/> /*ChannelML_v1.5.xsd :*/ RateConstVoltConcDep : there is a <xs:choice> markup with only one choice proposed : generic_equation_hh. IonConcentration : there is choice between a documentation (which shouldn't be under the choice markup in my opinion) and only one element, line 773. GenericEquation : line 742 the values of minOccurs and maxOccurs are both 0. Does that mean that should be a restriction of an equation where there is no parameter at all ? <xs:annotation> <xs:documentation>Note: no parameters allowed!!</xs:documentation> </xs:annotation> <xs:element name="parameter" type="Parameter" minOccurs="0" maxOccurs="0"/> Nicolas Debeissat Inria Sophia Antipolis |
From: Tom M. <Tom.Morse@Yale.edu> - 2007-03-30 15:28:59
|
Yesterday I wrote an article on model sharing for Scholarpedia: http://www.scholarpedia.org/article/Model_Sharing_in_Computational_Neuroscience I would be happy to incorporate anyones suggestions from this group into the article. Tom |
From: Tom M. <Tom.Morse@Yale.edu> - 2007-03-15 19:27:44
|
Hi, I just wanted to mention that we have provided a link from ModelDB to a biomodels entry for the classic HH model. Biomodels stores mostly cell signaling pathway models in a variety of compatible translatable formats. As part of the process for entering the model in modeldb we created an "XML" simulators category (I know it is a misnomer) for models that are described by some form of XML. http://senselab.med.yale.edu/senselab/ModelDB/ModelList.asp?id=87474 Please send comments, especially suggestions for improvements, if any. Best wishes, -Tom Morse |
From: Padraig G. <p.g...@uc...> - 2007-03-02 18:55:17
|
Hi, A new version of the NeuroML specs have been put live at: http://morphml.org:8080/NeuroMLValidator The Release notes link on the main page gives the changes since v1.4, but to summarise: - Different Q10 rate adjustments for different gates, as in GateDepQ10.xml, are now allowed, and supported in the NEURON/GENESIS mappings - Specification of a basic I&F mechanism is possible, see IntFireMechanism.xml. Based on the COBA based I & F model as used in Brette et al (2006) (http://arxiv.org/abs/q-bio.NC/0611089). The NEURON mapping is based on the script files from http://senselab.med.yale.edu/SenseLab/ModelDB/ShowModel.asp?model=83319. Note: there is no GENESIS mapping for this mechanism, as none was created for the paper, but mapping to other simulators used in the study should be possible. - Electrical inputs to the network can be specified. Two types are possible, current pulse based and random stimulation. These should be further developed to allow easier specification of input protocols, a series of pulses, time dependent input rate, etc. Comments and suggestions very welcome. Regards Padraig |
From: Padraig G. <p.g...@uc...> - 2007-02-01 16:17:04
|
Hi, That's not currently supported, but can certainly be included in the spec. At this stage it's probably best to introduce an <apply_to_gate>n</apply_to_gate> subelement to the q10 element to specify the subset of gates to which to apply the rate adjustment (with absence of <apply_to_gate> implying all gates). This would mean all existing ChannelML files would stay valid. At v2.0 it might be good to rethink the placement of this element, but i think most cell models would use the same q10 expression for all gates and so for brevity it might be better to leave it here. I can incorporate the <apply_to_gate> into the 1.5 version of the spec by the end of the month and update the XSL files to generate the appropriate scripts. I'm also planning to introduce a way of specifying I&F mechanisms and specification of inputs into cells (random stims, pulses etc.) in NetworkML. Padraig Andrew Davison wrote: > Hi, > > Am I correct in thinking that the mod file below cannot be converted to > ChannelML because the Q10 adjustment is applied only to the n gate and not > the l gate? > > Are there any prospects of ChannelML changing to accommodate this (e.g. > <rate_adjustments> being a child of <gate> rather than of <conductance>, > or is this just one of those edge cases which will never be handled? > > ------ > TITLE K-A channel from Klee Ficker and Heinemann > : modified to account for Dax A Current ---------- > : M.Migliore Jun 1997 > > UNITS { > (mA) = (milliamp) > (mV) = (millivolt) > } > > PARAMETER { > celsius > v (mV) > gkabar=.008 (mho/cm2) > vhalfn=-1 (mV) > vhalfl=-56 (mV) > a0l=0.05 (/ms) > a0n=.1 (/ms) > zetan=-1.8 (1) > zetal=3 (1) > gmn=0.39 (1) > gml=1 (1) > lmin=2 (mS) > nmin=0.2 (mS) > pw=-1 (1) > tq=-40 > qq=5 > q10=5 > qtl=1 > ek > } > > > NEURON { > SUFFIX kad > USEION k READ ek WRITE ik > RANGE gkabar,gka > GLOBAL ninf,linf,taul,taun,lmin > } > > STATE { > n > l > } > > ASSIGNED { > ik (mA/cm2) > ninf > linf > taul > taun > gka > } > > BREAKPOINT { > SOLVE states METHOD cnexp > gka = gkabar*n*l > ik = gka*(v-ek) > > } > > INITIAL { > rates(v) > n=ninf > l=linf > } > > > FUNCTION alpn(v(mV)) { > LOCAL zeta > zeta=zetan+pw/(1+exp((v-tq)/qq)) > alpn = exp(1.e-3*zeta*(v-vhalfn)*9.648e4/(8.315*(273.16+celsius))) > } > > FUNCTION betn(v(mV)) { > LOCAL zeta > zeta=zetan+pw/(1+exp((v-tq)/qq)) > betn = exp(1.e-3*zeta*gmn*(v-vhalfn)*9.648e4/(8.315*(273.16+celsius))) > } > > FUNCTION alpl(v(mV)) { > alpl = exp(1.e-3*zetal*(v-vhalfl)*9.648e4/(8.315*(273.16+celsius))) > } > > FUNCTION betl(v(mV)) { > betl = exp(1.e-3*zetal*gml*(v-vhalfl)*9.648e4/(8.315*(273.16+celsius))) > > } > > DERIVATIVE states { > rates(v) > n' = (ninf - n)/taun > l' = (linf - l)/taul > } > > PROCEDURE rates(v (mV)) { :callable from hoc > LOCAL a,qt > qt=q10^((celsius-24)/10) > a = alpn(v) > ninf = 1/(1 + a) > taun = betn(v)/(qt*a0n*(1+a)) > if (taun<nmin) {taun=nmin} > a = alpl(v) > linf = 1/(1+ a) > taul = 0.26*(v+50)/qtl > if (taul<lmin/qtl) {taul=lmin/qtl} > } > ------ > > Many thanks, > > Andrew > > |
From: Andrew D. <and...@un...> - 2007-02-01 15:27:26
|
Hi, Am I correct in thinking that the mod file below cannot be converted to=20 ChannelML because the Q10 adjustment is applied only to the n gate and not= =20 the l gate? Are there any prospects of ChannelML changing to accommodate this (e.g.=20 <rate_adjustments> being a child of <gate> rather than of <conductance>,=20 or is this just one of those edge cases which will never be handled? =2D----- TITLE K-A channel from Klee Ficker and Heinemann : modified to account for Dax A Current ---------- : M.Migliore Jun 1997 UNITS { (mA) =3D (milliamp) (mV) =3D (millivolt) } PARAMETER { celsius v (mV) gkabar=3D.008 (mho/cm2) vhalfn=3D-1 (mV) vhalfl=3D-56 (mV) a0l=3D0.05 (/ms) a0n=3D.1 (/ms) zetan=3D-1.8 (1) zetal=3D3 (1) gmn=3D0.39 (1) gml=3D1 (1) lmin=3D2 (mS) nmin=3D0.2 (mS) pw=3D-1 (1) tq=3D-40 qq=3D5 q10=3D5 qtl=3D1 ek } NEURON { SUFFIX kad USEION k READ ek WRITE ik RANGE gkabar,gka GLOBAL ninf,linf,taul,taun,lmin } STATE { n l } ASSIGNED { ik (mA/cm2) ninf linf =20 taul taun gka } BREAKPOINT { SOLVE states METHOD cnexp gka =3D gkabar*n*l ik =3D gka*(v-ek) } INITIAL { rates(v) n=3Dninf l=3Dlinf } =46UNCTION alpn(v(mV)) { LOCAL zeta zeta=3Dzetan+pw/(1+exp((v-tq)/qq)) alpn =3D exp(1.e-3*zeta*(v-vhalfn)*9.648e4/(8.315*(273.16+celsius)))=20 } =46UNCTION betn(v(mV)) { LOCAL zeta zeta=3Dzetan+pw/(1+exp((v-tq)/qq)) betn =3D exp(1.e-3*zeta*gmn*(v-vhalfn)*9.648e4/(8.315*(273.16+celsius)))= =20 } =46UNCTION alpl(v(mV)) { alpl =3D exp(1.e-3*zetal*(v-vhalfl)*9.648e4/(8.315*(273.16+celsius)))=20 } =46UNCTION betl(v(mV)) { betl =3D exp(1.e-3*zetal*gml*(v-vhalfl)*9.648e4/(8.315*(273.16+celsius))) =20 } DERIVATIVE states { =20 rates(v) n' =3D (ninf - n)/taun l' =3D (linf - l)/taul } PROCEDURE rates(v (mV)) { :callable from hoc LOCAL a,qt qt=3Dq10^((celsius-24)/10) a =3D alpn(v) ninf =3D 1/(1 + a) taun =3D betn(v)/(qt*a0n*(1+a)) if (taun<nmin) {taun=3Dnmin} a =3D alpl(v) linf =3D 1/(1+ a) taul =3D 0.26*(v+50)/qtl if (taul<lmin/qtl) {taul=3Dlmin/qtl} } =2D----- Many thanks, Andrew =2D-=20 Dr Andrew Davison Unit=E9 de Neurosciences Int=E9gratives et Computationnelles (UNIC) Institut de Neurobiologie Alfred Fessard Centre Nationale de la Recherche Scientifique Avenue de la Terrasse 91198 Gif sur Yvette =46rance Tel: +33 1 69 82 41 96 |
From: Padraig G. <p.g...@uc...> - 2007-01-17 18:54:45
|
Hi, I suspected you weren't suggesting ditching all the lovely XML on the website in favour of flat text files... I agree that the structure of some of the specifications could be altered to adhere to a consistent usage of attributes, etc. and a concept of bindable entities would be useful to allow more complex interactions within compartments. Such an overhaul can wait until after some attempts to integrate with SBML, etc. to see what the best framework for these concepts are. I'm also trying at the moment to incorporate diffusible substances in 3D space (e.g. NO) and their effects on synaptic mechanisms, etc. The current form should be flexible enough for most channel files and if there is a substantially different form for v2.0 an XSL file can be used to update the existing ChannelML files to the new form. Regards, Padraig P.S. I appreciate the specific functionality of Neurospaces, I meant "a simulator using Neurospaces as a data container", just lazy typing... Hugo Cornelis wrote: > Hi Padraig, > > > Thanks for your answers, read on below. > > On 1/15/07, Padraig Gleeson <p.g...@uc...> wrote: > >>> I recently worked on the gate specification for Neurospaces and came >>> up with something that is quite different from the current NeuroML >>> specification. There is a lot of emphasis on consistency and >>> simplicity. >>> >>> >> Re the text format below, XML is still a lot easier to parse, and there >> currently exist portable methods and examples for mappings to >> Neuron/Genesis/HTML format. Making an XSL file to create a text file >> like below from any ChannelML file should be relatively straightforward, >> meaning existing channels could be incorporated into Neurospaces. >> >> Re the bindables concept, this should be useful when trying to link >> interacting subcellular objects (I think it's similar to how the CellML >> people link objects: >> http://www.cellml.org/examples/examples/electrophysiological_models/hh_squid_axon_1952/) >> I've to get some GENESIS3/Moose SBML generating code from Upi and I'll >> start looking into it then. The first version of that won't be the most >> stable, but the long term goal is to support a wide range of subcellular >> processes which could influence channel/synaptic behaviour and which can >> be mapped to mod/Genesis 2 or 3 and hopefully other simulators like >> Neurospaces. >> >> > > I think my question was not really clear here: the question is not > about XML vs text formats, but much more about the physical data model > used to represent a model, independent of the technology used. In the > neurospaces description format you just have biological and > mathematical 'entities with parameters', and it is powerful enough to > describe the cerebellar cortex network in all its details, including > the Purkinje cells. In the current neuroML, there is an extensive > nesting of elements, and a seemingly arbitrary mix with attributes. > Both of these two independent issues complicate the standard, and its > use. Most of my other questions are indirectly related to the more > fundamental issue of the data model. > > PS1. neurospaces is not a simulator, but a middle-ware data container > that translates a biological hierarchy into a flat matrix > representation typically used by solvers. > > PS2. I am currently working on the PC model too. So if that is ok > with you, we can work together on getting it translated to NeuroML. > > > Again thanks for your answers. > > > Hugo > > > |
From: Hugo C. <hug...@gm...> - 2007-01-15 19:44:44
|
Hi Padraig, Thanks for your answers, read on below. On 1/15/07, Padraig Gleeson <p.g...@uc...> wrote: > > I recently worked on the gate specification for Neurospaces and came > > up with something that is quite different from the current NeuroML > > specification. There is a lot of emphasis on consistency and > > simplicity. > > > Re the text format below, XML is still a lot easier to parse, and there > currently exist portable methods and examples for mappings to > Neuron/Genesis/HTML format. Making an XSL file to create a text file > like below from any ChannelML file should be relatively straightforward, > meaning existing channels could be incorporated into Neurospaces. > > Re the bindables concept, this should be useful when trying to link > interacting subcellular objects (I think it's similar to how the CellML > people link objects: > http://www.cellml.org/examples/examples/electrophysiological_models/hh_squid_axon_1952/) > I've to get some GENESIS3/Moose SBML generating code from Upi and I'll > start looking into it then. The first version of that won't be the most > stable, but the long term goal is to support a wide range of subcellular > processes which could influence channel/synaptic behaviour and which can > be mapped to mod/Genesis 2 or 3 and hopefully other simulators like > Neurospaces. > I think my question was not really clear here: the question is not about XML vs text formats, but much more about the physical data model used to represent a model, independent of the technology used. In the neurospaces description format you just have biological and mathematical 'entities with parameters', and it is powerful enough to describe the cerebellar cortex network in all its details, including the Purkinje cells. In the current neuroML, there is an extensive nesting of elements, and a seemingly arbitrary mix with attributes. Both of these two independent issues complicate the standard, and its use. Most of my other questions are indirectly related to the more fundamental issue of the data model. PS1. neurospaces is not a simulator, but a middle-ware data container that translates a biological hierarchy into a flat matrix representation typically used by solvers. PS2. I am currently working on the PC model too. So if that is ok with you, we can work together on getting it translated to NeuroML. Again thanks for your answers. Hugo -- Hugo Cornelis Ph.D. Research Imaging Center University of Texas Health Science Center at San Antonio 7703 Floyd Curl Drive San Antonio, TX 78284-6240 Phone: 210 567 8112 Fax: 210 567 8152 |
From: Padraig G. <p.g...@uc...> - 2007-01-15 18:50:51
|
Hi, Thanks for that, just the kind of meaty feedback I was hoping for on the specs! See below for some specific comments... Hugo Cornelis wrote: > Hi, > > > I have several technical question about the way channels and channel > gates are currently specified in neuroml: > > 1. I would expect a neuroml description to be an expression of a > biological or a mathematical model, so why do you need to specify a > transition element for HH gates ? The current structure is based on the ChannelBuilder in NEURON, and is designed to make the basic HH channel spec a simplified case for a kinetic scheme with multiple states and transitions between each as in http://www.morphml.org:8080/NeuroMLValidator/ViewNeuroMLFile.jsp?localFile=NeuroMLFiles/Examples/ChannelML/KChannelKS.xml. > HH gates are the result from curve > fitting, and since there are no physical states associated with HH > gates, it is confusing to have a keyword 'transition'. To me this > seems like markov channel polution. But perhaps there is a higher > level concept I missed ? > It's an artefact from a more complex conceptual model of a channel, but I assumed it wasn't too much of an abstraction of the concept. In theory though, it may be good to keep the HH case as simple as possible, to lower the conceptual barrier for people new to the spec. I don't think it should be changed at the moment, but with a major new version (2.0 say) it might be an idea to clean this up. > 2. For the element 'generic_equation', the expr attribute is a string, > which means that the parameters in the string are not readily > available for an application. This is a problem e.g. if you want to > extract parameters using a data structure transformation (XSLT and > alike). Also, you can easily write out a model that is valid at XML > level, but is mathematical nonsense and cannot be simulated. > Quite true. Care has to be taken in writing the equation so that is is in a form that will be recognisable by either NEURON or GENESIS (note the GENESIS mapping replaces all the () by {}). This simple text form is easily read and written and I would assume most other simulators/parsers would be able to handle this with perhaps a small replacement of some characters as with the brackets. It's true that the equation itself can't be validated, but hopefully no one would publish a ChannelML file which didn't run on either Neuron or Genesis. An option would be to allow specification of the expression in MathML (thus allowing validation), but this is hard to read and write. Support for that can be added in the future, but I assume the majority of custom rate equations just involve brackets, the basic maths operators and exp. The preferred way to write the expression of course would be in the A k d form. > 3. How would the H current of the 1994 Purkinje cell model be > expressed ? Can someone give an example ? > From what I've seen of the H current (anomalous rectifier) it just seems it would be implemented as 2 separate channels. I'm going to try in the near future to get the Purkinje cell running in NeuroML/neuroConstruct. I'll have a detailed look at it then, but if you've any of the other channels already in ChannelML it'd help greatly along the way.. : ) > 4. What is the exact meaning of the min_conc and the max_conc attributes ? > > These are used to provide end points for building the 2D table of the v and conc dependence of the rate variables, see: http://www.morphml.org:8080/NeuroMLValidator/Transform.jsp?localFile=NeuroMLFiles/Schemata/v1.4/Level2/ChannelML_v1.4.xsd&xslFile=NeuroMLFiles/Schemata/XSD_Readable.xsl#ConcDependence This is a case of the practicalities of implementation creeping in to a specification which ideally should have physiology only, as opposed to implementation related information. The max and min could be made optional but then the tables would have to be made large to cope with the range of possible concentrations. It's a playoff between keeping the specs pure and making sure the scripts produced are efficient implementations... > 5. I have seen some models were 'coupled' ion pools were used. Can > someone give an example of (1) how to couple ion pools, and (2) how to > tell which ion pools are influencing what channels, and (3) how to > tell which channels are influencing what pools ? I think this > question can also be expressed in a workflow context as : how to split > up a pool in a discrete set of pools with some in the inner space of a > dendrite and some close to the membrane ? > As with other features, if a published model with a particular feature hasn't been converted to NeuroML, it's not guaranteed to be supported in the spec yet. There is a certain amount of what you describe supported, e.g. the KCa channel example transmits K and is modulated by Ca. Linking each of the channels together when a number of them affect the same ions is the job of the application creating the cell scripts e.g. neuroConstruct peers into the channels present on each segment and links the messages up (this is done automatically on NEURON). Coupling of submembrane pools isn't supported yet, what's a good example in GENESIS to look at for this? That functionality will have to be supported in the future, and will also be influenced by how SBML/kinetikit like descriptions of subcellular pathways are included in Level 4. > I recently worked on the gate specification for Neurospaces and came > up with something that is quite different from the current NeuroML > specification. There is a lot of emphasis on consistency and > simplicity. > Re the text format below, XML is still a lot easier to parse, and there currently exist portable methods and examples for mappings to Neuron/Genesis/HTML format. Making an XSL file to create a text file like below from any ChannelML file should be relatively straightforward, meaning existing channels could be incorporated into Neurospaces. Re the bindables concept, this should be useful when trying to link interacting subcellular objects (I think it's similar to how the CellML people link objects: http://www.cellml.org/examples/examples/electrophysiological_models/hh_squid_axon_1952/) I've to get some GENESIS3/Moose SBML generating code from Upi and I'll start looking into it then. The first version of that won't be the most stable, but the long term goal is to support a wide range of subcellular processes which could influence channel/synaptic behaviour and which can be mapped to mod/Genesis 2 or 3 and hopefully other simulators like Neurospaces. To summarise, ChannelML doesn't support all scenarios yet, but it's good to get the gaps pointed out... Padraig > I include below an example of how the neurospaces description format > specifies a gate and a channel. I am aware of the fact that the > format is not perfect, but I think it is more simple, allows to bind > multiple ion pools, and makes all parameters easily accessible for > other applications. > > Thanks. > > > Hugo > > > CONCEPTUAL_GATE NaF > BINDABLES > INPUT Vm,OUTPUT activation > END BINDABLES > BINDINGS INPUT ..->Vm END BINDINGS > GATE_KINETIC_FORWARD forward > BINDABLES > INPUT Vm, OUTPUT rate > END BINDABLES > BINDINGS INPUT ..->Vm END BINDINGS > PARAMETERS > //m 1: multiplier > PARAMETER ( Multiplier = 35.0e3 ), > > //m 2: multiplier membrane dependence, 0.0 for no dependence > PARAMETER ( MembraneDependence = 0.0 ), > > //m 3: choose between nominator or denominator > PARAMETER ( Nominator = -1.0 ), > > //m 4: nominator or denominator offset > PARAMETER ( DeNominatorOffset = 0.0 ), > > //m 5: membrane offset > PARAMETER ( MembraneOffset = 5.0e-3 ), > > //m 6: denormalized time constant > PARAMETER ( TauDenormalizer = -10.0e-3 ), > > END PARAMETERS > END GATE_KINETIC_FORWARD > > GATE_KINETIC_BACKWARD backward > BINDABLES > INPUT Vm, OUTPUT rate > END BINDABLES > BINDINGS INPUT ..->Vm END BINDINGS > PARAMETERS > //m 1: multiplier > PARAMETER ( Multiplier = 7.0e3 ), > > //m 2: multiplier membrane dependence, 0.0 for no dependence > PARAMETER ( MembraneDependence = 0.0 ), > > //m 3: choose between nominator or denominator > PARAMETER ( Nominator = -1.0 ), > > //m 4: nominator or denominator offset > PARAMETER ( DeNominatorOffset = 0.0 ), > > //m 5: membrane offset > PARAMETER ( MembraneOffset = 65.0e-3 ), > > //m 6: denormalized time constant > PARAMETER ( TauDenormalizer = 20.0e-3 ), > END PARAMETERS > END GATE_KINETIC_BACKWARD > PARAMETERS > //m initial value, commonly forward over backward steady states > PARAMETER ( state_init = 0.7612305421 ), > PARAMETER ( POWER = 3.0 ), > END PARAMETERS > END CONCEPTUAL_GATE > > // below we use the gate and put it in a channel > // that gives rise to a current and conductance. > // > // note: does not specify an inactivation 'gate' > > CHANNEL NaF > BINDABLES > INPUT Vm,OUTPUT Gk,OUTPUT Ik > END BINDABLES > > CHILD naf_gate naf_gate > END CHILD > END CHANNEL > > > |
From: Hugo C. <hug...@gm...> - 2007-01-11 16:44:02
|
Hi, I have several technical question about the way channels and channel gates are currently specified in neuroml: 1. I would expect a neuroml description to be an expression of a biological or a mathematical model, so why do you need to specify a transition element for HH gates ? HH gates are the result from curve fitting, and since there are no physical states associated with HH gates, it is confusing to have a keyword 'transition'. To me this seems like markov channel polution. But perhaps there is a higher level concept I missed ? 2. For the element 'generic_equation', the expr attribute is a string, which means that the parameters in the string are not readily available for an application. This is a problem e.g. if you want to extract parameters using a data structure transformation (XSLT and alike). Also, you can easily write out a model that is valid at XML level, but is mathematical nonsense and cannot be simulated. 3. How would the H current of the 1994 Purkinje cell model be expressed ? Can someone give an example ? 4. What is the exact meaning of the min_conc and the max_conc attributes ? 5. I have seen some models were 'coupled' ion pools were used. Can someone give an example of (1) how to couple ion pools, and (2) how to tell which ion pools are influencing what channels, and (3) how to tell which channels are influencing what pools ? I think this question can also be expressed in a workflow context as : how to split up a pool in a discrete set of pools with some in the inner space of a dendrite and some close to the membrane ? I recently worked on the gate specification for Neurospaces and came up with something that is quite different from the current NeuroML specification. There is a lot of emphasis on consistency and simplicity. I include below an example of how the neurospaces description format specifies a gate and a channel. I am aware of the fact that the format is not perfect, but I think it is more simple, allows to bind multiple ion pools, and makes all parameters easily accessible for other applications. Thanks. Hugo CONCEPTUAL_GATE NaF BINDABLES INPUT Vm,OUTPUT activation END BINDABLES BINDINGS INPUT ..->Vm END BINDINGS GATE_KINETIC_FORWARD forward BINDABLES INPUT Vm, OUTPUT rate END BINDABLES BINDINGS INPUT ..->Vm END BINDINGS PARAMETERS //m 1: multiplier PARAMETER ( Multiplier = 35.0e3 ), //m 2: multiplier membrane dependence, 0.0 for no dependence PARAMETER ( MembraneDependence = 0.0 ), //m 3: choose between nominator or denominator PARAMETER ( Nominator = -1.0 ), //m 4: nominator or denominator offset PARAMETER ( DeNominatorOffset = 0.0 ), //m 5: membrane offset PARAMETER ( MembraneOffset = 5.0e-3 ), //m 6: denormalized time constant PARAMETER ( TauDenormalizer = -10.0e-3 ), END PARAMETERS END GATE_KINETIC_FORWARD GATE_KINETIC_BACKWARD backward BINDABLES INPUT Vm, OUTPUT rate END BINDABLES BINDINGS INPUT ..->Vm END BINDINGS PARAMETERS //m 1: multiplier PARAMETER ( Multiplier = 7.0e3 ), //m 2: multiplier membrane dependence, 0.0 for no dependence PARAMETER ( MembraneDependence = 0.0 ), //m 3: choose between nominator or denominator PARAMETER ( Nominator = -1.0 ), //m 4: nominator or denominator offset PARAMETER ( DeNominatorOffset = 0.0 ), //m 5: membrane offset PARAMETER ( MembraneOffset = 65.0e-3 ), //m 6: denormalized time constant PARAMETER ( TauDenormalizer = 20.0e-3 ), END PARAMETERS END GATE_KINETIC_BACKWARD PARAMETERS //m initial value, commonly forward over backward steady states PARAMETER ( state_init = 0.7612305421 ), PARAMETER ( POWER = 3.0 ), END PARAMETERS END CONCEPTUAL_GATE // below we use the gate and put it in a channel // that gives rise to a current and conductance. // // note: does not specify an inactivation 'gate' CHANNEL NaF BINDABLES INPUT Vm,OUTPUT Gk,OUTPUT Ik END BINDABLES CHILD naf_gate naf_gate END CHILD END CHANNEL -- Hugo Cornelis Ph.D. Research Imaging Center University of Texas Health Science Center at San Antonio 7703 Floyd Curl Drive San Antonio, TX 78284-6240 Phone: 210 567 8112 Fax: 210 567 8152 |
From: Josef S. <js...@ya...> - 2006-10-20 18:41:54
|
--- Hugo Cornelis <hug...@gm...> wrote: > Thanks for your answer. Read on below ... > > On 10/19/06, Mike Schachter <mik...@gm...> wrote: > > A Markov model has a number of states, some of which are "open" states. The > > open channel fraction is given by the number of channels in the open state. > > Each > > state can be connected to one or more other states, and forward and > backward > > rate equations similar to the HH alpha/beta functions are given for each > > transition. > > The change in the population of each state is given by an ODE, and the time > > evolution > > of the state populations (and thereby the open channel fraction) can be > > computed by solving this ODE iteratively. > > > > More questions and comments : > > 1. The ODEs model the activity of multiple channels. So they have a > 'probabilistic nature' and not a 'stochastic nature'. The latter > approach makes sense for highly accurate single channel modeling, but > the model equations and variables will be different, ie. not ODEs. So > we restrict ourselves for a moment to the probabilistic approach, > because it makes more sense for a single cell solver. > > 1. What do you mean with 'solving this ODE iteratively' ? Is this > more than one iteration is needed for a single time step ? Or do you > mean many iterations for a full simulation, but one iteration per time > step ? > > If the graph that connects the channel states can have an arbitrary > topology, then multiple iterations per time step may be needed to > obtain a sufficient accuracy. > > 1. Do you have an idea of the time constants for the ODEs ? Are they > substantially faster than e.g. the Na time constant ? > > 1. I consider it important to have a good test case, because it > defines a working target and provides a frame for other developers to > contribute. In a good test case, we should have at least the > following : test with a single compartment, one channel, test with a > single compartment, two channels, tests with two compartments, one > channel each, tests with two compartments, multiple channels, next > something alike with branches. Additionally the test scripts for the > same tests using a different simulator should be available as well. > Do you have a good case that can be used as a starting point to test > the Markov channel kinetics ? > > > Sorry I'm short on the details, but I've seen this method implemented in > > NeuronC, and > > another standalone channel simulator, and I'd be happy to help you out with > > the > > implementation for heccer. The implementation in NeuronC is very similar to > > that of a > > HH channel, you're absolutely right in thinking that if you can get HH > > channels to > > work in heccer, you can get Markov channels to work. > > > > Related to this and justifying to post here, I would like to specify > an interface for the two types of equations that I described > previously, such that new type of channels can be simulated to (e.g. > ionic pumps). > > Anyway, as I said, I will start defining the intermediary for the > channels next week. > > > Hugo > > > -- > Hugo Cornelis Ph.D. > > Research Imaging Center > University of Texas Health Science Center at San Antonio > 7703 Floyd Curl Drive > San Antonio, TX 78284-6240 > > Phone: 210 567 8112 > Fax: 210 567 8152 > > ------------------------------------------------------------------------- > Using Tomcat but need to do more? Need to support web services, security? > Get stuff done quickly with pre-integrated technology to make your job easier > Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 > _______________________________________________ > Neuroml-technology mailing list > Neu...@li... > https://lists.sourceforge.net/lists/listinfo/neuroml-technology > Software Engineer Linux/OSX C/C++/Java |