<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" article-type="research-article">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Neuroinform.</journal-id>
<journal-title>Frontiers in Neuroinformatics</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Neuroinform.</abbrev-journal-title>
<issn pub-type="epub">1662-5196</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.3389/fninf.2014.00032</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Neuroscience</subject>
<subj-group>
<subject>Original Research Article</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>Integrated platform and API for electrophysiological data</article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author" corresp="yes">
<name><surname>Sobolev</surname> <given-names>Andrey</given-names></name>
<xref ref-type="author-notes" rid="fn001"><sup>&#x0002A;</sup></xref>
<uri xlink:href="http://community.frontiersin.org/people/u/18588"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Stoewer</surname> <given-names>Adrian</given-names></name>
<uri xlink:href="http://community.frontiersin.org/people/u/88534"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Leonhardt</surname> <given-names>Aljoscha</given-names></name>
<uri xlink:href="http://community.frontiersin.org/people/u/38959"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Rautenberg</surname> <given-names>Philipp L.</given-names></name>
<uri xlink:href="http://community.frontiersin.org/people/u/54355"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Kellner</surname> <given-names>Christian J.</given-names></name>
<uri xlink:href="http://community.frontiersin.org/people/u/21733"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Garbers</surname> <given-names>Christian</given-names></name>
<uri xlink:href="http://community.frontiersin.org/people/u/38949"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Wachtler</surname> <given-names>Thomas</given-names></name>
<uri xlink:href="http://community.frontiersin.org/people/u/13465"/>
</contrib>
</contrib-group>
<aff><institution>Department Biology II, German Neuroinformatics Node, Ludwig-Maximilians-Universit&#x000E4;t M&#x000FC;nchen</institution> <country>Planegg, Germany</country></aff>
<author-notes>
<fn fn-type="edited-by"><p>Edited by: Xi Cheng, Lieber Institue for Brain Development, USA</p></fn>
<fn fn-type="edited-by"><p>Reviewed by: Sam Neymotin, State University of New York, USA; Daniel K. W&#x000F3;jcik, Polish Academy of Sciences, Poland</p></fn>
<fn fn-type="corresp" id="fn001"><p>&#x0002A;Correspondence: Andrey Sobolev, Department Biology II, German Neuroinformatics Node, Ludwig-Maximilians-Universit&#x000E4;t M&#x000FC;nchen, Grosshaderner Str. 2, 82152 Martinsried, Planegg, Germany e-mail: <email>sobolev&#x00040;bio.lmu.de</email></p></fn>
<fn fn-type="other" id="fn002"><p>This article was submitted to the journal Frontiers in Neuroinformatics.</p></fn>
</author-notes>
<pub-date pub-type="epub">
<day>23</day>
<month>04</month>
<year>2014</year>
</pub-date>
<pub-date pub-type="collection">
<year>2014</year>
</pub-date>
<volume>8</volume>
<elocation-id>32</elocation-id>
<history>
<date date-type="received">
<day>24</day>
<month>12</month>
<year>2013</year>
</date>
<date date-type="accepted">
<day>17</day>
<month>03</month>
<year>2014</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#x000A9; 2014 Sobolev, Stoewer, Leonhardt, Rautenberg, Kellner, Garbers and Wachtler.</copyright-statement>
<copyright-year>2014</copyright-year>
<license license-type="open-access" xlink:href="http://creativecommons.org/licenses/by/3.0/"><p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) or licensor are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.</p>
</license>
</permissions>
<abstract><p>Recent advancements in technology and methodology have led to growing amounts of increasingly complex neuroscience data recorded from various species, modalities, and levels of study. The rapid data growth has made efficient data access and flexible, machine-readable data annotation a crucial requisite for neuroscientists. Clear and consistent annotation and organization of data is not only an important ingredient for reproducibility of results and re-use of data, but also essential for collaborative research and data sharing. In particular, efficient data management and interoperability requires a unified approach that integrates data and metadata and provides a common way of accessing this information. In this paper we describe GNData, a data management platform for neurophysiological data. GNData provides a storage system based on a data representation that is suitable to organize data and metadata from any electrophysiological experiment, with a functionality exposed via a common application programming interface (API). Data representation and API structure are compatible with existing approaches for data and metadata representation in neurophysiology. The API implementation is based on the Representational State Transfer (REST) pattern, which enables data access integration in software applications and facilitates the development of tools that communicate with the service. Client libraries that interact with the API provide direct data access from computing environments like Matlab or Python, enabling integration of data management into the scientist&#x00027;s experimental or analysis routines.</p></abstract>
<kwd-group>
<kwd>electrophysiology</kwd>
<kwd>data management</kwd>
<kwd>neuroinformatics</kwd>
<kwd>web service</kwd>
<kwd>collaboration</kwd>
<kwd>neo</kwd>
<kwd>odml</kwd>
</kwd-group>
<counts>
<fig-count count="4"/>
<table-count count="1"/>
<equation-count count="0"/>
<ref-count count="16"/>
<page-count count="9"/>
<word-count count="6065"/>
</counts>
</article-meta>
</front>
<body>
<sec sec-type="introduction" id="s1">
<title>1. Introduction</title>
<sec>
<title>1.1. Data management in electrophysiology&#x02014;costs, benefits, and needs</title>
<p>Advances in technology and methodology during the past years have dramatically increased the volume and complexity of data recorded in electrophysiological experiments. At the same time, progress in neuroscience increasingly depends on collaborative efforts, exchange of data, and re-analysis of previously recorded data. Thus, ensuring that data stays accessible, that data processing is reproducible, and that data can be shared and re-used has become a challenge for many laboratories (Herz et al., <xref ref-type="bibr" rid="B10">2008</xref>).</p>
<p>Obstacles to efficient data management arise not only from the variety of data formats and constraints of accessing data in proprietary formats, but also from the amount and complexity of additional information about the experiment that needs to be collected and stored. This additional information, which is commonly called &#x0201C;metadata&#x0201D; despite the fact that it is to large part data supplementing the recorded data (Figure <xref ref-type="fig" rid="F1">1</xref>), is not only necessary to reproduce the study but also essential for searching, selecting, and analyzing the data.</p>
<fig id="F1" position="float">
<label>Figure 1</label>
<caption><p><bold>Levels of (meta)data</bold>. Recorded data and additional information that is necessary for understanding and appropriate analysis of the data. Information about the format in which the data are stored is required to read the data. Information that complements the raw stored numbers, such as sampling rate, scaling factors, units, is required to understand the data as measured signals. To meaningfully analyze the data, information about the experimental context is necessary, like conditions of preparation, stimulation, etc. This information in principle can be formalized and stored in machine-readable form (&#x0201C;hard metadata&#x0201D;) so that it can be used for data selection and analysis. This metadata can be further categorized into generic, domain-specific, and study-specific information. &#x0201C;Soft metadata&#x0201D; is the information about the overall scientific context and aim of the study, reasons for choosing certain parameters, etc., for which currently we have no way of formalizing or machine-processing. The distinction between supplementing data and proper metadata is to some degree arbitrary. For example, the date when an experiment was performed might usually be considered as proper metadata. However, in some analysis the time between experiments might be an important parameter to be taken into account. In this case, the date of the experiments can be used as data in the analysis to determine this information.</p></caption>
<graphic xlink:href="fninf-08-00032-g0001.tif"/>
</fig>
<p>Collecting and storing metadata comprehensibly together with the recorded data is also a facilitating requisite for sharing the data. Data sharing starts in the lab, where data needs to stay accessible and understandable for the experimenter even years after the study, and lab members need to be able to find and access data even after the person that performed the experiment has left the lab. In collaborations with scientists outside the laboratory, data need to be selected and the collaborators need to be able to understand the data. Having a data organization in the lab where all data and metadata is kept together in defined formats and organized structure can reduce both the experimenter&#x00027;s work for data preparation and the collaborator&#x00027;s efforts to read and understand the data. In the same way, efficient data organization minimizes the time and work necessary for preparing data to make it generally accessible, thus reducing the barriers to public sharing and data publication.</p>
<p>Experimental metadata typically have to be collected from various sources and in different formats&#x02014;different measurement devices, software code, notes entered during the experiment, etc.&#x02014;and have to be brought into compatible formats, which can require considerable effort. Typically, each lab defines its own methods, procedures, and format conventions for organizing and managing the data. If common tools and formats were available, workload and time demand in the labs would be reduced and data exchange would require less effort and time.</p>
<p>Developing common tools and standardized formats has turned out to be particularly challenging for the area of electrophysiology (Teeters et al., <xref ref-type="bibr" rid="B14">2013</xref>). This field faces an enormous variety in experimental methodology, with a large number of data acquisition systems, file formats that are often vendor-specific and undocumented (Garcia et al., <xref ref-type="bibr" rid="B5">2014</xref>), a variety of electrode configurations, species, preparations, stimuli, and overall experimental paradigms. Currently, common organization schemes or standards for accessing data do not exist. Thus, for data exchange, often substantial work is necessary to make the data accessible in one form or another. Moreover, in electrophysiology the experimental variety and complexity results in corresponding variety and complexity of the metadata. While a set of minimal common metadata for a neuroscience experiment has been proposed (Gibson et al., <xref ref-type="bibr" rid="B8">2008</xref>), for each dataset further specific information needs to be provided. As long as a comprehensive ontology for this field is missing (Bandrowski et al., <xref ref-type="bibr" rid="B2">2013</xref>), approaches to achieve a common scheme for metadata description must leave sufficient flexibility to account for the variety and heterogeneity of experiments (Grewe et al., <xref ref-type="bibr" rid="B9">2011</xref>).</p>
</sec>
<sec>
<title>1.2. Databases and sharing platforms for electrophysiological data</title>
<p>In the past years, several initiatives to support data sharing in neurophysiology have emerged. One of the first public databases for electrophysiological data was the neurodatabase.org<xref ref-type="fn" rid="fn0001"><sup>1</sup></xref> project (Gardner, <xref ref-type="bibr" rid="B6">2004</xref>). In this project, an elaborate data model and format along with a query protocol for the exchange of neurophysiological data were developed. The data, typically obtained from publications, is made available with extensive metadata and provided in a format specifically developed for this project.</p>
<p>The SenseLab Project<xref ref-type="fn" rid="fn0002"><sup>2</sup></xref> is a long-term initiative to build a repository for multidisciplinary models of neurons and neural systems (Crasto et al., <xref ref-type="bibr" rid="B3">2007</xref>). It is a part of the Neuroscience Information Framework<xref ref-type="fn" rid="fn0003"><sup>3</sup></xref> (NIF, Gardner et al., <xref ref-type="bibr" rid="B7">2008</xref>) and the International Neuroinformatics Coordinating Facility (INCF)<xref ref-type="fn" rid="fn0004"><sup>4</sup></xref>. The project provides open databases (ModelDB, NeuronDB, etc.) designed for certain aspects like neural modeling, neural cell properties, modeling of neurocircuits and several others.</p>
<p>The CRCNS.org site<xref ref-type="fn" rid="fn0005"><sup>5</sup></xref> hosts electrophysiological data that have been specifically selected by contributing labs for the purpose of making the data available to the public (Teeters et al., <xref ref-type="bibr" rid="B15">2008</xref>). Typically, these data are from published studies and have been made available for re-use. Data format, annotation and documentation are different for each dataset.</p>
<p>The CARMEN project<xref ref-type="fn" rid="fn0006"><sup>6</sup></xref> provides a platform for data analysis and data exchange where the owner of the data can keep the data private, or can make the data available to selected users or the public. The platform also provides services for data analysis (Austin et al., <xref ref-type="bibr" rid="B1">2011</xref>). For this purpose Carmen has introduced an internal file format, Carmen NDF<xref ref-type="fn" rid="fn0007"><sup>7</sup></xref>, that is suitable for storing electrophysiological and other types of neuroscientific data. The user has the option to enter metadata describing the experiment in which the data were recorded. This is done via web forms that provide fields corresponding to the minimal metadata that were proposed by the Carmen consortium (Gibson et al., <xref ref-type="bibr" rid="B8">2008</xref>).</p>
<p>The German Neuroinformatics Node (G-Node) provides a platform for data organization and data sharing of neurophysiological data<xref ref-type="fn" rid="fn0008"><sup>8</sup></xref>. Users can upload, organize, and annotate their data, and make them accessible to selected users or the public. Data conversion functions are provided. Data annotation follows a flexible schema (Grewe et al., <xref ref-type="bibr" rid="B9">2011</xref>) so that any metadata necessary can be entered.</p>
<p>Recently, the INCF established the INCF Dataspace<xref ref-type="fn" rid="fn0009"><sup>9</sup></xref>, a cloud based file system to federate all kinds of neuroscience data. There are several other initiatives (Marcus et al., <xref ref-type="bibr" rid="B11">2007</xref>; Usui and Okumura, <xref ref-type="bibr" rid="B16">2008</xref>; Moucek et al., <xref ref-type="bibr" rid="B12">2014</xref>, etc.) that provide a web-based storage for different domains in neuroscience.</p>
<p>All these solutions are based on data exchange by files, and they provide little or no support for using formats or data structures that are in some way standardized. In most cases data are accessible only through a web browser. Interoperability between any of these solutions, or with other tools and formats used by neuroscientists, does not exist. As a basis for such interoperability, common standards for representing and accessing data would be needed, and tools and services to apply and use these standards also within the lab would have to be available. Such standardization will become also highly relevant for the recently initiated large-scale projects with strong electrophysiology components, such as the Allen Institute&#x00027;s Project Mindscope<xref ref-type="fn" rid="fn0010"><sup>10</sup></xref>, the Human Brain Project<xref ref-type="fn" rid="fn0011"><sup>11</sup></xref>, or the BRAIN Initiative<xref ref-type="fn" rid="fn0012"><sup>12</sup></xref>.</p>
<p>Here we present GNData, the new version of the G-Node data management platform. This advanced version was developed with the aim not only to set up a repository of data files, but to provide a comprehensive framework that scientists can use to manage, access, and work with their data within their local laboratory workflow. The principal novelty of this framework is a standardized Application Programming Interface (API) together with client tools that enable data access directly from the local computational and/or laboratory environment. A unique feature is the ability to store and organize both the recorded data and the metadata together so that all information necessary for data analysis, re-analysis, and sharing is available in a unified way, and accessible through a well-defined interface. The integration of data and metadata has the benefits that data handling in the laboratory from recording to analysis becomes more efficient and reproducible, and that data sharing requires no further effort because all the information is already available with the data. Additionally, GNData allows for data sharing with colleagues, collaborators, or the public without any obstacles.</p>
</sec>
</sec>
<sec>
<title>2. Approach</title>
<p>GNData addresses the need for comprehensive data management by providing (1) a storage system based on a common data representation that is suitable to organize data and metadata from any electrophysiological experiment, with (2) a general API so that data access can be integrated in software applications, and (3) client tools in common languages to support and facilitate this integration into the laboratory data workflow. These components implement a unique and efficient way of experimental data and metadata management, compared to the file-based systems.</p>
<sec>
<title>2.1. Representation of data objects</title>
<p>A key element supporting reproducibility and data sharing is the standardization of formats and data structures. Using common data objects facilitates data access and data exchange, as well as the application of analysis tools. However, to be useful, standards must be applicable to the entire field without constraining the ability to store what is necessary. Given the variety and heterogeneity of electrophysiological studies, this poses the challenge of finding a balance between strict definitions to achieve the necessary standardization and flexible methods to account for the needs of any use case. GNData achieves this balance by combining a fixed data model for the recorded data with an adaptable and maximally unconstrained format for the metadata.</p>
<p>For the representation of electrophysiological data, the Neo python objects<xref ref-type="fn" rid="fn0013"><sup>13</sup></xref> are widely used (Garcia et al., <xref ref-type="bibr" rid="B5">2014</xref>) and have come close to being a de-facto standard for describing recorded electrophysiological signals. Neo defines an object model with attributes and relationships that accounts for all types of recorded data (signal and spike data, multi-electrode data etc.), including numerical values, units, and dimensions. A typical Neo experimental representation is a dataset (named <italic>Block</italic> in Neo) containing several experimental trials (<italic>Segments</italic>), each having time series (<italic>AnalogSignals</italic>), spike event data (<italic>SpikeTrains</italic>) and stimulus event times as Neo <italic>Events</italic>. A dataset (<italic>Block</italic>) usually also contains groups of electrodes (<italic>Recording Channel Groups, Recording Channels</italic>) related with the recorded signals to indicate spatial position and arrangement of electrodes, and units (<italic>Units</italic>) identified by spike sorting as sources of spike trains (<italic>SpikeTrains</italic>).</p>
<p>In addition to the recorded data, GNData integrates metadata based on the open metadata Markup Language, odML<xref ref-type="fn" rid="fn0014"><sup>14</sup></xref> (Grewe et al., <xref ref-type="bibr" rid="B9">2011</xref>). odML is an open, flexible and easy to use format to organize metadata in a hierarchical structure of key-value pairs (odML <italic>Properties</italic>). It provides a common <italic>Section</italic> object, which is used to meaningfully group <italic>Properties</italic> according to experimental aspects (Subject, Preparation, Stimulus, Hardware Settings etc.). <italic>Section</italic>s can be nested, enabling a flexible way to organize experimental metadata in a hierarchy that reflects the structure of the experiment. Thus, data annotation can be adapted to the requirements of each specific study. In addition, odML supports standardization by providing common terminologies<xref ref-type="fn" rid="fn0015"><sup>15</sup></xref> &#x02014;pre-defined odML Section templates for typical experimental aspects to facilitate standardized descriptions of experiments across labs (Grewe et al., <xref ref-type="bibr" rid="B9">2011</xref>).</p>
<p>Combining the Neo and odML concepts in a common object model, GNData integrates data and metadata in a unified framework. An example of the resulting data representation is illustrated in Figure <xref ref-type="fig" rid="F2">2</xref>.</p>
<fig id="F2" position="float">
<label>Figure 2</label>
<caption><p><bold>Example data and metadata structure of an experiment with stimulation changing across trials</bold>. The panel on the bottom right represents the recorded signals in a study that investigates receptive fields of neurons in visual cortex of macaque monkeys. Each trial had its unique stimulus configuration (orientation, size, etc.). Local Field Potentials from different channels (RC1&#x02013;RC12) were recorded during the experiment; spike trains of single units (U1&#x02013;U3) were obtained by spike sorting. The dotted lines are used to represent a mapping between experimental entities and their representations in the object model. Neo objects<sup>13</sup> (left) are used to represent the data part of the experiment. odML<sup>14</sup> Section, Property and Value objects (top right) describe stimulus metadata, changing from trial to trial within a given experiment.</p></caption>
<graphic xlink:href="fninf-08-00032-g0002.tif"/>
</fig>
</sec>
<sec>
<title>2.2. Common interface to access data and metadata</title>
<p>GNData integrates the Neo data model for electrophysiological data with the flexible odML data annotation under a single API definition. A common API is crucial as it unifies data management approaches, provides a defined way of data access, and makes data and metadata accessible to software tools. Previous approaches (Garcia et al., <xref ref-type="bibr" rid="B5">2014</xref>, The Neuroshare Project<xref ref-type="fn" rid="fn0016"><sup>16</sup></xref>) have focused on representation of the recorded data. We complement these designs by integrating the essential methods for data annotation and permissions control, as well as providing a network-accessible implementation.</p>
</sec>
<sec>
<title>2.3. Client libraries for main computational platforms</title>
<p>The common data API of the GNData platform enables programmatic data access and data management through custom software. To support the use of the data API for everyday data management in the lab, we provide client libraries that communicate with the server via the GNData API, enabling instant data access from the local computational environment. Currently the focus is on Matlab and Python, which are among the most popular computational frameworks in experimental neuroscience. These client libraries<xref ref-type="fn" rid="fn0017"><sup>17</sup></xref> hide the generic API interface from the user and translate the commands and data to representations in the scientist&#x00027;s familiar environment, such as Neo Python objects (Garcia et al., <xref ref-type="bibr" rid="B5">2014</xref>) in the Python client or Matlab structures in the Matlab client (see Appendix in Supplementary Material), thus enabling direct access to the data from the simulation software or analysis script. In addition, a web interface is provided for browser-based access. Enabling different types of data access supports interoperability and makes data access independent of a certain format, language, or platform.</p>
</sec>
<sec>
<title>2.4. Data sharing</title>
<p>As a multi-user system designed to facilitate collaborative research, GNData provides fine-grained mechanisms for access control and data sharing. Original data is always accessible for its owner. Any subset of data or metadata entities can be shared with selected users, for example collaborators. The ability to instantly access the same data without additional data transfer increases the efficiency of collaborative work. In addition, data can be opened to all users for public access. Thus, it is easy to provide data together with metadata for a data publication, to make selected data available for testing or benchmark purposes, or to release data to the public for re-use.</p>
</sec>
</sec>
<sec>
<title>3. Implementation</title>
<p>This section describes the main implementation concepts of the GNData API. A full API reference can be found at the documentation page<xref ref-type="fn" rid="fn0018"><sup>18</sup></xref>. A demo environment is available where some of the examples below can be tested to get more detailed overview (Note that object identifiers can be different). Information about the demo environment is provided in the Appendix in Supplementary Material.</p>
<sec>
<title>3.1. REST-FUL interface</title>
<p>The GNData API is built according to the REST principles (Fielding and Taylor, <xref ref-type="bibr" rid="B4">2002</xref>). The REST protocol is designed for data representation supporting caching, scalability and client-server architecture<xref ref-type="fn" rid="fn0019"><sup>19</sup></xref>. Many stable open source libraries are available that support REST in different programming languages.</p>
<p>One of the principles of REST is that every object has its permanent location defined via a Uniform Resource Locator (URL):
<graphic xlink:href="fninf-08-00032-i0001.tif"/>
In GNData, URLs defining object locations are designed to have a certain structure. The first part of the URL defines a namespace that corresponds to a particular neuroscientific domain or function. Currently, GNData supports &#x0201C;electrophysiology,&#x0201D; &#x0201C;metadata,&#x0201D; and &#x0201C;datafiles&#x0201D; namespaces, providing electrophysiological data, metadata, and file management functions, respectively. Every namespace includes a set of objects related to this particular namespace. The names of these object types form the second part of the URL. For instance, the &#x0201C;electrophysiology&#x0201D; namespace supports &#x0201C;event,&#x0201D; &#x0201C;spiketrain,&#x0201D; and other object types defined by Neo (see 2.1). The &#x0201C;metadata&#x0201D; namespace supports &#x0201C;section,&#x0201D; &#x0201C;property,&#x0201D; and &#x0201C;value&#x0201D; object types as provided by the odML definition. A unique base-32 (RFC4648) object identifier forms the end part of the object location.</p>
<p>Objects have consistent structured representations (see section 3.2) according to the integrated data model. For all objects, the GNData API supports a number of standard functions like creating, updating and deleting single objects, or making bulk object updates. A standard HTTP GET request selects one or several objects; requests are highly parameterizable, allowing filtering or processing objects in chunks:
<graphic xlink:href="fninf-08-00032-i0002.tif"/>
In this example an HTTP GET request queries all event-type objects owned by the user &#x0201C;demo&#x0201D; having a label attribute equal to &#x0201C;stimulus.&#x0201D;</p>
<p>HTTP POST request type with JSON-encoded<xref ref-type="fn" rid="fn0020"><sup>20</sup></xref> data is used for making updates or creating new objects. HTTP DELETE is used to remove objects within the system; removed object will no longer appear in GET responses and will not be available for POST updates. However, removed objects are still accessible after the delete operation as all changes to object status and attributes are being tracked by the system (see section 4.4). Supported operations together with corresponding URL structures are listed in Table <xref ref-type="table" rid="T1">1</xref>.</p>
<table-wrap position="float" id="T1">
<label>Table 1</label>
<caption><p><bold>Common API actions for every supported HTTP request type (GET, POST, DELETE) and typical request URL structure</bold>.</p></caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th align="left"><bold>URL structure</bold></th>
<th align="center"><bold>Get</bold></th>
<th align="center"><bold>Post</bold></th>
<th align="center"><bold>Delete</bold></th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">/namespace/object_type/</td>
<td align="center">List objects, apply filters</td>
<td align="center">Create new object or make bulk update</td>
<td align="center">Bulk delete</td>
</tr>
<tr>
<td align="left">/namespace/object_type/id/</td>
<td align="center">Access single object</td>
<td align="center">Update single object</td>
<td align="center">Delete single object</td>
</tr>
<tr>
<td align="left">/namespace/object_type/id/acl/</td>
<td align="center">Get object permissions</td>
<td align="center">Update object permissions</td>
<td align="center">405 Not Supported</td>
</tr>
</tbody>
</table>
<table-wrap-foot>
<p><italic>Left column contains structure of the REST URL. Table cells define an action for each URL structure and HTTP request type.</italic></p>
</table-wrap-foot>
</table-wrap>
</sec>
<sec>
<title>3.2. Operations with HTTP request and response</title>
<p>All operations use JSON<sup>20</sup> as a main request and response format. The JSON format is supported natively by Javascript<xref ref-type="fn" rid="fn0021"><sup>21</sup></xref> and also by many other common programming languages like Python<xref ref-type="fn" rid="fn0022"><sup>22</sup></xref> or Matlab <xref ref-type="fn" rid="fn0023"><sup>23</sup></xref>.</p>
<p>As defined in Table <xref ref-type="table" rid="T1">1</xref>, a GET request of the GNData API has the following form:
<graphic xlink:href="fninf-08-00032-i0003.tif"/>
For example,
<graphic xlink:href="fninf-08-00032-i0004.tif"/>
returns the spiketrain object with the identifier &#x0201C;BE8O27N959&#x0201D; in JSON format. In order to create or update objects, a POST request with the same URL syntax is sent. For example,
<graphic xlink:href="fninf-08-00032-i0005.tif"/>
will make an update fields &#x0201C;name&#x0201D; and &#x0201C;comment&#x0201D; in the spiketrain object with identifier BE8O27N959.</p>
<p>A successful response contains the object represented in JSON format:
<graphic xlink:href="fninf-08-00032-i0006.tif"/>
Exceptions are handled with standard HTTP response codes<xref ref-type="fn" rid="fn0024"><sup>24</sup></xref>, such as 404&#x02013;Object Not Found, 403&#x02014;Forbidden, 400&#x02014;Bad Request, 304 - Not Modified, etc., and the response body contains a JSON-formatted message with exception details.</p>
</sec>
<sec>
<title>3.3. Data handling</title>
<p>GNData uses the HDF5<xref ref-type="fn" rid="fn0025"><sup>25</sup></xref> file format in the backend to store array data. We made several performance tests against popular freely available data storage back-ends (PostgreSQL<xref ref-type="fn" rid="fn0026"><sup>26</sup></xref>, MySQL<xref ref-type="fn" rid="fn0027"><sup>27</sup></xref> and HDF5; results not shown) resulting in HDF5 being an optimal solution for managing large data arrays, even with serial file access and fetching of multiple data slices. Every object in the GNData with associated array data (analog signal, spike train, waveform etc.) has the related data stored in HDF5 file. Data can be accessed by downloading a corresponding HDF5 file that contains an HDF5 array in the root of the file.</p>
<p>For data analysis, often only certain selected parts of the recorded data are desired. To reduce data transfer between client and server, a limited data slice can be requested. GNData supports partial data requests for objects with associated data array(s). This works for both single and multiple object requests and is practical when accessing large datasets.</p>
<p>The following request
<graphic xlink:href="fninf-08-00032-i0007.tif"/>
returns data samples falling within the 100 ms time window of the originally recorded signal with ID &#x0003D; LPTUBS44FG starting from 50 ms (units are taken from object attributes). The response (not shown, see example in section 3.2) contains an URL to the corresponding file with a particular slice of array data,
<graphic xlink:href="fninf-08-00032-i0008.tif"/>
This URL represents a link to a data file containing the data array for the selected analog signal, with parameters indicating the first and the last indexes of this array, needed to create the requested slice. These boundaries are calculated automatically based on the object attributes and their units (start time, sampling rate etc.) and request input parameters (start time, end time, duration etc.). Sending a GET request to this URL will download an HDF5 file containing raw data from the 100 ms time window only. Note that a datafile with array data is no longer dependent on the analog signal and will not contain units or other information, only data itself. All related meta information should be taken from the corresponding object.</p>
</sec>
<sec>
<title>3.4. Caching</title>
<p>For efficiency, the GNData API is using standard HTTP mechanisms for data caching like e-Tags<xref ref-type="fn" rid="fn0028"><sup>28</sup></xref> and &#x0201C;last-modified&#x0201D; attributes in request headers. Every single change to an object results in a new e-Tag assigned to this object. By default, an object is not served for download if no changes were made and e-Tags of the previously downloaded object and the object on the server match. In this case, a standard 304 HTTP response (&#x0201C;Not Modified&#x0201D;) is returned instead.</p>
</sec>
<sec>
<title>3.5. Open software and modular structure</title>
<p>GNData is developed as an open source software based on the Django<xref ref-type="fn" rid="fn0029"><sup>29</sup></xref> framework. The framework is designed to be used with relational databases. Concurrent user access, as well as atomicity, consistency and isolation<xref ref-type="fn" rid="fn0030"><sup>30</sup></xref> are implemented on the database level. The software architecture follows a modular principle, so that implementation of new data models into the platform is straightforward<xref ref-type="fn" rid="fn0031"><sup>31</sup></xref>. The principal software components are illustrated in Figure <xref ref-type="fig" rid="F3">3</xref>.</p>
<fig id="F3" position="float">
<label>Figure 3</label>
<caption><p><bold>GNData architecture diagram</bold>. From the bottom: integration of low-level data storage components (dark blue), application server components (light blue) with the REST API (yellow) as the common access interface. Top: Clients such as web interface components, Matlab client components, python client library, self-written custom clients.</p></caption>
<graphic xlink:href="fninf-08-00032-g0003.tif"/>
</fig>
<p>The key programming language used is Python. Python has a growing community in Neuroscience with a large amount of open software available. The GNData project welcomes developers to contribute to the software<xref ref-type="fn" rid="fn0032"><sup>32</sup></xref>.</p>
</sec>
</sec>
<sec>
<title>4. Key GNDATA features</title>
<p>In this section we describe key features and functional scope of the GNData platform.</p>
<sec>
<title>4.1. Data access with filters</title>
<p>The GNData API provides query mechanism with different filters based on object attributes and relationships. It allows to query a subset of all available objects of a particular type based on certain criteria (equal, greater than, etc.), applied to object attributes. To avoid definition of a new query language, this query mechanism is built on top of the Django querying routine and uses similar concepts and namings<xref ref-type="fn" rid="fn0033"><sup>33</sup></xref>. Query parameters, specified in the request URL are directly converted into the request on the Django application level, with addition of certain authorization filters. The following examples illustrate the usage of filters.</p>
<p>This HTTP GET request will select metadata properties having &#x0201C;luminance&#x0201D; in their &#x0201C;name&#x0201D; attribute:
<graphic xlink:href="fninf-08-00032-i0009.tif"/>
The resulting response contains objects with their identifiers that can be used in another request for related objects (here &#x0201C;value&#x0201D; objects are actual values of related metadata properties):
<graphic xlink:href="fninf-08-00032-i0010.tif"/>
Query conditions on related objects can be directly included in the request parameters. The next example request selects all metadata values of (related) properties with &#x0201C;luminance&#x0201D; in their &#x0201C;name&#x0201D; attribute:
<graphic xlink:href="fninf-08-00032-i0011.tif"/>
Filters allow to query for a certain subset of the experimental data, which can be used in analysis or visualization. Figure <xref ref-type="fig" rid="F4">4</xref> shows the plot of all LFP traces from a certain experimental trial, selected using filters with certain time and stimulus conditions. The query is explained in Appendix (Supplementary Material) in more detail.</p>
<fig id="F4" position="float">
<label>Figure 4</label>
<caption><p><bold>Plot of LFP responses from a trial selected using certain time and stimulus conditions (see text)</bold>. Note that all informations used for axes, labels, and legend were taken from the stored data and metadata directly.</p></caption>
<graphic xlink:href="fninf-08-00032-g0004.tif"/>
</fig>
<p>A full query reference is available at the project documentation page.</p>
</sec>
<sec>
<title>4.2. Unified organization of data and metadata</title>
<p>GNData provides a common set of objects representing electrophysiological (experimental and/or simulated) data, together with an object model for flexible metadata description. The GNData API allows to establish meaningful connections between data and metadata objects. In particular, data objects can be hierarchically grouped (using odML <italic>Sections</italic>) to achieve an efficient organization. Any data object can be annotated by linking with the appropriate metadata objects, thus achieving a comprehensive data annotation for data selection and reproducibility. For example, consider an experiment where stimulus parameters change from trial to trial. In that case, for every experimental trial the appropriate stimulus property has to be indicated, which can be achieved by annotating each Neo <italic>Segment</italic> representing a trial to the appropriate metadata values.</p>
<p>Annotation is done by sending an HTTP POST request with the references to the metadata values and the target object for annotation:
<graphic xlink:href="fninf-08-00032-i0012.tif"/>
In this example, an analog signal object with ID &#x0003D; F8LD1EGINL is annotated with certain metadata values (KCAP5DK6FH and JD53GRU249). Required values and their IDs can be pre-selected with another request using appropriate conditions and parameters (see section 4.1). These connections enable the researcher not only to identify the experimental context for a given data structure, but conversely also to query data by specific metadata. The following request selects all analog signal objects that have the above defined values as their metadata:
<graphic xlink:href="fninf-08-00032-i0013.tif"/>
In general, this allows using annotated metadata in requests for data object of any type.</p>
</sec>
<sec>
<title>4.3. Data sharing and collaboration</title>
<p>The GNData system provides a multi-user environment that facilitates collaborations where researchers need common access to datasets. Control of data access permissions is achieved using Access Control Lists (ACL), which provides several access levels for each object. By default, every object created in the system is private and only accessible for its owner. The owner of an object can make it accessible for an individual or group of collaborators, or open it for access to all users. Thus, data sharing can be done with a simple command, avoiding any data duplication or transfer.</p>
<p>GNData supports both read-only and read-write permissions for individual shares. The whole study can be opened for experimentalists for contribution with experimental recordings, while certain experimental trials can be made read-only for collaborators who perform data analysis.</p>
<p>Each object&#x00027;s current ACL is available for the object owner at a specific URL:
<graphic xlink:href="fninf-08-00032-i0014.tif"/>
The structure of the ACL in JSON format contains its global sharing level and the list of users having individual access:
<graphic xlink:href="fninf-08-00032-i0015.tif"/>
An authorized POST request to this URL with the request body containing new ACL configuration updates the object permissions.</p>
</sec>
<sec>
<title>4.4. Versioning</title>
<p>To support reproducibility, GNData implements object versioning mechanisms where all changes to any object are saved, and a user can always go back in time to the corresponding version of the data.</p>
<p>Requesting a certain version of an object is done by adding the &#x0201C;at_time&#x0201D; parameter to the GET request. The following example requests an object as it was at September, 15th 15:36:55:
<graphic xlink:href="fninf-08-00032-i0016.tif"/></p>
</sec>
</sec>
<sec sec-type="discussion" id="s2">
<title>5. Discussion</title>
<p>We presented GNData, a data management system with an open API for electrophysiological data. GNData unifies organization of data and corresponding metadata and provides data access for researchers within a lab as well as for collaborators, directly from their computation environments. Efficient organization of data and metadata saves time for data access and facilitates data exchange and collaboration. Moreover, programmatic data access enables automatization of many steps in data collection and data organization, thus facilitating data analysis and collaborative research.</p>
<p>Key principle of the GNData architecture is an API that separates the user application from the storage backend and represents a consistent interface for accessing electrophysiological data. A common interface saves development and maintenance efforts and creates interoperability, faciliating application of tools and integration of software solutions. The GNData API combines a common representation for recorded data and a flexible metadata schema that is suitable to annotate data from any kind of experiment. This concept is independent of the REST implementation. Implementations in other programming languages and on different technologies are easily possible.</p>
<p>The GNData API includes basic functions for querying data using different filters applied to object attributes. More extensive search capabilities and support for complex queries would be desirable for data retrieval. Extended functionality based on existing open-source solutions (e.g., Lucene<xref ref-type="fn" rid="fn0034"><sup>34</sup></xref>, Xapian<xref ref-type="fn" rid="fn0035"><sup>35</sup></xref>, Minion<xref ref-type="fn" rid="fn0036"><sup>36</sup></xref>, Elasticsearch<xref ref-type="fn" rid="fn0037"><sup>37</sup></xref> etc.) will be included in future releases.</p>
<p>The GNData platform provides a standardized data representation, but original recorded data can come from files in various formats. Using the G-Node Python client (Sobolev et al., <xref ref-type="bibr" rid="B13">2014</xref>, see also Appendix in Supplementary Material) users can utilize the Neo I/O modules (Garcia et al., <xref ref-type="bibr" rid="B5">2014</xref>) to read the data into Neo objects before uploading. However, ideally the central data server would provide this data conversion, so that users can upload their data in files which are automatically extracted to corresponding data structures on the platform. For this purpose, integration of the Neo I/O libraries into the GNData is under development.</p>
<p>Currently GNData is focused on electrophysiological data. Scalability of the data model and the Client-Server approach, however, allow straightforward extension to account for data from other fields of neuroscience. Neuromorphological data, imaging data or other types of data could be integrated simply by specifying the appropriate data models. The INCF Task Forces on Electrophysiology<xref ref-type="fn" rid="fn0038"><sup>38</sup></xref> and Neuroimaging<xref ref-type="fn" rid="fn0039"><sup>39</sup></xref> are currently working on standard data models and formats for the respective types of data (Teeters et al., <xref ref-type="bibr" rid="B14">2013</xref>). Those standards will be integrated in the GNData platform as they are released. Likewise, to support the entire data processing workflow in the laboratory, results from data analysis need to be accommodated as well. This kind of extension will be introduced as one of the next steps.</p>
<p>GNData is developed as an open source project available at the public G-Node Github account<xref ref-type="fn" rid="fn0040"><sup>40</sup></xref>. The project is open to contribution from neuroscientists or members from other scientific fields.</p>
</sec>
<sec>
<title>Funding</title>
<p>Supported by the Federal Ministry of Education and Research (Grants 01GQ0801 and 01GQ1302).</p>
<sec>
<title>Conflict of interest statement</title>
<p>The authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.</p></sec>
</sec>
</body>
<back>
<ack>
<p>This work benefited from discussions with members of the INCF Program on Standards for Data Sharing task forces, of the CARMEN consortium, of the CRCNS initiative, and of the NeuralEnsemble initiative. We thank especially Raphael Ritz for discussions, feedback and contributions to the design of the platform, Andreas Herz for discussions, and Willi Schiegel and Tiziano Zito for technical support. We acknowledge the INCF Secretariat staff for providing a friendly environment for discussions and collaboration.</p>
</ack>
<sec sec-type="supplementary material" id="s3">
<title>Supplementary material</title>
<p>The Supplementary Material for this article can be found online at: <ext-link ext-link-type="uri" xlink:href="http://www.frontiersin.org/journal/10.3389/fninf.2014.00032/abstract">http://www.frontiersin.org/journal/10.3389/fninf.2014.00032/abstract</ext-link></p>
<supplementary-material xlink:href="Presentation1.PDF" mimetype="application/pdf" xmlns:xlink="http://www.w3.org/1999/xlink"/>
</sec>
<ref-list>
<title>References</title>
<ref id="B1">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Austin</surname> <given-names>J.</given-names></name> <name><surname>Jackson</surname> <given-names>T.</given-names></name> <name><surname>Fletcher</surname> <given-names>M.</given-names></name> <name><surname>Jessop</surname> <given-names>M.</given-names></name> <name><surname>Liang</surname> <given-names>B.</given-names></name> <name><surname>Weeks</surname> <given-names>M.</given-names></name> <etal/></person-group>. (<year>2011</year>). <article-title>CARMEN: code analysis, repository and modeling for e-neuroscience</article-title>. <source>Proc. Comput. Sci</source>. <volume>4</volume>, <fpage>768</fpage>&#x02013;<lpage>777</lpage>. <pub-id pub-id-type="doi">10.1016/j.procs.2011.04.081</pub-id><pub-id pub-id-type="pmid">18674883</pub-id></citation>
</ref>
<ref id="B2">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Bandrowski</surname> <given-names>A. E.</given-names></name> <name><surname>Bruha</surname> <given-names>P. P.</given-names></name> <name><surname>Papez</surname> <given-names>V.</given-names></name> <name><surname>Grewe</surname> <given-names>J.</given-names></name> <name><surname>Moucek</surname> <given-names>R.</given-names></name> <name><surname>Tripathy</surname> <given-names>S.</given-names></name> <etal/></person-group>. (<year>2013</year>). <article-title>Ontology for experimental neurophysiology: semantic annotations of neurophysiology data and metadata</article-title>, in <source>2013 Society for Neuroscience Meeting</source> (<publisher-loc>San Diego, CA</publisher-loc>), Nov 9&#x02013;13 2013.</citation>
</ref>
<ref id="B3">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Crasto</surname> <given-names>C. J.</given-names></name> <name><surname>Marenco</surname> <given-names>L. N.</given-names></name> <name><surname>Liu</surname> <given-names>N.</given-names></name> <name><surname>Morse</surname> <given-names>T. M.</given-names></name> <name><surname>Cheung</surname> <given-names>K. H.</given-names></name> <name><surname>Lai</surname> <given-names>P. C.</given-names></name> <etal/></person-group>. (<year>2007</year>). <article-title>SenseLab: new developments in disseminating neuroscience information</article-title>. <source>Brief Bioinform</source>. <volume>8</volume>, <fpage>150</fpage>&#x02013;<lpage>162</lpage>. <pub-id pub-id-type="doi">10.1093/bib/bbm018</pub-id><pub-id pub-id-type="pmid">17510162</pub-id></citation>
</ref>
<ref id="B4">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Fielding</surname> <given-names>R. T.</given-names></name> <name><surname>Taylor</surname> <given-names>R. N.</given-names></name></person-group> (<year>2002</year>). <article-title>Principled design of the modern web architecture</article-title>. <source>ACM Trans. Internet Technol</source>. <volume>2</volume>, <fpage>115</fpage>&#x02013;<lpage>150</lpage>. <pub-id pub-id-type="doi">10.1145/514183.514185</pub-id></citation>
</ref>
<ref id="B5">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Garcia</surname> <given-names>S.</given-names></name> <name><surname>Guarino</surname> <given-names>D.</given-names></name> <name><surname>Jaillet</surname> <given-names>F.</given-names></name> <name><surname>Jennings</surname> <given-names>T. R.</given-names></name> <name><surname>Pr&#x000F6;pper</surname> <given-names>R.</given-names></name> <name><surname>Rautenberg</surname> <given-names>P. L.</given-names></name> <etal/></person-group>. (<year>2014</year>). <article-title>Neo: an object model for handling electrophysiology data in multiple formats</article-title>. <source>Front. Neuroinform</source>. <volume>8</volume>:<issue>10</issue>. <pub-id pub-id-type="doi">10.3389/fninf.2014.00010</pub-id><pub-id pub-id-type="pmid">24600386</pub-id></citation>
</ref>
<ref id="B6">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Gardner</surname> <given-names>D.</given-names></name></person-group> (<year>2004</year>). <article-title>Neurodatabase.org: networking the microelectrode</article-title>. <source>Nat. Neurosci</source>. <volume>7</volume>, <fpage>486</fpage>&#x02013;<lpage>487</lpage>. <pub-id pub-id-type="doi">10.1038/nn0504-486</pub-id><pub-id pub-id-type="pmid">15114365</pub-id></citation>
</ref>
<ref id="B7">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Gardner</surname> <given-names>D.</given-names></name> <name><surname>Akil</surname> <given-names>H.</given-names></name> <name><surname>Ascoli</surname> <given-names>G. A.</given-names></name> <name><surname>Bowden</surname> <given-names>D. M.</given-names></name> <name><surname>Bug</surname> <given-names>W.</given-names></name> <name><surname>Donohue</surname> <given-names>D. E.</given-names></name> <etal/></person-group>. (<year>2008</year>). <article-title>The neuroscience information framework: a data and knowledge environment for neuroscience</article-title>. <source>Neuroinformatics</source> <volume>6</volume>, <fpage>149</fpage>&#x02013;<lpage>160</lpage>. <pub-id pub-id-type="doi">10.1007/s12021-008-9024-z</pub-id><pub-id pub-id-type="pmid">18946742</pub-id></citation>
</ref>
<ref id="B8">
<citation citation-type="web"><person-group person-group-type="author"><name><surname>Gibson</surname> <given-names>F.</given-names></name> <name><surname>Overton</surname> <given-names>P.</given-names></name> <name><surname>Smulders</surname> <given-names>T.</given-names></name> <name><surname>Schultz</surname> <given-names>S.</given-names></name> <name><surname>Eglen</surname> <given-names>S.</given-names></name> <name><surname>Ingram</surname> <given-names>C.</given-names></name> <etal/></person-group>. (<year>2008</year>). <article-title>Minimum information about a neuroscience investigation (MINI): electrophysiology</article-title>. <source>Nat. Precedings</source>. Available online at: <ext-link ext-link-type="uri" xlink:href="http://precedings.nature.com/documents/1720/version/2">http://precedings.nature.com/documents/1720/version/2</ext-link></citation>
</ref>
<ref id="B9">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Grewe</surname> <given-names>J.</given-names></name> <name><surname>Wachtler</surname> <given-names>T.</given-names></name> <name><surname>Benda</surname> <given-names>J.</given-names></name></person-group> (<year>2011</year>). <article-title>A bottom-up approach to data annotation in neurophysiology</article-title>. <source>Front. Neuroinform</source>. <volume>5</volume>:<issue>16</issue>. <pub-id pub-id-type="doi">10.3389/fninf.2011.00016</pub-id><pub-id pub-id-type="pmid">21941477</pub-id></citation>
</ref>
<ref id="B10">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Herz</surname> <given-names>A. V.</given-names></name> <name><surname>Meier</surname> <given-names>R.</given-names></name> <name><surname>Nawrot</surname> <given-names>M. P.</given-names></name> <name><surname>Schiegel</surname> <given-names>W.</given-names></name> <name><surname>Zito</surname> <given-names>T.</given-names></name></person-group> (<year>2008</year>). <article-title>G-Node: an integrated tool-sharing platform to support cellular and systems neurophysiology in the age of global neuroinformatics</article-title>. <source>Neural Netw</source>. <volume>21</volume>, <fpage>1070</fpage>&#x02013;<lpage>1075</lpage>. <pub-id pub-id-type="doi">10.1016/j.neunet.2008.05.011</pub-id><pub-id pub-id-type="pmid">18653312</pub-id></citation>
</ref>
<ref id="B11">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Marcus</surname> <given-names>D. S.</given-names></name> <name><surname>Olsen</surname> <given-names>T. R.</given-names></name> <name><surname>Ramaratnam</surname> <given-names>M.</given-names></name> <name><surname>Buckner</surname> <given-names>R. L.</given-names></name></person-group> (<year>2007</year>). <article-title>The extensible neuroimaging archive toolkit: an informatics platform for managing, exploring, and sharing neuroimaging data</article-title>. <source>Neuroinformatics</source> <volume>5</volume>, <fpage>11</fpage>&#x02013;<lpage>34</lpage>. <pub-id pub-id-type="pmid">17426351</pub-id></citation>
</ref>
<ref id="B12">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Moucek</surname> <given-names>R.</given-names></name> <name><surname>Bruha</surname> <given-names>P.</given-names></name> <name><surname>Jezek</surname> <given-names>P.</given-names></name> <name><surname>Mautner</surname> <given-names>P.</given-names></name> <name><surname>Novotny</surname> <given-names>J.</given-names></name> <name><surname>Papez</surname> <given-names>V.</given-names></name> <etal/></person-group>. (<year>2014</year>). <article-title>Software and hardware infrastructure for research in electrophysiology</article-title>. <source>Front. Neuroinform</source>. <volume>8</volume>:<issue>20</issue>. <pub-id pub-id-type="doi">10.3389/fninf.2014.00020</pub-id><pub-id pub-id-type="pmid">24639646</pub-id></citation>
</ref>
<ref id="B13">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Sobolev</surname> <given-names>A.</given-names></name> <name><surname>Stoewer</surname> <given-names>A.</given-names></name> <name><surname>Pereira</surname> <given-names>M.</given-names></name> <name><surname>Kellner</surname> <given-names>C. J.</given-names></name> <name><surname>Garbers</surname> <given-names>C.</given-names></name> <etal/></person-group>. (<year>2014</year>). <article-title>Data management routines for reproducible research using the G-Node Python Client library</article-title>. <source>Front. Neuroinform</source>. <volume>8</volume>:<issue>15</issue>. <pub-id pub-id-type="doi">10.3389/fninf.2014.00015</pub-id><pub-id pub-id-type="pmid">24634654</pub-id></citation>
</ref>
<ref id="B14">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Teeters</surname> <given-names>J. L.</given-names></name> <name><surname>Benda</surname> <given-names>J.</given-names></name> <name><surname>Davison</surname> <given-names>A. P.</given-names></name> <name><surname>Eglen</surname> <given-names>S.</given-names></name> <name><surname>Gerhard</surname> <given-names>S.</given-names></name> <name><surname>Gerkin</surname> <given-names>R. C.</given-names></name> <etal/></person-group>. (<year>2013</year>). <article-title>Considerations for developing a standard for storing electrophysiology data in HDF5</article-title>. <source>Front. Neuroinform. (Conference Abstract: Neuroinformatics 2013)</source> <fpage>69</fpage>. <pub-id pub-id-type="doi">10.3389/conf.fninf.2013.09.00069</pub-id></citation>
</ref>
<ref id="B15">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Teeters</surname> <given-names>J. L.</given-names></name> <name><surname>Harris</surname> <given-names>K. D.</given-names></name> <name><surname>Millman</surname> <given-names>K. J.</given-names></name> <name><surname>Olshausen</surname> <given-names>B. A.</given-names></name> <name><surname>Sommer</surname> <given-names>F. T.</given-names></name></person-group> (<year>2008</year>). <article-title>Data sharing for computational neuroscience</article-title>. <source>Neuroinformatics</source> <volume>6</volume>, <fpage>47</fpage>&#x02013;<lpage>55</lpage>. <pub-id pub-id-type="doi">10.1007/s12021-008-9009-y</pub-id><pub-id pub-id-type="pmid">18259695</pub-id></citation>
</ref>
<ref id="B16">
<citation citation-type="web"><person-group person-group-type="author"><name><surname>Usui</surname> <given-names>S.</given-names></name> <name><surname>Okumura</surname> <given-names>Y.</given-names></name></person-group> (<year>2008</year>). <article-title>Basic scheme of neuroinformatics platform: XooNIps</article-title>, in <source>Proceedings of the 2008 IEEE World Conference on Computational Intelligence: Research Frontiers</source> (<publisher-loc>Berlin; Heidelberg</publisher-loc>: <publisher-name>Springer-Verlag</publisher-name>), <fpage>102</fpage>&#x02013;<lpage>116</lpage>. Available online at: <ext-link ext-link-type="uri" xlink:href="http://dl.acm.org/citation.cfm?id&#x0003D;1788915.1788921">http://dl.acm.org/citation.cfm?id&#x0003D;1788915.1788921</ext-link></citation>
</ref>
</ref-list>
<fn-group>
<fn id="fn0001"><p><sup>1</sup><ext-link ext-link-type="uri" xlink:href="http://neurodatabase.org">http://neurodatabase.org</ext-link></p></fn>
<fn id="fn0002"><p><sup>2</sup><ext-link ext-link-type="uri" xlink:href="https://senselab.med.yale.edu">https://senselab.med.yale.edu</ext-link></p></fn>
<fn id="fn0003"><p><sup>3</sup><ext-link ext-link-type="uri" xlink:href="http://www.neuinfo.org">http://www.neuinfo.org</ext-link></p></fn>
<fn id="fn0004"><p><sup>4</sup><ext-link ext-link-type="uri" xlink:href="http://incf.org">http://incf.org</ext-link></p></fn>
<fn id="fn0005"><p><sup>5</sup><ext-link ext-link-type="uri" xlink:href="http://crcns.org">http://crcns.org</ext-link></p></fn>
<fn id="fn0006"><p><sup>6</sup><ext-link ext-link-type="uri" xlink:href="http://www.carmen.org.uk/">http://www.carmen.org.uk/</ext-link></p></fn>
<fn id="fn0007"><p><sup>7</sup><ext-link ext-link-type="uri" xlink:href="http://www.carmen.org.uk/standards">http://www.carmen.org.uk/standards</ext-link></p></fn>
<fn id="fn0008"><p><sup>8</sup><ext-link ext-link-type="uri" xlink:href="https://portal.g-node.org/data/">https://portal.g-node.org/data/</ext-link></p></fn>
<fn id="fn0009"><p><sup>9</sup><ext-link ext-link-type="uri" xlink:href="http://incf.org/dataspace">http://incf.org/dataspace</ext-link></p></fn>
<fn id="fn0010"><p><sup>10</sup><ext-link ext-link-type="uri" xlink:href="http://www.frontiersin.org/10.3389/conf.fncom.2012.55.00033/event_abstract">http://www.frontiersin.org/10.3389/conf.fncom.2012.55.00033/event_abstract</ext-link></p></fn>
<fn id="fn0011"><p><sup>11</sup><ext-link ext-link-type="uri" xlink:href="https://www.humanbrainproject.eu/">https://www.humanbrainproject.eu/</ext-link></p></fn>
<fn id="fn0012"><p><sup>12</sup><ext-link ext-link-type="uri" xlink:href="http://www.nih.gov/science/brain/">http://www.nih.gov/science/brain/</ext-link></p></fn>
<fn id="fn0013"><p><sup>13</sup><ext-link ext-link-type="uri" xlink:href="http://neuralensemble.org/neo/">http://neuralensemble.org/neo/</ext-link></p></fn>
<fn id="fn0014"><p><sup>14</sup><ext-link ext-link-type="uri" xlink:href="http://www.g-node.org/projects/odml">http://www.g-node.org/projects/odml</ext-link></p></fn>
<fn id="fn0015"><p><sup>15</sup><ext-link ext-link-type="uri" xlink:href="http://www.g-node.org/projects/odml/terminologies">http://www.g-node.org/projects/odml/terminologies</ext-link></p></fn>
<fn id="fn0016"><p><sup>16</sup><ext-link ext-link-type="uri" xlink:href="http://neuroshare.sourceforge.net/API-Documentation/NeuroshareAPI-1-3.htm">http://neuroshare.sourceforge.net/API-Documentation/NeuroshareAPI-1-3.htm</ext-link></p></fn>
<fn id="fn0017"><p><sup>17</sup><ext-link ext-link-type="uri" xlink:href="http://g-node.github.io/python-gnode-client">http://g-node.github.io/python-gnode-client</ext-link>, <ext-link ext-link-type="uri" xlink:href="http://github.com/G-Node/gnode-client-matlab">http://github.com/G-Node/gnode-client-matlab</ext-link></p></fn>
<fn id="fn0018"><p><sup>18</sup><ext-link ext-link-type="uri" xlink:href="http://g-node.github.io/g-node-portal/">http://g-node.github.io/g-node-portal/</ext-link></p></fn>
<fn id="fn0019"><p><sup>19</sup><ext-link ext-link-type="uri" xlink:href="http://en.wikipedia.org/wiki/Client-server_model">http://en.wikipedia.org/wiki/Client-server_model</ext-link></p></fn>
<fn id="fn0020"><p><sup>20</sup><ext-link ext-link-type="uri" xlink:href="http://www.json.org/">http://www.json.org/</ext-link></p></fn>
<fn id="fn0021"><p><sup>21</sup><ext-link ext-link-type="uri" xlink:href="http://en.wikipedia.org/wiki/JavaScript">http://en.wikipedia.org/wiki/JavaScript</ext-link></p></fn>
<fn id="fn0022"><p><sup>22</sup><ext-link ext-link-type="uri" xlink:href="http://docs.python.org/2/library/json.html">http://docs.python.org/2/library/json.html</ext-link></p></fn>
<fn id="fn0023"><p><sup>23</sup><ext-link ext-link-type="uri" xlink:href="http://www.mathworks.com/matlabcentral/fileexchange/20565-json-parser">http://www.mathworks.com/matlabcentral/fileexchange/20565-json-parser</ext-link></p></fn>
<fn id="fn0024"><p><sup>24</sup><ext-link ext-link-type="uri" xlink:href="http://www.w3.org/Protocols/HTTP/HTRESP.html">http://www.w3.org/Protocols/HTTP/HTRESP.html</ext-link></p></fn>
<fn id="fn0025"><p><sup>25</sup><ext-link ext-link-type="uri" xlink:href="http://www.hdfgroup.org/HDF5/">http://www.hdfgroup.org/HDF5/</ext-link></p></fn>
<fn id="fn0026"><p><sup>26</sup><ext-link ext-link-type="uri" xlink:href="http://www.postgresql.org/">http://www.postgresql.org/</ext-link></p></fn>
<fn id="fn0027"><p><sup>27</sup><ext-link ext-link-type="uri" xlink:href="http://www.mysql.com/">http://www.mysql.com/</ext-link></p></fn>
<fn id="fn0028"><p><sup>28</sup><ext-link ext-link-type="uri" xlink:href="http://en.wikipedia.org/wiki/HTTP_ETag">http://en.wikipedia.org/wiki/HTTP_ETag</ext-link></p></fn>
<fn id="fn0029"><p><sup>29</sup><ext-link ext-link-type="uri" xlink:href="https://www.djangoproject.com/">https://www.djangoproject.com/</ext-link></p></fn>
<fn id="fn0030"><p><sup>30</sup><ext-link ext-link-type="uri" xlink:href="http://en.wikipedia.org/wiki/ACID">http://en.wikipedia.org/wiki/ACID</ext-link></p></fn>
<fn id="fn0031"><p><sup>31</sup><ext-link ext-link-type="uri" xlink:href="https://docs.djangoproject.com/en/dev/topics/db/models/">https://docs.djangoproject.com/en/dev/topics/db/models/</ext-link></p></fn>
<fn id="fn0032"><p><sup>32</sup><ext-link ext-link-type="uri" xlink:href="https://github.com/G-Node/g-node-portal/">https://github.com/G-Node/g-node-portal/</ext-link></p></fn>
<fn id="fn0033"><p><sup>33</sup><ext-link ext-link-type="uri" xlink:href="https://docs.djangoproject.com/en/dev/topics/db/queries/">https://docs.djangoproject.com/en/dev/topics/db/queries/</ext-link></p></fn>
<fn id="fn0034"><p><sup>34</sup><ext-link ext-link-type="uri" xlink:href="http://lucene.apache.org/">http://lucene.apache.org/</ext-link></p></fn>
<fn id="fn0035"><p><sup>35</sup><ext-link ext-link-type="uri" xlink:href="http://xapian.org/">http://xapian.org/</ext-link></p></fn>
<fn id="fn0036"><p><sup>36</sup><ext-link ext-link-type="uri" xlink:href="https://minion.java.net/">https://minion.java.net/</ext-link></p></fn>
<fn id="fn0037"><p><sup>37</sup><ext-link ext-link-type="uri" xlink:href="http://www.elasticsearch.org/">http://www.elasticsearch.org/</ext-link></p></fn>
<fn id="fn0038"><p><sup>38</sup><ext-link ext-link-type="uri" xlink:href="http://www.incf.org/programs/datasharing/electrophysiology-task-force">http://www.incf.org/programs/datasharing/electrophysiology-task-force</ext-link></p></fn>
<fn id="fn0039"><p><sup>39</sup><ext-link ext-link-type="uri" xlink:href="http://www.incf.org/programs/datasharing/neuroimaging-task-force">http://www.incf.org/programs/datasharing/neuroimaging-task-force</ext-link></p></fn>
<fn id="fn0040"><p><sup>40</sup><ext-link ext-link-type="uri" xlink:href="https://github.com/G-node">https://github.com/G-node</ext-link></p></fn>
</fn-group>
</back>
</article>