Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add NEO support #2

Open
joschaschmiedt opened this issue Feb 1, 2024 · 0 comments
Open

Add NEO support #2

joschaschmiedt opened this issue Feb 1, 2024 · 0 comments

Comments

@joschaschmiedt
Copy link
Contributor

joschaschmiedt commented Feb 1, 2024

Neo Containers:

  • Block: Main container gathering all the data, whether discrete or continuous, for a given recording session. A block is not necessarily temporally homogeneous, in contrast to Segment.
  • Segment: A container for data sharing a common time basis. A Segment is a heterogeneous container for discrete or continuous data sharing a common clock (time basis) but not necessary the same sampling rate, start or end time.
  • AnalogSignal: Array of one or more continuous analog signals. A representation of several continuous, analog signals that have the same duration, sampling rate and start time. Basically, it is a 2D array: dim 0 is time, dim 1 is channel index

Mapping between data models:

DH5 NEO
DH5 file Block
CONT trial (INDEX) AnalogSignal
TRIALMAP trial Segment
EV2 Event
TRIALMAP Epoch, maybe create a class inheriting from Epoch to add stimulus number

From https://neo.readthedocs.io/en/latest/add_file_format.html#recipe-to-develop-an-io-module-for-a-new-data-format

  1. Fully understand the object model. If in doubt ask the mailing list_.
  2. Fully understand :mod:neo.rawio.examplerawio, which is a fake IO module to explain the API. If in doubt ask the list.
  3. Copy/paste examplerawio.py and choose clear file and class names for your IO.
  4. implement all methods that raise :class:NotImplementedError in :mod:neo.rawio.baserawio. Return None when the object is not supported (e.g., spikes, waveforms)
  5. Write good docstrings. List dependencies, including minimum version numbers.
  6. Add your class to :mod:neo.rawio.__init__. Keep imports inside try/except for dependency reasons.
  7. Create a class in :file:neo/io/
  8. Add your class to :mod:neo.io.__init__. Keep imports inside try/except for dependency reasons.
  9. Create an account at https://gin.g-node.org and deposit files in NeuralEnsemble/ephy_testing_data_.
  10. Write tests in :file:neo/rawio/test_xxxxxrawio.py.
    You must at least pass the standard tests (inherited from :class:BaseTestRawIO). See :file:test_examplerawio.py
  11. Write a similar test in :file:neo.tests/iotests/test_xxxxxio.py. See :file:test_exampleio.py
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant