{ "info": { "author": "Alessio Buccino", "author_email": "alessiob@ifi.uio.no", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "[![Build Status](https://travis-ci.org/CINPLA/pyopenephys.svg?branch=master)](https://travis-ci.org/CINPLA/pyopenephys)\n[![Project Status: Active - The project has reached a stable, usable state and is being actively developed.](http://www.repostatus.org/badges/latest/active.svg)](http://www.repostatus.org/#active)\n[![codecov](https://codecov.io/gh/CINPLA/py-open-ephys/branch/master/graph/badge.svg)](https://codecov.io/gh/CINPLA/py-open-ephys)\n\n# pyopenephys\nPython reader for [Open Ephys](www.open-ephys.org).\n\n## Installation\n\nIn order to install the pyopenephys package, open a terminal and run:\n\n`pip install pyopenephys`\n\nIf you want to install from sources and get the latest updates, clone the repo and install locally:\n\n```bash\ngit clone https://github.com/CINPLA/pyopenephys\ncd pyopenephys\npython setup.py install \n# use 'python setup.py develop' to install fixed bugs \n```\n\n## Basic Usage\n\nPyopenephys allows the user to load data recorded with [Open Ephys](www.open-ephys.org). Currently, only the **binary** (recommended) and **openephys** (support for this format will be dropped in future releases) are supported. \n\nThe first step is creating a `File` object. It only requires to pass the paht to the recording folder.\n\n```python\nimport pyopenephys\nfile = pyopenephys.File(\"path-to-recording-folder\") \n```\n\nThe file object contains the different experiments (corresponding to different settings files) and each experiment contains a set of recordings.\n\n```python\n# all experiments\nexperiments = file.experiments\nprint(len(experiments))\n\n# recordings of first experiment\nexperiment = experiments[0]\nrecordings = experiment.recordings\nprint(len(experiments))\n\n# access first recording\nrecording = recordings[0]\n```\n\nExperiments store some useful information: \n- `experiment.datetime` contains the starting date and time of the experiment creation\n- `experiment.sig_chain` is a dictionary containing the processors and nodes in the signal chain\n- `experiment.settings` is a dictionary with the parsed setting.xml file\n- `experiment.acquisition_system` contains the system used to input continuous data (e.g. 'Rhythm FPGA')\n\nRecordings contain the actual data: \n- `recording.duration` is the duration of the recording (in seconds)\n- `recording.sample_rate` is the sampling frequency (in Hz)\n- `recording.analog_signals` is list of `AnalogSignal` objects, which in turn have a `signal`, `times` (in s), and `channel_id` fields.\n- `recording.events` is list of `EventData` objects, which in turn have a `times` (in s), `channels`, `channel_states`, `full_words`, `processor`, `node_id`, and `metadata` fields.\n- `recording.tracking` is list of `TrackingData` objects , which in turn have a `times` (in s), `x`, `y`, `width`, `height`, `channels`, and `metadata` fields. Tracking data are recorded with the `Tracking` plugin (https://github.com/CINPLA/tracking-plugin) and are save in **binary** format only (not in **openephys** format).\n- `recording.spiketrains` is list of `SpikeTrain` objects, which in turn have a `times`, `waveforms`, `electrode_indices`, `clusters` and `metadata` fields. Spiketrains are saved by the `Spike Viewer` sink in the Open Ephys GUI, in combination with either the `Spike Detector` and `Spike Viewer`.\n\n\nWith a few lines of code, the data and relevant information can be easily parsed and accessed:\n\n```python\nimport pyopenephys\nimport matplotlib.pylab as plt\n\nfile = pyopenephys.File(\"path-to-recording-folder\") \n# experiment 1 (0 in Python)\nexperiment = file.experiments[0]\n# recording 1 \nrecording = experiment.recordings[0]\n\nprint('Duration: ', recording.duration)\nprint('Sampling Rate: ', recording.sample_rate)\n\nanalog_signals = recording.analog_signals\nevents_data = recording.events\nspiketrains = recording.spiketrains\n# tracking_data are accessible only using binary format\ntracking_data = recording.tracking\n\n# plot analog signal of channel 4\nsignals = analog_signals[0]\nfig_an, ax_an = plt.subplots()\nax_an.plot(signals.times, signals.signal[3])\n\n# plot raster for spike trains\nfig_sp, ax_sp = plt.subplots()\nfor i_s, sp in enumerate(spiketrains):\n ax_sp.plot(sp.times, i_s*np.ones(len(sp.times)), '|')\n\nplt.show()\n```", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/CINPLA/py-open-ephys", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "pyopenephys", "package_url": "https://pypi.org/project/pyopenephys/", "platform": "", "project_url": "https://pypi.org/project/pyopenephys/", "project_urls": { "Homepage": "https://github.com/CINPLA/py-open-ephys" }, "release_url": "https://pypi.org/project/pyopenephys/1.0.7/", "requires_dist": null, "requires_python": "", "summary": "Python package for parsing Open Ephys data.", "version": "1.0.7" }, "last_serial": 5964691, "releases": { "0.1.1": [ { "comment_text": "", "digests": { "md5": "2855c60dff8dfd1ff4654bcf85179f0d", "sha256": "60044d8d3cc1c8a6f60e3717d396182054766c95157493236e65ca3673e73672" }, "downloads": -1, "filename": "pyopenephys-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "2855c60dff8dfd1ff4654bcf85179f0d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 27853, "upload_time": "2018-10-10T19:56:19", "url": "https://files.pythonhosted.org/packages/67/56/2cfa3d1f81b81e65e001b779c3cde0ea728cc615879435d35f7dca85cf37/pyopenephys-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3fec848de5e07b73bf1b53387b1316d7", "sha256": "beb6ca4a87495d845a077453b3165256286b42dce305500fcb050fff285c09de" }, "downloads": -1, "filename": "pyopenephys-0.1.1.tar.gz", "has_sig": false, "md5_digest": "3fec848de5e07b73bf1b53387b1316d7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14860, "upload_time": "2018-10-10T19:56:21", "url": "https://files.pythonhosted.org/packages/ae/09/ad39cb7381976258bd16a6e0e0e00682a6d712449ea5fcfed49786c936e7/pyopenephys-0.1.1.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "b7adb870ef4cdb1ae2ff68efeb296c5c", "sha256": "811a57102abfe98f4ae53f4d3319f0d8b3043f2ca6fafd06e960f0e69fc34eb7" }, "downloads": -1, "filename": "pyopenephys-1.0.0.tar.gz", "has_sig": false, "md5_digest": "b7adb870ef4cdb1ae2ff68efeb296c5c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14355, "upload_time": "2018-10-14T20:18:33", "url": "https://files.pythonhosted.org/packages/2c/4d/691959091b5a3008932d404911a1175862138374d83747576146e3f865f9/pyopenephys-1.0.0.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "ed9ae095489fe47cb2ac989f4b6bb25c", "sha256": "618ecf83ed7983c84e0f8ffffacd784f84fcd772a34bd649919268f73db3d6ea" }, "downloads": -1, "filename": "pyopenephys-1.0.2.tar.gz", "has_sig": false, "md5_digest": "ed9ae095489fe47cb2ac989f4b6bb25c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14434, "upload_time": "2018-12-12T14:02:37", "url": "https://files.pythonhosted.org/packages/3a/f9/48cc0c7bf8da64fa7b0ad7a75853853008689dffe0d881976e4decc4d117/pyopenephys-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "c03fdb03e8c5608f4d90713201845199", "sha256": "2629f20a0d6f0b8162fce516091ee26abcae96e53103e0c59947c90a12369aca" }, "downloads": -1, "filename": "pyopenephys-1.0.3.tar.gz", "has_sig": false, "md5_digest": "c03fdb03e8c5608f4d90713201845199", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13335, "upload_time": "2019-01-22T20:11:59", "url": "https://files.pythonhosted.org/packages/46/cd/e5a87a7bb9a71474aa6d0070763d4c55e15f82ff561b7d461ba1b714c2e9/pyopenephys-1.0.3.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "b8502f509818fb349d88c35613c9100c", "sha256": "f7a8e5b7b157c770e0e4a229f6df4a2393c00d667c8cc1afdf4c4b102501a5d8" }, "downloads": -1, "filename": "pyopenephys-1.0.4.tar.gz", "has_sig": false, "md5_digest": "b8502f509818fb349d88c35613c9100c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13329, "upload_time": "2019-02-05T08:35:46", "url": "https://files.pythonhosted.org/packages/01/c7/0146f4b5fa45d345eb986fccff18e0ce82b5a0f2b021c9a354209e083e1c/pyopenephys-1.0.4.tar.gz" } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "dfd50e5980b2b41958119831c1f26e32", "sha256": "4d228a8143539759dcf6875e80e22ebdf4180a3f802069f9caba0c505aca3f8c" }, "downloads": -1, "filename": "pyopenephys-1.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "dfd50e5980b2b41958119831c1f26e32", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12905, "upload_time": "2019-02-27T15:21:34", "url": "https://files.pythonhosted.org/packages/f7/ff/511b181ea17a690c85847fa2914cb1ba288a0c16acbbb658a3b4dab191c1/pyopenephys-1.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0d9fa16c36855308927c7d4aed3b7140", "sha256": "a28bde9377cf52b9a37f3ea0598d8dfc97b555ed6d282f21fa20a83d693ee97d" }, "downloads": -1, "filename": "pyopenephys-1.0.5.tar.gz", "has_sig": false, "md5_digest": "0d9fa16c36855308927c7d4aed3b7140", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11933, "upload_time": "2019-02-27T15:21:36", "url": "https://files.pythonhosted.org/packages/33/c0/c301767a4ad07e8f22c264deb877f15be01f0416d6f4105e25fd5aaa1e05/pyopenephys-1.0.5.tar.gz" } ], "1.0.6": [ { "comment_text": "", "digests": { "md5": "3a14a1c1828e0dbc2b6c8d6bc2268c8f", "sha256": "40e053bb5e68e3a0537ed1339bbab132853bf74026975b92df0058b76b327651" }, "downloads": -1, "filename": "pyopenephys-1.0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "3a14a1c1828e0dbc2b6c8d6bc2268c8f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 26124, "upload_time": "2019-10-12T15:26:21", "url": "https://files.pythonhosted.org/packages/e9/27/89dcfad6e8cac2fafd52ed9dd70fe7af33652006b9b560f350e97ab9f0ef/pyopenephys-1.0.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8655d8d0e03a62d88860be962c8c0883", "sha256": "df3a56931d9daaf63400f666c0df2c02469afa03d158d352475d051968acaa3e" }, "downloads": -1, "filename": "pyopenephys-1.0.6.tar.gz", "has_sig": false, "md5_digest": "8655d8d0e03a62d88860be962c8c0883", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13486, "upload_time": "2019-05-31T12:04:53", "url": "https://files.pythonhosted.org/packages/41/3b/df201fa302a10e8704ca792b701179cd84cf6f10e141923c56968dd2a5e7/pyopenephys-1.0.6.tar.gz" } ], "1.0.7": [ { "comment_text": "", "digests": { "md5": "0f74b27a9ee7a061be9e6884a1f00eef", "sha256": "3e8bcf989dd3b3db81101534ca290151e066261db8e0c957065457c403f5a320" }, "downloads": -1, "filename": "pyopenephys-1.0.7.tar.gz", "has_sig": false, "md5_digest": "0f74b27a9ee7a061be9e6884a1f00eef", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12378, "upload_time": "2019-10-12T15:49:11", "url": "https://files.pythonhosted.org/packages/8c/7a/5960b68bdf1e7d1fb46d8565ad94cde57780d4e13a75f426a3ac155c10ab/pyopenephys-1.0.7.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0f74b27a9ee7a061be9e6884a1f00eef", "sha256": "3e8bcf989dd3b3db81101534ca290151e066261db8e0c957065457c403f5a320" }, "downloads": -1, "filename": "pyopenephys-1.0.7.tar.gz", "has_sig": false, "md5_digest": "0f74b27a9ee7a061be9e6884a1f00eef", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12378, "upload_time": "2019-10-12T15:49:11", "url": "https://files.pythonhosted.org/packages/8c/7a/5960b68bdf1e7d1fb46d8565ad94cde57780d4e13a75f426a3ac155c10ab/pyopenephys-1.0.7.tar.gz" } ] }