Skip to main content

EGCI (Ecoacoustics Global Complexity Index)

The EGCI python package provides a tool for calculating the Ecoacoustic Global Complexity Index (EGCI), an innovative approach for quantifying the complexity of audio segments recorded by acoustic sensors in environments with high biodiversity, such as the Amazon rainforest. It is an unsupervised method for robust characterization of ecoacoustic richness.

Features

  • EGCI Calculation: Compute the Ecoacoustic Global Complexity Index using a combination of Entropy, Divergence, and Statistical Complexity, enabling a holistic assessment of the biodiversity of an acoustic environment.

  • Visualization: Helps to visualize the ecoacoustic dynamics of the rainforest by mapping each audio segment, of varying lengths, as a single point in a 2D-plane, aiding in the understanding of the soundscape.

  • Unsupervised Method: The EGCI employs unsupervised methods, eliminating the need for individual species labeling. This makes the package well-suited for handling large amounts of raw audio data and provides a robust characterization of ecoacoustic richness.

Citation

If you use the EGCI package in your research or work, please consider citing the original article: Colonna JG, Carvalho JRH, Rosso OA (2020) Estimating ecoacoustic activity in the Amazon rainforest through Information Theory quantifiers. PLOS ONE 15(7): e0229425. https://doi.org/10.1371/journal.pone.0229425

How to use

import numpy as np
import soundfile as sf
import EGCI
import matplotlib.pyplot as plt

# download a record file from this url: "https://drive.google.com/file/d/1QL5GimLjGLKBIiMzoa7VXlCR4GCpWBwc/view?usp=drivesdk"
# load this record
x, fs = sf.read('Adenomera andre.wav') # record of an anuran call

lag = 256 # time lag
C, H, J = EGCI.index(x, lag=lag) # C is the EGCI

boundaries_C, boundaries_H = EGCI.boundaries(lag) # these boundaries are only useful for plotting

plt.figure()
plt.plot(boundaries_H, boundaries_C, '--k')
plt.scatter(H, C, marker='.', s=100, label='Adenomera andre')
plt.xlabel('Entropy')
plt.ylabel('EGCI (Complexity)')
plt.xlim([0, 1])
plt.ylim([0, np.max(boundaries_C)+0.01])
plt.title('Adenomera andre.wav')
plt.legend(loc = 'best')
plt.show()

Metadata

Release files for EGCI 1.0.2.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 EGCI 1.0.2.post1
File Size Uploaded
EGCI-1.0.2.post1.tar.gz 4.9 kB Details

Built distribution (wheel)

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

Total release size: 10.1 kB

Release files / EGCI-1.0.2.post1.tar.gz

Download URL EGCI-1.0.2.post1.tar.gz
Size 4.9 kB
Tags Source
SHA-256 checksum
How to use checksums
e82c7a23efa0328b5bf72b2dfaa9a19c49efa443f1455f309b98a37ca40be7c3
BLAKE2b-256 checksum
How to use checksums
1978b3ea6f2b83e4c6f29ed42bd667f98782f7fbf2fafefae54748308b4535cc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.12

Release files / EGCI-1.0.2.post1-py3-none-any.whl

Download URL EGCI-1.0.2.post1-py3-none-any.whl
Size 5.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5f6689e216e7b294caf3beb6938904e81ff22610ba5083b936e58dd662546bac
BLAKE2b-256 checksum
How to use checksums
f0d0a3a5f6984ad326e88a589ffb2d7d986fb68368ec63762187cee1f37a0128
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.12

Release history Release notifications | RSS feed

This release

1.0.2.post1 This release

2 release files

1.0.2

2 release files

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