Package: evfuncs
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.ioIf 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.)[evfuncsFunctions 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/nature06390These functions are translations to Python of the original functions
written in MATLAB (copyright Mathworks) by Evren Tumer (shown below).Installationwithpip$pipinstallevfuncswithconda$condainstallevfuncs-cconda-forgeUsageThe 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/4805749Usingevfuncswith that repository, you can load the.cbinaudio files ...>>>importevfuncs>>>rawsong,samp_freq=evfuncs.load_cbin('gy6or6_baseline_230312_0808.138.cbin')... and the annotation in the.not.matfiles ...>>>notmat_dict=evfuncs.load_notmat('gy6or6_baseline_230312_0808.138.cbin')(or, using the.not.matfilename 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)>>>importnumpyasnp>>>np.allclose(onsets,notmat_dict['onsets'])True(Note that this test would returnFalseif 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.)evfuncsis 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,
andvak.Getting HelpPlease feel free to raise an issue here:https://github.com/NickleDave/evfuncs/issuesLicenseBSD License.CitationPlease 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.4584209Build Status