Detection, Classification, and Localisation of marine mammal and other bioacoustic signals
Go to file
Jamie Mac 211ca7ab91
MacOS version of PAMGuard and minor UI updates (#170)
* Update exporter_help.md

Updated help for exporter

* Update .gitignore

* Bug fixes for deep learning classifier.

Updated the symbol options to make sure opacity is passed through the symbol chooser.

* Updates to the data map FX display

* Updates to DelphinID and Data ModelFX

Used a new writable image for much faster drawing in FX

* bb

* Delete C:\Users\Jamie Macaulay\MATLAB Drive\MATLAB\PAMGUARD\deep_learning\delphinID\whistle_image_example_java.mat

* Updates to DelphinID

* Updates to ReadMe and JavaFX GUI

* Update readme.md

Updates to ReadMe

* Updates to CPOD module and also delphinID classifier

* Fix colour scaling in FX data map

* Create cpod_help.md

* Update cpod_help.md

* Update cpod_help.md

* Updates to CPOD module

Added ability to export CPOD clicks
Added some extra features to data selector
Swing GUI for data selector (in progress)

* Updates to data map FX GUI

* Updates to CPOD module

* Added help files resources for CPOD

* Add CPOD resources for help

* Add CPOD resources for help

* Add CPOD resources for help

* Add CPOD resources for help

* Add CPOD resources for help

* Update cpod_help.md

* Update cpod_help.md

* Bug fixes for deep learning classifier.

Updated the symbol options to make sure opacity is passed through the symbol chooser.

* Updates to the data map FX display

* Updates to DelphinID and Data ModelFX

Used a new writable image for much faster drawing in FX

* Updates to ReadMe and JavaFX GUI

* bb

* Delete C:\Users\Jamie Macaulay\MATLAB Drive\MATLAB\PAMGUARD\deep_learning\delphinID\whistle_image_example_java.mat

* Updates to DelphinID

* Update readme.md

Updates to ReadMe

* Fix colour scaling in FX data map

* Updates to CPOD module and also delphinID classifier

* Updates to CPOD module

Added ability to export CPOD clicks
Added some extra features to data selector
Swing GUI for data selector (in progress)

* Create cpod_help.md

* Update cpod_help.md

* Update cpod_help.md

* Updates to data map FX GUI

* Updates to CPOD module

* Added help files resources for CPOD

* Add CPOD resources for help

* Add CPOD resources for help

* Add CPOD resources for help

* Add CPOD resources for help

* Add CPOD resources for help

* Update cpod_help.md

* Update cpod_help.md

* Bug fix to BT display

The BT display was not selecting clicks properly.

* Import bug fix

* Updates to data map FX GUI

* Updates to datamap FX

* Got date axis working properly.

* Added some arrows to the scroll bar for data map FX pane.

* Working on getting datagrams in FX saving

* Updates to DataMapFX and exporting annotations

* Update MLAnnotationsManager.java

* Working on adding annotations to exporter

* Bug fix for processing files and annotations for exporter

Rebase with main
Bug fix for processing files - stops only the last file processing when "Start normally" selected on data processing
R and MATLAB export of data annotation added.

* Add a ttoltip to the exporter

* Minor text change

* X3 fix and building for MACOS

* Update PAMGuard to build installer for MacOS

* Some fixes to Sound Acquisition dialog layout.

* Squashed commit of the following:

commit 1acddb4cc6
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Tue Oct 8 15:03:32 2024 +0100

    MErge from DG (#168)

    * Localization output

    * update localiser output

    * Start effort management system

    * Start of Effort plotting

    Strat of effort plotting on map. Framework for using Effort data in other areas (such as Tethys output).

    * Logger forms update

    Effort and Symbol selectors working with Logger forms. Also functions to add, edit and delete form rows in Viewer mode.

    * Update LoggerFormGraphics.java

    add in correct symbol managemet to forms graphics.

    * Effort lines on map

    Sort of working OK in real time mode.

    * Working effort system

    Currently only for map, but seems to work OK

    * Update Tethys to latest nilus schema

    * Raven importer

    Start of a system for a raven importer. Not quite working yet.

    * Raven import

    Basic functionality working. Not nice to use though.

    * Tethys Localization work

    Abstracting out writing of localization objects and document header information so that individual localisers can give fine scale control of this stuff.

    * updated Nilus

    A few updates around track and target motion measures.

    * FX Plot for raven data

    Also sorted out symbols a bit and improved symbol selector in Generic plots.

    * Update spectrogram mark bearing display

    Remove the 90-angle bit

    * Raven extra columns

    Logging of data from additional Raven table columns

    * Start effort management system

    * Start of Effort plotting

    Strat of effort plotting on map. Framework for using Effort data in other areas (such as Tethys output).

    * Logger forms update

    Effort and Symbol selectors working with Logger forms. Also functions to add, edit and delete form rows in Viewer mode.

    * Effort lines on map

    Sort of working OK in real time mode.

    * Update Tethys to latest nilus schema

    * Tethys Localization work

    Abstracting out writing of localization objects and document header information so that individual localisers can give fine scale control of this stuff.

    * Ishmael Tethys output

    Added necessaries for Tethys output from Ishmael detectors. Also found a pretty major bug in the spectrogram correlation detector, where for each block of data it was only testing the first sample of each block, not all samples, for being over threshold.

    * Speed and algorithm improvements to Ish matched filter

    Seems to be errors in correlation, didn't support multiple channels and
    also used very old and slow FFT, so working to fix all three issues.

    * Updated matched filter

    Updated and working Matched filter, though still some thinking to do about how the scaling of this works, since currently scaled by the template, so whole thing is dependent on the input. Need to think of a better way to do this.

    * Update match filt normalisation

    Normalisation now correctly using both the template and the signal for normalisation so that it will be data amplitude independent.

    * invFFT improvements

    Use faster inverse FFT of real data in correlation / delay functions.

    * Improve ifft's in other modules to improve TDOA speeds

    * Sorting mess of spec plugin graphics

    Have got the Ishmael ones scrolling, but when scrolling, there is an offset in the data due to the lag of the correlation functions. Quite hard to fix with available timing data

    * Improve ish spectrogram plugin

    Sorted scaling and scrollling problems.

    * Improve startup checks

    Rethread startup checks so that a progress bar shows when PAMGuard is checking input and output files at start up. Also include single file processing in checks.

    * Apply all spectrogram overlays

    Apply to all function on spectrogram overlays so changes to overlays affect all panels.

commit f2f9870b6f
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Wed Oct 2 15:13:12 2024 +0100

    V2.02.13c

    Release for installation on teaching lab machines.

commit 7533a7cfbe
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Tue Oct 1 15:00:51 2024 +0100

    Tethys output of Group3DLocalisations

    Output of Group3D localiser data. Localisations only, no Detections output for this one

commit ef494c0d0e
Author: Jamie Mac <macster110@gmail.com>
Date:   Mon Sep 30 13:10:59 2024 +0100

    Sud bug fix and updates to CPOD module.  (#162)

    * Update exporter_help.md

    Updated help for exporter

    * Update .gitignore

    * Bug fixes for deep learning classifier.

    Updated the symbol options to make sure opacity is passed through the symbol chooser.

    * Updates to the data map FX display

    * Updates to DelphinID and Data ModelFX

    Used a new writable image for much faster drawing in FX

    * bb

    * Delete C:\Users\Jamie Macaulay\MATLAB Drive\MATLAB\PAMGUARD\deep_learning\delphinID\whistle_image_example_java.mat

    * Updates to DelphinID

    * Updates to ReadMe and JavaFX GUI

    * Update readme.md

    Updates to ReadMe

    * Updates to CPOD module and also delphinID classifier

    * Fix colour scaling in FX data map

    * Create cpod_help.md

    * Update cpod_help.md

    * Update cpod_help.md

    * Updates to CPOD module

    Added ability to export CPOD clicks
    Added some extra features to data selector
    Swing GUI for data selector (in progress)

    * Updates to data map FX GUI

    * Updates to CPOD module

    * Added help files resources for CPOD

    * Add CPOD resources for help

    * Add CPOD resources for help

    * Add CPOD resources for help

    * Add CPOD resources for help

    * Add CPOD resources for help

    * Update cpod_help.md

    * Update cpod_help.md

    * Bug fixes for deep learning classifier.

    Updated the symbol options to make sure opacity is passed through the symbol chooser.

    * Updates to the data map FX display

    * Updates to DelphinID and Data ModelFX

    Used a new writable image for much faster drawing in FX

    * Updates to ReadMe and JavaFX GUI

    * bb

    * Delete C:\Users\Jamie Macaulay\MATLAB Drive\MATLAB\PAMGUARD\deep_learning\delphinID\whistle_image_example_java.mat

    * Updates to DelphinID

    * Update readme.md

    Updates to ReadMe

    * Fix colour scaling in FX data map

    * Updates to CPOD module and also delphinID classifier

    * Updates to CPOD module

    Added ability to export CPOD clicks
    Added some extra features to data selector
    Swing GUI for data selector (in progress)

    * Create cpod_help.md

    * Update cpod_help.md

    * Update cpod_help.md

    * Updates to data map FX GUI

    * Updates to CPOD module

    * Added help files resources for CPOD

    * Add CPOD resources for help

    * Add CPOD resources for help

    * Add CPOD resources for help

    * Add CPOD resources for help

    * Add CPOD resources for help

    * Update cpod_help.md

    * Update cpod_help.md

    * Bug fix to BT display

    The BT display was not selecting clicks properly.

    * Import bug fix

    * Updates to data map FX GUI

    * Updates to datamap FX

    * Got date axis working properly.

    * Added some arrows to the scroll bar for data map FX pane.

    * Working on getting datagrams in FX saving

    * Updates to DataMapFX and exporting annotations

    * Update MLAnnotationsManager.java

    * Working on adding annotations to exporter

    * Bug fix for processing files and annotations for exporter

    Rebase with main
    Bug fix for processing files - stops only the last file processing when "Start normally" selected on data processing
    R and MATLAB export of data annotation added.

    * Add a ttoltip to the exporter

    * Minor text change

* Small UI improvements for Sound Acquisition and MacOS

* Bug fix to exporter

* Update to help points

Updated help points for following modules
Deep learning
CPOD
Matched click classifier
Exporter

---------

Co-authored-by: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
2024-10-09 12:39:26 +01:00
.externalToolBuilders update DL help 2024-06-24 13:28:02 +01:00
.metadata Updates to FX GUI 2023-12-21 16:47:32 +00:00
.settings Sud bug fix and updates to CPOD module. (#162) 2024-09-30 13:10:59 +01:00
lib64 Squashed commit of the following: 2024-07-22 11:50:50 +01:00
liblinux Commit PAMGuard code from SVN r6251 to GIT 2022-01-07 10:41:38 +00:00
README.files Squashed commit of the following: 2024-08-23 10:55:40 +01:00
repo MacOS version of PAMGuard and minor UI updates (#170) 2024-10-09 12:39:26 +01:00
src MacOS version of PAMGuard and minor UI updates (#170) 2024-10-09 12:39:26 +01:00
.classpath MErge from DG (#168) 2024-10-08 15:03:32 +01:00
.fatjar Commit PAMGuard code from SVN r6251 to GIT 2022-01-07 10:41:38 +00:00
.gitattributes Initial commit 2022-01-07 10:27:52 +00:00
.gitignore Ishmael sort out and improve inverse FFT's (#159) 2024-09-15 12:12:35 +01:00
.project Ishmael sort out and improve inverse FFT's (#159) 2024-09-15 12:12:35 +01:00
BlankAccess._accdb Commit PAMGuard code from SVN r6251 to GIT 2022-01-07 10:41:38 +00:00
BlankOOo._odb Commit PAMGuard code from SVN r6251 to GIT 2022-01-07 10:41:38 +00:00
buoynet.exe Commit PAMGuard code from SVN r6251 to GIT 2022-01-07 10:41:38 +00:00
CITATION.cff Update CITATION.cff 2024-08-27 11:50:26 +01:00
dependency-reduced-pom.xml MacOS version of PAMGuard and minor UI updates (#170) 2024-10-09 12:39:26 +01:00
javadoc.xml Tethys output of Group3DLocalisations 2024-10-01 15:00:51 +01:00
javaOptions32.PNG Commit PAMGuard code from SVN r6251 to GIT 2022-01-07 10:41:38 +00:00
javaOptions64.PNG Commit PAMGuard code from SVN r6251 to GIT 2022-01-07 10:41:38 +00:00
libgcc_s_dw2-1.dll Commit PAMGuard code from SVN r6251 to GIT 2022-01-07 10:41:38 +00:00
libstdc++-6.dll Commit PAMGuard code from SVN r6251 to GIT 2022-01-07 10:41:38 +00:00
LICENSE Create LICENSE 2022-01-07 11:27:26 +00:00
License_GNU_GPL3.html Commit PAMGuard code from SVN r6251 to GIT 2022-01-07 10:41:38 +00:00
License_GNU_GPL3.txt Commit PAMGuard code from SVN r6251 to GIT 2022-01-07 10:41:38 +00:00
missing_Java.html Commit PAMGuard code from SVN r6251 to GIT 2022-01-07 10:41:38 +00:00
msvcr100.dll Commit PAMGuard code from SVN r6251 to GIT 2022-01-07 10:41:38 +00:00
NetworkMonitor.exe Commit PAMGuard code from SVN r6251 to GIT 2022-01-07 10:41:38 +00:00
nullPamguardSettings_20171106_185953.psfx Implement zip model for deep learning classifier. 2024-03-01 15:23:16 +00:00
nullPamguardSettings_20240401_141954.psfx Bug fixes and updates to deep learning models 2024-04-01 16:56:35 +01:00
nullPamguardSettings_20240401_143317.psfx Bug fixes and updates to deep learning models 2024-04-01 16:56:35 +01:00
PamguardBeta32_MixedMode.l4j.ini Commit PAMGuard code from SVN r6251 to GIT 2022-01-07 10:41:38 +00:00
PamguardBeta32_ViewerMode.l4j.ini Commit PAMGuard code from SVN r6251 to GIT 2022-01-07 10:41:38 +00:00
PamguardBeta32.l4j.ini Commit PAMGuard code from SVN r6251 to GIT 2022-01-07 10:41:38 +00:00
PamguardSettings.psf Commit PAMGuard code from SVN r6251 to GIT 2022-01-07 10:41:38 +00:00
PamSettingsFiles.psg Commit PAMGuard code from SVN r6251 to GIT 2022-01-07 10:41:38 +00:00
pom.xml MacOS version of PAMGuard and minor UI updates (#170) 2024-10-09 12:39:26 +01:00
README.html V2.02.13c 2024-10-02 15:13:12 +01:00
README.html.mht Nearing final release 2.2.13 2024-08-26 17:51:10 +01:00
readme.md Sud bug fix and updates to CPOD module. (#162) 2024-09-30 13:10:59 +01:00
recentDatabase.psg Commit PAMGuard code from SVN r6251 to GIT 2022-01-07 10:41:38 +00:00
vcruntime140.dll Commit PAMGuard code from SVN r6251 to GIT 2022-01-07 10:41:38 +00:00
WMM.COF Commit PAMGuard code from SVN r6251 to GIT 2022-01-07 10:41:38 +00:00

PAMGuard

DOI

Introduction

PAMGuard is a bioacoustics analysis program designed for use in real time research contexts and for the processing of large datasets. PAMGuard provides users access to a suite of state-of-the-art automated analysis algorithms alongside displays for visualisation data and a comprehensive data management systems.

Why do we need PAMGuard?

PAMGuard fulfils two main requirements within marine bioacoustics

  1. Real time operation: Almost all PAMGuard features and modules work in real time - this allows scientists and industry to detect, classify and localise the position of animals in real time on a standard consumer laptop, enabling mitigation and research surveys without expensive bespoke software solutions and the transparency of open source software.

  2. Processing and visualisation of large datasets: Off-the-shelf autonomous PAM devices, large scale surveys involving drifters, towed arrays, gliders, bottom mounted devices and real time continuous monitoring system all generate huge volumes of data which requires automated analysis approaches. PAMGuard allows the processing of very large passive acoustic datasets using automated algorithms and crucially provides comprehensive visualisation tools for a manual analyst to check the results.

Installation

PAMGuard is available on Windows and can be downloaded from the PAMGuard website. Note that we are considering MacOS and Linux installers but they are not available at this time.

Quick start tutorial

PAMGuard is a modular program with two modes; real-time and viewer. Typically a user will start with real-time model, either in the field collecting data or post processing sound files from a recorder. Once data are processed, users move on to viewer mode where data can be explored and further processed.

Upon opening PAMGuard for the first time you are greeted with a blank screen. You must add a series of modules to create the desired acoustic workflow - this is referred to as PAMGuard data model. For example if processing sound files then first add the Sound Acquisition module File->Add Modules->Sound Processing->Sound Acquisition. Then add the desired detection algorithms e.g. File->Add Modules->Detector->Click Detectors. Some modules (such as the click detector) have their own bespoke displays, others are added to more generalised displays. For example, the whistle and moan detector module shows detections on a spectrogram display, time base display, map etc. First add a new tab using File->Add Modules->Displays->User Display. Click on the user display tab and then from the top menu select User display-> New Spectrogram. Right click on the added spectrogram and select whistle and moan contours to show whistle detections overlaid on the raw spectrogram.

Make sure to add the database and binary file storage modules File->Add Modules->Utilities->...) to save data then press the run button (red button) and data will process. PAMGuard can handle huge datasets so running might take hours or even days. Progress is shown on the bottom of the screen.

Once the data has run, open PAMGuard viewer mode. Select the database you used to process the data along and the binary file storage path and PAMGuard will open, showing an overview of the dataset in a new Data map tab. Right click anywhere on the data map and select "Center data here" - PAMGuard will load the data for the selected period which can be explored using whichever displays have been added to the data model.

Features

Hardware integration

PAMGuard connects with hardware such as various GPS and AIS systems and a multitude of different sound cards (e.g. National Instruments devices, SAIL DAQ cards, almost all ASIO sound cards and standard computer sound cards) for real time data collection and processing. PAMGuard also works with some very bespoke hardware such as DIFAR Sonobuoys;

Real time operation

PAMGuard takes advantage of multi-core processors to run multiple signal processing automatic analysis algorithms in real time to detect whales, dolphins, bats etc. Data are shown in different displays, including interactive spectrograms and maps. You might be using PAMGuard for simply viewing a spectrogram and making recordings or running deep learning algorithms for multiple species and localising the results to view locations on a map. Whatever acoustic workflow a user creates, PAMGuard can run it in real time.

Support for compressed audio

PAMGuard supports processing audio data from standard files (e.g. wav, aif) and also compressed files (e.g. .flac and .sud). Note that sud files are created on SoundTraps widely used marine recorders and can be read by PAMGuard without decompressing - PAMGuard will automatically import click detections if present in sud files. PAMGuard also supports importing detection data from CPODs and FPODs.

Comprehensive data management system

PAMGuard is designed to collect/process data from large acoustic datasets. PAMGuard stores data in an SQLite databases and "Binary" files. The database stores important metadata such as when data has been processed and some low volume data streams such as GPS. Binary files are not human readable but efficient to access - PAMGuard stores detection data (e.g. clicks, whistles, noise, etc) in these files. This allows PAMGuard to rapidly access data from large datasets. Data from binary files can be viewed in PAMGuard viewer mode or can be exported to MATLAB using the PAMGuard-MATLAB library or the exported to R using the R PAMBinaries package.

Access to detection and classification algorithms

PAMGuard allows users to integrate automated detection and classification algorithms directly into their acoustic workflow. There are a multitude of different algorithms to choose from, including a basic click detector, whistle and moan detector, GPL detector, click train detectors and many others. The idea behind PAMGuard is allow researchers to access open source state-of-the-art algorithms developed within the scientific community - if you want to contribute and get your algorithm into PAMGuard get in touch.

PAMGuard click detector

The PAMGuard click detector can be used to detect transient sounds such as echolocation clicks. It also automatically localises click bearings for closely spaced hydrophones.

Localisation

PAMGuard has a multitude of different options for acoustic localisation. There's a comprehensive beam forming module for beam forming arrays, a large aperture localiser for 3D localisation and target motion analysis for towed hydrophone arrays.

Soundscape analysis

PAMGuard has a noise band (which supports third octave noise bands) and long term spectral average module for soundscape analysis.

GIS

Almost all detection data can be visualised on a map. PAMGuard also supports plotting GPS and AIS data.

Suite of data visualisation tools

An important aspect of PAMGuard is the ability for users to explore processed data. PAMGuard allows users to visualise data at multiple different times scales, from inspecting individual waveforms microseconds long to datagrams showing detector output or soundscape metrics over days, weeks or even years.

Example of a data map

The PAMGuard data map provides an overview of the entire processed dataset over days, weeks and even years.

Advanced manual annotation

The displays within PAMGuard support a variety of manual annotation tools. Users can add data to annotations in multiple ways, from simple text annotations to complex forms created by users.

Deep learning integration

PAMGuard allows users to run their own deep learning models using the deep learning module. AI can therefore be integrated into PAMGuard workflows, allowing for more efficient analysis of data.

Metadata standard and Tethys compatibility

PAMGuard Integrates with Tethys database. Users can export processed PAMGuard data to a Tethys database seamlessly; this feature is great for large scale projects or organisations with long term datasets.

Feature roadmap

There's lots of features we would like to add to PAMGuard. If you want to add a feature you can either code it up yourself in Java and submit a pull request or get in touch with us to discuss how to it might be integrated. Some smaller features might be in our roadmap anyway but larger features usually require funding. Some features we are thinking about (but do not necessarily have time for yet) are;

  • Support for decidecade noise bands (base 10 filter bank) in noise band monitor to meet Euopean standards
  • Capability to export data directly from PAMGaurd e.g. as MAT files (in progress).
  • Automated test suite to make releases more stable. Note that unit and integration tests are also being slowly incorporated.
  • Support for ARM based computers (in progress).
  • A graphical user interface and Python library for training PAMGuard compatible deep learning models.

Development

This is the main code repository for the PAMGuard software and was created on 7 January 2022 from a sourceforge SVN repository revision r6278.

If you are a PAMGuard developer, you should clone and branch this repository and share with any collaborators in your own workspace. When your work is ready, contact the PAMGuard team to have your changes merged back into this repo.

PAMGuard uses Maven as build tool.

Organisation and License

PAMGuard is open source under an MIT license. It is currently primarily managed by the Sea Mammal Research Unit within the University of St Andrews. Please get in touch if you have any questions.