# opexebo
[![Build Status](https://travis-ci.com/kavli-ntnu/opexebo.svg?branch=master&status=passed)](https://travis-ci.com/kavli-ntnu/opexebo)
[![codecov](https://codecov.io/gh/kavli-ntnu/opexebo/branch/master/graph/badge.svg)](https://codecov.io/gh/kavli-ntnu/opexebo)
[![Documentation Status](https://readthedocs.org/projects/opexebo/badge/?version=latest)](https://opexebo.readthedocs.io/en/latest/?badge=latest)
This library provides various analysis tools written by and for the Moser group at the [Kavli Institute](https://www.ntnu.edu/kavli) in Trondheim.
The package contains a mixture of translations of the older MatLab based [Behavioural Neurology Toolbox](https://bitbucket.org/cnc-ntnu/bnt), and other functions written only in Python 3, as part of the transition towards providing open access to research code.
### Documentation
Specifications and documentation for `opexebo` are available on [Read the Docs](https://opexebo.readthedocs.io/en/latest/).
### Installation
Install with pip:
```
pip install opexebo
```
Opexebo has an optional dependency, `sep`, that is not installed by default. To be able to install it, you require a C++ compiler installed on your system. On Linux, `gcc` will do the job. On Windows, the the Microsoft Visual C++ Build Tools fulfil the same role (https://www.microsoft.com/en-us/download/details.aspx?id=48159). To force installation of all optional dependencies, append `[full]` to the install command, for example:
pip install opexebo[full]
### Tests
Tests are implemented with `pytest`. Ensure that the various development tools are installed via
```python
pip install -r dev-requirements.txt
```
And then run tests with `pytest .`
# History
## 0.7.0
* Update dependencies for more modern versions (particularly `numpy`, `scipy` and `pytest`)
* Switch supported Python versions for 3.8+
## 0.6.1
* Fix some docstrings that were not updated to reflect changes in 0.6.0
* Fix the default limit behaviour of `accumulate_spatial` for bin width specification.
## 0.6.0
* Rewrite `spatial_occupancy` and `rate_map` to remove the walk filter (signature breaking)
* The individual analysis functions should be single purpose, and the walk-filter breaks this rule.
* Ideally, the walk-filter should be applied to spikes/tracking data _first_, and the resulting data then used for further analysis.
* A dedicated function has been provided to replace this: `general.walk_filter`
* Rewrite `shuffle` to better handle edge cases (including 1-spike-only) (signature breaking)
* Added `general.walk_filter` to provide replace the specific filtering implemented in each of `spatial_occupancy` and `rate_map`
* Fix a bug where `accumulate_spatial` can't handle cases where a single spike is present
* Fix an error in the LFP power spectrum calculation with fft
* Removed support for providing 1D position data as a 2d array with length 1
* Caused frustrating circular issues in cases where only a single data point was provided.
* Fairly low value addition, so support removed.
## 0.5.5 (2021-06-01)
* Publish to PyPi
## 0.5.2 (2021-04-19)
* Support 1D data in spatial occupancy and ratemap
* Add Opexebo-specific errors
* Add automated testing prior to release
* Add `calculate_speed`
* Add `egocentric_occupancy`
* Fixed an edge case error in `accumulate_spatial`
## 0.4.3 (2020-02-19)
* Substantial cleanup to `accumulate_spatial`
- Function was mathematically correct but confusing, due to the difference between opexebo's standard of `(x, y)` and NumPy's standard of `(y, x)`
* Added `upsampling`
* Added `circular_mask`
* Mandatory keyword arguments have been made positional
* `peak_search` updated to handle issues with MaskedArrays containing negative values
* Dcumentation expanded, made Sphinx compatible, and published on ReadTheDocs
* Further work on BorderScore, still experimental though
- Functional for Rectangular arenas
- Circular arenas are still WIP, should not be relied upon yet.
## 0.4.2 (2020-02-05)
* Speedscore modified substantially
- Adaptive filtering added, allowing the user to specify an upper speed as a bandwidth
- Adaptive filtering adjusted to behave more sensibly in the case of small bin sizes
- Speeds are smoothed before correlating
* Spatial cross correlation added
* General `bin_number` to `bin_size` code refactored to make future development more consistent
* Assorted unit tests added, including run-once code removed for speed
* Fix errors associated with `>` where applied to MaskedArrays (which, unlike ndarrays, do not correctly obey the symbol)
## 0.4.0 (2019-12-10)
* Ratemaps updated to handle walk filter (signature now requires providing animal speeds)
* Angular occupancy coverage calculation corrected
* circular arenas now handled in Spatial Occupancy
* Population Vector Correlation added
## 0.3.5 (2019-11-18)
* Assorted bugfixes to HDtuning
* Gridscore to handle NaNs more gracefully
## 0.3.4 (2019-20-25)
* `sep` made an optional dependency
* Alternative, non `sep` based code uses `skimage`
* Attempting to use `sep` if not installed with raise an error
## 0.3.2 (2019-09-20)
* Consistent calculating of bin numbers when histogramming
## 0.3.0 (2019-08-27)
* Third development release
* Improve NaN handling throughout by moving to MaskedArrays
* Fix Angular handling to function in seconds instead of frames
* Remove matplotlib from requirements
## 0.2.0
* Second development release
- Implementation of time-map -> rate-map -> (acorr, gridness score)
- Implementation of rate-map stats, grid stats
- Implementation of angular-map -> tuning-curve -> head direction score, stats.
- Non-production-ready implementation of border-score, speed-score.
## 0.1.0 (2018-08-30)
* First development release
- Implementation of gridness score, autocorrelogram, place-field detection
Raw data
{
"_id": null,
"home_page": "https://github.com/kavli-ntnu/opexebo",
"name": "opexebo",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "neuroscience kavli gridscore",
"author": "Simon Ball",
"author_email": "simon.ball@ntnu.no",
"download_url": "https://files.pythonhosted.org/packages/15/25/9d0fa63347bc723070d394231231d158b51425be8d851863eaae58656a87/opexebo-0.7.2.tar.gz",
"platform": null,
"description": "# opexebo\n\n[![Build Status](https://travis-ci.com/kavli-ntnu/opexebo.svg?branch=master&status=passed)](https://travis-ci.com/kavli-ntnu/opexebo)\n[![codecov](https://codecov.io/gh/kavli-ntnu/opexebo/branch/master/graph/badge.svg)](https://codecov.io/gh/kavli-ntnu/opexebo)\n[![Documentation Status](https://readthedocs.org/projects/opexebo/badge/?version=latest)](https://opexebo.readthedocs.io/en/latest/?badge=latest)\n\nThis library provides various analysis tools written by and for the Moser group at the [Kavli Institute](https://www.ntnu.edu/kavli) in Trondheim. \n\nThe package contains a mixture of translations of the older MatLab based [Behavioural Neurology Toolbox](https://bitbucket.org/cnc-ntnu/bnt), and other functions written only in Python 3, as part of the transition towards providing open access to research code. \n\n\n### Documentation\n\nSpecifications and documentation for `opexebo` are available on [Read the Docs](https://opexebo.readthedocs.io/en/latest/).\n\n\n### Installation\n\nInstall with pip:\n\n```\npip install opexebo\n```\n\nOpexebo has an optional dependency, `sep`, that is not installed by default. To be able to install it, you require a C++ compiler installed on your system. On Linux, `gcc` will do the job. On Windows, the the Microsoft Visual C++ Build Tools fulfil the same role (https://www.microsoft.com/en-us/download/details.aspx?id=48159). To force installation of all optional dependencies, append `[full]` to the install command, for example:\n\n pip install opexebo[full]\n\n### Tests\n\nTests are implemented with `pytest`. Ensure that the various development tools are installed via \n```python\npip install -r dev-requirements.txt\n```\nAnd then run tests with `pytest .`\n\n\n# History\n\n## 0.7.0\n* Update dependencies for more modern versions (particularly `numpy`, `scipy` and `pytest`)\n* Switch supported Python versions for 3.8+\n\n## 0.6.1\n\n* Fix some docstrings that were not updated to reflect changes in 0.6.0\n* Fix the default limit behaviour of `accumulate_spatial` for bin width specification.\n\n\n## 0.6.0\n\n* Rewrite `spatial_occupancy` and `rate_map` to remove the walk filter (signature breaking)\n * The individual analysis functions should be single purpose, and the walk-filter breaks this rule.\n * Ideally, the walk-filter should be applied to spikes/tracking data _first_, and the resulting data then used for further analysis. \n * A dedicated function has been provided to replace this: `general.walk_filter`\n* Rewrite `shuffle` to better handle edge cases (including 1-spike-only) (signature breaking)\n* Added `general.walk_filter` to provide replace the specific filtering implemented in each of `spatial_occupancy` and `rate_map`\n\n* Fix a bug where `accumulate_spatial` can't handle cases where a single spike is present\n* Fix an error in the LFP power spectrum calculation with fft\n* Removed support for providing 1D position data as a 2d array with length 1\n * Caused frustrating circular issues in cases where only a single data point was provided.\n * Fairly low value addition, so support removed.\n\n\n\n## 0.5.5 (2021-06-01)\n\n* Publish to PyPi\n\n\n## 0.5.2 (2021-04-19)\n\n* Support 1D data in spatial occupancy and ratemap\n* Add Opexebo-specific errors\n* Add automated testing prior to release\n* Add `calculate_speed`\n* Add `egocentric_occupancy`\n* Fixed an edge case error in `accumulate_spatial`\n\n\n## 0.4.3 (2020-02-19)\n\n* Substantial cleanup to `accumulate_spatial`\n - Function was mathematically correct but confusing, due to the difference between opexebo's standard of `(x, y)` and NumPy's standard of `(y, x)`\n* Added `upsampling`\n* Added `circular_mask`\n* Mandatory keyword arguments have been made positional\n* `peak_search` updated to handle issues with MaskedArrays containing negative values\n* Dcumentation expanded, made Sphinx compatible, and published on ReadTheDocs\n* Further work on BorderScore, still experimental though\n - Functional for Rectangular arenas\n - Circular arenas are still WIP, should not be relied upon yet.\n\n\n## 0.4.2 (2020-02-05)\n\n* Speedscore modified substantially\n - Adaptive filtering added, allowing the user to specify an upper speed as a bandwidth\n - Adaptive filtering adjusted to behave more sensibly in the case of small bin sizes\n - Speeds are smoothed before correlating\n* Spatial cross correlation added\n* General `bin_number` to `bin_size` code refactored to make future development more consistent\n* Assorted unit tests added, including run-once code removed for speed\n* Fix errors associated with `>` where applied to MaskedArrays (which, unlike ndarrays, do not correctly obey the symbol)\n\n\n## 0.4.0 (2019-12-10)\n\n* Ratemaps updated to handle walk filter (signature now requires providing animal speeds)\n* Angular occupancy coverage calculation corrected\n* circular arenas now handled in Spatial Occupancy\n* Population Vector Correlation added\n\n\n## 0.3.5 (2019-11-18)\n\n* Assorted bugfixes to HDtuning\n* Gridscore to handle NaNs more gracefully\n\n\n## 0.3.4 (2019-20-25)\n\n* `sep` made an optional dependency\n* Alternative, non `sep` based code uses `skimage`\n* Attempting to use `sep` if not installed with raise an error\n\n\n## 0.3.2 (2019-09-20)\n\n* Consistent calculating of bin numbers when histogramming\n\n\n## 0.3.0 (2019-08-27)\n\n* Third development release\n* Improve NaN handling throughout by moving to MaskedArrays\n* Fix Angular handling to function in seconds instead of frames\n* Remove matplotlib from requirements\n\n\n## 0.2.0 \n\n* Second development release\n - Implementation of time-map -> rate-map -> (acorr, gridness score)\n - Implementation of rate-map stats, grid stats\n - Implementation of angular-map -> tuning-curve -> head direction score, stats.\n - Non-production-ready implementation of border-score, speed-score. \n\n\n## 0.1.0 (2018-08-30)\n\n* First development release\n - Implementation of gridness score, autocorrelogram, place-field detection\n\n\n",
"bugtrack_url": null,
"license": "",
"summary": "Collection of python code in Kavli lab.",
"version": "0.7.2",
"project_urls": {
"Homepage": "https://github.com/kavli-ntnu/opexebo"
},
"split_keywords": [
"neuroscience",
"kavli",
"gridscore"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "3c7847e6e48058c30c5e4e1739a255172759baacf8267f07a0d2d4f6d664e78e",
"md5": "372e80f7047528fbba761ef5677881c7",
"sha256": "2dccd4458660d9c720a175a634c669389c5f37aa52cf6f09fcc3b1a9ee5a98a2"
},
"downloads": -1,
"filename": "opexebo-0.7.2-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "372e80f7047528fbba761ef5677881c7",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 105837,
"upload_time": "2023-10-16T12:44:13",
"upload_time_iso_8601": "2023-10-16T12:44:13.839525Z",
"url": "https://files.pythonhosted.org/packages/3c/78/47e6e48058c30c5e4e1739a255172759baacf8267f07a0d2d4f6d664e78e/opexebo-0.7.2-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "15259d0fa63347bc723070d394231231d158b51425be8d851863eaae58656a87",
"md5": "84238a9d86ba9e41551d393d878ae4f6",
"sha256": "b9b9b52dc280f23c6b29a17a57585865d7a3fc82a164a0e71f55994dccc12d0a"
},
"downloads": -1,
"filename": "opexebo-0.7.2.tar.gz",
"has_sig": false,
"md5_digest": "84238a9d86ba9e41551d393d878ae4f6",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 82283,
"upload_time": "2023-10-16T12:44:15",
"upload_time_iso_8601": "2023-10-16T12:44:15.927183Z",
"url": "https://files.pythonhosted.org/packages/15/25/9d0fa63347bc723070d394231231d158b51425be8d851863eaae58656a87/opexebo-0.7.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-10-16 12:44:15",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "kavli-ntnu",
"github_project": "opexebo",
"travis_ci": true,
"coveralls": false,
"github_actions": true,
"requirements": [],
"lcname": "opexebo"
}