Skip to main content

ABR analysis

This program facilitates the analysis of auditory evoked responses (tested with auditory brainstem responses and compound action potentials). You can visualize the waveform series collected during a single experiment, and identify the threshold and extract the amplitude and latency of each of the individual peaks in the waveform.

The program works with the fillowing file formats:

  • ABR data generated by the Eaton Peabody Laboratories Cochlear Function Test Suite (EPL CFTS).
  • ABR data generated by psiexperiment.
  • ABR data generated by the Intelligent Hearing Systems (IHS) text export.

Individal research groups have also adapted the program to work with their own file formats.

Installing

The simplest way to get started is to download the Anaconda Python Distribution. Once installed, you will have new programs available in your start menu. One of these is called Anaconda Prompt. Open the Anaconda Prompt and you will get a command window. Type the following sequence of commands:

conda create -n abr python=3.10
conda activate abr
pip install abr

Running the program

Open the Anaconda Prompt and type:

conda activate abr
abr

Updating the program

conda activate abr
pip install --upgrade abr

Programs available

There are two main interfaces to the ABR analysis program. The first is the basic interface where you manually drag files from your file browser and drop them on the window. You can drag one file or multiple files. Each file will be opened in a separate tab. The second interface is an automatic one that will loop through all unprocessed ABR files found in a folder and present each file to you individually for analysis. Once you save the analysis, it will immediately move to the next file.

Both interfaces are accessed via the launcher. When you first open the launcher, you will specify:

  • Your name (i.e., the "analyzer")
  • The file format. For many of you, you will pick the EPL CFTS unless you are using my software, psiexperiment for data acquisition.
  • Which waves you want to analyze. If none are checked, we will assume that you only wish to mark threshold.
  • Filter settings to use. The original version of this program (distributed via the EPL website), filters waveforms using a 300 to 3000 Hz bandpass butterworth filter.

Processing

Each waveform is bandpass filtered using a butterworth filter (filter order and highpass and lowpass cutoffs are specified via command-line options). This filtering process removes the baseline shift as well as high-frequency noise that may interfere with the peak-finding algorithm. To prevent the waveform from being filtered, use the --nofilter option; however, be aware that this may degrade the efficacy of the automated peak. Important note: since the algorithm uses a forward and reverse filter (to minimize phase shift), the actual order is double the requested order.

An initial estimate of P1-5 is computed and presented for correction. You may navigate through the waveform stack via the up/down arrows and select a point via the corresponding number (1-5). Once a point is selected (it will turn to a white square), you can move it along the waveform using the right/left arrow keys. Since the algorithm relies on the location of P1-5 to compute the best possible estimate of N1-5, you should correct the location of P1-5 before asking the algorithm to estimate N1-5. You may also specify threshold by navigating to the appropriate waveform (via the up/down arrows) and hitting the "t" key.

Output format

The amplitude and latency of each point are saved along with the threshold of the series. If the point is part of a subthreshold waveform, the additive inverse of the latency is saved (i.e. when parsing the file, subthreshold data can be recognized by negative latencies). Amplitudes from subthreshold points can be used to estimate the noise floor if desired.

Interface

The current waveform is displayed as a thick, black line. Once a threshold is specified, subthreshold waveforms are indicated by a dashed line. The selected point is indicated by a white square. Negativities are indicated by triangles, positivities as squares. Red is P1/N1, yellow is P2/N2, green is P3/N3, light blue is P4/N4, and dark blue is P5/N5.

Instructions for using the program are included in the user interface.

Attributions

Code relating to marking points unscoreable and/or shifting waveforms up/down to ensure they don't run off the plot are adapted from work performed for the United States government and, therefore, are in the public domain. All other part of the code remain licensed under the BSD 3-clause.

Release files for ABR 0.0.15

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

Source distribution (sdist)

Source distribution for ABR 0.0.15
File Size Uploaded
abr-0.0.15.tar.gz 216.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ABR 0.0.15
File Interpreter ABI Platform
abr-0.0.15-py3-none-any.whl Python 3 none any Details

Total release size: 439.3 kB

Release files / abr-0.0.15.tar.gz

Download URL abr-0.0.15.tar.gz
Size 216.3 kB
Tags Source
SHA-256 checksum
How to use checksums
c167557fa0e78397c7dfe1c85270c16e0c7b805a935bc9375c8e2de5ca467aa1
BLAKE2b-256 checksum
How to use checksums
c9b4e6ccabc0369b0502568172da51dce56fc530d702122cd30b0a31786051c4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 18, 2025.

Transparency log

Release files / abr-0.0.15-py3-none-any.whl

Download URL abr-0.0.15-py3-none-any.whl
Size 223.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e5a563207683852155dc2ebbb725a6e81d428207c78f46905448220423085cb7
BLAKE2b-256 checksum
How to use checksums
e11d91ff65210f9c4b813c1f9dc4ce4423352f852e72564c78449727ff57bae1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 18, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

0.0.15 This release

2 release files

0.0.12

2 release files

0.0.10

2 release files

0.0.9

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

0.0.0

2 release files

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