Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'master' of https://github.com/g-node/nixpy into v1.5
- Loading branch information
Showing
103 changed files
with
3,091 additions
and
1,422 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -46,3 +46,6 @@ Makefile | |
.cache | ||
.eggs | ||
.mypy_cache | ||
|
||
# vscode | ||
.vscode |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
.. toctree:: | ||
:maxdepth: 1 | ||
|
||
.. _metadata: | ||
|
||
Annotations with arbitrary metadata | ||
=================================== | ||
|
||
The entities of the data model that were discussed so far carry just enough information to get a basic understanding of the stored data. Often much more information than that is required. Storing additional metadata is a central part of the NIX concept. We use a slightly modified version of the *odML* data model for metadata to store additional information. In brief: the model consists of *Sections* that contain *Properties* which in turn carry a list of values. Again, *Sections* can be nested to represent logical dependencies in the hierarchy of a tree. While all data entities discussed above are children of *Block* entities, the metadata lives parallel to the *Blocks*. The idea behind this is that several blocks may refer to the same metadata, or, the other way round the metadata applies to data entities in several blocks. The *types* used for the *Sections* in the following example are defined | ||
in the `odml terminologies <https://github.com/G-Node/odml-terminologies>`_ | ||
|
||
Most of the data entities can link to metadata sections. | ||
|
||
.. literalinclude:: examples/annotations.py | ||
:lines: 5-21 | ||
:caption: We can add arbitrary metadata in trees of *Sections* and *Properties* (:download:`example code <examples/annotations.py>`). | ||
|
||
For a quick view of the metadata tree pretty-print it: | ||
|
||
.. literalinclude:: examples/annotations.py | ||
:lines: 24 | ||
|
||
which leads to an output like this. The argument ``max_depth=-1`` notes that the full depth of the tree should be displayed. In the default case (``max_depth=1``) the display will be more compact and will not recursively traverse the whole tree. | ||
|
||
.. code-block:: text | ||
recording session [odml.recording] | ||
|- experimenter: ('John Doe',) | ||
|- recording date: ('2014-01-01',) | ||
subject [odml.subject] | ||
|- id: ('mouse xyz',) | ||
cell [odml.cell] | ||
|- resting potential: (-64.5,)mV | ||
The *Sections* add much like dictionaries. To access e.g. the "resting potential" of the cell we may call: | ||
|
||
.. literalinclude:: examples/annotations.py | ||
:lines: 26 | ||
|
||
Extending Properties | ||
-------------------- | ||
|
||
Properties can carry multiple values and additional information such as a definition. | ||
|
||
.. literalinclude:: examples/annotations.py | ||
:lines: 33-35 | ||
|
||
Reading the values will return a tuple. This has the background that one cannot change a tuple. Changing the values stored in a *Property* can be done e.g. by the ``extend_values`` method | ||
|
||
.. literalinclude:: examples/annotations.py | ||
:lines: 37-38 | ||
|
||
One can extend it by single values or by lists of values. | ||
|
||
The data type of all values must, however, be the same. Adding a number to the list of strings will fail with a ``TypeError``: | ||
|
||
.. literalinclude:: examples/annotations.py | ||
:lines: 40-43 | ||
|
||
.. code-block:: text | ||
New data type '<class 'numpy.int64'>' is inconsistent with the Property's data type '<class 'numpy.str_'>' | ||
**Note:** Once the property has been created, the data type can't be changed. One would need to create a replacement with the desired data type. | ||
|
||
Finding annotations | ||
------------------- | ||
|
||
If we do not know the exact path of the *Section* we are looking for, we need to search it by passing a function (in this case a lambda function) to the ``find_section`` method. The following code shows two examples in which we look first for a section with a given name or second a section which contains a property with a certain name. | ||
|
||
.. literalinclude:: examples/annotations.py | ||
:lines: 28 - 31 | ||
|
||
The result of the ``find_sections`` will always be a list which may be empty if no match was found. Therefore, the call in the last line is to some extent risky and would lead to an ``OutOfBounds`` exception if the search failed. |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,5 @@ | ||
nixio package | ||
============= | ||
Internal API | ||
============ | ||
|
||
Subpackages | ||
----------- | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
Idea | ||
==== | ||
|
||
The basic idea of the *NIX* project is to come up with a **generic** | ||
data model that defines as few structures/entities as possible while | ||
being able to represent a multitude of different data structures, allows | ||
for in-depth annotation and supports standardization. | ||
|
||
Designing a **generic** data model implies that the defined entities are | ||
named in a way that may seem uncommon but are more general than the | ||
*domain-specific* terms used in any given field or community. | ||
|
||
|
||
Please follow this link to the `C++ nix library documentation <https://nixio.readthedocs.io/en/master/data_model.html>`_ to lear more about the data model. | ||
|
||
The idea of the *NIX* data model has been implemented using the | ||
`HDF5 <https://www.hdfgroup.org>`__ file format. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
.. :toctree:: | ||
:maxdepth: 2 | ||
|
||
Getting support | ||
=============== | ||
|
||
If you experience problems using *NIX* feel free to join our IRC | ||
channel `#gnode at FreeNode <irc://irc.freenode.net/gnode>`__ or write | ||
an email to dev@g-node.org. If you find a bug or have a feature | ||
request please report it using the `project issue tracker | ||
<https://github.com/G-Node/nixpy/issues>`__. | ||
|
||
|
||
Contact | ||
------- | ||
|
||
The project is maintained by the `German Neuroinformatics Node, | ||
G-Node <http://www.g-node.org>`__. `G-Node at | ||
GitHub <https://github.com/g-node>`__, | ||
`email <mailto:dev@g-node.org>`__. |
Oops, something went wrong.