Detection, Classification, and Localisation of marine mammal and other bioacoustic signals
Go to file
Jamie Mac f4844e8fcd Squashed commit of the following:
commit 34ba7ebceb
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Fri Aug 23 09:15:40 2024 +0100

    Merge from DG (#150)

    * 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

commit cb1b28423e
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Mon Aug 19 15:55:25 2024 +0100

    updates ready for 2.2.12

commit 4829b46b36
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Mon Aug 19 11:54:24 2024 +0100

    Merge from DG (#149)

    * 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

commit 507ff9e28d
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Sat Aug 17 14:34:54 2024 +0100

    Merge from DG (#148)

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

commit 51757499d4
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Fri Aug 16 10:44:54 2024 +0100

    Merge from DG (#147)

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

commit 46bd88c197
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Fri Aug 16 10:40:00 2024 +0100

    Merge Tethys updates from DG (#146)

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

commit bea4a544d0
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Thu Aug 8 14:27:05 2024 +0100

    Merge from DG (#145)

    * Localization output

    * update localiser output

commit adf4c87781
Merge: 62121bdb 29293725
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Thu Aug 8 09:29:24 2024 +0100

    Merge branch 'main' into main

commit 2929372533
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Mon Aug 5 17:58:08 2024 +0100

    Tethys Localisation output

    Not all types, but getting there.

commit 62121bdbbd
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Sun Aug 4 11:41:08 2024 +0100

    update jserialcom to 2.11.0

commit 82adc06e3d
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Fri Aug 2 15:26:49 2024 +0100

    Merge DG branch (#144)

    * Refactoring Tethys

    A lot of refactoring of Nilus wrappers with more useful Objects for PAMGUard to work with.

    * Improved document handling

    Abstracted wrapper around nilus documents which allows easyish calling of internal functions in Localize and Detections document without a common base class.

    * Fix doc deletion in detector output panel

commit 36455153a2
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Tue Jul 30 16:34:35 2024 +0100

    Fix doc deletion in detector output panel

commit bc686c0fe6
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Fri Jul 26 16:12:54 2024 +0100

    Improved document handling

    Abstracted wrapper around nilus documents which allows easyish calling of internal functions in Localize and Detections document without a common base class.

commit 4f87b7b661
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Mon Jul 22 16:07:33 2024 +0100

    Refactoring Tethys

    A lot of refactoring of Nilus wrappers with more useful Objects for PAMGUard to work with.

commit 3abaff0379
Merge: a3f41e22 9eee7434
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Mon Jul 22 13:50:49 2024 +0100

    Merge pull request #86 from PAMGuard/main

    Merge from main

commit 9eee7434de
Merge: 32c7c9b2 a3f41e22
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Mon Jul 22 13:50:38 2024 +0100

    Merge branch 'main' into main

commit 32c7c9b263
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Mon Jul 22 11:55:06 2024 +0100

    Merge from Jamie (#143)

    * Working on the exporter

    * Working out on exporter

    * Working on new symbol options for deep learning and sud file options in SoundAcquisition GUI

    * Add zero pad option for sud files.

    * Updates to sud zero pad options on FX GUI

    * Implementing a data selector for the deep learning module

    * Bug fix to data transforms if the wave data and sample length are different

    * Updated POm to ignore test resources and updates to DL data selector

    * Updates to DL data selector and POM

    * Work on the data selector for the deep learning module.

    * Working on the exporter

    * Working out on exporter

    * Working on new symbol options for deep learning and sud file options in SoundAcquisition GUI

    * Add zero pad option for sud files.

    * Updates to sud zero pad options on FX GUI

    * Implementing a data selector for the deep learning module

    * Updated POm to ignore test resources and updates to DL data selector

    * Bug fix to data transforms if the wave data and sample length are different

    * Updates to DL data selector and POM

    * Work on the data selector for the deep learning module.

    * Data selectors for deep learning models now working with FX

    Still have to be implemented in Swing

    * Update deep_learning_help.md

    Updated help values to have some info on data selectors and symbol managers.

    * Updates to deep learning symbol options for swing and data selector panel for swing

    Made tooltips last longer on TD display  FX

    * Update deep_learning_help.md

    * Swing symbol modifiers for DL and peak freq

    * Squashed commit of the following:

    commit bad2255710
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Thu Jul 18 09:47:47 2024 +0100

        Better symbol options

        Add clearer options button to multi option symbol manager panel.

    * Fix bugs in detection display

    * Bug fix to hiding panes

    * Squashed commit of the following:

    commit 8b5b5b2f18
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Fri Jul 19 17:14:28 2024 +0100

        Updated data selectors for BT display

        Merging old status bar and new DataSelector options so that they work more consistently on the BT display.

    commit bad2255710
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Thu Jul 18 09:47:47 2024 +0100

        Better symbol options

        Add clearer options button to multi option symbol manager panel.

    * Deep learning bug fix

    * Ignore the class path

    * Squashed commit of the following:

    commit 577670ccd0
    Merge: 6510d226 8b5b5b2f
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Mon Jul 22 09:35:01 2024 +0100

        Merge branch 'main' of https://github.com/PAMGuard/PAMGuard

    commit 6510d2260e
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Mon Jul 22 09:34:58 2024 +0100

        Remove unnecessary text output

    commit 3da8401756
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Mon Jul 22 09:29:38 2024 +0100

        updates to Daq

        New DLL, and some LED control, but hasn't fixed stalling problem.

    commit 8b5b5b2f18
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Fri Jul 19 17:14:28 2024 +0100

        Updated data selectors for BT display

        Merging old status bar and new DataSelector options so that they work more consistently on the BT display.

    commit bad2255710
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Thu Jul 18 09:47:47 2024 +0100

        Better symbol options

        Add clearer options button to multi option symbol manager panel.

    * Squashed commit of the following:

    commit 687220dad5
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Mon Jul 22 11:42:19 2024 +0100

        Change click data selector

        Change Click BT display so it can handle CompoundDataSelectors

    commit 577670ccd0
    Merge: 6510d226 8b5b5b2f
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Mon Jul 22 09:35:01 2024 +0100

        Merge branch 'main' of https://github.com/PAMGuard/PAMGuard

    commit 6510d2260e
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Mon Jul 22 09:34:58 2024 +0100

        Remove unnecessary text output

    commit 3da8401756
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Mon Jul 22 09:29:38 2024 +0100

        updates to Daq

        New DLL, and some LED control, but hasn't fixed stalling problem.

    commit 8b5b5b2f18
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Fri Jul 19 17:14:28 2024 +0100

        Updated data selectors for BT display

        Merging old status bar and new DataSelector options so that they work more consistently on the BT display.

    commit bad2255710
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Thu Jul 18 09:47:47 2024 +0100

        Better symbol options

        Add clearer options button to multi option symbol manager panel.

    ---------

    Co-authored-by: Jamie Mac <macster110@gmail.com>

commit 687220dad5
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Mon Jul 22 11:42:19 2024 +0100

    Change click data selector

    Change Click BT display so it can handle CompoundDataSelectors

commit 577670ccd0
Merge: 6510d226 8b5b5b2f
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Mon Jul 22 09:35:01 2024 +0100

    Merge branch 'main' of https://github.com/PAMGuard/PAMGuard

commit 6510d2260e
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Mon Jul 22 09:34:58 2024 +0100

    Remove unnecessary text output

commit 3da8401756
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Mon Jul 22 09:29:38 2024 +0100

    updates to Daq

    New DLL, and some LED control, but hasn't fixed stalling problem.

commit 8b5b5b2f18
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Fri Jul 19 17:14:28 2024 +0100

    Updated data selectors for BT display

    Merging old status bar and new DataSelector options so that they work more consistently on the BT display.

commit bad2255710
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Thu Jul 18 09:47:47 2024 +0100

    Better symbol options

    Add clearer options button to multi option symbol manager panel.

commit a3f41e22e6
Merge: 0165982a f7be084e
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Tue Jul 16 10:58:25 2024 +0100

    Merge pull request #85 from PAMGuard/main

    Fix vector error

commit 0165982a22
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Fri Jul 12 16:57:28 2024 +0100

    Work on localisation export

    Not ready to rock yet.

commit f24dd9bb91
Merge: 07f4398a 3f23474e
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Fri Jul 12 16:38:11 2024 +0100

    Merge pull request #84 from PAMGuard/main

    Merge from main

commit 07f4398a1d
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Tue Jun 25 09:25:10 2024 +0100

    Update .classpath

    Fix classpath file

commit 32ab9f7ead
Merge: 3a42eabd 7accb79f
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Mon Jun 24 15:43:47 2024 +0100

    Merge pull request #83 from PAMGuard/main

    V2.02.12

commit 3a42eabd74
Merge: 18a507b5 f7b4f44e
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Mon Jun 24 13:58:16 2024 +0100

    Merge pull request #82 from PAMGuard/main

    Merge from main
2024-08-23 10:55:40 +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 Squashed commit of the following: 2024-08-23 10:55:40 +01:00
buildconfigurations Getting sud files working 2022-10-10 10:05:16 +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 Squashed commit of the following: 2024-08-23 10:55:40 +01:00
src Squashed commit of the following: 2024-08-23 10:55:40 +01:00
.classpath Exporter now working 2024-08-23 10:52:53 +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 Getting click deep learning model 2024-08-07 06:11:24 +01:00
.project update DL help 2024-06-24 13:28:02 +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
dependency-reduced-pom.xml Getting click deep learning model 2024-08-07 06:11:24 +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 Updates to deep learning and PAMGuardFX GUI 2024-08-08 14:07:16 +01:00
README.html Squashed commit of the following: 2024-08-23 10:55:40 +01:00
readme.md Updates to readme 2024-08-23 09:06:34 +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

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

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, glidders, bottom mounted devices and real time continuous monitoring system all generate huge volumes of data whcih 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

Data Model

PAMGuard allows users to construct their own acoustic workflow and visualise connections via the data model window.

Hardware integration

PAMGuard connects with hardware such as various GPS and AIS systems and a multitude of different sound cards (e.g. [National Instruments] (www.ni.com) 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). Notew that sud files are created on SoundTraps widely used marine recorders and can be read by PAMGuard without decompressing - PAMGuard will automtically 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, whislte 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 devleoped within the scientific community - if you want to contribute and get your algorithm into PAMGuard get in touch.

The click detector is one of the most widely used detectors in PAMGuard. Detections can be displayed in various different displays

Localisation

PAMGuard has a mutltude 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.

Data processed in PAMGuard be displayed at lots of different temporal scales, from days or even months of data dsiplayed in the data map shown here to individual waveforms

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 organisatiosn 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 necassarily 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 (complete).
  • 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.