FacetsML
FacetsML is an attempt to create a middleware between NeuroML and PyNN :
FacetsML is the declarative equivalent to the procedural language PyNN. It is a XML dialect, which can be easily translated to PyNN with a XSLT transformation.
For example, here is the declaration of a cell type named "cellA", which is a PyNN standardized "IF_cond_exp" neuron ("Leaky integrate and fire model with fixed threshold and decaying-exponential post-synaptic conductance") :
<cells>
<cell name="cellA">
<class:IF_cond_exp v_rest="-60."
cm="1."
tau_m="20."
tau_refrac="5."
tau_syn_E="5."
tau_syn_I="10."
e_rev_E="0."
e_rev_I="-80."
v_thresh="-50."
v_reset="-60."
i_offset="0.1"
v_init="-65.0" />
</cell>
</cells>
That would be then translated to PyNN as :
cellclass['cellA'] = IF_cond_exp
cellparams['cellA'] = { 'v_rest': -60., 'cm': 1., 'tau_m': 20., 'tau_refrac': 5., 'tau_syn_E': 5., 'tau_syn_I': 10., 'e_rev_E': 0., 'e_rev_I': -80., 'v_thresh': -50., 'v_reset': -60., 'i_offset': 0.1, 'v_init': -65.0, }
That type of cell can then be used in a population that way :
<populations>
<population name="exc_cells" label="Excitatory_Cells">
<dim size="4000"/>
<cell_type name="cellA"/>
<randomInit rng="rng">
<rand:uniform min="-60." max="-50."/>
</randomInit>
</population>
</populations>
translated in PyNN as :
exc_cells = Population((4000,), cellclass = cellclass['cellA'], cellparams = cellparams['cellA'], label="Excitatory_Cells", )
exc_cells.randomInit(RandomDistribution('uniform',[-60., -50., ], rng=rng))
And that population will be used in a projection that way :
<projections>
<projection name="e2e"
presynaptic_population_name="exc_cells"
postsynaptic_population_name="exc_cells"
method="fixedProbability"
weight="0.004"
target="excitatory"
rng="rng">
<methodParameter name="p_connect" value="0.02"/>
</projection>
</projections>
translated in PyNN as :
e2e = Projection(exc_cells, exc_cells, method="fixedProbability", methodParameters=0.02, target="excitatory", rng=rng, )
The way the cells, populations and projections are declared is inspired by NeuroML.
Next step is to translate FacetsML to NeuroML and the opposite :
Online Converter (only available to Facets members)
FacetsML web form
Download
Bugs/Enhancements
The translation between NeuroML and FacetsML is discussed there, please feel free to contribute (members only) :
If you find a bug in FacetsML, or wish to request a new feature, please click on "New Ticket" in the menu above and fill in the form.
The Neural Ensemble Ring
Other projects at http://neuralensemble.org:
- NeuroTools -- a set of tools written in Python to manage, store and analyze computational neuroscience simulations.
- nrnpy -- an unofficial, experimental branch of the NEURON codebase, focused on improving and extending the integration of the Python programming language into NEURON.


