Towards real-time communication between in vivo neurophysiological data sources and simulator-based brain biomimetic models
Identifieur interne : 000681 ( Pmc/Corpus ); précédent : 000680; suivant : 000682Towards real-time communication between in vivo neurophysiological data sources and simulator-based brain biomimetic models
Auteurs : Giljae Lee ; Andréa Matsunaga ; Salvador Dura-Bernal ; Wenjie Zhang ; William W. Lytton ; Joseph T. Francis ; José Ab FortesSource :
- Journal of computational surgery [ 2194-3990 ] ; 2014.
Abstract
Development of more sophisticated implantable brain-machine interface (BMI) will require both interpretation of the neurophysiological data being measured and subsequent determination of signals to be delivered back to the brain. Computational models are the heart of the machine of BMI and therefore an essential tool in both of these processes. One approach is to utilize brain biomimetic models (BMMs) to develop and instantiate these algorithms. These then must be connected as hybrid systems in order to interface the BMM with
Url:
DOI: 10.1186/s40244-014-0012-3
PubMed: 26702394
PubMed Central: 4685709
Links to Exploration step
PMC:4685709Le document en format XML
<record><TEI><teiHeader><fileDesc><titleStmt><title xml:lang="en">Towards real-time communication between <italic>in vivo</italic>
neurophysiological data sources and simulator-based brain biomimetic models</title>
<author><name sortKey="Lee, Giljae" sort="Lee, Giljae" uniqKey="Lee G" first="Giljae" last="Lee">Giljae Lee</name>
<affiliation><nlm:aff id="A1">Department of Electrical and Computer Engineering, University of Florida, P.O. Box 116200, 216 Larsen Hall, Gainesville 32611, FL, USA</nlm:aff>
</affiliation>
</author>
<author><name sortKey="Matsunaga, Andrea" sort="Matsunaga, Andrea" uniqKey="Matsunaga A" first="Andréa" last="Matsunaga">Andréa Matsunaga</name>
<affiliation><nlm:aff id="A1">Department of Electrical and Computer Engineering, University of Florida, P.O. Box 116200, 216 Larsen Hall, Gainesville 32611, FL, USA</nlm:aff>
</affiliation>
</author>
<author><name sortKey="Dura Bernal, Salvador" sort="Dura Bernal, Salvador" uniqKey="Dura Bernal S" first="Salvador" last="Dura-Bernal">Salvador Dura-Bernal</name>
<affiliation><nlm:aff id="A3">Department of Physiology and Pharmacology, State University of New York Downstate Medical Center, 450 Clarkson Avenue, Brooklyn 11203, NY, USA</nlm:aff>
</affiliation>
</author>
<author><name sortKey="Zhang, Wenjie" sort="Zhang, Wenjie" uniqKey="Zhang W" first="Wenjie" last="Zhang">Wenjie Zhang</name>
<affiliation><nlm:aff id="A1">Department of Electrical and Computer Engineering, University of Florida, P.O. Box 116200, 216 Larsen Hall, Gainesville 32611, FL, USA</nlm:aff>
</affiliation>
</author>
<author><name sortKey="Lytton, William W" sort="Lytton, William W" uniqKey="Lytton W" first="William W" last="Lytton">William W. Lytton</name>
<affiliation><nlm:aff id="A3">Department of Physiology and Pharmacology, State University of New York Downstate Medical Center, 450 Clarkson Avenue, Brooklyn 11203, NY, USA</nlm:aff>
</affiliation>
<affiliation><nlm:aff id="A4">Department of Neurology, State University New York Downstate Medical Center, 450 Clarkson Avenue, Brooklyn 11203, NY, USA</nlm:aff>
</affiliation>
<affiliation><nlm:aff id="A5">Department of Neurology, Kings County Hospital, 450 Clarkson Avenue, Brooklyn 11203, NY, USA</nlm:aff>
</affiliation>
<affiliation><nlm:aff id="A6">Joint Program in Biomedical Engineering at Polytechnic Institute of New York University and State University of New York Downstate, 450 Clarkson Avenue, Brooklyn 11203, NY, USA</nlm:aff>
</affiliation>
<affiliation><nlm:aff id="A7">Program in Neural and Behavioral Science at State University of New York Downstate, 450 Clarkson Avenue, Brooklyn, NY, 11203, USA</nlm:aff>
</affiliation>
<affiliation><nlm:aff id="A8">The Robert F. Furchgott Center for Neural & Behavioral Science, State University of New York Downstate Medical Center, 450 Clarkson Avenue, Brooklyn, NY, 11203, USA</nlm:aff>
</affiliation>
</author>
<author><name sortKey="Francis, Joseph T" sort="Francis, Joseph T" uniqKey="Francis J" first="Joseph T" last="Francis">Joseph T. Francis</name>
<affiliation><nlm:aff id="A3">Department of Physiology and Pharmacology, State University of New York Downstate Medical Center, 450 Clarkson Avenue, Brooklyn 11203, NY, USA</nlm:aff>
</affiliation>
<affiliation><nlm:aff id="A6">Joint Program in Biomedical Engineering at Polytechnic Institute of New York University and State University of New York Downstate, 450 Clarkson Avenue, Brooklyn 11203, NY, USA</nlm:aff>
</affiliation>
<affiliation><nlm:aff id="A7">Program in Neural and Behavioral Science at State University of New York Downstate, 450 Clarkson Avenue, Brooklyn, NY, 11203, USA</nlm:aff>
</affiliation>
<affiliation><nlm:aff id="A8">The Robert F. Furchgott Center for Neural & Behavioral Science, State University of New York Downstate Medical Center, 450 Clarkson Avenue, Brooklyn, NY, 11203, USA</nlm:aff>
</affiliation>
</author>
<author><name sortKey="Fortes, Jose Ab" sort="Fortes, Jose Ab" uniqKey="Fortes J" first="José Ab" last="Fortes">José Ab Fortes</name>
<affiliation><nlm:aff id="A1">Department of Electrical and Computer Engineering, University of Florida, P.O. Box 116200, 216 Larsen Hall, Gainesville 32611, FL, USA</nlm:aff>
</affiliation>
<affiliation><nlm:aff id="A2">Department of Computer and Information Science and Engineering, University of Florida, P.O. Box 116120, E301 CSE Building, Gainesville 32611, FL, USA</nlm:aff>
</affiliation>
</author>
</titleStmt>
<publicationStmt><idno type="wicri:source">PMC</idno>
<idno type="pmid">26702394</idno>
<idno type="pmc">4685709</idno>
<idno type="url">http://www.ncbi.nlm.nih.gov/pmc/articles/PMC4685709</idno>
<idno type="RBID">PMC:4685709</idno>
<idno type="doi">10.1186/s40244-014-0012-3</idno>
<date when="2014">2014</date>
<idno type="wicri:Area/Pmc/Corpus">000681</idno>
</publicationStmt>
<sourceDesc><biblStruct><analytic><title xml:lang="en" level="a" type="main">Towards real-time communication between <italic>in vivo</italic>
neurophysiological data sources and simulator-based brain biomimetic models</title>
<author><name sortKey="Lee, Giljae" sort="Lee, Giljae" uniqKey="Lee G" first="Giljae" last="Lee">Giljae Lee</name>
<affiliation><nlm:aff id="A1">Department of Electrical and Computer Engineering, University of Florida, P.O. Box 116200, 216 Larsen Hall, Gainesville 32611, FL, USA</nlm:aff>
</affiliation>
</author>
<author><name sortKey="Matsunaga, Andrea" sort="Matsunaga, Andrea" uniqKey="Matsunaga A" first="Andréa" last="Matsunaga">Andréa Matsunaga</name>
<affiliation><nlm:aff id="A1">Department of Electrical and Computer Engineering, University of Florida, P.O. Box 116200, 216 Larsen Hall, Gainesville 32611, FL, USA</nlm:aff>
</affiliation>
</author>
<author><name sortKey="Dura Bernal, Salvador" sort="Dura Bernal, Salvador" uniqKey="Dura Bernal S" first="Salvador" last="Dura-Bernal">Salvador Dura-Bernal</name>
<affiliation><nlm:aff id="A3">Department of Physiology and Pharmacology, State University of New York Downstate Medical Center, 450 Clarkson Avenue, Brooklyn 11203, NY, USA</nlm:aff>
</affiliation>
</author>
<author><name sortKey="Zhang, Wenjie" sort="Zhang, Wenjie" uniqKey="Zhang W" first="Wenjie" last="Zhang">Wenjie Zhang</name>
<affiliation><nlm:aff id="A1">Department of Electrical and Computer Engineering, University of Florida, P.O. Box 116200, 216 Larsen Hall, Gainesville 32611, FL, USA</nlm:aff>
</affiliation>
</author>
<author><name sortKey="Lytton, William W" sort="Lytton, William W" uniqKey="Lytton W" first="William W" last="Lytton">William W. Lytton</name>
<affiliation><nlm:aff id="A3">Department of Physiology and Pharmacology, State University of New York Downstate Medical Center, 450 Clarkson Avenue, Brooklyn 11203, NY, USA</nlm:aff>
</affiliation>
<affiliation><nlm:aff id="A4">Department of Neurology, State University New York Downstate Medical Center, 450 Clarkson Avenue, Brooklyn 11203, NY, USA</nlm:aff>
</affiliation>
<affiliation><nlm:aff id="A5">Department of Neurology, Kings County Hospital, 450 Clarkson Avenue, Brooklyn 11203, NY, USA</nlm:aff>
</affiliation>
<affiliation><nlm:aff id="A6">Joint Program in Biomedical Engineering at Polytechnic Institute of New York University and State University of New York Downstate, 450 Clarkson Avenue, Brooklyn 11203, NY, USA</nlm:aff>
</affiliation>
<affiliation><nlm:aff id="A7">Program in Neural and Behavioral Science at State University of New York Downstate, 450 Clarkson Avenue, Brooklyn, NY, 11203, USA</nlm:aff>
</affiliation>
<affiliation><nlm:aff id="A8">The Robert F. Furchgott Center for Neural & Behavioral Science, State University of New York Downstate Medical Center, 450 Clarkson Avenue, Brooklyn, NY, 11203, USA</nlm:aff>
</affiliation>
</author>
<author><name sortKey="Francis, Joseph T" sort="Francis, Joseph T" uniqKey="Francis J" first="Joseph T" last="Francis">Joseph T. Francis</name>
<affiliation><nlm:aff id="A3">Department of Physiology and Pharmacology, State University of New York Downstate Medical Center, 450 Clarkson Avenue, Brooklyn 11203, NY, USA</nlm:aff>
</affiliation>
<affiliation><nlm:aff id="A6">Joint Program in Biomedical Engineering at Polytechnic Institute of New York University and State University of New York Downstate, 450 Clarkson Avenue, Brooklyn 11203, NY, USA</nlm:aff>
</affiliation>
<affiliation><nlm:aff id="A7">Program in Neural and Behavioral Science at State University of New York Downstate, 450 Clarkson Avenue, Brooklyn, NY, 11203, USA</nlm:aff>
</affiliation>
<affiliation><nlm:aff id="A8">The Robert F. Furchgott Center for Neural & Behavioral Science, State University of New York Downstate Medical Center, 450 Clarkson Avenue, Brooklyn, NY, 11203, USA</nlm:aff>
</affiliation>
</author>
<author><name sortKey="Fortes, Jose Ab" sort="Fortes, Jose Ab" uniqKey="Fortes J" first="José Ab" last="Fortes">José Ab Fortes</name>
<affiliation><nlm:aff id="A1">Department of Electrical and Computer Engineering, University of Florida, P.O. Box 116200, 216 Larsen Hall, Gainesville 32611, FL, USA</nlm:aff>
</affiliation>
<affiliation><nlm:aff id="A2">Department of Computer and Information Science and Engineering, University of Florida, P.O. Box 116120, E301 CSE Building, Gainesville 32611, FL, USA</nlm:aff>
</affiliation>
</author>
</analytic>
<series><title level="j">Journal of computational surgery</title>
<idno type="eISSN">2194-3990</idno>
<imprint><date when="2014">2014</date>
</imprint>
</series>
</biblStruct>
</sourceDesc>
</fileDesc>
<profileDesc><textClass></textClass>
</profileDesc>
</teiHeader>
<front><div type="abstract" xml:lang="en"><p id="P1">Development of more sophisticated implantable brain-machine interface (BMI) will require both interpretation of the neurophysiological data being measured and subsequent determination of signals to be delivered back to the brain. Computational models are the heart of the machine of BMI and therefore an essential tool in both of these processes. One approach is to utilize brain biomimetic models (BMMs) to develop and instantiate these algorithms. These then must be connected as hybrid systems in order to interface the BMM with <italic>in vivo</italic>
data acquisition devices and prosthetic devices. The combined system then provides a test bed for neuroprosthetic rehabilitative solutions and medical devices for the repair and enhancement of damaged brain. We propose here a computer network-based design for this purpose, detailing its internal modules and data flows. We describe a prototype implementation of the design, enabling interaction between the Plexon Multichannel Acquisition Processor (MAP) server, a commercial tool to collect signals from microelectrodes implanted in a live subject and a BMM, a NEURON-based model of sensorimotor cortex capable of controlling a virtual arm. The prototype implementation supports an online mode for real-time simulations, as well as an offline mode for data analysis and simulations without real-time constraints, and provides binning operations to discretize continuous input to the BMM and filtering operations for dealing with noise. Evaluation demonstrated that the implementation successfully delivered monkey spiking activity to the BMM through LAN environments, respecting real-time constraints.</p>
</div>
</front>
<back><div1 type="bibliography"><listBibl><biblStruct><analytic><author><name sortKey="Leuthardt, Ec" uniqKey="Leuthardt E">EC Leuthardt</name>
</author>
<author><name sortKey="Schalk, G" uniqKey="Schalk G">G Schalk</name>
</author>
<author><name sortKey="Moran, D" uniqKey="Moran D">D Moran</name>
</author>
<author><name sortKey="Ojemann, Jg" uniqKey="Ojemann J">JG Ojemann</name>
</author>
</analytic>
</biblStruct>
<biblStruct><analytic><author><name sortKey="Sanchez, Jc" uniqKey="Sanchez J">JC Sanchez</name>
</author>
<author><name sortKey="Lytton, Ww" uniqKey="Lytton W">WW Lytton</name>
</author>
<author><name sortKey="Carmena, Jm" uniqKey="Carmena J">JM Carmena</name>
</author>
<author><name sortKey="Principe, Jc" uniqKey="Principe J">JC Principe</name>
</author>
<author><name sortKey="Fortes, J" uniqKey="Fortes J">J Fortes</name>
</author>
<author><name sortKey="Barbour, Rl" uniqKey="Barbour R">RL Barbour</name>
</author>
<author><name sortKey="Francis, Jt" uniqKey="Francis J">JT Francis</name>
</author>
</analytic>
</biblStruct>
<biblStruct><analytic><author><name sortKey="Chadderdon, Gl" uniqKey="Chadderdon G">GL Chadderdon</name>
</author>
<author><name sortKey="Neymotin, Sa" uniqKey="Neymotin S">SA Neymotin</name>
</author>
<author><name sortKey="Kerr, Cc" uniqKey="Kerr C">CC Kerr</name>
</author>
<author><name sortKey="Lytton, Ww" uniqKey="Lytton W">WW Lytton</name>
</author>
</analytic>
</biblStruct>
<biblStruct><analytic><author><name sortKey="Neymotin, Sa" uniqKey="Neymotin S">SA Neymotin</name>
</author>
<author><name sortKey="Chadderdon, Gl" uniqKey="Chadderdon G">GL Chadderdon</name>
</author>
<author><name sortKey="Kerr, Cc" uniqKey="Kerr C">CC Kerr</name>
</author>
<author><name sortKey="Francis, Jt" uniqKey="Francis J">JT Francis</name>
</author>
<author><name sortKey="Lytton, Ww" uniqKey="Lytton W">WW Lytton</name>
</author>
</analytic>
</biblStruct>
<biblStruct><analytic><author><name sortKey="Dura Bernal, S" uniqKey="Dura Bernal S">S Dura-Bernal</name>
</author>
<author><name sortKey="Chadderdon, Gl" uniqKey="Chadderdon G">GL Chadderdon</name>
</author>
<author><name sortKey="Neymotin, Sa" uniqKey="Neymotin S">SA Neymotin</name>
</author>
<author><name sortKey="Xianlian, Z" uniqKey="Xianlian Z">Z Xianlian</name>
</author>
<author><name sortKey="Przekwas, A" uniqKey="Przekwas A">A Przekwas</name>
</author>
<author><name sortKey="Francis, Jt" uniqKey="Francis J">JT Francis</name>
</author>
<author><name sortKey="Lytton, Ww" uniqKey="Lytton W">WW Lytton</name>
</author>
</analytic>
</biblStruct>
<biblStruct><analytic><author><name sortKey="Kerr, Cc" uniqKey="Kerr C">CC Kerr</name>
</author>
<author><name sortKey="Neymotin, Sa" uniqKey="Neymotin S">SA Neymotin</name>
</author>
<author><name sortKey="Chadderdon, Gl" uniqKey="Chadderdon G">GL Chadderdon</name>
</author>
<author><name sortKey="Fietkiewicz, Ct" uniqKey="Fietkiewicz C">CT Fietkiewicz</name>
</author>
<author><name sortKey="Francis, Jt" uniqKey="Francis J">JT Francis</name>
</author>
<author><name sortKey="Lytton, Ww" uniqKey="Lytton W">WW Lytton</name>
</author>
</analytic>
</biblStruct>
<biblStruct><analytic><author><name sortKey="Song, W" uniqKey="Song W">W Song</name>
</author>
<author><name sortKey="Kerr, Cc" uniqKey="Kerr C">CC Kerr</name>
</author>
<author><name sortKey="Lytton, Ww" uniqKey="Lytton W">WW Lytton</name>
</author>
<author><name sortKey="Francis, Jt" uniqKey="Francis J">JT Francis</name>
</author>
</analytic>
</biblStruct>
<biblStruct><analytic><author><name sortKey="Chadderdon, Gl" uniqKey="Chadderdon G">GL Chadderdon</name>
</author>
<author><name sortKey="Mohan, A" uniqKey="Mohan A">A Mohan</name>
</author>
<author><name sortKey="Suter, Ba" uniqKey="Suter B">BA Suter</name>
</author>
<author><name sortKey="Neymotin, Sa" uniqKey="Neymotin S">SA Neymotin</name>
</author>
<author><name sortKey="Kerr, Cc" uniqKey="Kerr C">CC Kerr</name>
</author>
<author><name sortKey="Francis, Jt" uniqKey="Francis J">JT Francis</name>
</author>
<author><name sortKey="Shepherd, Gmg" uniqKey="Shepherd G">GMG Shepherd</name>
</author>
<author><name sortKey="Lytton, Ww" uniqKey="Lytton W">WW Lytton</name>
</author>
</analytic>
</biblStruct>
<biblStruct><analytic><author><name sortKey="Neymotin, Sa" uniqKey="Neymotin S">SA Neymotin</name>
</author>
<author><name sortKey="Lee, H" uniqKey="Lee H">H Lee</name>
</author>
<author><name sortKey="Park, E" uniqKey="Park E">E Park</name>
</author>
<author><name sortKey="Fenton, Aa" uniqKey="Fenton A">AA Fenton</name>
</author>
<author><name sortKey="Lytton, Ww" uniqKey="Lytton W">WW Lytton</name>
</author>
</analytic>
</biblStruct>
<biblStruct><analytic><author><name sortKey="Dura Bernal, S" uniqKey="Dura Bernal S">S Dura-Bernal</name>
</author>
<author><name sortKey="Chadderdon, Gl" uniqKey="Chadderdon G">GL Chadderdon</name>
</author>
<author><name sortKey="Neymotin, Sa" uniqKey="Neymotin S">SA Neymotin</name>
</author>
<author><name sortKey="Francis, Jt" uniqKey="Francis J">JT Francis</name>
</author>
<author><name sortKey="Lytton, Ww" uniqKey="Lytton W">WW Lytton</name>
</author>
</analytic>
</biblStruct>
<biblStruct><analytic><author><name sortKey="Piwkowska, Z" uniqKey="Piwkowska Z">Z Piwkowska</name>
</author>
<author><name sortKey="Destexhe, A" uniqKey="Destexhe A">A Destexhe</name>
</author>
<author><name sortKey="Bal, T" uniqKey="Bal T">T Bal</name>
</author>
</analytic>
</biblStruct>
<biblStruct><analytic><author><name sortKey="Brette, R" uniqKey="Brette R">R Brette</name>
</author>
<author><name sortKey="Rudolph, M" uniqKey="Rudolph M">M Rudolph</name>
</author>
<author><name sortKey="Carnevale, T" uniqKey="Carnevale T">T Carnevale</name>
</author>
<author><name sortKey="Hines, M" uniqKey="Hines M">M Hines</name>
</author>
<author><name sortKey="Beeman, D" uniqKey="Beeman D">D Beeman</name>
</author>
<author><name sortKey="Bower, Jm" uniqKey="Bower J">JM Bower</name>
</author>
<author><name sortKey="Diesmann, M" uniqKey="Diesmann M">M Diesmann</name>
</author>
<author><name sortKey="Morrison, A" uniqKey="Morrison A">A Morrison</name>
</author>
<author><name sortKey="Goodman, Ph" uniqKey="Goodman P">PH Goodman</name>
</author>
<author><name sortKey="Harris, Fc" uniqKey="Harris F">FC Harris</name>
</author>
<author><name sortKey="Zirpe, M" uniqKey="Zirpe M">M Zirpe</name>
</author>
<author><name sortKey="Natschl Ger, T" uniqKey="Natschl Ger T">T Natschläger</name>
</author>
<author><name sortKey="Pecevski, D" uniqKey="Pecevski D">D Pecevski</name>
</author>
<author><name sortKey="Ermentrout, B" uniqKey="Ermentrout B">B Ermentrout</name>
</author>
<author><name sortKey="Djurfeldt, M" uniqKey="Djurfeldt M">M Djurfeldt</name>
</author>
<author><name sortKey="Lansner, A" uniqKey="Lansner A">A Lansner</name>
</author>
<author><name sortKey="Rochel, O" uniqKey="Rochel O">O Rochel</name>
</author>
<author><name sortKey="Vieville, T" uniqKey="Vieville T">T Vieville</name>
</author>
<author><name sortKey="Muller, E" uniqKey="Muller E">E Muller</name>
</author>
<author><name sortKey="Davison, Ap" uniqKey="Davison A">AP Davison</name>
</author>
<author><name sortKey="Boustani, Se" uniqKey="Boustani S">SE Boustani</name>
</author>
<author><name sortKey="Destexhe, A" uniqKey="Destexhe A">A Destexhe</name>
</author>
</analytic>
</biblStruct>
<biblStruct><analytic><author><name sortKey="Bishop, W" uniqKey="Bishop W">W Bishop</name>
</author>
<author><name sortKey="Armiger, R" uniqKey="Armiger R">R Armiger</name>
</author>
<author><name sortKey="Burck, J" uniqKey="Burck J">J Burck</name>
</author>
<author><name sortKey="Bridges, M" uniqKey="Bridges M">M Bridges</name>
</author>
<author><name sortKey="Hauschild, M" uniqKey="Hauschild M">M Hauschild</name>
</author>
<author><name sortKey="Englehart, K" uniqKey="Englehart K">K Englehart</name>
</author>
<author><name sortKey="Scheme, E" uniqKey="Scheme E">E Scheme</name>
</author>
<author><name sortKey="Vogelstein, Rj" uniqKey="Vogelstein R">RJ Vogelstein</name>
</author>
<author><name sortKey="Beaty, J" uniqKey="Beaty J">J Beaty</name>
</author>
<author><name sortKey="Harshbarger, S" uniqKey="Harshbarger S">S Harshbarger</name>
</author>
</analytic>
</biblStruct>
<biblStruct><analytic><author><name sortKey="Armiger, Rs" uniqKey="Armiger R">RS Armiger</name>
</author>
<author><name sortKey="Tenore, Fv" uniqKey="Tenore F">FV Tenore</name>
</author>
<author><name sortKey="Bishop, We" uniqKey="Bishop W">WE Bishop</name>
</author>
<author><name sortKey="Beaty, Jd" uniqKey="Beaty J">JD Beaty</name>
</author>
<author><name sortKey="Bridges, Mm" uniqKey="Bridges M">MM Bridges</name>
</author>
<author><name sortKey="Burck, Jm" uniqKey="Burck J">JM Burck</name>
</author>
<author><name sortKey="Vogelstein, Rj" uniqKey="Vogelstein R">RJ Vogelstein</name>
</author>
<author><name sortKey="Harshbarger, Sd" uniqKey="Harshbarger S">SD Harshbarger</name>
</author>
</analytic>
</biblStruct>
<biblStruct><analytic><author><name sortKey="Delorme, A" uniqKey="Delorme A">A Delorme</name>
</author>
<author><name sortKey="Kothe, C" uniqKey="Kothe C">C Kothe</name>
</author>
<author><name sortKey="Vankov, A" uniqKey="Vankov A">A Vankov</name>
</author>
<author><name sortKey="Bigdely Shamlo, N" uniqKey="Bigdely Shamlo N">N Bigdely-Shamlo</name>
</author>
<author><name sortKey="Oostenveld, R" uniqKey="Oostenveld R">R Oostenveld</name>
</author>
<author><name sortKey="Zander, To" uniqKey="Zander T">TO Zander</name>
</author>
<author><name sortKey="Makeig, S" uniqKey="Makeig S">S Makeig</name>
</author>
</analytic>
</biblStruct>
<biblStruct><analytic><author><name sortKey="Schalk, G" uniqKey="Schalk G">G Schalk</name>
</author>
<author><name sortKey="Mcfarl, Dj" uniqKey="Mcfarl D">DJ Mcfarl</name>
</author>
<author><name sortKey="Hinterberger, T" uniqKey="Hinterberger T">T Hinterberger</name>
</author>
<author><name sortKey="Birbaumer, N" uniqKey="Birbaumer N">N Birbaumer</name>
</author>
<author><name sortKey="Wolpaw, Jr" uniqKey="Wolpaw J">JR Wolpaw</name>
</author>
</analytic>
</biblStruct>
<biblStruct><analytic><author><name sortKey="Bianchi, L" uniqKey="Bianchi L">L Bianchi</name>
</author>
<author><name sortKey="Babiloni, J" uniqKey="Babiloni J">J Babiloni</name>
</author>
<author><name sortKey="Cincotti, J" uniqKey="Cincotti J">J Cincotti</name>
</author>
<author><name sortKey="Mattia, D" uniqKey="Mattia D">D Mattia</name>
</author>
<author><name sortKey="Marciani, M" uniqKey="Marciani M">M Marciani</name>
</author>
</analytic>
</biblStruct>
<biblStruct><analytic><author><name sortKey="Maggi, L" uniqKey="Maggi L">L Maggi</name>
</author>
<author><name sortKey="Parini, S" uniqKey="Parini S">S Parini</name>
</author>
<author><name sortKey="Perego, P" uniqKey="Perego P">P Perego</name>
</author>
<author><name sortKey="Andreoni, G" uniqKey="Andreoni G">G Andreoni</name>
</author>
</analytic>
</biblStruct>
<biblStruct><analytic><author><name sortKey="Renard, Y" uniqKey="Renard Y">Y Renard</name>
</author>
<author><name sortKey="Lotte, F" uniqKey="Lotte F">F Lotte</name>
</author>
<author><name sortKey="Gibert, G" uniqKey="Gibert G">G Gibert</name>
</author>
<author><name sortKey="Congedo, M" uniqKey="Congedo M">M Congedo</name>
</author>
<author><name sortKey="Maby, E" uniqKey="Maby E">E Maby</name>
</author>
<author><name sortKey="Delannoy, V" uniqKey="Delannoy V">V Delannoy</name>
</author>
<author><name sortKey="Bertrand, O" uniqKey="Bertrand O">O Bertrand</name>
</author>
<author><name sortKey="Lecuyer, A" uniqKey="Lecuyer A">A Lécuyer</name>
</author>
</analytic>
</biblStruct>
<biblStruct><analytic><author><name sortKey="Schlogl, A" uniqKey="Schlogl A">A Schlogl</name>
</author>
<author><name sortKey="Brunner, C" uniqKey="Brunner C">C Brunner</name>
</author>
</analytic>
</biblStruct>
<biblStruct><analytic><author><name sortKey="Rattanatamrong, P" uniqKey="Rattanatamrong P">P Rattanatamrong</name>
</author>
<author><name sortKey="Matsunaga, A" uniqKey="Matsunaga A">A Matsunaga</name>
</author>
<author><name sortKey="Fortes, Jab" uniqKey="Fortes J">JAB Fortes</name>
</author>
</analytic>
</biblStruct>
<biblStruct><analytic><author><name sortKey="Kerr, Cc" uniqKey="Kerr C">CC Kerr</name>
</author>
<author><name sortKey="Van Albada, Sj" uniqKey="Van Albada S">SJ Van Albada</name>
</author>
<author><name sortKey="Neymotin, Sa" uniqKey="Neymotin S">SA Neymotin</name>
</author>
<author><name sortKey="Chadderdon, Gl" uniqKey="Chadderdon G">GL Chadderdon</name>
</author>
<author><name sortKey="Robinson, Pa" uniqKey="Robinson P">PA Robinson</name>
</author>
<author><name sortKey="Lytton, Ww" uniqKey="Lytton W">WW Lytton</name>
</author>
</analytic>
</biblStruct>
<biblStruct><analytic><author><name sortKey="Migliore, M" uniqKey="Migliore M">M Migliore</name>
</author>
<author><name sortKey="Cannia, C" uniqKey="Cannia C">C Cannia</name>
</author>
<author><name sortKey="Lytton, Ww" uniqKey="Lytton W">WW Lytton</name>
</author>
<author><name sortKey="Markram, H" uniqKey="Markram H">H Markram</name>
</author>
<author><name sortKey="Hines, Ml" uniqKey="Hines M">ML Hines</name>
</author>
</analytic>
</biblStruct>
<biblStruct><analytic><author><name sortKey="Hines, Ml" uniqKey="Hines M">ML Hines</name>
</author>
<author><name sortKey="Davison, Ap" uniqKey="Davison A">AP Davison</name>
</author>
<author><name sortKey="Muller, E" uniqKey="Muller E">E Muller</name>
</author>
</analytic>
</biblStruct>
<biblStruct><analytic><author><name sortKey="Lytton, Ww" uniqKey="Lytton W">WW Lytton</name>
</author>
<author><name sortKey="Omurtag, A" uniqKey="Omurtag A">A Omurtag</name>
</author>
<author><name sortKey="Neymotin, Sa" uniqKey="Neymotin S">SA Neymotin</name>
</author>
<author><name sortKey="Hines, Ml" uniqKey="Hines M">ML Hines</name>
</author>
</analytic>
</biblStruct>
<biblStruct><analytic><author><name sortKey="Lytton, Ww" uniqKey="Lytton W">WW Lytton</name>
</author>
<author><name sortKey="Stewart, M" uniqKey="Stewart M">M Stewart</name>
</author>
</analytic>
</biblStruct>
<biblStruct><analytic><author><name sortKey="Postel, J" uniqKey="Postel J">J Postel</name>
</author>
</analytic>
</biblStruct>
<biblStruct><analytic><author><name sortKey="Postel, J" uniqKey="Postel J">J Postel</name>
</author>
</analytic>
</biblStruct>
<biblStruct><analytic><author><name sortKey="Zhang, W" uniqKey="Zhang W">W Zhang</name>
</author>
<author><name sortKey="Lee, G" uniqKey="Lee G">G Lee</name>
</author>
<author><name sortKey="Matsunaga, A" uniqKey="Matsunaga A">A Matsunaga</name>
</author>
<author><name sortKey="Fortes, Jab" uniqKey="Fortes J">JAB Fortes</name>
</author>
</analytic>
</biblStruct>
<biblStruct><analytic><author><name sortKey="Sanchez, Jc" uniqKey="Sanchez J">JC Sanchez</name>
</author>
<author><name sortKey="Tarigoppula, A" uniqKey="Tarigoppula A">A Tarigoppula</name>
</author>
<author><name sortKey="Choi, Js" uniqKey="Choi J">JS Choi</name>
</author>
<author><name sortKey="Marsh, Bt" uniqKey="Marsh B">BT Marsh</name>
</author>
<author><name sortKey="Chhatbar, Py" uniqKey="Chhatbar P">PY Chhatbar</name>
</author>
<author><name sortKey="Mahmoudi, B" uniqKey="Mahmoudi B">B Mahmoudi</name>
</author>
<author><name sortKey="Francis, Jt" uniqKey="Francis J">JT Francis</name>
</author>
</analytic>
</biblStruct>
<biblStruct><analytic><author><name sortKey="Beazley, D" uniqKey="Beazley D">D Beazley</name>
</author>
</analytic>
</biblStruct>
<biblStruct><analytic><author><name sortKey="Eppler, Jm" uniqKey="Eppler J">JM Eppler</name>
</author>
<author><name sortKey="Helias, M" uniqKey="Helias M">M Helias</name>
</author>
<author><name sortKey="Muller, E" uniqKey="Muller E">E Muller</name>
</author>
<author><name sortKey="Diesmann, M" uniqKey="Diesmann M">M Diesmann</name>
</author>
<author><name sortKey="Gewaltig, Mo" uniqKey="Gewaltig M">MO Gewaltig</name>
</author>
</analytic>
</biblStruct>
<biblStruct><analytic><author><name sortKey="Cornelis, H" uniqKey="Cornelis H">H Cornelis</name>
</author>
<author><name sortKey="Rodriguez, Al" uniqKey="Rodriguez A">AL Rodriguez</name>
</author>
<author><name sortKey="Coop, Ad" uniqKey="Coop A">AD Coop</name>
</author>
<author><name sortKey="Bower, Jm" uniqKey="Bower J">JM Bower</name>
</author>
</analytic>
</biblStruct>
<biblStruct><analytic><author><name sortKey="Gaston, D" uniqKey="Gaston D">D Gaston</name>
</author>
<author><name sortKey="Newman, C" uniqKey="Newman C">C Newman</name>
</author>
<author><name sortKey="Hansen, G" uniqKey="Hansen G">G Hansen</name>
</author>
<author><name sortKey="Lebrun Grandie, D" uniqKey="Lebrun Grandie D">D Lebrun-Grandié</name>
</author>
</analytic>
</biblStruct>
<biblStruct></biblStruct>
<biblStruct><analytic><author><name sortKey="Digiovanna, J" uniqKey="Digiovanna J">J Digiovanna</name>
</author>
<author><name sortKey="Marchal, L" uniqKey="Marchal L">L Marchal</name>
</author>
<author><name sortKey="Rattanatamrong, P" uniqKey="Rattanatamrong P">P Rattanatamrong</name>
</author>
<author><name sortKey="Zhao, M" uniqKey="Zhao M">M Zhao</name>
</author>
<author><name sortKey="Darmanjian, S" uniqKey="Darmanjian S">S Darmanjian</name>
</author>
<author><name sortKey="Mahmoudi, B" uniqKey="Mahmoudi B">B Mahmoudi</name>
</author>
<author><name sortKey="Sanchez, Jc" uniqKey="Sanchez J">JC Sanchez</name>
</author>
<author><name sortKey="Principe, Jc" uniqKey="Principe J">JC Príncipe</name>
</author>
<author><name sortKey="Hermer Vazquez, L" uniqKey="Hermer Vazquez L">L Hermer-Vazquez</name>
</author>
<author><name sortKey="Figueiredo, R" uniqKey="Figueiredo R">R Figueiredo</name>
</author>
<author><name sortKey="Fortes, Jab" uniqKey="Fortes J">JAB Fortes</name>
</author>
</analytic>
</biblStruct>
<biblStruct><analytic><author><name sortKey="Francis, Jt" uniqKey="Francis J">JT Francis</name>
</author>
</analytic>
</biblStruct>
<biblStruct><analytic><author><name sortKey="Miall, Rc" uniqKey="Miall R">RC Miall</name>
</author>
</analytic>
</biblStruct>
<biblStruct><analytic><author><name sortKey="Li, L" uniqKey="Li L">L Li</name>
</author>
<author><name sortKey="Park, Im" uniqKey="Park I">IM Park</name>
</author>
<author><name sortKey="Brockmeier, A" uniqKey="Brockmeier A">A Brockmeier</name>
</author>
<author><name sortKey="Chen, B" uniqKey="Chen B">B Chen</name>
</author>
<author><name sortKey="Seth, S" uniqKey="Seth S">S Seth</name>
</author>
<author><name sortKey="Francis, Jt" uniqKey="Francis J">JT Francis</name>
</author>
<author><name sortKey="Sanchez, Jc" uniqKey="Sanchez J">JC Sanchez</name>
</author>
<author><name sortKey="Principe, Jc" uniqKey="Principe J">JC Principe</name>
</author>
</analytic>
</biblStruct>
</listBibl>
</div1>
</back>
</TEI>
<pmc article-type="research-article"><pmc-dir>properties open_access</pmc-dir>
<pmc-dir>properties manuscript</pmc-dir>
<front><journal-meta><journal-id journal-id-type="nlm-journal-id">101661657</journal-id>
<journal-id journal-id-type="pubmed-jr-id">44027</journal-id>
<journal-id journal-id-type="nlm-ta">J Comput Surg</journal-id>
<journal-id journal-id-type="iso-abbrev">J Comput Surg</journal-id>
<journal-title-group><journal-title>Journal of computational surgery</journal-title>
</journal-title-group>
<issn pub-type="epub">2194-3990</issn>
</journal-meta>
<article-meta><article-id pub-id-type="pmid">26702394</article-id>
<article-id pub-id-type="pmc">4685709</article-id>
<article-id pub-id-type="doi">10.1186/s40244-014-0012-3</article-id>
<article-id pub-id-type="manuscript">NIHMS743532</article-id>
<article-categories><subj-group subj-group-type="heading"><subject>Article</subject>
</subj-group>
</article-categories>
<title-group><article-title>Towards real-time communication between <italic>in vivo</italic>
neurophysiological data sources and simulator-based brain biomimetic models</article-title>
</title-group>
<contrib-group><contrib contrib-type="author"><name><surname>Lee</surname>
<given-names>Giljae</given-names>
</name>
<xref ref-type="aff" rid="A1">1</xref>
<xref rid="FN1" ref-type="author-notes">*</xref>
</contrib>
<contrib contrib-type="author"><name><surname>Matsunaga</surname>
<given-names>Andréa</given-names>
</name>
<xref ref-type="aff" rid="A1">1</xref>
</contrib>
<contrib contrib-type="author"><name><surname>Dura-Bernal</surname>
<given-names>Salvador</given-names>
</name>
<xref ref-type="aff" rid="A3">3</xref>
</contrib>
<contrib contrib-type="author"><name><surname>Zhang</surname>
<given-names>Wenjie</given-names>
</name>
<xref ref-type="aff" rid="A1">1</xref>
</contrib>
<contrib contrib-type="author"><name><surname>Lytton</surname>
<given-names>William W</given-names>
</name>
<xref ref-type="aff" rid="A3">3</xref>
<xref ref-type="aff" rid="A4">4</xref>
<xref ref-type="aff" rid="A5">5</xref>
<xref ref-type="aff" rid="A6">6</xref>
<xref ref-type="aff" rid="A7">7</xref>
<xref ref-type="aff" rid="A8">8</xref>
</contrib>
<contrib contrib-type="author"><name><surname>Francis</surname>
<given-names>Joseph T</given-names>
</name>
<xref ref-type="aff" rid="A3">3</xref>
<xref ref-type="aff" rid="A6">6</xref>
<xref ref-type="aff" rid="A7">7</xref>
<xref ref-type="aff" rid="A8">8</xref>
</contrib>
<contrib contrib-type="author"><name><surname>Fortes</surname>
<given-names>José AB</given-names>
</name>
<xref ref-type="aff" rid="A1">1</xref>
<xref ref-type="aff" rid="A2">2</xref>
</contrib>
</contrib-group>
<aff id="A1"><label>1</label>
Department of Electrical and Computer Engineering, University of Florida, P.O. Box 116200, 216 Larsen Hall, Gainesville 32611, FL, USA</aff>
<aff id="A2"><label>2</label>
Department of Computer and Information Science and Engineering, University of Florida, P.O. Box 116120, E301 CSE Building, Gainesville 32611, FL, USA</aff>
<aff id="A3"><label>3</label>
Department of Physiology and Pharmacology, State University of New York Downstate Medical Center, 450 Clarkson Avenue, Brooklyn 11203, NY, USA</aff>
<aff id="A4"><label>4</label>
Department of Neurology, State University New York Downstate Medical Center, 450 Clarkson Avenue, Brooklyn 11203, NY, USA</aff>
<aff id="A5"><label>5</label>
Department of Neurology, Kings County Hospital, 450 Clarkson Avenue, Brooklyn 11203, NY, USA</aff>
<aff id="A6"><label>6</label>
Joint Program in Biomedical Engineering at Polytechnic Institute of New York University and State University of New York Downstate, 450 Clarkson Avenue, Brooklyn 11203, NY, USA</aff>
<aff id="A7"><label>7</label>
Program in Neural and Behavioral Science at State University of New York Downstate, 450 Clarkson Avenue, Brooklyn, NY, 11203, USA</aff>
<aff id="A8"><label>8</label>
The Robert F. Furchgott Center for Neural & Behavioral Science, State University of New York Downstate Medical Center, 450 Clarkson Avenue, Brooklyn, NY, 11203, USA</aff>
<author-notes><corresp id="FN1"><label>*</label>
Correspondence: <email>giljael@acis.ufl.edu</email>
</corresp>
<fn id="FN2"><p><bold>Authors’ information</bold>
</p>
<p>GL and WZ are research assistants in the ACIS Lab. of Electrical and Computer Engineering at the University of Florida. AM is an assistant research professor of the Electrical and Computer Engineering at the University of Florida. In the department of the Physiology and Pharmacology at the State University of New York Downstate Medical Center, SDB is a Postdoctoral fellow and WWL and JTF are professors. JABF is the AT&T Eminent Scholar and professor of Electrical and Computer Engineering and Computer and Information Science and Engineering at the University of Florida.</p>
</fn>
</author-notes>
<pub-date pub-type="nihms-submitted"><day>11</day>
<month>12</month>
<year>2015</year>
</pub-date>
<pub-date pub-type="ppub"><month>11</month>
<year>2014</year>
</pub-date>
<pub-date pub-type="pmc-release"><day>21</day>
<month>12</month>
<year>2015</year>
</pub-date>
<volume>3</volume>
<issue>12</issue>
<fpage>1</fpage>
<lpage>23</lpage>
<pmc-comment>elocation-id from pubmed: 10.1186/s40244-014-0012-3</pmc-comment>
<permissions><license license-type="open-access" xlink:href="http://creativecommons.org/licenses/by/4.0"><license-p><pmc-comment>CREATIVE COMMONS</pmc-comment>
This is an Open Access article distributed under the terms of the Creative Commons Attribution License (<ext-link ext-link-type="uri" xlink:href="http://creativecommons.org/licenses/by/4.0">http://creativecommons.org/licenses/by/4.0</ext-link>
), which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly credited.</license-p>
</license>
</permissions>
<abstract><p id="P1">Development of more sophisticated implantable brain-machine interface (BMI) will require both interpretation of the neurophysiological data being measured and subsequent determination of signals to be delivered back to the brain. Computational models are the heart of the machine of BMI and therefore an essential tool in both of these processes. One approach is to utilize brain biomimetic models (BMMs) to develop and instantiate these algorithms. These then must be connected as hybrid systems in order to interface the BMM with <italic>in vivo</italic>
data acquisition devices and prosthetic devices. The combined system then provides a test bed for neuroprosthetic rehabilitative solutions and medical devices for the repair and enhancement of damaged brain. We propose here a computer network-based design for this purpose, detailing its internal modules and data flows. We describe a prototype implementation of the design, enabling interaction between the Plexon Multichannel Acquisition Processor (MAP) server, a commercial tool to collect signals from microelectrodes implanted in a live subject and a BMM, a NEURON-based model of sensorimotor cortex capable of controlling a virtual arm. The prototype implementation supports an online mode for real-time simulations, as well as an offline mode for data analysis and simulations without real-time constraints, and provides binning operations to discretize continuous input to the BMM and filtering operations for dealing with noise. Evaluation demonstrated that the implementation successfully delivered monkey spiking activity to the BMM through LAN environments, respecting real-time constraints.</p>
</abstract>
<kwd-group><kwd>Computational neuroscience</kwd>
<kwd>Neuroprosthetics</kwd>
<kwd>Brain-machine interfaces</kwd>
<kwd>Biomimetic models</kwd>
</kwd-group>
</article-meta>
</front>
<body><sec id="S1"><title>Background</title>
<p id="P2">Translation of our increasing knowledge of brain signals into treatment of patients with brain damage or with disconnections between brain and body requires the ability to read and transmit information bi-directionally between brain electrodes (or other probes) and a neuroprosthetic processor. This is the realm of brain-machine interface (BMI) and brain-computer interface (BCI), primarily distinguished by whether connecting to a relatively limited processor maintained on the body for managing a prosthetic or connecting to an external computer for the purpose of direct communication between the brain and a computer. It has been suggested that in the upcoming years, it will be important for neurosurgeons to understand and integrate BCI technology and its clinical applications into their field [<xref rid="R1" ref-type="bibr">1</xref>
].</p>
<p id="P3">Currently, most of the algorithms utilized in BMI and BCI are based on low-dimensional interpretations of brain signals, typically based on rate determinations integrated over hundreds of milliseconds (ms) or seconds. By contrast, we are developing biomimetic brain models (BMMs) that attempt to replicate some of the attributes of brain signaling-specifically the spiking activation of the individual neurons. This increases the bandwidth requirements for communication since we now have the possibility of utilizing all the information from as many neurons as can be recorded (currently order 100) with firing rates of over 100 Hz. Learning can be incorporated into the BMM. This allows the hybrid BMM brain system to produce a coadapting symbiotic relation where both the brain and the BMM learn at the same time and adapt to each other [<xref rid="R2" ref-type="bibr">2</xref>
].</p>
<p id="P4">Using data from a non-human primate, we are developing a test bed for the development of BMI/BCI neuroprosthetic rehabilitative solutions and medical devices for the repair and enhancement of neuronal systems. We have implemented BMMs capable of replicating many experimental paradigms, such as sensorimotor learning experiments [<xref rid="R3" ref-type="bibr">3</xref>
–<xref rid="R5" ref-type="bibr">5</xref>
] or cellular microstimulation [<xref rid="R6" ref-type="bibr">6</xref>
,<xref rid="R7" ref-type="bibr">7</xref>
]. They are able to accurately reproduce physiological properties observed <italic>in vivo</italic>
[<xref rid="R4" ref-type="bibr">4</xref>
,<xref rid="R8" ref-type="bibr">8</xref>
], including firing rates and stimulus-induced modulations, and capture large-scale emerging properties such as local field potentials [<xref rid="R9" ref-type="bibr">9</xref>
]. We have demonstrated that these BMMs, running in high-performance computers, can produce commands to control prosthetic devices in real time [<xref rid="R10" ref-type="bibr">10</xref>
]. Here we aim at bridging the missing link by connecting the BMMs directly with animal electrophysiological recordings.</p>
<p id="P5">The proposed system is somewhat analogous to dynamic clamp [<xref rid="R11" ref-type="bibr">11</xref>
], which is used to interface one or several single cells <italic>in vitro</italic>
with a computer or analog device to simulate dynamic processes such as membrane or synaptic currents. However, scaling up the system to the next level, where a brain neuronal network is connected to biomimetic neuronal network model, posed a more challenging task.</p>
<p id="P6">Large-scale spiking neuron models of brain function are developed using neural network simulators such as NEURON, NEST, and GENESIS [<xref rid="R12" ref-type="bibr">12</xref>
]. Existing BCI solutions do not support such simulator-based models. Instead, most existing solutions interface BCIs with artificial neural networks. Several general frameworks, systems, and software toolkits exist for this purpose: Virtual Integration Environment framework [<xref rid="R13" ref-type="bibr">13</xref>
,<xref rid="R14" ref-type="bibr">14</xref>
], BCILAB [<xref rid="R15" ref-type="bibr">15</xref>
], BCI2000 [<xref rid="R16" ref-type="bibr">16</xref>
], BioFeedback Software development Kit (BF++) [<xref rid="R17" ref-type="bibr">17</xref>
], BCI++ [<xref rid="R18" ref-type="bibr">18</xref>
], OpenVibe [<xref rid="R19" ref-type="bibr">19</xref>
], BioSig [<xref rid="R20" ref-type="bibr">20</xref>
] and Cyber-Workstation [<xref rid="R21" ref-type="bibr">21</xref>
]. They usually support models developed in MATLAB, C++, or both of them. These tools help users to assemble and to conduct such computational modeling easily and efficiently for the BCI development providing reusable easy-to-use templates. However, in order to take advantage of these tools, models must be implemented or ported in specific languages supported by those tools and utilize simplified non-spiking neural network models.</p>
<p id="P7">In this paper, we address these issues by proposing a design and a prototype implementation for a network-based interface between an <italic>in vivo</italic>
neurophysiological data source and a BMM that is simulating a network of spiking neurons. We specify the requirements of the system, detail the proposed design, and offer a prototype implementation following the design. The prototype links the PLEXON Multichannel Acquisition Processor (MAP) server, a commercial tool to collect signals from mi-croelectrodes implanted in a live subject, to a NEURON-based BMM of sensori-motor cortex that controls a virtual arm. Our implementation achieves low-latency interconnection between the data source and the spiking neuronal model.</p>
</sec>
<sec sec-type="methods" id="S2"><title>Methods</title>
<p id="P8">Since BMI systems also communicate via a processor, we will use the shorthand BCI to cover both BCI and BMI systems. In this section, we start by specifying the requirements of an interface system between neurophysiological data sources and BMMs. As discussed in the ‘Background’ section, this type of interface, which is not currently available, would be required to leverage the benefits of realistic large-scale spiking network models in BCI systems. We subsequently propose a generic or abstract design for a network-based system that meets the specified requirements. In the last subsection, we provide an example prototype implementation of the proposed generic design, which includes a more technical description of the different elements involved.</p>
<sec id="S3"><title>System requirements</title>
<p id="P9">Generally, BCI systems must support three functions: data acquisition, data processing, and prosthetic control. In this way, system requirements of this study are similar to previous work in this area. In our case, the design must support the following generic functionality: (1) collection of empirical neurophysiological data from a live subject-person, monkey, or mouse-facilitated by data acquisition hardware; (2) delivery of collected data from the sources to the appropriate processing modules via network environments such as a local area network (LAN); (3) extraction of relevant information from the raw empirical data; (4) feeding of data into a BMM spiking neural network simulator, here NEURON [<xref rid="R12" ref-type="bibr">12</xref>
]; and (5) support for both online and offline processing modes. These two processing modes are discussed further below as they are critical requirements of the system. This prototype does not deal with; (6) feeding of the BMM output into a physical prosthetic device (e.g., robot arm), which we have previously dealt with in a study of a real-time interface between a BMM and a robotic arm [<xref rid="R10" ref-type="bibr">10</xref>
].</p>
<p id="P10">In the offline processing mode, all data delivered should be fed to the BMM without real-time constraints. Hence, all the data delivered should be kept in a queue so that the BMM can use the data as required. On the other hand, in the online processing mode, data delivery and simulation execution must meet real-time requirements. The BMM can run slower or faster than data acquisition, which occurs in real time. If the BMM runs faster than the generation of empirical data, it should wait for new input data to be received. If slower, the data delivered to the BMM must be partially discarded. <xref rid="F1" ref-type="fig">Figure 1</xref>
illustrates how the offline and online modes should manage, under different circumstances, the interaction between the received neurophysio-logical data and the BMM.</p>
</sec>
<sec id="S4"><title>Design of a generic network-based interface</title>
<p id="P11">We propose an abstract modular design capable of interfacing <italic>in vivo</italic>
data sources with simulator-based neuronal network models, and more specifically, of satisfying the system requirements outlined in the previous section. <xref rid="F2" ref-type="fig">Figure 2</xref>
illustrates the modular structure and data flow of the proposed design. Depending on the scenario, different instantiations of this abstract design are possible, one of which is provided as an example in the following section and depicted in <xref rid="F3" ref-type="fig">Figure 3</xref>
.</p>
<p id="P12">The generic design is composed of <italic>in silico</italic>
interface modules, interconnection modules, and <italic>in vivo</italic>
interface modules. The <italic>in vivo</italic>
interface modules allow the system to interact with the data acquisition systems. The <italic>in silico</italic>
interface modules allow the system to interact with the BMM, set the execution configuration parameters, and provide tools for model optimization and data analysis. The interconnection modules manage the information exchange between the <italic>in vivo</italic>
and <italic>in silico</italic>
interface modules. The design has three data flows. First, data collected from the subject via data acquisition hardware flows into the system through the <italic>in vivo</italic>
interface modules. The interconnection modules then process and send this data to the <italic>in silico</italic>
interface modules, where the data is fed as input to the BMM simulator. In the second data flow, simulation results are fed back into the system via the <italic>in silico</italic>
interface and interconnection modules and are used to control a prosthetic device through the <italic>in vivo</italic>
interface modules. The third data flow propagates the user configuration data to other modules in the design. The user configuration may include some important parameters for the interconnection of <italic>in vivo</italic>
experiments and BMMs, such as the data transmission protocol and data processing options. Though the proposed design deals with interfacing to physical prosthetic devices [<xref rid="R10" ref-type="bibr">10</xref>
], its integration into the framework is considered future work. Each module of the design is described in detail as follows:</p>
<sec id="S5"><title>Data acquisition interface module</title>
<p id="P13">There are many ways to record brain activity from a live subject. Here we focus on electrophysiology techniques such as single-unit recordings, which measure the changes in voltage of a single neuron; and local field potentials (LFPs), which provides a measure of the synaptic currents in a volume of tissue and have been previously used as input to a BMM [<xref rid="R22" ref-type="bibr">22</xref>
]. Since different data acquisition methods and devices may generate data in different formats through different communication protocols, DIM is responsible for providing an interface between the neurophysiological data acquisition hardware and the rest of the system. The DIM delivers data received from a data acquisition device to the data processing module (DPM), which is discussed next.</p>
</sec>
<sec id="S6"><title>Data processing module</title>
<p id="P14">The raw data (e.g., spikes) from the DIM may be fed directly into a BMM via the BMM simulator interface module (SIM) or may require additional operations to extract meaningful information, where the definition of ‘meaningful’ will vary depending on the destination of the BMM. The DPM is responsible for these additional operations. For example, the DPM may conduct filtering operations to the input data or perform operations to the results returned from the BMM simulation in order to convert them into commands that the prosthetic device understands.</p>
</sec>
<sec id="S7"><title>Prosthetic device interface module (PIM)</title>
<p id="P15">This module delivers the commands converted from the simulation results as inputs to the prosthetic device. The type and format of the commands as well as the communication protocol required to transmit it will depend on the specific prosthetic device employed. Two examples of control command types for a robotic arm, a common type of prosthetic device, are <italic>incremental</italic>
control (small differential changes to each joint of the robot arm) and <italic>point-to-point</italic>
(specification of absolute endpoints).</p>
</sec>
<sec id="S8"><title>BMM simulator interface module (SIM)</title>
<p id="P16">The SIM provides an interface to a BMM simulator to interact with the rest of the system. The SIM is responsible for providing bidirectional communication between the simulator and the data communication module (DCM), sending data processed by the DPM as input to the simulator, and delivering simulation results to PIM through the interconnection modules.</p>
</sec>
<sec id="S9"><title>Data communication module (DCM)</title>
<p id="P17">In the design, it is critical to enable the transfer of data between the <italic>in vivo</italic>
interface modules (DIM and PIM) and the module responsible for interfacing with the simulator (SIM) in real time. To minimize transfer latency, dedicated connections or LAN is recommended. The goal of DCM is to provide real-time data transmission between the <italic>in vivo</italic>
and <italic>in silico</italic>
interface modules. Prior to transmission by the DCM, data is processed by the DPM.</p>
</sec>
<sec id="S10"><title>Model execution optimization module (MOM)</title>
<p id="P18">The MOM provides optimization functions that interact with the simulators during execution time, such as cell distribution methods for efficient balance and parallelism of large network models [<xref rid="R23" ref-type="bibr">23</xref>
].</p>
</sec>
<sec id="S11"><title>Model execution analysis module (MAM)</title>
<p id="P19">Some simulators have their own model analysis and visualization tools that users are already familiar with. However, the MAM allows the inclusion of additional ones, including simulation performance measurements such as CPU and memory usage. Users may access such results by calling functions provided by the MAM from their simulation code.</p>
</sec>
<sec id="S12"><title>Model execution configuration module (MCM)</title>
<p id="P20">The MCM provides an easy-to-use configuration interface for setting parameters in all the modules in the design. For example, the user can select the most appropriate data communication protocol or data processing algorithm for a given experiment.</p>
</sec>
</sec>
<sec id="S13"><title>Example prototype implementation</title>
<p id="P21">In this section, we introduce an example prototype implementation (<xref rid="F3" ref-type="fig">Figure 3</xref>
) of the proposed generic design (<xref rid="F2" ref-type="fig">Figure 2</xref>
). A client–server structure was used in our implementation. The path to feed data from a live subject to the BMM simulation is implemented using the following modules in the design: the MCM to allow the user to configure the system, the DIM to receive data from the Plexon MAP server, the DPM to process the collected data, the DCM to transmit the data via a LAN environment, and the SIM to feed the data to the NEURON simulator. PIM, MAM, and MOM are left as future work. The DIM (client) in the prototype is implemented in MATLAB to use MATLAB application programming interfaces (APIs) provided for interaction with the Plexon MAP server. The SIM (server) is implemented in Python so that it can interact with NEURON [<xref rid="R24" ref-type="bibr">24</xref>
]. <xref rid="F3" ref-type="fig">Figure 3</xref>
illustrates our implementation using a logic diagram, which is described in details below.</p>
<sec id="S14"><title>NEURON-based BMM</title>
<p id="P22">We tested the prototype implementation using a spiking neuronal network model of sensorimotor cortex [<xref rid="R3" ref-type="bibr">3</xref>
,<xref rid="R4" ref-type="bibr">4</xref>
]. The model can be trained to drive a simple kinematic two-joint virtual arm in a motor task requiring convergence on a single target by learning a sensorimotor mapping through reinforcement learning mechanisms. Individual neurons were modeled as rule-based dynamical units with many of the key features found in real neurons, including adaptation, bursting, depolarization blockade, and voltage-sensitive conductance [<xref rid="R25" ref-type="bibr">25</xref>
,<xref rid="R26" ref-type="bibr">26</xref>
]. The model consists of 288 excitatory and 64 inhibitory cells, each with AMPA, NMDA, and GABA synapses. These were arranged into three different populations with realistic and anatomical properties: 96 proprioceptive (P) neurons, representing specific joint angles; sensory neurons, which process inputs from the proprioceptive population; and motor neurons, which process input from the sensory cells and provide output to the virtual arm. The sensory population includes 96 excitatory sensory cells (ES), 22 fast-spiking sensory interneurons (IS), and 10 low-threshold spiking sensory interneurons (ILS). The motor population has 96 excitatory motor (EM), 22 fast-spiking motor interneurons (IM), and 10 low-threshold spiking motor interneurons (ILM). Cells are connected probabilistically with connection densities and initial synaptic weights varying depending on presynaptic and postsynaptic cell types. There is synaptic adaptation and training in the biomimetic model, but they do not require a training or validation dataset as they are based on the reinforcement learning paradigm. Synaptic weights are modified based on a global critic, which provides a reward or punishment signal depending on whether the army is moving towards or away from the target. After training, the model is evaluated by running the simulation and measuring the distance between the hand end point and target. More details about the BMM training and evaluation methods can be found in [<xref rid="R4" ref-type="bibr">4</xref>
].</p>
<p id="P23">The model is able to provide two types of proprioceptive stimulus to the ES cells: through the P cells for continuous stimuli or through NetStim spike generator units with location (NSLOC) for discrete stimuli. P cells are implemented as integrate and fire neurons, and therefore include cell dynamics and internal variables, such as membrane voltage. When a spike is received from the external data source, an action potential is artificially triggered in the corresponding P cell. P cells also potentially allow for continuous stimuli inputs by modulating its membrane voltage over time. NSLOC units are simple spike generators, known as NetStim in the NEURON environment, with no internal dynamics. The user can determine its firing rate or, as in our case, the specific times when spikes should be generated. In our model, we have extended NetStim to have an x, y, z location (thus the name NSLOC) in order to facilitate distance-based random connectivity.</p>
<p id="P24">For the evaluation, two prerecorded monkey spiking data files from macaque primary motor cortex (M1) and dorsal premotor cortex (PMd) are fed to the BMM. The prototype implementation supports BMMs with continuous P-based and discrete NSLOC-based inputs. Thus, depending on the input cell type chosen, the discrete multiunit activity (MUA) values from the prerecorded spiking data are either processed by the binning operation as explained below for P cells or delivered directly as discrete input through the NSLOC units. P cell is a simple point process cell, so the binned input increases the voltage in the P cells, which makes the P cells fire once a threshold is reached, whereas NSLOC units generate spikes to corresponding ES cells at the times specified in the inputs.</p>
</sec>
<sec id="S15"><title>Data acquisition interface module (DIM)</title>
<p id="P25">Plexon is a commercial tool for system neuroscience research. It collects signals from microelectrodes implanted in the brain of a live subject and provides MATLAB APIs for user software to connect with the Plexon system and to retrieve signals from it. The signals consist of channel number, unit number, signal type (e.g., event or spike), timestamp, and waveforms. The Plexon MAP server pulls signals from a data acquisition device and makes the signals available periodically (e.g., 10 ms). A user software can get the signals synchronously or asynchronously depending on APIs used (available at <ext-link ext-link-type="uri" xlink:href="www.plexon.com">www.plexon.com</ext-link>
). In the prototype implementation, DIM retrieves spikes from the Plexon MAP server by means of the synchronous API such that the Plexon MAP server notifies the DIM that spikes are available. The DIM then retrieves spikes as a chunk.</p>
<p id="P26">For the binning and filtering operations in the DPM described below, the fact that Plexon MAP server generates out-of-order spikes occasionally is taken into account, that is, the algorithm considers that the timestamps of all spikes in a chunk are not guaranteed to be greater than the timestamps of spikes in the previous chunks. Plexon offers its own offline analysis utilities to sort out-of-order spikes, but these do not work for online real-time processing. DIM executes a reordering operation in order to deal with out-of-order spikes and minimizes potential spike loss by adding a delay based on the maximum timestamp <italic>K</italic>
present in the previous chunk. Larger values of <italic>K</italic>
lead to less potential for spike loss but add delays that may impact real-time constraints. The choice of a data-driven value for <italic>K</italic>
was based on empirical experiments that validated it as a good candidate to avoid loss in the offline mode and to avoid adding too much delay in the online mode. The reordering algorithm starts once the second spike chunk is received, and its output will be delayed, with respect to the input, by one spike chunk. <xref rid="T4" ref-type="table">Algorithm 1</xref>
describes the reordering operation.</p>
<table-wrap id="T4" position="anchor" orientation="portrait"><label>Algorithm 1</label>
<caption><p id="P60">The reordering operation</p>
</caption>
<table frame="hsides" rules="groups"><tbody><tr><td align="left" valign="top" rowspan="1" colspan="1"><bold>Input:</bold>
</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1"> US, a set of unordered spikes.</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1"> RS, a set of spikes remaining in the previous reordering operation.</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1"><bold>Output:</bold>
</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1"> OS, a set of reordered spikes.</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1"> RS, a set of remaining spikes in this reordering operation.</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1"><bold>Process</bold>
:</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1"> TEMP←RSU US</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1"> RS’ ← spikes with timestamps greater than <italic>K</italic>
in TEMP, where <italic>K</italic>
is the maximum timestamp in US.</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1"> OS ←TEMP–RS’.</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
</sec>
<sec id="S16"><title>Data Processing Module (DPM)</title>
<p id="P27">In our implementation, the DPM performs binning, itemizing and filtering operations. If the model requires continuous input, the binning operation is executed every single binning time window as defined by the user (e.g., 100 ms). The binning operation sums the number of spikes per microelectrode or channel for a given period of time, which leads to a spike frequency value per channel per bin. <xref rid="T5" ref-type="table">Algorithm 2</xref>
describes the binning operation:</p>
<table-wrap id="T5" position="anchor" orientation="portrait"><label>Algorithm 2</label>
<caption><p id="P61">The binning operation</p>
</caption>
<table frame="hsides" rules="groups"><tbody><tr><td align="left" valign="top" rowspan="1" colspan="1"><bold>Input:</bold>
</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1"> IS, a set of spikes.</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1"> RS, a set of spikes remaining in the previous binning operation.</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1"><bold>Output:</bold>
</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1"> BS, a set of summed spikes per channel.</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1"> RS’, a set of remaining spikes in this binning operation.</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1"><bold>Process:</bold>
</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1"> TEMP←RSU IS.</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1"> BS ← {B<sub>1</sub>
, B<sub>2</sub>
, ..., B<sub>n</sub>
}, where B<sub>CH</sub>
is number of spikes whose channel is CH, their timestamps are in the current binning time window in TEMP, and 1 ≤CH ≤ n.</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1"> RS’ ←TEMP-{spikes used for BS}</td>
</tr>
</tbody>
</table>
</table-wrap>
<p id="P28">The PLEXON system acquires 96-channel MUA data recorded by the microelectrodes implanted in the monkey’s brain. Spikes from each channel are sorted according to their waveform shape into up to 4 units (1, 2, 3, and 4), with unsorted spikes in unit 0. Additionally, the system sometimes reported simultaneously occurring signals (sync spikes) on multiple electrodes within a very short interval (e.g., 25 microsecond (us)). Given that there are many noise sources, such as small displacements in the electrodes, we hypothesized that such unsorted or sync spikes can be regarded as noise that needs to be filtered out. <xref rid="T6" ref-type="table">Algorithm 3</xref>
describes the method for removing sync spikes.</p>
<table-wrap id="T6" position="anchor" orientation="portrait"><label>Algorithm 3</label>
<caption><p id="P62">Filtering sync spikes</p>
</caption>
<table frame="hsides" rules="groups"><tbody><tr><td align="left" valign="top" rowspan="1" colspan="1"><bold>Input:</bold>
</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1"> IS, a set of spikes.</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1"> RS, a set of spikes remaining in the previous filtering operation.</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1"> T, sync time window (e.g., 25us).</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1"><bold>Output:</bold>
</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1"> FS, a set of spikes filtered.</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1"> RS’, a set of spikes remaining in this filtering operation.</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1"><bold>Process:</bold>
</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1"> TEMP ← RSU IS.</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1"> FS ← a set of spikes, where each spike exists solely in a sync time window, [T*p, T*(p+1)), p is an integer such that
<mml:math id="M1" overflow="scroll"><mml:mo>⌊</mml:mo>
<mml:mfrac><mml:mrow><mml:mi mathvariant="italic">minimum</mml:mi>
<mml:mspace width="0.16667em"></mml:mspace>
<mml:mi mathvariant="italic">timestamp</mml:mi>
<mml:mspace width="0.16667em"></mml:mspace>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
<mml:mspace width="0.16667em"></mml:mspace>
<mml:mi mathvariant="italic">TEMP</mml:mi>
</mml:mrow>
<mml:mi>T</mml:mi>
</mml:mfrac>
<mml:mo>⌋</mml:mo>
<mml:mo>≤</mml:mo>
<mml:mi mathvariant="normal">p</mml:mi>
<mml:mo>≤</mml:mo>
<mml:mrow><mml:mo>⌊</mml:mo>
<mml:mfrac><mml:mrow><mml:mi mathvariant="italic">maximum</mml:mi>
<mml:mspace width="0.16667em"></mml:mspace>
<mml:mi mathvariant="italic">timestarmp</mml:mi>
<mml:mspace width="0.16667em"></mml:mspace>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
<mml:mspace width="0.16667em"></mml:mspace>
<mml:mi mathvariant="italic">TEMP</mml:mi>
</mml:mrow>
<mml:mi>T</mml:mi>
</mml:mfrac>
<mml:mo>⌋</mml:mo>
</mml:mrow>
</mml:math>
.</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1"> RS’ ← a set of spikes whose timestamps are in the sync time window,
<mml:math id="M2" overflow="scroll"><mml:mo stretchy="false">[</mml:mo>
<mml:mi mathvariant="normal">T</mml:mi>
<mml:mo>∗</mml:mo>
<mml:mrow><mml:mo>⌊</mml:mo>
<mml:mfrac><mml:mrow><mml:mi mathvariant="italic">maximum</mml:mi>
<mml:mspace width="0.16667em"></mml:mspace>
<mml:mi mathvariant="italic">timestamp</mml:mi>
<mml:mspace width="0.16667em"></mml:mspace>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
<mml:mspace width="0.16667em"></mml:mspace>
<mml:mi mathvariant="italic">TEMP</mml:mi>
</mml:mrow>
<mml:mi>T</mml:mi>
</mml:mfrac>
<mml:mo>⌋</mml:mo>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mspace width="0.16667em"></mml:mspace>
<mml:mi mathvariant="normal">T</mml:mi>
<mml:mo>∗</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow><mml:mo>⌊</mml:mo>
<mml:mfrac><mml:mrow><mml:mi mathvariant="italic">maximum</mml:mi>
<mml:mspace width="0.16667em"></mml:mspace>
<mml:mi mathvariant="italic">timestamp</mml:mi>
<mml:mspace width="0.16667em"></mml:mspace>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
<mml:mspace width="0.16667em"></mml:mspace>
<mml:mi mathvariant="italic">TEMP</mml:mi>
</mml:mrow>
<mml:mi>T</mml:mi>
</mml:mfrac>
<mml:mo>⌋</mml:mo>
</mml:mrow>
<mml:mo>+</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo stretchy="false">]</mml:mo>
</mml:math>
.</td>
</tr>
</tbody>
</table>
</table-wrap>
<p id="P29">Since the binning and filtering operations require a certain amount of computation, it is important to be aware of where they are executed as this may disturb real-time processing. Depending on whether the operations take place in the DPM of the client or the server, our implementation provides two options: the Heavyweight Client mode (HWC) and the Lightweight Client mode (LWC). In the HWC mode, the operations are conducted in the client’s DPM while the server’s DPM just receives processed data from the client, and simply forwards them to the SIM. In the LWC mode, the client’s DPM just sends the raw spiking activity to the server’s DPM, where the binning and filtering operations are conducted.</p>
<p id="P30">For discrete input simulations, the server’s DPM performs the itemizing operation, instead of the binning operation, in both of the HWC and LWC modes, before pushing a chunk of spikes to the queue. The itemizing operation divides the chunk of spikes into groups, each with a fixed number of spikes (e.g., 20) for efficient queue management. For example, when the fixed number of spikes for a group is 20 and the DPM receives a chunk which has 30 spikes, the first 20 spikes in the chunk are pushed in the queue as a group. Then, another group composed of the remaining 10 spikes and another 10 spikes being assigned an arbitrary value (e.g., zero) is queued. A counter is used to track the number of real spikes so that the arbitrary valued spikes are never used. The time required for the itemizing operation is proportional to the size of chunk.</p>
<sec id="S17"><title>Data communication module (DCM)</title>
<p id="P31">The DCM supports two data transmission protocols: the User Datagram Protocol (UDP) and the Transmission Control Protocol (TCP). UDP is a connectionless transmission protocol that does not guarantee that packets sent reach the destination or that they are delivered in order [<xref rid="R27" ref-type="bibr">27</xref>
]. On the other hand, TCP is a connection-oriented transmission protocol providing reliable and ordered transmission [<xref rid="R28" ref-type="bibr">28</xref>
]. Ordinarily, TCP uses Nagle’s algorithm to buffer small packets in order to improve efficiency in transmission. Theoretically, the UDP transmission has less latency than TCP since UDP does not provide error checking for packets. On a LAN environment where packet loss occurs rarely, UDP is expected to deliver data without packet loss or reordering issues. However, UDP still can potentially lead to data being lost or out of order. The DCM provides both the UDP and TCP transmissions, and users can select the appropriate protocol according to the network environment. In the DCM, TCP Nagle’s algorithm was disabled since buffering small packets may disturb real-time communication. The client’s DCM was implemented in MATLAB using Java network communication APIs. Data formats are designed to operate with the data received from the <italic>in vivo</italic>
recording system and may be reusable for different acquisition systems. Spike information from the Plexon MAP server is converted into the designed data format and delivered from the client to the server. The data format consists of a header and a payload field. The header field indicates the type of data packet (‘DATA’, ‘NODATA’, or ‘EXIT’). The payload field contains the binned data and the binning window number for the P-based model; and the timestamp, channel ID, and unit ID of each spike, for the NSLOC-based model.</p>
</sec>
<sec id="S18"><title>BMM simulator interface module (SIM)</title>
<p id="P32">In order to feed the BMM running in NEURON with continuous or discrete input, inter-process communication between the SIM and the BMM was implemented with an existing first-in, first-out (FIFO) queue facility in Python. This queue provides easy-to-use operations such as putting/getting items into/from the queue and locking. For online mode simulations, the queue in SIM supports two cases: either the simulation is slower or faster than the rate of input of spiking data. The SIM assumes that input data is coming in real time. Therefore, in online mode, to recognize if the simulation is faster or slower than real-time, the SIM compares the timestamp in NEURON with the most recent input. If the difference is greater than a constant value, latency requirement (LR), which is fixed by user, the simulation is slow, so the SIM discards an item in the queue and executes the comparison again. Otherwise, the simulation is not slow and the item is processed. Discarding spikes allows the simulation to catch up with the data rate as less spikes are processed. We evaluate the consequences of this in the ‘Results’ section. For offline mode simulations, LR is set to a value bigger than simulation time (e.g., 1,000 s).</p>
<p id="P33">To deliver input from the queue to the BMM, we utilized a callback function that is added to the NEURON event queue and invoked at a specific simulation time by NEURON. When the function is invoked, it fetches data in the queue and then feeds the data as input to the BMM. Since the SIM queue contains only valid input data (ordered, filtered, and complying with real-time constraints), the callback function just pulls an input from the queue (if one exists), feeds it to the BMM, and moves the simulation forward. When the queue is empty, the function waits for data to arrive.</p>
</sec>
<sec id="S19"><title>Model execution configuration module (MCM)</title>
<p id="P34">The MCM provides an initial handshaking protocol to establish connections between the client and the server and between the client and Plexon MAP server. Through the initial handshaking protocol, the client and server share configuration information such as the transmission protocol and where the binning operation takes place. Therefore, users only need to change parameters or flags in the configuration file located on the server side. Further details on the parameters found in the configuration file and how they can be modified by the user are described in [<xref rid="R29" ref-type="bibr">29</xref>
].</p>
</sec>
<sec id="S20"><title>Computational environment</title>
<p id="P35">For demonstration of the prototype implementation, the server and client ran in different machines connected to each other via a LAN environment. We constructed two system environments: ENV1 and ENV2. ENV1 is composed of two identical machines to conduct fair comparison of performance between the HWC and LWC modes. ENV2 consists of machines with better performance than those in ENV1 and arranged in a realistic research environment, with the machines located in two distinct research laboratories, the <italic>in vivo</italic>
and <italic>in silico</italic>
labs, and connected via LAN. The Plexon server emulated the <italic>in vivo</italic>
data acquisition on the same machine where the client (DIM) ran. It retrieved spiking activity from prerecorded Plexon files. <xref rid="T1" ref-type="table">Table 1</xref>
describes the two computational environments in detail.</p>
<p id="P36">Round-trip time (RTT) was measured between two physical machines running the client and server in ENV1 and ENV2 varying the size of data transmitted (ranging from 64 to 1,032 bytes) according to the processing modes and datasets used in later experiments. The RTT was measured with the Linux Ping command using S option for specific data sizes. The RTT serves as a baseline to analyze whether or not the prototype implementation achieved expected transmission time. As the size of transmitted data increased (from 64 to 1,032 bytes), RTT also increased in both ENV1 (from 0.71 to 0.87 us) and ENV2 (from 0.98 to 1.55 us). RTT in ENV2 was greater than in ENV1 for all data sizes, with the largest difference observed for a data size of 1,032 bytes (1.55 vs 0.87 us).</p>
<p id="P37">For the experiments, we used two datasets recorded by the Plexon system, which were extracted from a live macaque monkey’s M1 and PMd regions for 100 s of real time. The macaque monkeys were performing a center-out reaching task (distance to targets was 4 cm, target radius was 0.8 to 1 cm), with her right arm attached to exo-skeletal robotic manipulandum (KINARM), corresponding to the initial manual training described in [<xref rid="R30" ref-type="bibr">30</xref>
]. The animal had been implanted (after reaching task proficiency level of approximately 80% success) in M1 and PMd, representing the right shoulder and elbow regions, with multiple ‘Utah’ microelectrode arrays (10 × 10 electrode grid). The total number of units in the data was 185 and 97 for M1 and PMd, respectively. However, at this point, the specifics of the spiking data are not determined since the model is not yet employing it to learn a task; instead, the focus of the paper is on putting forward a proof-of-concept of the real-time interface. The datasets were selected to be representative examples of physiological inputs that can be potentially exploited by the biomimetic model.</p>
</sec>
</sec>
</sec>
<sec sec-type="results" id="S21"><title>Results</title>
<p id="P38">We conducted a series of experiments to verify that the prototype implementation succeeded in enabling the interaction between the <italic>in vivo</italic>
data source and the simulator-based sensorimotor cortex BMM under the principles of the proposed design. Using the two datasets on the two different computational environments, we measured the overhead caused by modules between the NEURON simulator and the Plexon SoftSer-ver. In these experiments, the overheads included the latencies for the following operations: (a) reordering, (b) binning (for continuous input) or itemizing (for discrete input), (c) filtering, (d) transmitting binned or chunk of spikes, (e) pushing binned (or chunk of) spikes to the queue, and (f) pulling from the queue to feed the BMM.</p>
<p id="P39">Assuming the binning operation requires <italic>n</italic>
chunks of spiking data, the latency in the binning operation is calculated as the time interval between the reception of the <italic>n</italic>
th chunk of data by the DPM and the completion of binning computation. The transmission latency is the time required to deliver a chunk of spiking data or a binned spikes set through the network. For the latency measurement, we used a simplified version of the BMM; while accepting continuous input through P cells or discrete input through NSLOC units, P cells and NSLOC units were disconnected from the ES cells to prevent model computations from taking place. For both the offline and online processing mode simulations, we ran the full version of the NEURON model for 100 s of simulated time. We also measured the elapsed time, which corresponds to the execution time of the run phase in NEURON. Note that experimental results on ENV1 were about the same as the ones on ENV2 regardless of which transmission protocol between UDP and TCP was used. Hence, for the latency measurements, only the TCP results on ENV2 are presented in this paper. In terms of execution time and spikes generation, we only report the results from the HWC mode simulations, given that the LWC mode simulations results were almost identical, both in ENV1 and ENV2.</p>
<p id="P40"><xref rid="T2" ref-type="table">Table 2</xref>
shows the number of spikes after applying various filtering options provided in the prototype implementation and the percentage comparison with the no filtering case (no filter). The following shows the filtering options in the implementation: no filter; filter of unsorted spikes (unsort); filter of sync spikes within 25 us (25 us window); filter of unsorted spikes that are in 25 us sync window (unsort 25 us); filter of sync spikes within 1 ms; filter of spikes unsorted as well as in 1 ms sync window (unsort 1 ms).</p>
<p id="P41"><xref rid="F4" ref-type="fig">Figure 4</xref>
shows the filtering and transmission latency in ENV2 for different filtering options. For the P-based simulation with the HWC mode, the packet size (payload) of the binned data is always fixed to 776 bytes (96 channels × 8 bytes + 8 bytes per binning window). On the other hand, with the LWC mode, the size of the chunks sent by the client varies with an average of 600 bytes for dataset 1 and 1 Kbyte for dataset 2. This difference of packet size between the HWC and LWC mode causes the HWC mode transmission time to be either similar (<xref rid="F4" ref-type="fig">Figure 4a</xref>
) or lower (<xref rid="F4" ref-type="fig">Figure 4b</xref>
) than that of the LWC mode in the P-based simulations.</p>
<p id="P42">Due to the difficulty of synchronizing the time in two distinct machines, we measured overhead by asking the client and the server to send very small-sized messages before and after each operation to a time collection server running in another machine in the same LAN environment. Therefore, considering the overhead caused by the measurement process, the prototype implementation achieved reasonable transmission times (<1 ms). As shown in <xref rid="F4" ref-type="fig">Figure 4c,d</xref>
, for the NSLOC-based simulation, where the client just sends chunk of spikes to the server, the HWC mode shows lower latencies than the LWC mode, specially for the 1 ms filtering options, as it benefits from having to transmit less data.</p>
<p id="P43"><xref rid="F4" ref-type="fig">Figure 4</xref>
also shows that the filtering operation in the LWC is faster than in the HWC mode except for 1 ms and unsort 1 ms options. This suggests that the filtering operation in the LWC mode, implemented in Python, performs better than in the HWC mode implemented in MATLAB, when filtering is based on individual spikes comparison (25 us). However, there is a little difference between implementations for filtering based on group based comparison (1 ms).</p>
<p id="P44"><xref rid="T3" ref-type="table">Table 3</xref>
shows the total latency in ENV2 as a function of the different filtering options supported by the prototype implementation. Total latency includes the time for the reordering, binning for P (or itemizing for NSLOC), filtering, transmission, pushing, and pulling operations. For dataset 1, the total latency in the LWC mode simulations is generally lower than in the HWC mode, regardless of filtering options. However, in dataset 2, this difference is not so clear, which overall means that it is not possible to conclude which mode is better: factors such as the spike frequency and spike pattern have a significant influence on the total latency.</p>
<p id="P45">The size of a single queue item for the NSLOC-based simulation is 496 bytes, composed of 20 spikes × 3 elements per spike × 8 bytes, 8 bytes for the number of spikes in the item, and 8 bytes for the serial number of the item. For the P-based simulation, the size is 776 bytes (96 channel × 8 bytes + 8 bytes for binning time). However, the pushing and pulling operations in the NSLOC-based simulations take significantly more time than in the P-based ones. In the prototype implementation, there are two ways for the queue to recognize whether the simulation is faster or slower than the real time. First, the queue checks how many items it contains. If it has less than two items, it assumes that the simulation is running in real time. Otherwise, the queue carries out an additional test to check the simulation: it retrieves the current NEURON time through a shared variable, Python LOCK-based, and calculates the difference between the latest time in the queue items and the current NEURON time. If the difference is greater than LR, the simulation is considered to be running slower than the real time. Otherwise, the queue assumes that the simulation is running in real time. For the latency measurement, we used a simplified model; hence, the queue in the P-based model is likely to have a single item within a binning interval, which prevents the queue from fetching the current NEURON time. However, in the NSLOC-based model, it is rare that the queue has less than two items, even for the simplified model, which increases its overhead for pulling/pushing from/to the queue.</p>
<p id="P46"><xref rid="F5" ref-type="fig">Figure 5</xref>
presents the execution time of the full version of the BMM in ENV2. The execution time in the P-based model with the offline mode is significantly above the 100 s required to meet the real-time constraint except when applying the HWC-1 ms and HWC-unsort-1 ms filtering options. On the other hand, most of the NSLOC-based simulations achieved real-time processing, even in the offline processing mode (<xref rid="F5" ref-type="fig">Figure 5c,d</xref>
). The offline processing mode with no filter option and dataset 2 takes about 1.9 times longer than with dataset 1. This is because the number of input spikes in dataset 2 without any filtering is about 2.3 times more than in dataset 1. <xref rid="F5" ref-type="fig">Figure 5</xref>
also shows how the online processing mode in the prototype implementation satisfies the real-time constraints (approximately 100 s).</p>
<p id="P47"><xref rid="F6" ref-type="fig">Figure 6</xref>
presents the fraction of input and output spikes for each mode, taking as a reference the offline processing mode simulation without filtering (HWC no filter), which has 100% of both input and output spikes. As shown in the figure, all of the online processing mode simulations satisfy the real-time constraint. There are two factors that contribute to achieving the real-time constraint: filtering input sync spikes in the DPM and discarding input spikes in the SIM. When the filtering option is set to HWC no filter in the online processing mode, real-time processing is achieved only due to discarding input spikes in the SIM. If the number of output spikes of an online mode simulation is the same as that of the offline mode simulation, it means that only input spike filtering is playing a role in meeting the real-time constraints (e.g., HWC-unsort-1 ms in <xref rid="F6" ref-type="fig">Figure 6b</xref>
). Otherwise, the two methods are cooperating to deal with the real-time constraint.</p>
<p id="P48">In <xref rid="F6" ref-type="fig">Figure 6c</xref>
, the NSLOC-based online mode simulations with HWC no filter/unsort/ 25 us options generate slightly less output spikes than the offline mode ones with the same filtering options. This means that the online mode simulations discard some input spikes in the SIM. However, they should not need to discard any spikes given that the offline mode simulations with the same options are able to run in real time (<xref rid="F5" ref-type="fig">Figure 5c</xref>
). This happens because the prototype implementation was designed to keep the simulation moving forward even when there are no input spikes, so that the simulation achieves smoother arm trajectories. In order to do this, the callback function in the NSLOC-based online mode simulation checks the queue at very short intervals and forces NEURON to skip input spikes that are lagging behind real time. Therefore, the higher the input spike frequency is the more likely it is that some input spikes are behind the time the callback function is invoked. This explains why the three online mode simulations mentioned above, with a relatively high input spike frequency, have less output spikes than the equivalent corresponding offline mode simulations.</p>
<p id="P49"><xref rid="F7" ref-type="fig">Figure 7a,b</xref>
represents the virtual arm trajectories, that is, the x-y location of the arm end-effector (hand) over time, generated by the P-based BMM simulations, for datasets 1 in offline and online modes, respectively. <xref rid="F7" ref-type="fig">Figure 7c</xref>
also shows the mean distance between each trajectory and the reference simulation trajectory (generated in the offline mode with no filtering and plotted in dotted black color), obtained by taking samples of the x-y hand position every 5 s. <xref rid="F8" ref-type="fig">Figure 8</xref>
shows the results for dataset 2. The trajectories in the offline mode simulation are smoother than in the online mode because, as previously mentioned, in the online mode, the prototype implementation forces NEURON to skip its internal steps when the simulation is slower than real time. This leap causes the virtual arm to skip some movements, too. For example, the virtual arm trajectory graph in <xref rid="F7" ref-type="fig">Figure 7a</xref>
HWC no filter was plotted using 2,000 samples, whereas the trajectory in <xref rid="F7" ref-type="fig">Figure 7b</xref>
HWC no filter consisted only of 498 samples. <xref rid="F7" ref-type="fig">Figures 7</xref>
and <xref rid="F8" ref-type="fig">8</xref>
show that, except for the 1 ms and unsort 1 ms filtering options, both the offline and the online mode simulations are accurately generating virtual arm trajectories very similar to that of the reference simulation.</p>
</sec>
<sec sec-type="discussion" id="S22"><title>Discussion</title>
<p id="P50">The prototype implementation achieved transmission between the data source and the BMM with low overhead (<3.5 ms). This was achieved through the use of basic Java-based MATLAB and Python-based libraries. Python threading is limited by its global interpreter lock [<xref rid="R31" ref-type="bibr">31</xref>
]. Hence, we conducted the real-time processing by using Python processes and inter-process communication with NEURON. Commonly used neuronal simulators such as NEURON [<xref rid="R24" ref-type="bibr">24</xref>
], NEST [<xref rid="R32" ref-type="bibr">32</xref>
], GENESIS [<xref rid="R33" ref-type="bibr">33</xref>
], and MOOSE [<xref rid="R34" ref-type="bibr">34</xref>
], for which BMM spiking network models have been implemented, all provide Python-based interfaces. Being Python-based, the interface with NEURON can be retargeted to other simulators that use a Python interface and offer callback functions. In addition, the binning and filtering operations were implemented for both the HWC and LWC mode, i.e., in MATLAB and Python. As demonstrated, the HWC and LWC modes have similar latency in the two given environments. In other scenarios, users can select the mode that suits better their system performance as needed.</p>
<p id="P51">The prototype implementation of the design currently enables the data flow from the Plexon MAP server (DIM) to NEURON (SIM). Depending on the data acquisition devices and BMM the spiking network simulators used, it might be necessary to modify the implementation of modules to deal with different types of input and output, and different libraries. For example, if LFPs are to be used as input, then DPM and DCM could be extended to deliver this type of signal. Nonetheless, all operations were modularized to maximize module reusability in other contexts.</p>
<p id="P52">There are several inter-process communication methods available that support data streams, including sockets, message queueing, and pipes. The rationale for choosing the client–server model using TCP/IP socket communication for our prototype is its suitability for research in neuroprosthetics, where the different systems are typically interconnected in a LAN environment. The TCP/IP socket provides easy-to-use interfaces between different platforms (Windows and Linux) as well as different programming environments (MATLAB and Python), which are used in the prototype implementation. It is yet unclear what communication methods will be required for working neuroprosthesis of this kind in the future, but similar setups are a feasible option, for example, if the working neuroprosthesis is being used in a clinical environment [<xref rid="R1" ref-type="bibr">1</xref>
].</p>
<p id="P53">With respect to TCP and UDP transmission comparison, it is generally known that the TCP transmission is slower than UDP [<xref rid="R35" ref-type="bibr">35</xref>
]. Thus, previous BCI researchers utilized the ‘pure’ UDP, or used a modified UDP to increase reliability. In the prototype implementation, we applied the TCP transmission with disabled TCP Nagle’s algorithm and demonstrated that the TCP transmission was not inferior to the UDP transmission for the given data characteristics and LAN environments. Additionally, with the increase in spike processing time on the server, the LWC mode has a greater chance of missing spike chunks when using UDP. Hence, we suggest that this modified TCP transmission can be used instead of UDP and still achieve reliable spike transmission in LAN environments.</p>
<p id="P54">In the prototype implementation, the online mode simulations generated significantly less spikes than the offline mode ones since a large number of input spikes were discarded by the queue in the SIM. The queue is aimed at achieving real-time simulations while minimizing the discarding of input spikes but does not consider the type of spikes being discarded or the effect this has on the network. In addition to the queue, we devised an input spike filtering operation, based on the assumption that unsorted spikes or spikes firing simultaneously within a short sync time window (e.g., 25 us) were the result of noise in the system. As shown in <xref rid="F7" ref-type="fig">Figures 7</xref>
and <xref rid="F8" ref-type="fig">8</xref>
, even after removing these sync spikes, the BMM-driven virtual arm tracked the reference arm trajectory. This worked in both offline and online modes, except for two of the filtering cases: HWC-1 ms and HWC-unsort-1 ms. Because experiments have not yet revealed the nature of the simultaneously occurring spikes, we cannot definitively conclude they were caused by noise. However, our results suggest that such input spikes did not play a critical role in the virtual arm movements.</p>
<p id="P55">Our design does not manage the computational resources required by the BMM simulators. This contrasts with previous methods, such as the Cyber-Workstation, which includes the parallel processing capabilities required for the concurrent execution of multiple models demanding large amounts of computing resources [<xref rid="R21" ref-type="bibr">21</xref>
]. The design assumes that the BMM simulator will employ the necessary tools to manage its own computational resources. Nonetheless, achieving real-time processing may require parallelization of the BMM itself and efficient methods to feed <italic>in vivo</italic>
data into a parallelized BMM.</p>
<p id="P56">In the present example, we assumed that the recorded MUA data represented pro-prioceptive information fed directly from the monkey’s brain to a corresponding neural population (P) for continuous input, or to spike generators (NSLOC) for discrete input to the BMM. These proprioceptive signals, which could potentially be recorded from M1, PMd or posterior parietal cortex (PPC), would represent the external state of the prosthetic device (e.g., joint angle) [<xref rid="R36" ref-type="bibr">36</xref>
,<xref rid="R37" ref-type="bibr">37</xref>
]. However, the focus of the paper is on demonstrating this external input can be provided in real time to the BMM; decoding the actual joint angles from the M1 or PMd data is out of the scope of this work. Recorded activity from M1 could also replace the background input noise currently used to drive the model, leading to more complex and realistic dynamics [<xref rid="R22" ref-type="bibr">22</xref>
]. PMd activity has also been hypothesized to encode movement preparatory information such as the target to reach and path to follow [<xref rid="R38" ref-type="bibr">38</xref>
]. Therefore, another potential application of our system is to use the target information encoded in the input PMd data to modulate the activity of the model towards reaching that specific target.</p>
<p id="P57">Recently, communication between a NEURON-based BMM and a physical robot arm was demonstrated in a LAN environment [<xref rid="R10" ref-type="bibr">10</xref>
]. The outputs from the model were delivered to the physical robot arm via UDP transmission, with the robot arm moved following the received motor commands. However, in that study, the discrepancy in update frequency between the model, which run approximately 4 times slower than real time (approximately 6 Hz), and the robot arm (500 Hz) led to undesired abrupt trajectory changes. Making the model run in real time, by discarding input spikes or by filtering some of them, may be a possible solution to achieve a higher update frequency and therefore smoothen the robot trajectory. We are currently working on implementing additional data flow paths of the design, in particular, those to enable bidirectional communication between the NEURON-based model and a prosthetic device to form a closed-loop system.</p>
</sec>
<sec sec-type="conclusions" id="S23"><title>Conclusions</title>
<p id="P58">We proposed a design that enables communication between an <italic>in vivo</italic>
data source, a simulator-based BMM, and a prosthetic device. The design specifies a set of modules and data flows among them. We implemented a prototype of the design, enabling interaction between the Plexon MAP server and a NEURON-based model of sensorimotor cortex capable of controlling a virtual arm. The prototype implementation showed that it supports real-time simulations with a low communication overhead. Interconnection between <italic>in vivo</italic>
experiments and simulator-based BMMs opens the door to a new range of experimental paradigms in brain research. For example, the design could underlie hybrid experimental test beds combining brain activity and a BMM to develop new forms of brain-machine interfaces where the real and simulated brain coadapt and work together [<xref rid="R2" ref-type="bibr">2</xref>
,<xref rid="R36" ref-type="bibr">36</xref>
] in order to repair a damaged brain. Ultimately, the test beds could also be utilized to understand how neural-based cortical stimulation could be applied to accelerate recovery from brain injury [<xref rid="R6" ref-type="bibr">6</xref>
,<xref rid="R7" ref-type="bibr">7</xref>
,<xref rid="R39" ref-type="bibr">39</xref>
].</p>
</sec>
</body>
<back><ack id="S24"><p>This research is supported by the DARPA grant N66001-10-C-2008. The authors thank Dr. Chadderdon and Dr. Neymotin for their support with the NEURON-based BMM; and Joe Francis Lab, in particular, Dr. Tarigoppula, for their <italic>in vivo</italic>
data support.</p>
</ack>
<fn-group><fn id="FN3" fn-type="conflict"><p><bold>Competing interests</bold>
</p>
<p>The authors declare that they have no competing interests.</p>
</fn>
<fn id="FN4" fn-type="con"><p><bold>Authors’ contributions</bold>
</p>
<p>GL participated in the design and coordination of the study, conducted the experiments, analyzed the results, and drafted the manuscript. AM participated in the design and coordination of the study, helped to analyze experimental results and drafted the manuscript. WZ helped to conduct the experiments. SDB, WWL, JTF, and JABF participated in the design and coordination of the study and helped to draft the manuscript. All authors read and approved the final manuscript.</p>
</fn>
</fn-group>
<glossary id="GL"><title>Abbreviations</title>
<def-list><def-item><term id="G1">BCI</term>
<def><p>Brain computer interfaces</p>
</def>
</def-item>
<def-item><term id="G2">BMM</term>
<def><p>Brain biomimetic model</p>
</def>
</def-item>
<def-item><term id="G3">DCM</term>
<def><p>Data communication module</p>
</def>
</def-item>
<def-item><term id="G4">DIM</term>
<def><p>Data acquisition interface module</p>
</def>
</def-item>
<def-item><term id="G5">DPM</term>
<def><p>Data processing module</p>
</def>
</def-item>
<def-item><term id="G6">EM</term>
<def><p>Excitatory motor</p>
</def>
</def-item>
<def-item><term id="G7">ES</term>
<def><p>Excitatory sensory cell</p>
</def>
</def-item>
<def-item><term id="G8">FIFO</term>
<def><p>First-in first-out</p>
</def>
</def-item>
<def-item><term id="G9">HWC</term>
<def><p>Heavyweight client</p>
</def>
</def-item>
<def-item><term id="G10">ILM</term>
<def><p>Low-threshold spiking motor interneuron</p>
</def>
</def-item>
<def-item><term id="G11">ILS</term>
<def><p>Low-threshold spiking sensory interneuron</p>
</def>
</def-item>
<def-item><term id="G12">IM</term>
<def><p>Fast-spiking motor interneuron</p>
</def>
</def-item>
<def-item><term id="G13">IS</term>
<def><p>Fast-spiking sensory interneuron</p>
</def>
</def-item>
<def-item><term id="G14">LAN</term>
<def><p>Local area network</p>
</def>
</def-item>
<def-item><term id="G15">LFP</term>
<def><p>Local field potential</p>
</def>
</def-item>
<def-item><term id="G16">LR</term>
<def><p>Latency requirement</p>
</def>
</def-item>
<def-item><term id="G17">LWC</term>
<def><p>Lightweight client</p>
</def>
</def-item>
<def-item><term id="G18">M1</term>
<def><p>Macaque primary motor cortex</p>
</def>
</def-item>
<def-item><term id="G19">MAM</term>
<def><p>Model execution analysis module</p>
</def>
</def-item>
<def-item><term id="G20">MCM</term>
<def><p>Model execution configuration module</p>
</def>
</def-item>
<def-item><term id="G21">MOM</term>
<def><p>Model execution optimization module</p>
</def>
</def-item>
<def-item><term id="G22">MUA</term>
<def><p>Multi-unit activity</p>
</def>
</def-item>
<def-item><term id="G23">NSLOC</term>
<def><p>Modified NetStim for discrete stimuli</p>
</def>
</def-item>
<def-item><term id="G24">PIM</term>
<def><p>Prosthetic device interface module</p>
</def>
</def-item>
<def-item><term id="G25">PMd</term>
<def><p>Dorsal premotor cortex</p>
</def>
</def-item>
<def-item><term id="G26">PPC</term>
<def><p>Posterior parietal cortex</p>
</def>
</def-item>
<def-item><term id="G27">RTT</term>
<def><p>Round trip time</p>
</def>
</def-item>
<def-item><term id="G28">SIM</term>
<def><p>Simulator interface module</p>
</def>
</def-item>
<def-item><term id="G29">TCP</term>
<def><p>Transmission control protocol</p>
</def>
</def-item>
<def-item><term id="G30">UDP</term>
<def><p>User datagram protocol</p>
</def>
</def-item>
</def-list>
</glossary>
<ref-list><ref id="R1"><label>1</label>
<element-citation publication-type="journal"><person-group person-group-type="author"><name><surname>Leuthardt</surname>
<given-names>EC</given-names>
</name>
<name><surname>Schalk</surname>
<given-names>G</given-names>
</name>
<name><surname>Moran</surname>
<given-names>D</given-names>
</name>
<name><surname>Ojemann</surname>
<given-names>JG</given-names>
</name>
</person-group>
<article-title>The emerging world of motor neuroprosthetics: a neurosurgical perspective</article-title>
<source>Neurosurgery</source>
<year>2006</year>
<volume>59</volume>
<issue>1</issue>
<fpage>1</fpage>
<lpage>14</lpage>
<pub-id pub-id-type="pmid">16823294</pub-id>
</element-citation>
</ref>
<ref id="R2"><label>2</label>
<element-citation publication-type="journal"><person-group person-group-type="author"><name><surname>Sanchez</surname>
<given-names>JC</given-names>
</name>
<name><surname>Lytton</surname>
<given-names>WW</given-names>
</name>
<name><surname>Carmena</surname>
<given-names>JM</given-names>
</name>
<name><surname>Principe</surname>
<given-names>JC</given-names>
</name>
<name><surname>Fortes</surname>
<given-names>J</given-names>
</name>
<name><surname>Barbour</surname>
<given-names>RL</given-names>
</name>
<name><surname>Francis</surname>
<given-names>JT</given-names>
</name>
</person-group>
<article-title>Dynamically repairing and replacing neural networks: using hybrid computational and biological tools</article-title>
<source>IEEE Pulse</source>
<year>2012</year>
<volume>3</volume>
<issue>1</issue>
<fpage>57</fpage>
<lpage>59</lpage>
<pub-id pub-id-type="pmid">22344954</pub-id>
</element-citation>
</ref>
<ref id="R3"><label>3</label>
<element-citation publication-type="journal"><person-group person-group-type="author"><name><surname>Chadderdon</surname>
<given-names>GL</given-names>
</name>
<name><surname>Neymotin</surname>
<given-names>SA</given-names>
</name>
<name><surname>Kerr</surname>
<given-names>CC</given-names>
</name>
<name><surname>Lytton</surname>
<given-names>WW</given-names>
</name>
</person-group>
<article-title>Reinforcement learning of targeted movement in a spiking neuronal model of motor cortex</article-title>
<source>PLoS One</source>
<year>2012</year>
<volume>7</volume>
<issue>10</issue>
<fpage>e47251</fpage>
<pub-id pub-id-type="pmid">23094042</pub-id>
</element-citation>
</ref>
<ref id="R4"><label>4</label>
<element-citation publication-type="journal"><person-group person-group-type="author"><name><surname>Neymotin</surname>
<given-names>SA</given-names>
</name>
<name><surname>Chadderdon</surname>
<given-names>GL</given-names>
</name>
<name><surname>Kerr</surname>
<given-names>CC</given-names>
</name>
<name><surname>Francis</surname>
<given-names>JT</given-names>
</name>
<name><surname>Lytton</surname>
<given-names>WW</given-names>
</name>
</person-group>
<article-title>Reinforcement learning of two-joint virtual arm reaching in a computer model of sensorimotor cortex</article-title>
<source>Neural Comput</source>
<year>2013</year>
<volume>25</volume>
<issue>12</issue>
<fpage>3263</fpage>
<lpage>3293</lpage>
<pub-id pub-id-type="pmid">24047323</pub-id>
</element-citation>
</ref>
<ref id="R5"><label>5</label>
<element-citation publication-type="journal"><person-group person-group-type="author"><name><surname>Dura-Bernal</surname>
<given-names>S</given-names>
</name>
<name><surname>Chadderdon</surname>
<given-names>GL</given-names>
</name>
<name><surname>Neymotin</surname>
<given-names>SA</given-names>
</name>
<name><surname>Xianlian</surname>
<given-names>Z</given-names>
</name>
<name><surname>Przekwas</surname>
<given-names>A</given-names>
</name>
<name><surname>Francis</surname>
<given-names>JT</given-names>
</name>
<name><surname>Lytton</surname>
<given-names>WW</given-names>
</name>
</person-group>
<article-title>Virtual musculoskeletal arm and robotic arm driven by a biomimetic model of sensorimotor cortex with reinforcement learning</article-title>
<source>IEEE Signal Process Med Biol Symp (SPMB)</source>
<year>2013</year>
<pub-id pub-id-type="doi">10.1109/SPMB.2013.6736768</pub-id>
</element-citation>
</ref>
<ref id="R6"><label>6</label>
<element-citation publication-type="journal"><person-group person-group-type="author"><name><surname>Kerr</surname>
<given-names>CC</given-names>
</name>
<name><surname>Neymotin</surname>
<given-names>SA</given-names>
</name>
<name><surname>Chadderdon</surname>
<given-names>GL</given-names>
</name>
<name><surname>Fietkiewicz</surname>
<given-names>CT</given-names>
</name>
<name><surname>Francis</surname>
<given-names>JT</given-names>
</name>
<name><surname>Lytton</surname>
<given-names>WW</given-names>
</name>
</person-group>
<article-title>Electrostimulation as a prosthesis for repair of information flow in a computer model of neocortex</article-title>
<source>IEEE Trans Neural Syst Rehabil Eng</source>
<year>2012</year>
<volume>20</volume>
<issue>2</issue>
<fpage>153</fpage>
<lpage>160</lpage>
<pub-id pub-id-type="pmid">22180517</pub-id>
</element-citation>
</ref>
<ref id="R7"><label>7</label>
<element-citation publication-type="journal"><person-group person-group-type="author"><name><surname>Song</surname>
<given-names>W</given-names>
</name>
<name><surname>Kerr</surname>
<given-names>CC</given-names>
</name>
<name><surname>Lytton</surname>
<given-names>WW</given-names>
</name>
<name><surname>Francis</surname>
<given-names>JT</given-names>
</name>
</person-group>
<article-title>Cortical plasticity induced by spike-triggered microstimulation in primate somatosensory cortex</article-title>
<source>PLoS One</source>
<year>2013</year>
<volume>8</volume>
<fpage>e57453</fpage>
<pub-id pub-id-type="pmid">23472086</pub-id>
</element-citation>
</ref>
<ref id="R8"><label>8</label>
<element-citation publication-type="journal"><person-group person-group-type="author"><name><surname>Chadderdon</surname>
<given-names>GL</given-names>
</name>
<name><surname>Mohan</surname>
<given-names>A</given-names>
</name>
<name><surname>Suter</surname>
<given-names>BA</given-names>
</name>
<name><surname>Neymotin</surname>
<given-names>SA</given-names>
</name>
<name><surname>Kerr</surname>
<given-names>CC</given-names>
</name>
<name><surname>Francis</surname>
<given-names>JT</given-names>
</name>
<name><surname>Shepherd</surname>
<given-names>GMG</given-names>
</name>
<name><surname>Lytton</surname>
<given-names>WW</given-names>
</name>
</person-group>
<article-title>Motor cortex microcircuit simulation based on brain activity mapping</article-title>
<source>Neural Comput</source>
<year>2014</year>
<volume>26</volume>
<issue>7</issue>
<fpage>1239</fpage>
<lpage>1262</lpage>
<pub-id pub-id-type="pmid">24708371</pub-id>
</element-citation>
</ref>
<ref id="R9"><label>9</label>
<element-citation publication-type="journal"><person-group person-group-type="author"><name><surname>Neymotin</surname>
<given-names>SA</given-names>
</name>
<name><surname>Lee</surname>
<given-names>H</given-names>
</name>
<name><surname>Park</surname>
<given-names>E</given-names>
</name>
<name><surname>Fenton</surname>
<given-names>AA</given-names>
</name>
<name><surname>Lytton</surname>
<given-names>WW</given-names>
</name>
</person-group>
<article-title>Emergence of physiological oscillation frequencies in a computer model of neocortex</article-title>
<source>Front Comput Neurosci</source>
<year>2011</year>
<volume>5</volume>
<issue>19</issue>
<fpage>17</fpage>
<pub-id pub-id-type="pmid">21559067</pub-id>
</element-citation>
</ref>
<ref id="R10"><label>10</label>
<element-citation publication-type="journal"><person-group person-group-type="author"><name><surname>Dura-Bernal</surname>
<given-names>S</given-names>
</name>
<name><surname>Chadderdon</surname>
<given-names>GL</given-names>
</name>
<name><surname>Neymotin</surname>
<given-names>SA</given-names>
</name>
<name><surname>Francis</surname>
<given-names>JT</given-names>
</name>
<name><surname>Lytton</surname>
<given-names>WW</given-names>
</name>
</person-group>
<article-title>Towards a real-time interface between a biomimetic model of sensorimotor cortex and a robotic arm</article-title>
<source>Pattern Recognit Lett</source>
<year>2014</year>
<volume>36</volume>
<fpage>204</fpage>
<lpage>212</lpage>
</element-citation>
</ref>
<ref id="R11"><label>11</label>
<element-citation publication-type="journal"><person-group person-group-type="author"><name><surname>Piwkowska</surname>
<given-names>Z</given-names>
</name>
<name><surname>Destexhe</surname>
<given-names>A</given-names>
</name>
<name><surname>Bal</surname>
<given-names>T</given-names>
</name>
</person-group>
<article-title>Associating living cells and computational models: an introduction to dynamic clamp principles and its applications</article-title>
<source>Dynamic-Clamp</source>
<year>2009</year>
<volume>1</volume>
<fpage>1</fpage>
<lpage>30</lpage>
</element-citation>
</ref>
<ref id="R12"><label>12</label>
<element-citation publication-type="journal"><person-group person-group-type="author"><name><surname>Brette</surname>
<given-names>R</given-names>
</name>
<name><surname>Rudolph</surname>
<given-names>M</given-names>
</name>
<name><surname>Carnevale</surname>
<given-names>T</given-names>
</name>
<name><surname>Hines</surname>
<given-names>M</given-names>
</name>
<name><surname>Beeman</surname>
<given-names>D</given-names>
</name>
<name><surname>Bower</surname>
<given-names>JM</given-names>
</name>
<name><surname>Diesmann</surname>
<given-names>M</given-names>
</name>
<name><surname>Morrison</surname>
<given-names>A</given-names>
</name>
<name><surname>Goodman</surname>
<given-names>PH</given-names>
</name>
<name><surname>Harris</surname>
<given-names>FC</given-names>
</name>
<name><surname>Zirpe</surname>
<given-names>M</given-names>
</name>
<name><surname>Natschläger</surname>
<given-names>T</given-names>
</name>
<name><surname>Pecevski</surname>
<given-names>D</given-names>
</name>
<name><surname>Ermentrout</surname>
<given-names>B</given-names>
</name>
<name><surname>Djurfeldt</surname>
<given-names>M</given-names>
</name>
<name><surname>Lansner</surname>
<given-names>A</given-names>
</name>
<name><surname>Rochel</surname>
<given-names>O</given-names>
</name>
<name><surname>Vieville</surname>
<given-names>T</given-names>
</name>
<name><surname>Muller</surname>
<given-names>E</given-names>
</name>
<name><surname>Davison</surname>
<given-names>AP</given-names>
</name>
<name><surname>Boustani</surname>
<given-names>SE</given-names>
</name>
<name><surname>Destexhe</surname>
<given-names>A</given-names>
</name>
</person-group>
<article-title>Simulation of networks of spiking neurons: a review of tools and strategies</article-title>
<source>J Comput Neurosci</source>
<year>2007</year>
<volume>23</volume>
<issue>3</issue>
<fpage>349</fpage>
<lpage>398</lpage>
<pub-id pub-id-type="pmid">17629781</pub-id>
</element-citation>
</ref>
<ref id="R13"><label>13</label>
<element-citation publication-type="confproc"><person-group person-group-type="author"><name><surname>Bishop</surname>
<given-names>W</given-names>
</name>
<name><surname>Armiger</surname>
<given-names>R</given-names>
</name>
<name><surname>Burck</surname>
<given-names>J</given-names>
</name>
<name><surname>Bridges</surname>
<given-names>M</given-names>
</name>
<name><surname>Hauschild</surname>
<given-names>M</given-names>
</name>
<name><surname>Englehart</surname>
<given-names>K</given-names>
</name>
<name><surname>Scheme</surname>
<given-names>E</given-names>
</name>
<name><surname>Vogelstein</surname>
<given-names>RJ</given-names>
</name>
<name><surname>Beaty</surname>
<given-names>J</given-names>
</name>
<name><surname>Harshbarger</surname>
<given-names>S</given-names>
</name>
</person-group>
<article-title>A real-time virtual integration environment for the design and development of neural prosthetic systems</article-title>
<conf-name>The 30th Annual International Conference of the IEEE Engineering in Medicine and Biology Society</conf-name>
<year>2008</year>
<fpage>615</fpage>
<lpage>619</lpage>
</element-citation>
</ref>
<ref id="R14"><label>14</label>
<element-citation publication-type="journal"><person-group person-group-type="author"><name><surname>Armiger</surname>
<given-names>RS</given-names>
</name>
<name><surname>Tenore</surname>
<given-names>FV</given-names>
</name>
<name><surname>Bishop</surname>
<given-names>WE</given-names>
</name>
<name><surname>Beaty</surname>
<given-names>JD</given-names>
</name>
<name><surname>Bridges</surname>
<given-names>MM</given-names>
</name>
<name><surname>Burck</surname>
<given-names>JM</given-names>
</name>
<name><surname>Vogelstein</surname>
<given-names>RJ</given-names>
</name>
<name><surname>Harshbarger</surname>
<given-names>SD</given-names>
</name>
</person-group>
<article-title>A real-time virtual integration environment for neuroprosthetics and rehabilitation</article-title>
<source>J Hopkins APL Tech Dig</source>
<year>2011</year>
<volume>30</volume>
<issue>3</issue>
<fpage>198</fpage>
<lpage>206</lpage>
</element-citation>
</ref>
<ref id="R15"><label>15</label>
<element-citation publication-type="journal"><person-group person-group-type="author"><name><surname>Delorme</surname>
<given-names>A</given-names>
</name>
<name><surname>Kothe</surname>
<given-names>C</given-names>
</name>
<name><surname>Vankov</surname>
<given-names>A</given-names>
</name>
<name><surname>Bigdely-Shamlo</surname>
<given-names>N</given-names>
</name>
<name><surname>Oostenveld</surname>
<given-names>R</given-names>
</name>
<name><surname>Zander</surname>
<given-names>TO</given-names>
</name>
<name><surname>Makeig</surname>
<given-names>S</given-names>
</name>
</person-group>
<article-title>MATLAB-based tools for BCI research</article-title>
<source>Brain-Computer Interfaces</source>
<year>2010</year>
<fpage>241</fpage>
<lpage>259</lpage>
</element-citation>
</ref>
<ref id="R16"><label>16</label>
<element-citation publication-type="journal"><person-group person-group-type="author"><name><surname>Schalk</surname>
<given-names>G</given-names>
</name>
<name><surname>Mcfarl</surname>
<given-names>DJ</given-names>
</name>
<name><surname>Hinterberger</surname>
<given-names>T</given-names>
</name>
<name><surname>Birbaumer</surname>
<given-names>N</given-names>
</name>
<name><surname>Wolpaw</surname>
<given-names>JR</given-names>
</name>
</person-group>
<article-title>BCI2000: a general-purpose brain-computer interface (BCI) system</article-title>
<source>IEEE Trans Biomed Eng</source>
<year>2004</year>
<volume>51</volume>
<issue>6</issue>
<fpage>1034</fpage>
<lpage>1043</lpage>
<pub-id pub-id-type="pmid">15188875</pub-id>
</element-citation>
</ref>
<ref id="R17"><label>17</label>
<element-citation publication-type="confproc"><person-group person-group-type="author"><name><surname>Bianchi</surname>
<given-names>L</given-names>
</name>
<name><surname>Babiloni</surname>
<given-names>J</given-names>
</name>
<name><surname>Cincotti</surname>
<given-names>J</given-names>
</name>
<name><surname>Mattia</surname>
<given-names>D</given-names>
</name>
<name><surname>Marciani</surname>
<given-names>M</given-names>
</name>
</person-group>
<article-title>Developing wearable bio-feedback systems: the BF++ framework approach</article-title>
<conf-name>The 1st International conference of IEEE EMBS on Neural Engineering</conf-name>
<year>2003</year>
<fpage>607</fpage>
<lpage>609</lpage>
</element-citation>
</ref>
<ref id="R18"><label>18</label>
<element-citation publication-type="confproc"><person-group person-group-type="author"><name><surname>Maggi</surname>
<given-names>L</given-names>
</name>
<name><surname>Parini</surname>
<given-names>S</given-names>
</name>
<name><surname>Perego</surname>
<given-names>P</given-names>
</name>
<name><surname>Andreoni</surname>
<given-names>G</given-names>
</name>
</person-group>
<article-title>BCI++: an object-oriented BCI prototyping framework</article-title>
<conf-name>Proceedings of the 4th International Brain-Computer Interface Workshop and Training Course</conf-name>
<year>2008</year>
</element-citation>
</ref>
<ref id="R19"><label>19</label>
<element-citation publication-type="journal"><person-group person-group-type="author"><name><surname>Renard</surname>
<given-names>Y</given-names>
</name>
<name><surname>Lotte</surname>
<given-names>F</given-names>
</name>
<name><surname>Gibert</surname>
<given-names>G</given-names>
</name>
<name><surname>Congedo</surname>
<given-names>M</given-names>
</name>
<name><surname>Maby</surname>
<given-names>E</given-names>
</name>
<name><surname>Delannoy</surname>
<given-names>V</given-names>
</name>
<name><surname>Bertrand</surname>
<given-names>O</given-names>
</name>
<name><surname>Lécuyer</surname>
<given-names>A</given-names>
</name>
</person-group>
<article-title>OpenViBE: an open-source software platform to design, test, and use brain-computer interfaces in real and virtual environments</article-title>
<source>Presence: Teleoperators Virtual Environ</source>
<year>2010</year>
<volume>19</volume>
<issue>1</issue>
<fpage>35</fpage>
<lpage>53</lpage>
</element-citation>
</ref>
<ref id="R20"><label>20</label>
<element-citation publication-type="journal"><person-group person-group-type="author"><name><surname>Schlogl</surname>
<given-names>A</given-names>
</name>
<name><surname>Brunner</surname>
<given-names>C</given-names>
</name>
</person-group>
<article-title>BioSig: a free and open source software library for BCI research</article-title>
<source>Computer</source>
<year>2008</year>
<volume>41</volume>
<issue>10</issue>
<fpage>44</fpage>
<lpage>50</lpage>
</element-citation>
</ref>
<ref id="R21"><label>21</label>
<element-citation publication-type="confproc"><person-group person-group-type="author"><name><surname>Rattanatamrong</surname>
<given-names>P</given-names>
</name>
<name><surname>Matsunaga</surname>
<given-names>A</given-names>
</name>
<name><surname>Fortes</surname>
<given-names>JAB</given-names>
</name>
</person-group>
<article-title>BMI CyberWorkstation: a cyberinfrastructure for collaborative experimental research on brain-machine interfaces</article-title>
<conf-name>The 6th International Conference on Collaborative Computing: Networking, Applications and Worksharing (CollaborateCom)</conf-name>
<year>2010</year>
<fpage>1</fpage>
<lpage>10</lpage>
</element-citation>
</ref>
<ref id="R22"><label>22</label>
<element-citation publication-type="journal"><person-group person-group-type="author"><name><surname>Kerr</surname>
<given-names>CC</given-names>
</name>
<name><surname>Van Albada</surname>
<given-names>SJ</given-names>
</name>
<name><surname>Neymotin</surname>
<given-names>SA</given-names>
</name>
<name><surname>Chadderdon</surname>
<given-names>GL</given-names>
</name>
<name><surname>Robinson</surname>
<given-names>PA</given-names>
</name>
<name><surname>Lytton</surname>
<given-names>WW</given-names>
</name>
</person-group>
<article-title>Cortical information flow in Parkinson’s disease: a composite network/field model</article-title>
<source>Front Comput Neurosci</source>
<year>2013</year>
<volume>7</volume>
<issue>39</issue>
<fpage>14</fpage>
<pub-id pub-id-type="pmid">23494365</pub-id>
</element-citation>
</ref>
<ref id="R23"><label>23</label>
<element-citation publication-type="journal"><person-group person-group-type="author"><name><surname>Migliore</surname>
<given-names>M</given-names>
</name>
<name><surname>Cannia</surname>
<given-names>C</given-names>
</name>
<name><surname>Lytton</surname>
<given-names>WW</given-names>
</name>
<name><surname>Markram</surname>
<given-names>H</given-names>
</name>
<name><surname>Hines</surname>
<given-names>ML</given-names>
</name>
</person-group>
<article-title>Parallel network simulations with NEURON</article-title>
<source>J Comput Neurosci</source>
<year>2006</year>
<volume>21</volume>
<issue>2</issue>
<fpage>119</fpage>
<lpage>129</lpage>
<pub-id pub-id-type="pmid">16732488</pub-id>
</element-citation>
</ref>
<ref id="R24"><label>24</label>
<element-citation publication-type="journal"><person-group person-group-type="author"><name><surname>Hines</surname>
<given-names>ML</given-names>
</name>
<name><surname>Davison</surname>
<given-names>AP</given-names>
</name>
<name><surname>Muller</surname>
<given-names>E</given-names>
</name>
</person-group>
<article-title>NEURON and Python</article-title>
<source>Front Neuroinformatics</source>
<year>2009</year>
<volume>3</volume>
<issue>1</issue>
<fpage>12</fpage>
</element-citation>
</ref>
<ref id="R25"><label>25</label>
<element-citation publication-type="journal"><person-group person-group-type="author"><name><surname>Lytton</surname>
<given-names>WW</given-names>
</name>
<name><surname>Omurtag</surname>
<given-names>A</given-names>
</name>
<name><surname>Neymotin</surname>
<given-names>SA</given-names>
</name>
<name><surname>Hines</surname>
<given-names>ML</given-names>
</name>
</person-group>
<article-title>Just-in-time connectivity for large spiking networks</article-title>
<source>Neural Comput</source>
<year>2008</year>
<volume>20</volume>
<issue>11</issue>
<fpage>2745</fpage>
<lpage>2756</lpage>
<pub-id pub-id-type="pmid">18533821</pub-id>
</element-citation>
</ref>
<ref id="R26"><label>26</label>
<element-citation publication-type="journal"><person-group person-group-type="author"><name><surname>Lytton</surname>
<given-names>WW</given-names>
</name>
<name><surname>Stewart</surname>
<given-names>M</given-names>
</name>
</person-group>
<article-title>Rule-based firing for network simulations</article-title>
<source>Neurocomputing</source>
<year>2006</year>
<volume>69</volume>
<issue>10</issue>
<fpage>1160</fpage>
<lpage>1164</lpage>
</element-citation>
</ref>
<ref id="R27"><label>27</label>
<element-citation publication-type="journal"><person-group person-group-type="author"><name><surname>Postel</surname>
<given-names>J</given-names>
</name>
</person-group>
<article-title>User datagram protocol</article-title>
<source>RFC</source>
<volume>768</volume>
<year>1980</year>
</element-citation>
</ref>
<ref id="R28"><label>28</label>
<element-citation publication-type="journal"><person-group person-group-type="author"><name><surname>Postel</surname>
<given-names>J</given-names>
</name>
</person-group>
<article-title>Transmission control protocol</article-title>
<source>RFC</source>
<volume>793</volume>
<year>1981</year>
</element-citation>
</ref>
<ref id="R29"><label>29</label>
<element-citation publication-type="book"><person-group person-group-type="author"><name><surname>Zhang</surname>
<given-names>W</given-names>
</name>
<name><surname>Lee</surname>
<given-names>G</given-names>
</name>
<name><surname>Matsunaga</surname>
<given-names>A</given-names>
</name>
<name><surname>Fortes</surname>
<given-names>JAB</given-names>
</name>
</person-group>
<article-title>Implementing networking communication between PLEXON and NEURON</article-title>
<source>Technical Report</source>
<publisher-loc>Gainesville, FL, USA</publisher-loc>
<publisher-name>Univ. Florida, ACIS Lab</publisher-name>
<year>2012</year>
</element-citation>
</ref>
<ref id="R30"><label>30</label>
<element-citation publication-type="confproc"><person-group person-group-type="author"><name><surname>Sanchez</surname>
<given-names>JC</given-names>
</name>
<name><surname>Tarigoppula</surname>
<given-names>A</given-names>
</name>
<name><surname>Choi</surname>
<given-names>JS</given-names>
</name>
<name><surname>Marsh</surname>
<given-names>BT</given-names>
</name>
<name><surname>Chhatbar</surname>
<given-names>PY</given-names>
</name>
<name><surname>Mahmoudi</surname>
<given-names>B</given-names>
</name>
<name><surname>Francis</surname>
<given-names>JT</given-names>
</name>
</person-group>
<article-title>Control of a center-out reaching task using a reinforcement learning brain-machine interface</article-title>
<conf-name>The 5th International conference of IEEE EMBS on Neural Engineering</conf-name>
<year>2011</year>
<fpage>525</fpage>
<lpage>528</lpage>
</element-citation>
</ref>
<ref id="R31"><label>31</label>
<element-citation publication-type="book"><person-group person-group-type="author"><name><surname>Beazley</surname>
<given-names>D</given-names>
</name>
</person-group>
<source>Understanding the python gil</source>
<publisher-loc>Georgia</publisher-loc>
<publisher-name>PyCON Python Conference Atlanta</publisher-name>
<year>2010</year>
</element-citation>
</ref>
<ref id="R32"><label>32</label>
<element-citation publication-type="journal"><person-group person-group-type="author"><name><surname>Eppler</surname>
<given-names>JM</given-names>
</name>
<name><surname>Helias</surname>
<given-names>M</given-names>
</name>
<name><surname>Muller</surname>
<given-names>E</given-names>
</name>
<name><surname>Diesmann</surname>
<given-names>M</given-names>
</name>
<name><surname>Gewaltig</surname>
<given-names>MO</given-names>
</name>
</person-group>
<article-title>PyNEST: a convenient interface to the NEST simulator</article-title>
<source>Front Neuroinformatics</source>
<year>2008</year>
<volume>2</volume>
<issue>12</issue>
<fpage>12</fpage>
</element-citation>
</ref>
<ref id="R33"><label>33</label>
<element-citation publication-type="journal"><person-group person-group-type="author"><name><surname>Cornelis</surname>
<given-names>H</given-names>
</name>
<name><surname>Rodriguez</surname>
<given-names>AL</given-names>
</name>
<name><surname>Coop</surname>
<given-names>AD</given-names>
</name>
<name><surname>Bower</surname>
<given-names>JM</given-names>
</name>
</person-group>
<article-title>Python as a federation tool for GENESIS 3.0</article-title>
<source>PLoS One</source>
<year>2012</year>
<volume>7</volume>
<issue>1</issue>
<fpage>e29018</fpage>
<pub-id pub-id-type="pmid">22276101</pub-id>
</element-citation>
</ref>
<ref id="R34"><label>34</label>
<element-citation publication-type="journal"><person-group person-group-type="author"><name><surname>Gaston</surname>
<given-names>D</given-names>
</name>
<name><surname>Newman</surname>
<given-names>C</given-names>
</name>
<name><surname>Hansen</surname>
<given-names>G</given-names>
</name>
<name><surname>Lebrun-Grandié</surname>
<given-names>D</given-names>
</name>
</person-group>
<article-title>MOOSE: a parallel computational framework for coupled systems of nonlinear equations</article-title>
<source>Nuclear Eng Design</source>
<year>2009</year>
<volume>239</volume>
<issue>10</issue>
<fpage>1768</fpage>
<lpage>1778</lpage>
</element-citation>
</ref>
<ref id="R35"><label>35</label>
<element-citation publication-type="web"><source>Communication Networks/TCP and UDP Protocols-Wikibooks</source>
<comment><ext-link ext-link-type="uri" xlink:href="http://en.wikibooks.org/wiki/Communication_Networks/TCP_and_UDP_Protocols">http://en.wikibooks.org/wiki/Communication_Networks/TCP_and_UDP_Protocols</ext-link>
</comment>
</element-citation>
</ref>
<ref id="R36"><label>36</label>
<element-citation publication-type="journal"><person-group person-group-type="author"><name><surname>Digiovanna</surname>
<given-names>J</given-names>
</name>
<name><surname>Marchal</surname>
<given-names>L</given-names>
</name>
<name><surname>Rattanatamrong</surname>
<given-names>P</given-names>
</name>
<name><surname>Zhao</surname>
<given-names>M</given-names>
</name>
<name><surname>Darmanjian</surname>
<given-names>S</given-names>
</name>
<name><surname>Mahmoudi</surname>
<given-names>B</given-names>
</name>
<name><surname>Sanchez</surname>
<given-names>JC</given-names>
</name>
<name><surname>Príncipe</surname>
<given-names>JC</given-names>
</name>
<name><surname>Hermer-Vazquez</surname>
<given-names>L</given-names>
</name>
<name><surname>Figueiredo</surname>
<given-names>R</given-names>
</name>
<name><surname>Fortes</surname>
<given-names>JAB</given-names>
</name>
</person-group>
<article-title>Towards real-time distributed signal modeling for brain-machine interfaces</article-title>
<source>ICCS ‘07: Proceedings of the 7th international conference on Computational Science, Part I</source>
<year>2007</year>
<fpage>964</fpage>
<lpage>971</lpage>
</element-citation>
</ref>
<ref id="R37"><label>37</label>
<element-citation publication-type="journal"><person-group person-group-type="author"><name><surname>Francis</surname>
<given-names>JT</given-names>
</name>
</person-group>
<article-title>The neural representation of kinematics and dynamics in multiple brain regions: the use of force field reaching paradigms in the primate and rat</article-title>
<source>Mechanosensitivity Nerv Syst</source>
<year>2009</year>
<volume>2</volume>
<fpage>215</fpage>
<lpage>247</lpage>
</element-citation>
</ref>
<ref id="R38"><label>38</label>
<element-citation publication-type="journal"><person-group person-group-type="author"><name><surname>Miall</surname>
<given-names>RC</given-names>
</name>
</person-group>
<article-title>Cortical motor control</article-title>
<source>Neuroscience in the 21st Century</source>
<year>2013</year>
<fpage>1187</fpage>
<lpage>1208</lpage>
</element-citation>
</ref>
<ref id="R39"><label>39</label>
<element-citation publication-type="journal"><person-group person-group-type="author"><name><surname>Li</surname>
<given-names>L</given-names>
</name>
<name><surname>Park</surname>
<given-names>IM</given-names>
</name>
<name><surname>Brockmeier</surname>
<given-names>A</given-names>
</name>
<name><surname>Chen</surname>
<given-names>B</given-names>
</name>
<name><surname>Seth</surname>
<given-names>S</given-names>
</name>
<name><surname>Francis</surname>
<given-names>JT</given-names>
</name>
<name><surname>Sanchez</surname>
<given-names>JC</given-names>
</name>
<name><surname>Principe</surname>
<given-names>JC</given-names>
</name>
</person-group>
<article-title>Adaptive inverse control of neural spatiotemporal spike patterns with a reproducing kernel Hilbert space (RKHS) framework</article-title>
<source>IEEE Trans Neural Syst Rehabil Eng</source>
<year>2013</year>
<volume>21</volume>
<issue>4</issue>
<fpage>532</fpage>
<lpage>543</lpage>
<pub-id pub-id-type="pmid">22868633</pub-id>
</element-citation>
</ref>
</ref-list>
</back>
<floats-group><fig id="F1" orientation="portrait" position="float"><label>Figure 1</label>
<caption><title>Requirements for the interaction between the data source and the BMM</title>
<p>Requirements for the interaction between the data source and the BMM as a function of the simulation mode.</p>
</caption>
<graphic xlink:href="nihms743532f1"></graphic>
</fig>
<fig id="F2" orientation="portrait" position="float"><label>Figure 2</label>
<caption><title>Modules structure and data flows of the design</title>
<p>The design consists of three modules: <italic>in silico</italic>
interface modules, interconnection module, and <italic>in vivo</italic>
interface module. There are three data flows: from a live subject to a simulator, from the simulator to a prosthetic device, and from the model execution configuration module to other modules in order to set up the simulation environment with the user configuration parameters.</p>
</caption>
<graphic xlink:href="nihms743532f2"></graphic>
</fig>
<fig id="F3" orientation="portrait" position="float"><label>Figure 3</label>
<caption><title>Logic diagram of the prototype implementation</title>
<p>The arrows illustrate the flow for model configuration and for feeding data from a live subject to a BMM simulator. The targeted data source is the Plexon MAP server, and the BMM simulator is NEURON. Dotted arrows are the data flow for model execution configuration. Solid line arrows show the data flow from a live subject to NEURON.</p>
</caption>
<graphic xlink:href="nihms743532f3"></graphic>
</fig>
<fig id="F4" orientation="portrait" position="float"><label>Figure 4</label>
<caption><title>Latency for filtering and transmission in ENV2 with TCP transmission as a function of filtering options</title>
<p><bold>(a)</bold>
The P-based model with dataset 1; <bold>(b)</bold>
The P-based model with dataset 2; <bold>(c)</bold>
The NSLOC-based model with dataset 1; <bold>(d)</bold>
The NSLOC-based model with dataset 2.</p>
</caption>
<graphic xlink:href="nihms743532f4"></graphic>
</fig>
<fig id="F5" orientation="portrait" position="float"><label>Figure 5</label>
<caption><title>Execution time of the BMM in ENV2 with the TCP transmission</title>
<p>Each simulation runs 100 s of simulated time. <bold>(a)</bold>
The P-based model with dataset 1; <bold>(b)</bold>
the P-based model with dataset 2; <bold>(c)</bold>
the NSLOC-based model with dataset 1; and <bold>(d)</bold>
the NSLOC-based model with dataset 2.</p>
</caption>
<graphic xlink:href="nihms743532f5"></graphic>
</fig>
<fig id="F6" orientation="portrait" position="float"><label>Figure 6</label>
<caption><title>Fraction of input and output spikes for different processing modes</title>
<p>The fraction of input and output spikes based on the offline processing mode simulation without filtering (HWC no filter) in ENV2 with the TCP transmission. <bold>(a)</bold>
The P-based model with dataset 1; <bold>(b)</bold>
the P-based model with dataset 2;<bold>(c)</bold>
the NSLOC-based model with dataset 1; and <bold>(d)</bold>
the NSLOC-based model with dataset 2.</p>
</caption>
<graphic xlink:href="nihms743532f6"></graphic>
</fig>
<fig id="F7" orientation="portrait" position="float"><label>Figure 7</label>
<caption><title>Virtual arm movement analysis as a function of filtering options for dataset 1 in ENV2</title>
<p><bold>(a)</bold>
Virtual arm trajectories in the P-based model with the offline mode; <bold>(b)</bold>
virtual arm trajectories in the P-based model with the online mode; and <bold>(c)</bold>
Euclidean distance between the trajectories generated by the different simulation modes and the reference trajectory, (averaged over 20 samples taken at 5 s intervals). The black dotted line shows the reference trajectories. The P-based model ran for 100 s of simulated time with the learning mode was turned off.</p>
</caption>
<graphic xlink:href="nihms743532f7"></graphic>
</fig>
<fig id="F8" orientation="portrait" position="float"><label>Figure 8</label>
<caption><title>Virtual arm movement analysis as a function of filtering options for dataset 2 in ENV2</title>
<p><bold>(a)</bold>
Virtual arm movement in the P-based model with the offline mode; <bold>(b)</bold>
virtual arm movement in the P-based model with the online mode; and <bold>(c)</bold>
Euclidean distance between the trajectories generated by the different simulation modes and the reference trajectory (averaged over 20 samples taken at 5 s intervals). The black dotted line shows the reference trajectories. The P-based model ran for 100 s of simulated time with the learning mode was turned off.</p>
</caption>
<graphic xlink:href="nihms743532f8"></graphic>
</fig>
<table-wrap id="T1" position="float" orientation="portrait"><label>Table 1</label>
<caption><p>Computational environments</p>
</caption>
<table frame="hsides" rules="groups"><thead><tr><th valign="top" align="left" rowspan="1" colspan="1">Name</th>
<th valign="top" align="left" rowspan="1" colspan="1">Resources</th>
<th valign="top" align="left" rowspan="1" colspan="1">Client</th>
<th valign="top" align="left" rowspan="1" colspan="1">Server</th>
</tr>
</thead>
<tbody><tr><td align="left" valign="top" rowspan="5" colspan="1">ENV1</td>
<td align="left" valign="top" rowspan="1" colspan="1">CPU</td>
<td align="left" valign="top" rowspan="1" colspan="1">Intel® Core<sup>™</sup>
2 Duo CPU E840 3.00 GHz</td>
<td align="left" valign="top" rowspan="1" colspan="1">Identical</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1">Memory (RAM)</td>
<td align="left" valign="top" rowspan="1" colspan="1">4 GB</td>
<td align="left" valign="top" rowspan="1" colspan="1">Identical</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1">OS</td>
<td align="left" valign="top" rowspan="1" colspan="1">Windows 7 Enterprise</td>
<td align="left" valign="top" rowspan="1" colspan="1">CentOS 6.4 (Final) running Linux kernel 2.6.32–358.el6.x86_64 #1 SMP</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1">Software</td>
<td align="left" valign="top" rowspan="1" colspan="1">MATLAB R2013b (8.2.0.701) 64-bit (win64)</td>
<td align="left" valign="top" rowspan="1" colspan="1">NEURON 7.4 (984)</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1"></td>
<td align="left" valign="top" rowspan="1" colspan="1">PLEXON SoftServer version 2.0</td>
<td align="left" valign="top" rowspan="1" colspan="1">Python 2.7.3</td>
</tr>
<tr><td align="left" valign="top" rowspan="5" colspan="1">ENV2</td>
<td align="left" valign="top" rowspan="1" colspan="1">CPU</td>
<td align="left" valign="top" rowspan="1" colspan="1">Intel® Core<sup>™</sup>
2 Quad CPU Q8400 2.66 GHz</td>
<td align="left" valign="top" rowspan="1" colspan="1">2 Intel® Xeon® CPU L5640 2.27 GHz (6 cores/CPU) with Hyper-threading enabled</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1">Memory (RAM)</td>
<td align="left" valign="top" rowspan="1" colspan="1">6 GB</td>
<td align="left" valign="top" rowspan="1" colspan="1">96 GB</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1">OS</td>
<td align="left" valign="top" rowspan="1" colspan="1">Windows vista<sup>™</sup>
home premium 64-bit</td>
<td align="left" valign="top" rowspan="1" colspan="1">Ubuntu running Linux kernel 2.6.38–8-generic #42-Ubuntu SMP</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1">Software</td>
<td align="left" valign="top" rowspan="1" colspan="1">MATLAB R2007b (7.5.0.342) 64-bit (win64)</td>
<td align="left" valign="top" rowspan="1" colspan="1">NEURON 7.4 (982+)</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1"></td>
<td align="left" valign="top" rowspan="1" colspan="1">PLEXON SoftServer version 2.0</td>
<td align="left" valign="top" rowspan="1" colspan="1">Python 2.7.3</td>
</tr>
</tbody>
</table>
</table-wrap>
<table-wrap id="T2" position="float" orientation="portrait"><label>Table 2</label>
<caption><p>Dataset analysis</p>
</caption>
<table frame="hsides" rules="groups"><thead><tr><th valign="top" align="left" rowspan="1" colspan="1">Name</th>
<th valign="top" align="left" rowspan="1" colspan="1">Dataset 1</th>
<th valign="top" align="left" rowspan="1" colspan="1">Dataset 2</th>
</tr>
</thead>
<tbody><tr><td align="left" valign="top" rowspan="1" colspan="1">Data type</td>
<td align="left" valign="top" rowspan="1" colspan="1">M1</td>
<td align="left" valign="top" rowspan="1" colspan="1">PMd</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1">Frequency (Hz) of input spikes</td>
<td align="left" valign="top" rowspan="1" colspan="1">1,399</td>
<td align="left" valign="top" rowspan="1" colspan="1">3,173</td>
</tr>
<tr><td colspan="3" valign="bottom" align="left" rowspan="1"><hr></hr>
</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1"><bold>Filtering option</bold>
</td>
<td colspan="2" align="left" valign="top" rowspan="1"><bold>Number and percentage of input spikes after filtering (% no filtering)</bold>
</td>
</tr>
<tr><td colspan="3" valign="bottom" align="left" rowspan="1"><hr></hr>
</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1">No filter</td>
<td align="left" valign="top" rowspan="1" colspan="1">139,529 (100)</td>
<td align="left" valign="top" rowspan="1" colspan="1">317,034 (100)</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1">Unsort</td>
<td align="left" valign="top" rowspan="1" colspan="1">124,011 (89)</td>
<td align="left" valign="top" rowspan="1" colspan="1">122,725 (39)</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1">25 us window (25 us)</td>
<td align="left" valign="top" rowspan="1" colspan="1">116,314 (83)</td>
<td align="left" valign="top" rowspan="1" colspan="1">207,525 (66)</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1">Unsort 25 us</td>
<td align="left" valign="top" rowspan="1" colspan="1">103,110 (74)</td>
<td align="left" valign="top" rowspan="1" colspan="1">94,413 (30)</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1">1 ms window (1 ms)</td>
<td align="left" valign="top" rowspan="1" colspan="1">31,854 (23)</td>
<td align="left" valign="top" rowspan="1" colspan="1">21,437 (7)</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1">Unsort 1 ms</td>
<td align="left" valign="top" rowspan="1" colspan="1">28,489 (20)</td>
<td align="left" valign="top" rowspan="1" colspan="1">11,971 (4)</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1">Total time (s)</td>
<td align="left" valign="top" rowspan="1" colspan="1">100</td>
<td align="left" valign="top" rowspan="1" colspan="1">100</td>
</tr>
</tbody>
</table>
</table-wrap>
<table-wrap id="T3" position="float" orientation="landscape"><label>Table 3</label>
<caption><p>Total latency (ms) varying filtering options with the TCP transmission</p>
</caption>
<table frame="hsides" rules="groups"><thead><tr><th colspan="2" valign="bottom" align="left" rowspan="1">Dataset
<hr></hr>
</th>
<th colspan="4" valign="bottom" align="left" rowspan="1">Dataset 1
<hr></hr>
</th>
<th colspan="4" valign="bottom" align="left" rowspan="1">Dataset 2
<hr></hr>
</th>
</tr>
<tr><th colspan="2" valign="bottom" align="left" rowspan="1">Input type
<hr></hr>
</th>
<th colspan="2" valign="bottom" align="left" rowspan="1">P (continuous)
<hr></hr>
</th>
<th colspan="2" valign="bottom" align="left" rowspan="1">NSLOC (discrete)
<hr></hr>
</th>
<th colspan="2" valign="bottom" align="left" rowspan="1">P (continuous)
<hr></hr>
</th>
<th colspan="2" valign="bottom" align="left" rowspan="1">NSLOC (discrete)
<hr></hr>
</th>
</tr>
<tr><th colspan="2" valign="top" align="left" rowspan="1">Client mode</th>
<th valign="top" align="left" rowspan="1" colspan="1">HWC</th>
<th valign="top" align="left" rowspan="1" colspan="1">LWC</th>
<th valign="top" align="left" rowspan="1" colspan="1">HWC</th>
<th valign="top" align="left" rowspan="1" colspan="1">LWC</th>
<th valign="top" align="left" rowspan="1" colspan="1">HWC</th>
<th valign="top" align="left" rowspan="1" colspan="1">LWC</th>
<th valign="top" align="left" rowspan="1" colspan="1">HWC</th>
<th valign="top" align="left" rowspan="1" colspan="1">LWC</th>
</tr>
</thead>
<tbody><tr><td align="left" valign="top" rowspan="6" colspan="1">Filtering option</td>
<td align="left" valign="top" rowspan="1" colspan="1">No filter</td>
<td align="left" valign="top" rowspan="1" colspan="1">1.79</td>
<td align="left" valign="top" rowspan="1" colspan="1">1.59</td>
<td align="left" valign="top" rowspan="1" colspan="1">2.35</td>
<td align="left" valign="top" rowspan="1" colspan="1">2.23</td>
<td align="left" valign="top" rowspan="1" colspan="1">1.75</td>
<td align="left" valign="top" rowspan="1" colspan="1">1.86</td>
<td align="left" valign="top" rowspan="1" colspan="1">2.81</td>
<td align="left" valign="top" rowspan="1" colspan="1">2.73</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1">Unsort</td>
<td align="left" valign="top" rowspan="1" colspan="1">1.91</td>
<td align="left" valign="top" rowspan="1" colspan="1">1.59</td>
<td align="left" valign="top" rowspan="1" colspan="1">2.35</td>
<td align="left" valign="top" rowspan="1" colspan="1">2.29</td>
<td align="left" valign="top" rowspan="1" colspan="1">1.84</td>
<td align="left" valign="top" rowspan="1" colspan="1">1.98</td>
<td align="left" valign="top" rowspan="1" colspan="1">2.25</td>
<td align="left" valign="top" rowspan="1" colspan="1">2.54</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1">25 us window (25 us)</td>
<td align="left" valign="top" rowspan="1" colspan="1">1.96</td>
<td align="left" valign="top" rowspan="1" colspan="1">1.76</td>
<td align="left" valign="top" rowspan="1" colspan="1">2.51</td>
<td align="left" valign="top" rowspan="1" colspan="1">2.46</td>
<td align="left" valign="top" rowspan="1" colspan="1">2.34</td>
<td align="left" valign="top" rowspan="1" colspan="1">1.82</td>
<td align="left" valign="top" rowspan="1" colspan="1">3.10</td>
<td align="left" valign="top" rowspan="1" colspan="1">2.87</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1">Unsort 25 us</td>
<td align="left" valign="top" rowspan="1" colspan="1">2.22</td>
<td align="left" valign="top" rowspan="1" colspan="1">1.79</td>
<td align="left" valign="top" rowspan="1" colspan="1">2.54</td>
<td align="left" valign="top" rowspan="1" colspan="1">2.35</td>
<td align="left" valign="top" rowspan="1" colspan="1">2.25</td>
<td align="left" valign="top" rowspan="1" colspan="1">2.02</td>
<td align="left" valign="top" rowspan="1" colspan="1">2.72</td>
<td align="left" valign="top" rowspan="1" colspan="1">2.75</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1">1 ms window (1 ms)</td>
<td align="left" valign="top" rowspan="1" colspan="1">1.90</td>
<td align="left" valign="top" rowspan="1" colspan="1">1.57</td>
<td align="left" valign="top" rowspan="1" colspan="1">2.10</td>
<td align="left" valign="top" rowspan="1" colspan="1">2.21</td>
<td align="left" valign="top" rowspan="1" colspan="1">1.77</td>
<td align="left" valign="top" rowspan="1" colspan="1">1.86</td>
<td align="left" valign="top" rowspan="1" colspan="1">1.87</td>
<td align="left" valign="top" rowspan="1" colspan="1">2.44</td>
</tr>
<tr><td align="left" valign="top" rowspan="1" colspan="1">Unsort 1 ms</td>
<td align="left" valign="top" rowspan="1" colspan="1">2.02</td>
<td align="left" valign="top" rowspan="1" colspan="1">1.84</td>
<td align="left" valign="top" rowspan="1" colspan="1">2.25</td>
<td align="left" valign="top" rowspan="1" colspan="1">2.18</td>
<td align="left" valign="top" rowspan="1" colspan="1">2.08</td>
<td align="left" valign="top" rowspan="1" colspan="1">2.05</td>
<td align="left" valign="top" rowspan="1" colspan="1">1.87</td>
<td align="left" valign="top" rowspan="1" colspan="1">2.38</td>
</tr>
</tbody>
</table>
</table-wrap>
</floats-group>
</pmc>
</record>
Pour manipuler ce document sous Unix (Dilib)
EXPLOR_STEP=$WICRI_ROOT/Ticri/CIDE/explor/CyberinfraV1/Data/Pmc/Corpus
HfdSelect -h $EXPLOR_STEP/biblio.hfd -nk 000681 | SxmlIndent | more
Ou
HfdSelect -h $EXPLOR_AREA/Data/Pmc/Corpus/biblio.hfd -nk 000681 | SxmlIndent | more
Pour mettre un lien sur cette page dans le réseau Wicri
{{Explor lien |wiki= Ticri/CIDE |area= CyberinfraV1 |flux= Pmc |étape= Corpus |type= RBID |clé= PMC:4685709 |texte= Towards real-time communication between in vivo neurophysiological data sources and simulator-based brain biomimetic models }}
Pour générer des pages wiki
HfdIndexSelect -h $EXPLOR_AREA/Data/Pmc/Corpus/RBID.i -Sk "pubmed:26702394" \ | HfdSelect -Kh $EXPLOR_AREA/Data/Pmc/Corpus/biblio.hfd \ | NlmPubMed2Wicri -a CyberinfraV1
![]() | This area was generated with Dilib version V0.6.25. | ![]() |