Skip to main content

Project Status: Unsupported – The project has reached a stable, usable state but the author(s) have ceased all work on it. A new maintainer may be desired.

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.)

[Build Status DOI PyPI version License

evfuncs

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).

Image of Evren

Installation

with pip

$ pip install evfuncs

with conda

$ conda install evfuncs -c conda-forge

Usage

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.

Getting Help

Please feel free to raise an issue here:
https://github.com/NickleDave/evfuncs/issues

License

BSD License.

Citation

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

Build Status

Build Status

Release files for evfuncs 0.3.5.post1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for evfuncs 0.3.5.post1
File Size Uploaded
evfuncs-0.3.5.post1.tar.gz 194.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for evfuncs 0.3.5.post1
File Interpreter ABI Platform
evfuncs-0.3.5.post1-py3-none-any.whl Python 3 none any Details

Total release size: 204.3 kB

Release files / evfuncs-0.3.5.post1.tar.gz

Download URL evfuncs-0.3.5.post1.tar.gz
Size 194.5 kB
Tags Source
SHA-256 checksum
How to use checksums
3b73bc49f9e22c0e78eb00be32df0d03d88c72f90373657b36cb03c02a6bb75a
BLAKE2b-256 checksum
How to use checksums
984aa4f7deab6fee7bbc291928d7e1dcb3df8672a9c59f0ee7661cc27b8a9a2c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via python-requests/2.28.2

Release files / evfuncs-0.3.5.post1-py3-none-any.whl

Download URL evfuncs-0.3.5.post1-py3-none-any.whl
Size 9.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2ef3c996a8ad468a34c428c8c376579fb95896cb459495ffeaaccc71ef4c580b
BLAKE2b-256 checksum
How to use checksums
1324410f781493f84a1750a4f9121d8eb4849a3e8c508c7fb9a86dd790f129a8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via python-requests/2.28.2
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page