anaties
Anaties (contraction of 'analysis utilities'). A place for common operations like signal smoothing that are useful across all my data analysis projects.
Installation and usage
Install with pip:
pip install anaties
When a new release is made, upgrade with:
pip install anaties --upgrade
Usage is simple. In your code:
import anaties as ana
ana.function_name()
You can test it out with:
import anaties as ana
print(ana.datetime_string())
plt.plot([0, 1], [0,1], color='k', linewidth=0.6)
ana.rect_highlight([0.25, 0.5])
All other functions are listed below.
Brief summary of all utilities
signals.py (for 1d data arrays, or arrays of such arrays)
- smooth: smooth a signal with a window (gaussian, etc)
- smooth_rows: smooth each row of a 2d array using smooth()
- power_spec: get the power spectral density or power spectrum
- spectrogram: calculate/plot spectrogram of a signal
- notch_filter: notch filter to attenuate specific frequency (e.g. 60hz)
- bandpass_filter: allow through frequencies within low- and high-cutoff
plots.py (basic plotting)
- error_shade: plot line with shaded error region
- freqhist: calculate/plot a relative frequency histogram
- paired_bar: bar plot for paired data
- plot_with_events: plot with vertical lines to indicate events
- rect_highlight: overlay rectangular highlight to figure
- vlines: add vertical lines to figure
stats (basic statistical things)
- collective_correlation: collective correlation coefficient
- med_semed: median and std error of median of an array
- mean_sem: mean and std error of the mean of an array
- mean_std: mean and standard deviation of an array
- se_mean: std err of mean of array
- se_median: std error of median of array
- cramers_v: cramers v for effect size for chi-square test
helpers.py (generic utility functions for use everywhere)
- datetime_string : return date_time string to use for naming files etc
- file_exists: check to see if file exists
- get_bins: get bin edges and centers, given limits and bin width
- get_offdiag_vals: get lower off-diagonal values of a symmetric matrix
- ind_limits: return indices that contain array data within range
- is_symmetric: check if 2d array is symmetric
- rand_rgb: returns random array of rgb values
Acknowledgments
- Songbird wav is open source from: https://freesound.org/people/Sonic-ranger/sounds/243677/
- Developed with the support from NIH Bioinformatics and the Neurobehavioral Core at NIEHS.
To do: More important
- finish adding tests.
- plots.rect_highlight should just use axvspan/axhspan!
- use median instead of mean in spectrogram
- add proper documentation and tests to stats module.
- integrate vlines into pypi and version up (maybe good test for ci)
- add ax return for all plot functions, when possible.
- finish plots.twinx and make sure it works
- add test for plots.error_shade.
- Add return object for plots.rect_highlight()
- consider adding directory_exists to helpers
- paired_bar and mean_sem/std need to handle one point better (throws warning)
- Add a proper suptitle fix in aplots it is a pita to add manually/remember: f.suptitle(..., fontsize=16) f.tight_layout() f.subplots_adjust(top=0.9)
- For freqhist should I guarantee it sums to 1 even when bin widths don't match data limits? Probably not. Something to think about though.
- In smoother, consider switching from filtfilt() to sosfiltfilt() for reasons laid out here: https://dsp.stackexchange.com/a/17255/51564
- Convert notch filter to sos?
- For spectral density estimation consider adding multitaper option. Good discussions: https://github.com/cokelaer/spectrum https://pyspectrum.readthedocs.io/en/latest/ https://mark-kramer.github.io/Case-Studies-Python/04.html
- add ability to control event colors in spectrogram.
- ind_limits: add checks for data, data_limits, clarify description and docs
- Add numerical tests with random seed set not just graphical eyeball tests.
To do: longer term
- Add audio playback of signals (see notes in audio_playback_workspace), incorporate this into some tests of filtering, etc.. simpleaudio package is too simple I think.
- autodocs (sphinx?)
- CI/CD with github actions
- consider adding wavelets.
- Add 3d array support for stat functions like mn_sem
Useful sources
Smoothing
- https://scipy-cookbook.readthedocs.io/items/FiltFilt.html
- https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.filtfilt.html
What about wavelets?
I may add wavelets at some point, but it isn't plug-and-play enough for this repo. If you want to get started with wavelets in Python, I recommend http://ataspinar.com/2018/12/21/a-guide-for-using-the-wavelet-transform-in-machine-learning/
Tolerance values
For a discussion of the difference between relative and absolute tolerance values when testing floats for equality (for instance as used in helpers.is_symmetric()) see:
https://stackoverflow.com/questions/65909842/what-is-rtol-for-in-numpys-allclose-function
Suggestions?
If there is something you'd like to see, please open an issue.
Metadata
Release files for anaties 0.1.4.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| anaties-0.1.4.6.tar.gz | 20.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| anaties-0.1.4.6-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 42.2 kB
Release files / anaties-0.1.4.6.tar.gz
| Download URL | anaties-0.1.4.6.tar.gz |
|---|---|
| Size | 20.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f265b0f6bd28d96cede4a9151b55568dfb06511b2fa00085ec555119f82b25f0
|
|
BLAKE2b-256 checksum How to use checksums |
94d1f49b1659acfa4434e508f8c8b703a9f4135760eb9843b90043c8ab370cdd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.3.0 pkginfo/1.7.1 requests/2.26.0 setuptools/58.2.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.7.6
|
Release files / anaties-0.1.4.6-py3-none-any.whl
| Download URL | anaties-0.1.4.6-py3-none-any.whl |
|---|---|
| Size | 21.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2da2fdd808b5fd8cc11e43cb8330f07448f0b9ebfef4cc13573d6d1226ab9f7a
|
|
BLAKE2b-256 checksum How to use checksums |
d6bd038cc3572d5b221a89e52fed13e9ac6b081c79487abee439dca985a451e4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.3.0 pkginfo/1.7.1 requests/2.26.0 setuptools/58.2.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.7.6
|