Metadata-Version: 2.4
Name: bnpm
Version: 0.6.0
Summary: A library of useful modules for data analysis.
Home-page: https://github.com/RichieHakim/basic_neural_processing_modules
Author: Richard Hakim
License: LICENSE
Keywords: data analysis,machine learning,neuroscience
Description-Content-Type: text/markdown
License-File: LICENSE
Provides-Extra: all
Requires-Dist: h5py; extra == "all"
Requires-Dist: eva_decord; extra == "all"
Requires-Dist: ipywidgets; extra == "all"
Requires-Dist: kornia; extra == "all"
Requires-Dist: matplotlib; extra == "all"
Requires-Dist: natsort; extra == "all"
Requires-Dist: numba; extra == "all"
Requires-Dist: numpy; extra == "all"
Requires-Dist: opencv_contrib_python; extra == "all"
Requires-Dist: opt_einsum; extra == "all"
Requires-Dist: optuna; extra == "all"
Requires-Dist: optuna_integration; extra == "all"
Requires-Dist: pandas; extra == "all"
Requires-Dist: paramiko; extra == "all"
Requires-Dist: psutil; extra == "all"
Requires-Dist: PyYAML; extra == "all"
Requires-Dist: pytest; extra == "all"
Requires-Dist: hypothesis; extra == "all"
Requires-Dist: scikit_learn; extra == "all"
Requires-Dist: tqdm; extra == "all"
Requires-Dist: seaborn; extra == "all"
Requires-Dist: sparse; extra == "all"
Requires-Dist: scipy; extra == "all"
Requires-Dist: sqlalchemy; extra == "all"
Requires-Dist: pymysql; extra == "all"
Requires-Dist: xxhash; extra == "all"
Requires-Dist: wandb; extra == "all"
Requires-Dist: tensorly; extra == "all"
Requires-Dist: torch; extra == "all"
Requires-Dist: torchvision; extra == "all"
Requires-Dist: torchaudio; extra == "all"
Requires-Dist: toolz; extra == "all"
Requires-Dist: tables; extra == "all"
Requires-Dist: pulp; extra == "all"
Requires-Dist: spconv; extra == "all"
Requires-Dist: torch_sparse; extra == "all"
Requires-Dist: av; extra == "all"
Requires-Dist: pynwb; extra == "all"
Requires-Dist: sendgrid; extra == "all"
Requires-Dist: pycuda; extra == "all"
Requires-Dist: cuml; extra == "all"
Requires-Dist: cupy; extra == "all"
Requires-Dist: cudf; extra == "all"
Requires-Dist: scanimage_tiff_reader; extra == "all"
Requires-Dist: jupyter; extra == "all"
Requires-Dist: PyWavelets; extra == "all"
Requires-Dist: mat73; extra == "all"
Requires-Dist: pathos; extra == "all"
Requires-Dist: pygame; extra == "all"
Requires-Dist: psycopg2-binary; extra == "all"
Provides-Extra: all-latest
Requires-Dist: h5py; extra == "all-latest"
Requires-Dist: eva_decord; extra == "all-latest"
Requires-Dist: ipywidgets; extra == "all-latest"
Requires-Dist: kornia; extra == "all-latest"
Requires-Dist: matplotlib; extra == "all-latest"
Requires-Dist: natsort; extra == "all-latest"
Requires-Dist: numba; extra == "all-latest"
Requires-Dist: numpy; extra == "all-latest"
Requires-Dist: opencv_contrib_python; extra == "all-latest"
Requires-Dist: opt_einsum; extra == "all-latest"
Requires-Dist: optuna; extra == "all-latest"
Requires-Dist: optuna_integration; extra == "all-latest"
Requires-Dist: pandas; extra == "all-latest"
Requires-Dist: paramiko; extra == "all-latest"
Requires-Dist: psutil; extra == "all-latest"
Requires-Dist: PyYAML; extra == "all-latest"
Requires-Dist: pytest; extra == "all-latest"
Requires-Dist: hypothesis; extra == "all-latest"
Requires-Dist: scikit_learn; extra == "all-latest"
Requires-Dist: tqdm; extra == "all-latest"
Requires-Dist: seaborn; extra == "all-latest"
Requires-Dist: sparse; extra == "all-latest"
Requires-Dist: scipy; extra == "all-latest"
Requires-Dist: sqlalchemy; extra == "all-latest"
Requires-Dist: pymysql; extra == "all-latest"
Requires-Dist: xxhash; extra == "all-latest"
Requires-Dist: wandb; extra == "all-latest"
Requires-Dist: tensorly; extra == "all-latest"
Requires-Dist: torch; extra == "all-latest"
Requires-Dist: torchvision; extra == "all-latest"
Requires-Dist: torchaudio; extra == "all-latest"
Requires-Dist: toolz; extra == "all-latest"
Requires-Dist: tables; extra == "all-latest"
Requires-Dist: pulp; extra == "all-latest"
Requires-Dist: spconv; extra == "all-latest"
Requires-Dist: torch_sparse; extra == "all-latest"
Requires-Dist: av; extra == "all-latest"
Requires-Dist: pynwb; extra == "all-latest"
Requires-Dist: sendgrid; extra == "all-latest"
Requires-Dist: pycuda; extra == "all-latest"
Requires-Dist: cuml; extra == "all-latest"
Requires-Dist: cupy; extra == "all-latest"
Requires-Dist: cudf; extra == "all-latest"
Requires-Dist: scanimage_tiff_reader; extra == "all-latest"
Requires-Dist: jupyter; extra == "all-latest"
Requires-Dist: PyWavelets; extra == "all-latest"
Requires-Dist: mat73; extra == "all-latest"
Requires-Dist: pathos; extra == "all-latest"
Requires-Dist: pygame; extra == "all-latest"
Requires-Dist: psycopg2-binary; extra == "all-latest"
Provides-Extra: core
Requires-Dist: numpy; extra == "core"
Requires-Dist: scipy; extra == "core"
Requires-Dist: kornia; extra == "core"
Requires-Dist: matplotlib; extra == "core"
Requires-Dist: numba; extra == "core"
Requires-Dist: scikit_learn; extra == "core"
Requires-Dist: tqdm; extra == "core"
Requires-Dist: h5py; extra == "core"
Requires-Dist: opencv_contrib_python; extra == "core"
Requires-Dist: opt_einsum; extra == "core"
Requires-Dist: optuna; extra == "core"
Requires-Dist: optuna_integration; extra == "core"
Requires-Dist: sparse; extra == "core"
Requires-Dist: natsort; extra == "core"
Requires-Dist: paramiko; extra == "core"
Requires-Dist: pandas; extra == "core"
Requires-Dist: psutil; extra == "core"
Requires-Dist: pytest; extra == "core"
Requires-Dist: hypothesis; extra == "core"
Requires-Dist: PyYAML; extra == "core"
Requires-Dist: tensorly; extra == "core"
Requires-Dist: torch; extra == "core"
Requires-Dist: torchvision; extra == "core"
Requires-Dist: torchaudio; extra == "core"
Requires-Dist: ipywidgets; extra == "core"
Requires-Dist: eva_decord; extra == "core"
Requires-Dist: wandb; extra == "core"
Requires-Dist: sqlalchemy; extra == "core"
Requires-Dist: pymysql; extra == "core"
Requires-Dist: toolz; extra == "core"
Provides-Extra: core-latest
Requires-Dist: numpy; extra == "core-latest"
Requires-Dist: scipy; extra == "core-latest"
Requires-Dist: kornia; extra == "core-latest"
Requires-Dist: matplotlib; extra == "core-latest"
Requires-Dist: numba; extra == "core-latest"
Requires-Dist: scikit_learn; extra == "core-latest"
Requires-Dist: tqdm; extra == "core-latest"
Requires-Dist: h5py; extra == "core-latest"
Requires-Dist: opencv_contrib_python; extra == "core-latest"
Requires-Dist: opt_einsum; extra == "core-latest"
Requires-Dist: optuna; extra == "core-latest"
Requires-Dist: optuna_integration; extra == "core-latest"
Requires-Dist: sparse; extra == "core-latest"
Requires-Dist: natsort; extra == "core-latest"
Requires-Dist: paramiko; extra == "core-latest"
Requires-Dist: pandas; extra == "core-latest"
Requires-Dist: psutil; extra == "core-latest"
Requires-Dist: pytest; extra == "core-latest"
Requires-Dist: hypothesis; extra == "core-latest"
Requires-Dist: PyYAML; extra == "core-latest"
Requires-Dist: tensorly; extra == "core-latest"
Requires-Dist: torch; extra == "core-latest"
Requires-Dist: torchvision; extra == "core-latest"
Requires-Dist: torchaudio; extra == "core-latest"
Requires-Dist: ipywidgets; extra == "core-latest"
Requires-Dist: eva_decord; extra == "core-latest"
Requires-Dist: wandb; extra == "core-latest"
Requires-Dist: sqlalchemy; extra == "core-latest"
Requires-Dist: pymysql; extra == "core-latest"
Requires-Dist: toolz; extra == "core-latest"
Provides-Extra: core-cv2headless
Requires-Dist: numpy; extra == "core-cv2headless"
Requires-Dist: scipy; extra == "core-cv2headless"
Requires-Dist: kornia; extra == "core-cv2headless"
Requires-Dist: matplotlib; extra == "core-cv2headless"
Requires-Dist: numba; extra == "core-cv2headless"
Requires-Dist: scikit_learn; extra == "core-cv2headless"
Requires-Dist: tqdm; extra == "core-cv2headless"
Requires-Dist: h5py; extra == "core-cv2headless"
Requires-Dist: opencv_contrib_python_headless; extra == "core-cv2headless"
Requires-Dist: opt_einsum; extra == "core-cv2headless"
Requires-Dist: optuna; extra == "core-cv2headless"
Requires-Dist: optuna_integration; extra == "core-cv2headless"
Requires-Dist: sparse; extra == "core-cv2headless"
Requires-Dist: natsort; extra == "core-cv2headless"
Requires-Dist: paramiko; extra == "core-cv2headless"
Requires-Dist: pandas; extra == "core-cv2headless"
Requires-Dist: psutil; extra == "core-cv2headless"
Requires-Dist: pytest; extra == "core-cv2headless"
Requires-Dist: hypothesis; extra == "core-cv2headless"
Requires-Dist: PyYAML; extra == "core-cv2headless"
Requires-Dist: tensorly; extra == "core-cv2headless"
Requires-Dist: torch; extra == "core-cv2headless"
Requires-Dist: torchvision; extra == "core-cv2headless"
Requires-Dist: torchaudio; extra == "core-cv2headless"
Requires-Dist: ipywidgets; extra == "core-cv2headless"
Requires-Dist: eva_decord; extra == "core-cv2headless"
Requires-Dist: wandb; extra == "core-cv2headless"
Requires-Dist: sqlalchemy; extra == "core-cv2headless"
Requires-Dist: pymysql; extra == "core-cv2headless"
Requires-Dist: toolz; extra == "core-cv2headless"
Provides-Extra: core-latest-cv2headless
Requires-Dist: numpy; extra == "core-latest-cv2headless"
Requires-Dist: scipy; extra == "core-latest-cv2headless"
Requires-Dist: kornia; extra == "core-latest-cv2headless"
Requires-Dist: matplotlib; extra == "core-latest-cv2headless"
Requires-Dist: numba; extra == "core-latest-cv2headless"
Requires-Dist: scikit_learn; extra == "core-latest-cv2headless"
Requires-Dist: tqdm; extra == "core-latest-cv2headless"
Requires-Dist: h5py; extra == "core-latest-cv2headless"
Requires-Dist: opencv_contrib_python_headless; extra == "core-latest-cv2headless"
Requires-Dist: opt_einsum; extra == "core-latest-cv2headless"
Requires-Dist: optuna; extra == "core-latest-cv2headless"
Requires-Dist: optuna_integration; extra == "core-latest-cv2headless"
Requires-Dist: sparse; extra == "core-latest-cv2headless"
Requires-Dist: natsort; extra == "core-latest-cv2headless"
Requires-Dist: paramiko; extra == "core-latest-cv2headless"
Requires-Dist: pandas; extra == "core-latest-cv2headless"
Requires-Dist: psutil; extra == "core-latest-cv2headless"
Requires-Dist: pytest; extra == "core-latest-cv2headless"
Requires-Dist: hypothesis; extra == "core-latest-cv2headless"
Requires-Dist: PyYAML; extra == "core-latest-cv2headless"
Requires-Dist: tensorly; extra == "core-latest-cv2headless"
Requires-Dist: torch; extra == "core-latest-cv2headless"
Requires-Dist: torchvision; extra == "core-latest-cv2headless"
Requires-Dist: torchaudio; extra == "core-latest-cv2headless"
Requires-Dist: ipywidgets; extra == "core-latest-cv2headless"
Requires-Dist: eva_decord; extra == "core-latest-cv2headless"
Requires-Dist: wandb; extra == "core-latest-cv2headless"
Requires-Dist: sqlalchemy; extra == "core-latest-cv2headless"
Requires-Dist: pymysql; extra == "core-latest-cv2headless"
Requires-Dist: toolz; extra == "core-latest-cv2headless"
Dynamic: author
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: keywords
Dynamic: license
Dynamic: license-file
Dynamic: provides-extra
Dynamic: summary

[![PyPI version](https://badge.fury.io/py/bnpm.svg)](https://badge.fury.io/py/bnpm)
[![Downloads](https://pepy.tech/badge/bnpm)](https://pepy.tech/project/bnpm)
[![repo size](https://img.shields.io/github/repo-size/RichieHakim/basic_neural_processing_modules)](https://github.com/RichieHakim/basic_neural_processing_modules/)

#  basic_neural_processing_modules 
Personal library of functions used in analyzing neural data.
If you find a bug or just want to reach out: RichHakim@gmail.com

## Installation 
Normal installation of `bnpm` does not install all possible dependencies; there are some specific functions that wrap libraries that may need to be installed separately on a case-by-case basis.

Install stable version:
```
pip install bnpm[core]
```

If installing on a server or any computer without graphics/display, install using `core_cv2Headless`. If you accidentally installed the normal version, simply please uninstall `pip uninstall opencv-contrib-python` and install `pip install opencv-contrib-python-headless` instead. 


Install development version:
```
pip install git+https://github.com/RichieHakim/basic_neural_processing_modules.git
```

import with:
```
import bnpm
```


## Usage 
My favorites:
- **`automatic_regression`** module
    - Allows for easy and fast hyperparameter optimization of regression models
    - Any model with a `fit` and `predict` method can be used (e.g. `sklearn` and similar)
    - Uses `optuna` for hyperparameter optimization

Other useful functions:
- Signal Processing:
    - `timeSeries.rolling_percentile_rq_multicore`
        - Fast rolling percentile calculation
    -  `timeSeries.event_triggered_traces`
        - Fast creation of a matrix of aligned traces relative to specified event times

- Machine Learning:
    - `neural_networks` module
        - Has nice RNN regression and classification classes
    - `decomposition.torch_PCA`
        - Fast standard PCA using PyTorch
    - `similarity.orthogonalize`
        - Orthogonalize a matrix relative to a set of vectors using OLS or Gram-Schmidt process

- Miscellaneous
    - `path_helpers.find_paths`
        - Find paths to files and/or folders in a directory. Searches recursively using regex.
    - `image_processing.play_video_cv2`
        - Plays and/or saves a 3D array as a video using OpenCV
    - `h5_handling.simple_save` and `h5_handling.simple_load`
        - Simple lazy loading and saving of dictionaries as nested h5 files
