
Product
Introducing Webhook Events for Alert Changes
Add real-time Socket webhook events to your workflows to automatically receive software supply chain alert changes in real time.
evfuncs
Advanced tools
Functions for working with files created by the EvTAF program and the evsonganaly GUI
This project is no longer actively maintained,
although the code uses core, stable functions from Python, Numpy, and SciPy, so it is likely to work.
If you need to load cbin (audio) files from evsonganaly,
there are maintained, updated versions of the functions in this package
in the vocalpy library: https://vocalpy.readthedocs.io
If you need to load .not.mat (annotation) files from evsonganaly,
there are maintained, updated versions of that function in crowsetta: https://crowsetta.readthedocs.io
(Note that if you install vocalpy, you will already have crowsetta installed.)
Functions for working with files created by EvTAF and the evsonganaly GUI.
In case you need to work with those files in Python đđđ (see "Usage" below).
The first work published with data collected using EvTAF and evsonganaly is in this paper:
Tumer, Evren C., and Michael S. Brainard.
"Performance variability enables adaptive plasticity of âcrystallizedâadult birdsong."
Nature 450.7173 (2007): 1240.
https://www.nature.com/articles/nature06390
These functions are translations to Python of the original functions written in MATLAB (copyright Mathworks) by Evren Tumer (shown below).
pip$ pip install evfuncs
conda$ conda install evfuncs -c conda-forge
The main purpose for developing these functions in Python was to work with files of Bengalese finch song in this data repository: https://figshare.com/articles/Bengalese_Finch_song_repository/4805749
Using evfuncs with that repository, you can load the .cbin audio files ...
>>> import evfuncs
>>> rawsong, samp_freq = evfuncs.load_cbin('gy6or6_baseline_230312_0808.138.cbin')
... and the annotation in the .not.mat files ...
>>> notmat_dict = evfuncs.load_notmat('gy6or6_baseline_230312_0808.138.cbin')
(or, using the .not.mat filename directly)
>>> notmat_dict = evfuncs.load_notmat('gy6or6_baseline_230312_0808.138.not.mat')
...and you should be able to reproduce the segmentation of the raw audio files of birdsong into syllables and silent periods, using the segmenting parameters from a .not.mat file and the simple algorithm applied by the SegmentNotes.m function.
>>> smooth = evfuncs.smooth_data(rawsong, samp_freq)
>>> threshold = notmat_dict['threshold']
>>> min_syl_dur = notmat_dict['min_dur'] / 1000
>>> min_silent_dur = notmat_dict['min_int'] / 1000
>>> onsets, offsets = evfuncs.segment_song(smooth, samp_freq, threshold, min_syl_dur, min_silent_dur)
>>> import numpy as np
>>> np.allclose(onsets, notmat_dict['onsets'])
True
(Note that this test would return False if the onsets and offsets in the .not.mat
annotation file had been modified, e.g., a user of the evsonganaly GUI had edited them,
after they were originally computed by the SegmentNotes.m function.)
evfuncs is used to load annotations by
'crowsetta',
a data-munging tool for building datasets of vocalizations
that can be used to train machine learning models.
Two machine learning libraries that can use those datasets are:
hybrid-vocal-classifier,
and vak.
Please feel free to raise an issue here:
https://github.com/NickleDave/evfuncs/issues
Please cite this software as shown below. To get the most up-to-date, automatically-generated citation, please click "Cite this repository" on the upper right side of the page.
bibtex:
@software{Nicholson_evfuncs_2021,
author = {Nicholson, David},
doi = {10.5281/zenodo.4584209},
license = {BSD-3-Clause},
month = {3},
title = {{evfuncs}},
url = {https://github.com/NickleDave/evfuncs},
version = {0.3.2.post1},
year = {2021}
APA:
Nicholson, D. (2021). evfuncs (Version 0.3.2.post1) [Computer software]. https://doi.org/10.5281/zenodo.4584209
FAQs
Functions for working with files created by the EvTAF program and the evsonganaly GUI
We found that evfuncs demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Product
Add real-time Socket webhook events to your workflows to automatically receive software supply chain alert changes in real time.

Security News
ENISA has become a CVE Program Root, giving the EU a central authority for coordinating vulnerability reporting, disclosure, and cross-border response.

Product
Socket now scans OpenVSX extensions, giving teams early detection of risky behaviors, hidden capabilities, and supply chain threats in developer tools.