.vscode | ||
assets | ||
chirp_instantaneous_freq | ||
code | ||
poster/figs | ||
poster_printed | ||
protocol | ||
.gitignore | ||
.python-version | ||
README.md | ||
requirements.txt |

chirpdetector
An algorithm to detect transient communication signals of weakly electric fish on multielectrode recordings.
Explore the docs »
View Demo
·
Report Bug
·
Request Feature
Table of Contents
About The Project
Chirps are transient communication singals of many wave-type electric fish. Because they are so fast, detecting them when the recorded signal includes multiple individuals is hard. But to understand if, and what kind of information they transmit in a natural setting, analyzing chirps in multiple freely interacting individual is nessecary. This repository documents an approach to detect these signals on electrode grid recordings with many freely behaving individuals.
The majority of the code and its tests were part of a lab rotation with the Neuroethology at the University of Tuebingen. It also contains a poster and a more thorough lab protocol.
The Approach
To detect chirps, we extract some features of the raw signal using frequency traces that were computed beforehand using the wavetracker. For a frequency band of a single fish, we filter the signal using a bandpass filter, extract the instantaneous frequency, the envelelope and the envelope of a frequency band slightly above the fundamental frequency of the fish. We then transform those features using various filters and detect the peaks on them. Peaks on all three features are chirps. We always use the strongest electrode relative to the fish of interest. By that, we include the spatial demensions to increase our detection performance, if fish are spaced sufficiently apart. The full algorithm is thoroughly explained in the lab protocol. All parameters can be tuned using a yaml
config file. While this approach excels in assigning detected chirps to the currect fish, the actial chirp detection is not that reliable. If peak detection thresholds are set for each feature manually, the detector can become quite reliable. But if features are normalized to generalize the detector, noise often introduces false detections, especially during amplitude breakdowns.