Squashed commit of the following:

commit 5b1cc760d8
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Wed Nov 16 09:12:55 2022 +0000

    Quick fix of calibration data for ST Click detector.

    Was getting a 5V input from it's bespoke acquisition, whereas needs 2.

commit 3f5e4e4a79
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Tue Nov 15 21:08:40 2022 +0000

    Final final 2.02.06

    Don't believe it until you see that tag

commit 890230a6ff
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Tue Nov 15 17:49:06 2022 +0000

    Final final readme 2.02.06

commit 05268d810d
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Tue Nov 15 17:40:44 2022 +0000

    Version 2.02.06 (#87)

    (hopefully)

commit 7d7ecb9545
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Tue Nov 15 17:39:37 2022 +0000

    Version 2.02.06 (#86)

    (hopefully)

commit 76e8467201
Merge: d2f74f60 ac280e1b
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Tue Nov 15 17:37:14 2022 +0000

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

commit d2f74f606e
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Tue Nov 15 17:36:49 2022 +0000

    readme for 2.02.06

commit ac280e1b6f
Author: m2oswald <45486636+m2oswald@users.noreply.github.com>
Date:   Tue Nov 15 15:41:43 2022 +0000

    updates to Rocca module (#85)

    * allow Rocca to run without classifiers

    Fixed bug that threw an error if no classifier files were specified in Rocca Params dialog

    * add rocca switch to enable dev mode

    currently only shows/hides extra buttons in the Params dialog, but will
    extend to more options in the future

    * Fix memory issue with RoccaContourDataBlocks not being released for
    garbage collection

    Set RoccaContourDataBlock objects to null and stop PamObserver Timer to
    force release

commit 655a546764
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Mon Nov 14 15:56:00 2022 +0000

    Update X3 Jar

commit 96cd32034f
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Mon Nov 14 15:55:37 2022 +0000

    Delete x3-2.2.0.pom

commit bf90443b1b
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Mon Nov 14 15:55:28 2022 +0000

    Delete x3-2.2.0.jar

commit 22d32b4682
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Mon Nov 14 15:54:15 2022 +0000

    Update x3 jar file

commit 14c5cf5afe
Merge: ccd0fc79 376a9f0f
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Mon Nov 14 15:49:36 2022 +0000

    Merge branch 'main' into main

commit 376a9f0f0e
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Mon Nov 14 14:30:04 2022 +0000

    Reinstate x3 jar

commit 93193638b1
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Mon Nov 14 14:29:37 2022 +0000

    Last changes to x3

commit ccd0fc7965
Author: m2oswald <45486636+m2oswald@users.noreply.github.com>
Date:   Mon Nov 14 11:00:15 2022 +0000

    small updates to Rocca (#84)

    * allow Rocca to run without classifiers

    Fixed bug that threw an error if no classifier files were specified in Rocca Params dialog

    * add rocca switch to enable dev mode

    currently only shows/hides extra buttons in the Params dialog, but will
    extend to more options in the future

commit ea32c5cdcb
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Sun Nov 13 17:41:13 2022 +0000

    SUD Files (#83)

    * Adding comments to table definitions.

    Update tabledefs so tableitems can have descriptions. Useful to the
    coder, but can also export formal xms schema for each table.

    * Writing xml schema

    Writing xml schema for PAMGuard database with annotations as complex
    types

    * Working SUD click extractor

    Seems to be mostly working and can generate PAMGuard click files
    automatically when processing SUD files using the soundtrap click
    detector

    * Small changes to SUD in PAMGuard

    * Better SUD timing

    Using latest microsecond time extraction from SUD unpack

    * SUD Processing

    Extraction of SUD file clicks with SoundTrap Click Detector. Timing now
    correct. Added some help pages.

    * Functional SUD Reader and SUD Click Extractor

    All seems working. Seems to throw the odd exception at end of file, but
    works OK.

commit f08cf4ffd7
Merge: d3277be3 4a75afc4
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Sun Nov 13 17:38:59 2022 +0000

    Merge pull request #29 from PAMGuard/main

    Memory leak fix

commit d3277be3b1
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Sun Nov 13 17:37:53 2022 +0000

    Functional SUD Reader and SUD Click Extractor

    All seems working. Seems to throw the odd exception at end of file, but
    works OK.

commit d1af000040
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Sat Nov 12 19:21:57 2022 +0000

    SUD Processing

    Extraction of SUD file clicks with SoundTrap Click Detector. Timing now
    correct. Added some help pages.

commit 4a75afc414
Merge: 3b053ff3 fe0fe11f
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Fri Nov 11 20:59:10 2022 +0000

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

commit 3b053ff342
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Fri Nov 11 20:58:42 2022 +0000

    Memory leak

    Fix viewer memory leak whereby background measurements weren't being
    cleared between data loads, so eventually ran out of memory.

commit 068a8b1a27
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Fri Nov 11 08:56:03 2022 +0000

    Better SUD timing

    Using latest microsecond time extraction from SUD unpack

commit ee24c0ab6b
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Thu Nov 10 17:21:37 2022 +0000

    Small changes to SUD in PAMGuard

commit 87cd2cd41f
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Thu Nov 10 15:20:15 2022 +0000

    Working SUD click extractor

    Seems to be mostly working and can generate PAMGuard click files
    automatically when processing SUD files using the soundtrap click
    detector

commit 61dd6ef4d1
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Tue Nov 8 16:42:57 2022 +0000

    Writing xml schema

    Writing xml schema for PAMGuard database with annotations as complex
    types

commit fcdb64e467
Merge: a72e68c2 fe0fe11f
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Tue Nov 8 10:44:01 2022 +0000

    Merge pull request #28 from PAMGuard/main

    Fix to issue #80 (#81)

commit fe0fe11faf
Author: stabbutt <100229685+stabbutt@users.noreply.github.com>
Date:   Tue Nov 8 01:02:52 2022 -0800

    Fix to issue #80 (#81)

    * Fix network sender since it was hopelessly out of date and did not send
    data in the correct format. OK now, though only tested on NARW.

    * Fix network sender since it was hopelessly out of date and did not send
    data in the correct format. OK now, though only tested on NARW.

    * Mods to support command line and Network control of PAMGuard and to
    retrieve summary information from some modules.

    * Fix issue #80: recording path command line override

    * Allow RUNNOTHING bearing calculations

    Co-authored-by: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>

commit a72e68c26a
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Mon Nov 7 17:15:04 2022 +0000

    Adding comments to table definitions.

    Update tabledefs so tableitems can have descriptions. Useful to the
    coder, but can also export formal xms schema for each table.

commit 3e717bd207
Merge: aa7f18ea d2e69c50
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Fri Nov 4 15:09:47 2022 +0000

    Merge pull request #27 from PAMGuard/main

    Merge SUD changes from main

commit d2e69c507e
Merge: 4f734b77 aa7f18ea
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Fri Nov 4 15:09:40 2022 +0000

    Merge branch 'main' into main

commit aa7f18eaa2
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Wed Nov 2 10:09:30 2022 +0000

    SAIL CArd warnings

    Don't display in dialog when in nogui mode. Write to terminal

commit 4f734b7775
Author: Jamie Mac <macster110@gmail.com>
Date:   Mon Oct 31 13:43:15 2022 +0000

    Added sud file capability  (#78)

    * Updates to click train detector

    New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
    CPOD data can now build average waveforms.
    CPOD click trains can be viewed in TDisplayFX pop up menu displays
    Fixed Peak Frequency symbol chooser so it saves the colour box settings

    * Create click_train_help.md

    * Update click_train_help.md

    * Screenshots

    * Update click_train_help.md

    * Update click_train_help.md

    * Update click_train_help.md

    * More screenshots

    * Add screenshots

    * Update click_train_help.md

    * Add classifier screenshot

    * Update click_train_help.md

    * Update click_train_help.md

    * Update click_train_help.md

    * Updates and bug fixes to click train detector and CPOD importer

    * Update click_train_help.md

    * Update POM with latest jdl4pam

    * Add screenshots for click train detector help

    * Screenshots

    * Update click_train_help.md

    * Defult option for CPOD and porpoise to click train detector.

    Also a minor

    * Update pom.xml

    * Bug fix for raw spectrogram in TDDisplayFX

    * Update KetosClassifier.java

    * Updates to click train detector

    New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
    CPOD data can now build average waveforms.
    CPOD click trains can be viewed in TDisplayFX pop up menu displays
    Fixed Peak Frequency symbol chooser so it saves the colour box settings

    * Create click_train_help.md

    * Update click_train_help.md

    * Screenshots

    * Update click_train_help.md

    * More screenshots

    * Update click_train_help.md

    * Update click_train_help.md

    * Add screenshots

    * Add classifier screenshot

    * Update click_train_help.md

    * Updates and bug fixes to click train detector and CPOD importer

    * Update click_train_help.md

    * Update click_train_help.md

    * Update click_train_help.md

    * Update click_train_help.md

    * Add screenshots for click train detector help

    * Screenshots

    * Update click_train_help.md

    * Defult option for CPOD and porpoise to click train detector.

    Also a minor

    * Bug fix for raw spectrogram in TDDisplayFX

    * Update KetosClassifier.java

    * Fix standard classifier JSON logging

    * Update click_train_help.md

    * Fixed bug in sweep classifier when using SoundTrap click detections

    * Added some colour averaging in the TFDisplayFX spectrgoram

    * Bug fix for rainbow click bearings

    Bug fix when rainbow clicks are imported mean bearings cannot be calculated - was an array size issue in DelayGroup

    * Google humpback whale deep learning classifier

    Google's humpback whale deep learning classifier can now be imported.
    Updated TDisplayFX to make the data selection panes cleaner and clearer.
    Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

    * Updated the prediction plots on time display

    Deep learning prediciton plots on the time display have now been updated to have some colour options and also act as a legend.

    * Updates to TDisplayFX

    yFIshmael now owrks with TDisplayFX
    TDisplayFX UI changes to make simpler.
    Some abstraction for drawing lines on TDisplayFX

    * Updates to click train detector

    New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
    CPOD data can now build average waveforms.
    CPOD click trains can be viewed in TDisplayFX pop up menu displays
    Fixed Peak Frequency symbol chooser so it saves the colour box settings

    * Create click_train_help.md

    * Update click_train_help.md

    * Screenshots

    * Update click_train_help.md

    * More screenshots

    * Update click_train_help.md

    * Update click_train_help.md

    * Add screenshots

    * Add classifier screenshot

    * Update click_train_help.md

    * Updates and bug fixes to click train detector and CPOD importer

    * Update click_train_help.md

    * Update click_train_help.md

    * Update click_train_help.md

    * Update click_train_help.md

    * Add screenshots for click train detector help

    * Screenshots

    * Update click_train_help.md

    * Defult option for CPOD and porpoise to click train detector.

    Also a minor

    * Updates to click train detector

    New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
    CPOD data can now build average waveforms.
    CPOD click trains can be viewed in TDisplayFX pop up menu displays
    Fixed Peak Frequency symbol chooser so it saves the colour box settings

    * Create click_train_help.md

    * Update click_train_help.md

    * Update click_train_help.md

    * Updates and bug fixes to click train detector and CPOD importer

    * Bug fix for raw spectrogram in TDDisplayFX

    * Update KetosClassifier.java

    * Fix standard classifier JSON logging

    * Fixed bug in sweep classifier when using SoundTrap click detections

    * Added some colour averaging in the TFDisplayFX spectrgoram

    * Bug fix for rainbow click bearings

    Bug fix when rainbow clicks are imported mean bearings cannot be calculated - was an array size issue in DelayGroup

    * Google humpback whale deep learning classifier

    Google's humpback whale deep learning classifier can now be imported.
    Updated TDisplayFX to make the data selection panes cleaner and clearer.
    Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

    * Updated the prediction plots on time display

    Deep learning prediciton plots on the time display have now been updated to have some colour options and also act as a legend.

    * Updates to TDisplayFX

    yFIshmael now owrks with TDisplayFX
    TDisplayFX UI changes to make simpler.
    Some abstraction for drawing lines on TDisplayFX

    * Merge fixes to click train detector

    * Bug fix to UI

    * Updates to FX GUI

    * Updates to click train detector

    New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
    CPOD data can now build average waveforms.
    CPOD click trains can be viewed in TDisplayFX pop up menu displays
    Fixed Peak Frequency symbol chooser so it saves the colour box settings

    * Screenshots

    * Updates and bug fixes to click train detector and CPOD importer

    * Updates to click train detector

    New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
    CPOD data can now build average waveforms.
    CPOD click trains can be viewed in TDisplayFX pop up menu displays
    Fixed Peak Frequency symbol chooser so it saves the colour box settings

    * Updates and bug fixes to click train detector and CPOD importer

    * Fix standard classifier JSON logging

    * Merge fixes to click train detector

    * Updates to click train detector

    New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
    CPOD data can now build average waveforms.
    CPOD click trains can be viewed in TDisplayFX pop up menu displays
    Fixed Peak Frequency symbol chooser so it saves the colour box settings

    * Screenshots

    * Updates and bug fixes to click train detector and CPOD importer

    * Updates to click train detector

    New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
    CPOD data can now build average waveforms.
    CPOD click trains can be viewed in TDisplayFX pop up menu displays
    Fixed Peak Frequency symbol chooser so it saves the colour box settings

    * Screenshots

    * Updates and bug fixes to click train detector and CPOD importer

    * Fix standard classifier JSON logging

    * Google humpback whale deep learning classifier

    Google's humpback whale deep learning classifier can now be imported.
    Updated TDisplayFX to make the data selection panes cleaner and clearer.
    Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

    * Bug fix to UI

    * Bug fixes to FX GUI

    * Updates to click train detector

    * Squashed commit of the following:

    commit 9f998165ee
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Mon May 2 19:40:24 2022 +0100

        Updates to support ContactCollator plugin (#33)

        * Change synchronization on RawDataTransforms soit uses the owner data
        holder, not itself for synchronization. Otherwise you get thread locks.

        * fix problem in SummaryComand

        * Update command line options

        * Change synchronization on RawDataTransforms soit uses the owner data
        holder, not itself for synchronization. Otherwise you get thread locks.

        * Update command line options

        * Update DecimatorParams.java

        * couple of updates to support new contact collator plugin

        * Sorting out sample rate info in clip display to support Contact Collator
        plugin

        * FLAC Speed

        Improve flac speed

        * Update .gitignore

        * Update .gitignore

        * Updates to support new features in Contact Collator

        * Small update to RawDatautils to handle null data

    * Updates to click train detector

    * Squashed commit of the following:

    commit 62b020b320
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Sat May 14 06:52:20 2022 +0100

        Add a new offlinefileslist function

    commit 3a9a5311aa
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Wed Apr 27 09:43:31 2022 +0100

        Update .gitignore

    commit 9f998165ee
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Mon May 2 19:40:24 2022 +0100

        Updates to support ContactCollator plugin (#33)

        * Change synchronization on RawDataTransforms soit uses the owner data
        holder, not itself for synchronization. Otherwise you get thread locks.

        * fix problem in SummaryComand

        * Update command line options

        * Change synchronization on RawDataTransforms soit uses the owner data
        holder, not itself for synchronization. Otherwise you get thread locks.

        * Update command line options

        * Update DecimatorParams.java

        * couple of updates to support new contact collator plugin

        * Sorting out sample rate info in clip display to support Contact Collator
        plugin

        * FLAC Speed

        Improve flac speed

        * Update .gitignore

        * Update .gitignore

        * Updates to support new features in Contact Collator

        * Small update to RawDatautils to handle null data

    * Updated data selector for click train detector

    * Click train detector updates and bug fixes

    Fixed very annoying bug which meant templates did not show properly when the dialog was first opened in swing.

    Added feature to simple classifier were % of clicks of one click classification (or other data selector paramter) can be used to classify.

    * Bug fix and improvements for Ketos

    Ketos models now automatically set the correct sample length when loaded.

    Bug fix for the TDisplayFX - null pointer exception if no class names loaded and sorted recently introduced bug in drawing predictions.

    * Updates to deep learning and FX GUI

    Added some more example sounds to deep learning UI.

    Updated click detector in the FX GUI.

    * PAMGuard FX sound output update

    * Updates to FX GUI

    * Updates to FX GUI

    * Update RawDataTransforms.java

    * Fixes to FX UI

    * Squashed commit of the following:

    commit 11ba8bf91e
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Thu Aug 4 11:45:47 2022 +0100

        MErge from DG Branch (#47)

        * Variable sound output level

        Mods to SoundPlayback module to allow additional parameters. Implemented
        system for NI cards to allow changes to selected output voltage range
        meaning output can be boosted to level higher than current default.

        * Code to support nogui operations when no screens present on headless
        system

        * Fix problem of nogui headless operation trying to access screen size.

        * Click detector display fixes

        1. ICI not displaying correctly
        2. Component sizes in display dialog on hres monitors

        * Work on batch processing, after testing of options to autostart,
        autoexit and set wav file folder, database and binary store.

        * Update MHTClickTrainAlgorithm.java

        Fix unsynchronised access to a datablock in click train detector which was causing index errors.

        * Revamp of offline process messaging and control

        Includes some databsae logging of completed tasks

        * Offline task logging

        Bit more work, including notes and database storage of task
        reprocessing. Guess this could all become 'proper' PAMGuard data and be
        shown in a table on the display but that not priority enough.

        * Dialog packing

        Fix a couple of dialogs which don't back well on HDPI monitors

        * UDP Control

        Added multiport functionality

    commit 9a9f542d95
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Thu Aug 4 11:42:45 2022 +0100

        Merge DG to Main (#46)

        * Variable sound output level

        Mods to SoundPlayback module to allow additional parameters. Implemented
        system for NI cards to allow changes to selected output voltage range
        meaning output can be boosted to level higher than current default.

        * Code to support nogui operations when no screens present on headless
        system

        * Fix problem of nogui headless operation trying to access screen size.

        * Click detector display fixes

        1. ICI not displaying correctly
        2. Component sizes in display dialog on hres monitors

        * Work on batch processing, after testing of options to autostart,
        autoexit and set wav file folder, database and binary store.

        * Update MHTClickTrainAlgorithm.java

        Fix unsynchronised access to a datablock in click train detector which was causing index errors.

        * Revamp of offline process messaging and control

        Includes some databsae logging of completed tasks

        * Offline task logging

        Bit more work, including notes and database storage of task
        reprocessing. Guess this could all become 'proper' PAMGuard data and be
        shown in a table on the display but that not priority enough.

        * Dialog packing

        Fix a couple of dialogs which don't back well on HDPI monitors

        * UDP Control

        Added multiport functionality

    commit 49cd547aee
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Thu Aug 4 11:40:29 2022 +0100

        Merge DG branch (#45)

        * Variable sound output level

        Mods to SoundPlayback module to allow additional parameters. Implemented
        system for NI cards to allow changes to selected output voltage range
        meaning output can be boosted to level higher than current default.

        * Code to support nogui operations when no screens present on headless
        system

        * Fix problem of nogui headless operation trying to access screen size.

        * Click detector display fixes

        1. ICI not displaying correctly
        2. Component sizes in display dialog on hres monitors

        * Work on batch processing, after testing of options to autostart,
        autoexit and set wav file folder, database and binary store.

        * Update MHTClickTrainAlgorithm.java

        Fix unsynchronised access to a datablock in click train detector which was causing index errors.

        * Revamp of offline process messaging and control

        Includes some databsae logging of completed tasks

        * Offline task logging

        Bit more work, including notes and database storage of task
        reprocessing. Guess this could all become 'proper' PAMGuard data and be
        shown in a table on the display but that not priority enough.

        * Dialog packing

        Fix a couple of dialogs which don't back well on HDPI monitors

        * UDP Control

        Added multiport functionality

    commit 016cfd0da5
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Thu Aug 4 11:35:06 2022 +0100

        Dialog positioning

        New functions to better positions dialogs on screen

    commit c9f2ab3e97
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Mon Aug 1 11:13:24 2022 +0100

        puch to main (#44)

        * Variable sound output level

        Mods to SoundPlayback module to allow additional parameters. Implemented
        system for NI cards to allow changes to selected output voltage range
        meaning output can be boosted to level higher than current default.

        * Code to support nogui operations when no screens present on headless
        system

        * Fix problem of nogui headless operation trying to access screen size.

        * Click detector display fixes

        1. ICI not displaying correctly
        2. Component sizes in display dialog on hres monitors

        * Work on batch processing, after testing of options to autostart,
        autoexit and set wav file folder, database and binary store.

        * Update MHTClickTrainAlgorithm.java

        Fix unsynchronised access to a datablock in click train detector which was causing index errors.

        * Revamp of offline process messaging and control

        Includes some databsae logging of completed tasks

        * Offline task logging

        Bit more work, including notes and database storage of task
        reprocessing. Guess this could all become 'proper' PAMGuard data and be
        shown in a table on the display but that not priority enough.

        * Dialog packing

        Fix a couple of dialogs which don't back well on HDPI monitors

    commit 55f5a3fcf1
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Mon Aug 1 10:59:36 2022 +0100

        Group detections menu

        Small changes to limit the number of menu items in "Add to existing
        group" to a maximum of 25 entries.

    commit b3f6c0e665
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Fri Jul 29 10:50:45 2022 +0100

        Handle -nogui option in PamWorker

        PamWorker used to catalog files at startup (if a file folder input
        system is used). This creates a progress dialog. Stop it appearing in
        -nogui operations.

    commit 8569b6b579
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Fri Jul 22 08:30:47 2022 +0100

        Click display fixes (#41)

        * Variable sound output level

        Mods to SoundPlayback module to allow additional parameters. Implemented
        system for NI cards to allow changes to selected output voltage range
        meaning output can be boosted to level higher than current default.

        * Code to support nogui operations when no screens present on headless
        system

        * Fix problem of nogui headless operation trying to access screen size.

        * Click detector display fixes

        1. ICI not displaying correctly
        2. Component sizes in display dialog on hres monitors

    commit 128a512ff6
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Tue Jul 19 16:37:57 2022 +0100

        Another attempt at stopping it crashing on a headless system

        Dealing with displays that get created for clickangle vetos and a call
        to the gui in the click train detector.

    commit 6eaa6e4978
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Tue Jul 19 08:20:07 2022 +0100

        nogoi fix for headless systems. (#40)

        * Variable sound output level

        Mods to SoundPlayback module to allow additional parameters. Implemented
        system for NI cards to allow changes to selected output voltage range
        meaning output can be boosted to level higher than current default.

        * Code to support nogui operations when no screens present on headless
        system

        * Fix problem of nogui headless operation trying to access screen size.

    commit 9fdd30556b
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Tue Jul 12 15:53:07 2022 +0100

        Variable sound output level (#39)

        Mods to SoundPlayback module to allow additional parameters. Implemented
        system for NI cards to allow changes to selected output voltage range
        meaning output can be boosted to level higher than current default.

    * Bug fixes to click train detector

    Fixed bug with number of coasts in the MHT Kernel
    Added an option for amplitude to have a maximum
    Removed print statements.

    * Bug fix for click train logging

    The size of the string classifers field was dynamically set - this was a bug.

    * Bug fixes to the click train detector

    Bearing classifier section now updates properly when dialog reopened
    Fixed rare bug when garbage bot attempts to find the last data unit in a list of zero units.

    * Squashed commit of the following:

    commit 5a37bfe915
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Fri Aug 19 08:17:06 2022 +0100

        Changes from DG branch (#50)

        * Variable sound output level

        Mods to SoundPlayback module to allow additional parameters. Implemented
        system for NI cards to allow changes to selected output voltage range
        meaning output can be boosted to level higher than current default.

        * Code to support nogui operations when no screens present on headless
        system

        * Fix problem of nogui headless operation trying to access screen size.

        * Click detector display fixes

        1. ICI not displaying correctly
        2. Component sizes in display dialog on hres monitors

        * Work on batch processing, after testing of options to autostart,
        autoexit and set wav file folder, database and binary store.

        * Update MHTClickTrainAlgorithm.java

        Fix unsynchronised access to a datablock in click train detector which was causing index errors.

        * Revamp of offline process messaging and control

        Includes some databsae logging of completed tasks

        * Offline task logging

        Bit more work, including notes and database storage of task
        reprocessing. Guess this could all become 'proper' PAMGuard data and be
        shown in a table on the display but that not priority enough.

        * Dialog packing

        Fix a couple of dialogs which don't back well on HDPI monitors

        * UDP Control

        Added multiport functionality

        * Java version

        Changes unpacker to deal with non numeric characters on Linux

        * Fix to getVersion()

        So new version of this command should now work on Linux and Windows.

        * Multiport test

        Quick tester for multiport comms

        * Spectrogram display

        Stop spectrogram display continually recreating panels since it was
        unsubscribing discarded ones and sometimes causing crash in observable
        notifications.

        * Backup manager bug

        Error if no database. Fixed.

    commit b08e86e330
    Author: Jamie Mac <macster110@gmail.com>
    Date:   Wed Aug 17 09:16:52 2022 +0100

        Bug fix for click train detector (#49)

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Create click_train_help.md

        * Update click_train_help.md

        * Screenshots

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * More screenshots

        * Add screenshots

        * Update click_train_help.md

        * Add classifier screenshot

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Updates and bug fixes to click train detector and CPOD importer

        * Update click_train_help.md

        * Update POM with latest jdl4pam

        * Add screenshots for click train detector help

        * Screenshots

        * Update click_train_help.md

        * Defult option for CPOD and porpoise to click train detector.

        Also a minor

        * Update pom.xml

        * Bug fix for raw spectrogram in TDDisplayFX

        * Update KetosClassifier.java

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Create click_train_help.md

        * Update click_train_help.md

        * Screenshots

        * Update click_train_help.md

        * More screenshots

        * Update click_train_help.md

        * Update click_train_help.md

        * Add screenshots

        * Add classifier screenshot

        * Update click_train_help.md

        * Updates and bug fixes to click train detector and CPOD importer

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Add screenshots for click train detector help

        * Screenshots

        * Update click_train_help.md

        * Defult option for CPOD and porpoise to click train detector.

        Also a minor

        * Bug fix for raw spectrogram in TDDisplayFX

        * Update KetosClassifier.java

        * Fix standard classifier JSON logging

        * Update click_train_help.md

        * Fixed bug in sweep classifier when using SoundTrap click detections

        * Added some colour averaging in the TFDisplayFX spectrgoram

        * Bug fix for rainbow click bearings

        Bug fix when rainbow clicks are imported mean bearings cannot be calculated - was an array size issue in DelayGroup

        * Google humpback whale deep learning classifier

        Google's humpback whale deep learning classifier can now be imported.
        Updated TDisplayFX to make the data selection panes cleaner and clearer.
        Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

        * Updated the prediction plots on time display

        Deep learning prediciton plots on the time display have now been updated to have some colour options and also act as a legend.

        * Updates to TDisplayFX

        yFIshmael now owrks with TDisplayFX
        TDisplayFX UI changes to make simpler.
        Some abstraction for drawing lines on TDisplayFX

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Create click_train_help.md

        * Update click_train_help.md

        * Screenshots

        * Update click_train_help.md

        * More screenshots

        * Update click_train_help.md

        * Update click_train_help.md

        * Add screenshots

        * Add classifier screenshot

        * Update click_train_help.md

        * Updates and bug fixes to click train detector and CPOD importer

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Add screenshots for click train detector help

        * Screenshots

        * Update click_train_help.md

        * Defult option for CPOD and porpoise to click train detector.

        Also a minor

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Create click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Updates and bug fixes to click train detector and CPOD importer

        * Bug fix for raw spectrogram in TDDisplayFX

        * Update KetosClassifier.java

        * Fix standard classifier JSON logging

        * Fixed bug in sweep classifier when using SoundTrap click detections

        * Added some colour averaging in the TFDisplayFX spectrgoram

        * Bug fix for rainbow click bearings

        Bug fix when rainbow clicks are imported mean bearings cannot be calculated - was an array size issue in DelayGroup

        * Google humpback whale deep learning classifier

        Google's humpback whale deep learning classifier can now be imported.
        Updated TDisplayFX to make the data selection panes cleaner and clearer.
        Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

        * Updated the prediction plots on time display

        Deep learning prediciton plots on the time display have now been updated to have some colour options and also act as a legend.

        * Updates to TDisplayFX

        yFIshmael now owrks with TDisplayFX
        TDisplayFX UI changes to make simpler.
        Some abstraction for drawing lines on TDisplayFX

        * Merge fixes to click train detector

        * Bug fix to UI

        * Updates to FX GUI

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Screenshots

        * Updates and bug fixes to click train detector and CPOD importer

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Updates and bug fixes to click train detector and CPOD importer

        * Fix standard classifier JSON logging

        * Merge fixes to click train detector

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Screenshots

        * Updates and bug fixes to click train detector and CPOD importer

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Screenshots

        * Updates and bug fixes to click train detector and CPOD importer

        * Fix standard classifier JSON logging

        * Google humpback whale deep learning classifier

        Google's humpback whale deep learning classifier can now be imported.
        Updated TDisplayFX to make the data selection panes cleaner and clearer.
        Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

        * Bug fix to UI

        * Bug fixes to FX GUI

        * Updates to click train detector

        * Squashed commit of the following:

        commit 9f998165ee
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Mon May 2 19:40:24 2022 +0100

            Updates to support ContactCollator plugin (#33)

            * Change synchronization on RawDataTransforms soit uses the owner data
            holder, not itself for synchronization. Otherwise you get thread locks.

            * fix problem in SummaryComand

            * Update command line options

            * Change synchronization on RawDataTransforms soit uses the owner data
            holder, not itself for synchronization. Otherwise you get thread locks.

            * Update command line options

            * Update DecimatorParams.java

            * couple of updates to support new contact collator plugin

            * Sorting out sample rate info in clip display to support Contact Collator
            plugin

            * FLAC Speed

            Improve flac speed

            * Update .gitignore

            * Update .gitignore

            * Updates to support new features in Contact Collator

            * Small update to RawDatautils to handle null data

        * Updates to click train detector

        * Squashed commit of the following:

        commit 62b020b320
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Sat May 14 06:52:20 2022 +0100

            Add a new offlinefileslist function

        commit 3a9a5311aa
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Wed Apr 27 09:43:31 2022 +0100

            Update .gitignore

        commit 9f998165ee
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Mon May 2 19:40:24 2022 +0100

            Updates to support ContactCollator plugin (#33)

            * Change synchronization on RawDataTransforms soit uses the owner data
            holder, not itself for synchronization. Otherwise you get thread locks.

            * fix problem in SummaryComand

            * Update command line options

            * Change synchronization on RawDataTransforms soit uses the owner data
            holder, not itself for synchronization. Otherwise you get thread locks.

            * Update command line options

            * Update DecimatorParams.java

            * couple of updates to support new contact collator plugin

            * Sorting out sample rate info in clip display to support Contact Collator
            plugin

            * FLAC Speed

            Improve flac speed

            * Update .gitignore

            * Update .gitignore

            * Updates to support new features in Contact Collator

            * Small update to RawDatautils to handle null data

        * Updated data selector for click train detector

        * Click train detector updates and bug fixes

        Fixed very annoying bug which meant templates did not show properly when the dialog was first opened in swing.

        Added feature to simple classifier were % of clicks of one click classification (or other data selector paramter) can be used to classify.

        * Bug fix and improvements for Ketos

        Ketos models now automatically set the correct sample length when loaded.

        Bug fix for the TDisplayFX - null pointer exception if no class names loaded and sorted recently introduced bug in drawing predictions.

        * Updates to deep learning and FX GUI

        Added some more example sounds to deep learning UI.

        Updated click detector in the FX GUI.

        * PAMGuard FX sound output update

        * Updates to FX GUI

        * Updates to FX GUI

        * Update RawDataTransforms.java

        * Fixes to FX UI

        * Squashed commit of the following:

        commit 11ba8bf91e
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Thu Aug 4 11:45:47 2022 +0100

            MErge from DG Branch (#47)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

            * Click detector display fixes

            1. ICI not displaying correctly
            2. Component sizes in display dialog on hres monitors

            * Work on batch processing, after testing of options to autostart,
            autoexit and set wav file folder, database and binary store.

            * Update MHTClickTrainAlgorithm.java

            Fix unsynchronised access to a datablock in click train detector which was causing index errors.

            * Revamp of offline process messaging and control

            Includes some databsae logging of completed tasks

            * Offline task logging

            Bit more work, including notes and database storage of task
            reprocessing. Guess this could all become 'proper' PAMGuard data and be
            shown in a table on the display but that not priority enough.

            * Dialog packing

            Fix a couple of dialogs which don't back well on HDPI monitors

            * UDP Control

            Added multiport functionality

        commit 9a9f542d95
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Thu Aug 4 11:42:45 2022 +0100

            Merge DG to Main (#46)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

            * Click detector display fixes

            1. ICI not displaying correctly
            2. Component sizes in display dialog on hres monitors

            * Work on batch processing, after testing of options to autostart,
            autoexit and set wav file folder, database and binary store.

            * Update MHTClickTrainAlgorithm.java

            Fix unsynchronised access to a datablock in click train detector which was causing index errors.

            * Revamp of offline process messaging and control

            Includes some databsae logging of completed tasks

            * Offline task logging

            Bit more work, including notes and database storage of task
            reprocessing. Guess this could all become 'proper' PAMGuard data and be
            shown in a table on the display but that not priority enough.

            * Dialog packing

            Fix a couple of dialogs which don't back well on HDPI monitors

            * UDP Control

            Added multiport functionality

        commit 49cd547aee
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Thu Aug 4 11:40:29 2022 +0100

            Merge DG branch (#45)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

            * Click detector display fixes

            1. ICI not displaying correctly
            2. Component sizes in display dialog on hres monitors

            * Work on batch processing, after testing of options to autostart,
            autoexit and set wav file folder, database and binary store.

            * Update MHTClickTrainAlgorithm.java

            Fix unsynchronised access to a datablock in click train detector which was causing index errors.

            * Revamp of offline process messaging and control

            Includes some databsae logging of completed tasks

            * Offline task logging

            Bit more work, including notes and database storage of task
            reprocessing. Guess this could all become 'proper' PAMGuard data and be
            shown in a table on the display but that not priority enough.

            * Dialog packing

            Fix a couple of dialogs which don't back well on HDPI monitors

            * UDP Control

            Added multiport functionality

        commit 016cfd0da5
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Thu Aug 4 11:35:06 2022 +0100

            Dialog positioning

            New functions to better positions dialogs on screen

        commit c9f2ab3e97
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Mon Aug 1 11:13:24 2022 +0100

            puch to main (#44)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

            * Click detector display fixes

            1. ICI not displaying correctly
            2. Component sizes in display dialog on hres monitors

            * Work on batch processing, after testing of options to autostart,
            autoexit and set wav file folder, database and binary store.

            * Update MHTClickTrainAlgorithm.java

            Fix unsynchronised access to a datablock in click train detector which was causing index errors.

            * Revamp of offline process messaging and control

            Includes some databsae logging of completed tasks

            * Offline task logging

            Bit more work, including notes and database storage of task
            reprocessing. Guess this could all become 'proper' PAMGuard data and be
            shown in a table on the display but that not priority enough.

            * Dialog packing

            Fix a couple of dialogs which don't back well on HDPI monitors

        commit 55f5a3fcf1
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Mon Aug 1 10:59:36 2022 +0100

            Group detections menu

            Small changes to limit the number of menu items in "Add to existing
            group" to a maximum of 25 entries.

        commit b3f6c0e665
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Fri Jul 29 10:50:45 2022 +0100

            Handle -nogui option in PamWorker

            PamWorker used to catalog files at startup (if a file folder input
            system is used). This creates a progress dialog. Stop it appearing in
            -nogui operations.

        commit 8569b6b579
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Fri Jul 22 08:30:47 2022 +0100

            Click display fixes (#41)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

            * Click detector display fixes

            1. ICI not displaying correctly
            2. Component sizes in display dialog on hres monitors

        commit 128a512ff6
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Tue Jul 19 16:37:57 2022 +0100

            Another attempt at stopping it crashing on a headless system

            Dealing with displays that get created for clickangle vetos and a call
            to the gui in the click train detector.

        commit 6eaa6e4978
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Tue Jul 19 08:20:07 2022 +0100

            nogoi fix for headless systems. (#40)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

        commit 9fdd30556b
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Tue Jul 12 15:53:07 2022 +0100

            Variable sound output level (#39)

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

        * Bug fixes to click train detector

        Fixed bug with number of coasts in the MHT Kernel
        Added an option for amplitude to have a maximum
        Removed print statements.

        * Bug fix for click train logging

        The size of the string classifers field was dynamically set - this was a bug.

        Co-authored-by: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>

    commit ef0330173b
    Author: Jamie Mac <macster110@gmail.com>
    Date:   Mon Aug 8 10:32:19 2022 +0100

        Click trian detector fixes (#48)

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Create click_train_help.md

        * Update click_train_help.md

        * Screenshots

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * More screenshots

        * Add screenshots

        * Update click_train_help.md

        * Add classifier screenshot

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Updates and bug fixes to click train detector and CPOD importer

        * Update click_train_help.md

        * Update POM with latest jdl4pam

        * Add screenshots for click train detector help

        * Screenshots

        * Update click_train_help.md

        * Defult option for CPOD and porpoise to click train detector.

        Also a minor

        * Update pom.xml

        * Bug fix for raw spectrogram in TDDisplayFX

        * Update KetosClassifier.java

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Create click_train_help.md

        * Update click_train_help.md

        * Screenshots

        * Update click_train_help.md

        * More screenshots

        * Update click_train_help.md

        * Update click_train_help.md

        * Add screenshots

        * Add classifier screenshot

        * Update click_train_help.md

        * Updates and bug fixes to click train detector and CPOD importer

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Add screenshots for click train detector help

        * Screenshots

        * Update click_train_help.md

        * Defult option for CPOD and porpoise to click train detector.

        Also a minor

        * Bug fix for raw spectrogram in TDDisplayFX

        * Update KetosClassifier.java

        * Fix standard classifier JSON logging

        * Update click_train_help.md

        * Fixed bug in sweep classifier when using SoundTrap click detections

        * Added some colour averaging in the TFDisplayFX spectrgoram

        * Bug fix for rainbow click bearings

        Bug fix when rainbow clicks are imported mean bearings cannot be calculated - was an array size issue in DelayGroup

        * Google humpback whale deep learning classifier

        Google's humpback whale deep learning classifier can now be imported.
        Updated TDisplayFX to make the data selection panes cleaner and clearer.
        Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

        * Updated the prediction plots on time display

        Deep learning prediciton plots on the time display have now been updated to have some colour options and also act as a legend.

        * Updates to TDisplayFX

        yFIshmael now owrks with TDisplayFX
        TDisplayFX UI changes to make simpler.
        Some abstraction for drawing lines on TDisplayFX

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Create click_train_help.md

        * Update click_train_help.md

        * Screenshots

        * Update click_train_help.md

        * More screenshots

        * Update click_train_help.md

        * Update click_train_help.md

        * Add screenshots

        * Add classifier screenshot

        * Update click_train_help.md

        * Updates and bug fixes to click train detector and CPOD importer

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Add screenshots for click train detector help

        * Screenshots

        * Update click_train_help.md

        * Defult option for CPOD and porpoise to click train detector.

        Also a minor

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Create click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Updates and bug fixes to click train detector and CPOD importer

        * Bug fix for raw spectrogram in TDDisplayFX

        * Update KetosClassifier.java

        * Fix standard classifier JSON logging

        * Fixed bug in sweep classifier when using SoundTrap click detections

        * Added some colour averaging in the TFDisplayFX spectrgoram

        * Bug fix for rainbow click bearings

        Bug fix when rainbow clicks are imported mean bearings cannot be calculated - was an array size issue in DelayGroup

        * Google humpback whale deep learning classifier

        Google's humpback whale deep learning classifier can now be imported.
        Updated TDisplayFX to make the data selection panes cleaner and clearer.
        Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

        * Updated the prediction plots on time display

        Deep learning prediciton plots on the time display have now been updated to have some colour options and also act as a legend.

        * Updates to TDisplayFX

        yFIshmael now owrks with TDisplayFX
        TDisplayFX UI changes to make simpler.
        Some abstraction for drawing lines on TDisplayFX

        * Merge fixes to click train detector

        * Bug fix to UI

        * Updates to FX GUI

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Screenshots

        * Updates and bug fixes to click train detector and CPOD importer

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Updates and bug fixes to click train detector and CPOD importer

        * Fix standard classifier JSON logging

        * Merge fixes to click train detector

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Screenshots

        * Updates and bug fixes to click train detector and CPOD importer

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Screenshots

        * Updates and bug fixes to click train detector and CPOD importer

        * Fix standard classifier JSON logging

        * Google humpback whale deep learning classifier

        Google's humpback whale deep learning classifier can now be imported.
        Updated TDisplayFX to make the data selection panes cleaner and clearer.
        Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

        * Bug fix to UI

        * Bug fixes to FX GUI

        * Updates to click train detector

        * Squashed commit of the following:

        commit 9f998165ee
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Mon May 2 19:40:24 2022 +0100

            Updates to support ContactCollator plugin (#33)

            * Change synchronization on RawDataTransforms soit uses the owner data
            holder, not itself for synchronization. Otherwise you get thread locks.

            * fix problem in SummaryComand

            * Update command line options

            * Change synchronization on RawDataTransforms soit uses the owner data
            holder, not itself for synchronization. Otherwise you get thread locks.

            * Update command line options

            * Update DecimatorParams.java

            * couple of updates to support new contact collator plugin

            * Sorting out sample rate info in clip display to support Contact Collator
            plugin

            * FLAC Speed

            Improve flac speed

            * Update .gitignore

            * Update .gitignore

            * Updates to support new features in Contact Collator

            * Small update to RawDatautils to handle null data

        * Updates to click train detector

        * Squashed commit of the following:

        commit 62b020b320
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Sat May 14 06:52:20 2022 +0100

            Add a new offlinefileslist function

        commit 3a9a5311aa
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Wed Apr 27 09:43:31 2022 +0100

            Update .gitignore

        commit 9f998165ee
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Mon May 2 19:40:24 2022 +0100

            Updates to support ContactCollator plugin (#33)

            * Change synchronization on RawDataTransforms soit uses the owner data
            holder, not itself for synchronization. Otherwise you get thread locks.

            * fix problem in SummaryComand

            * Update command line options

            * Change synchronization on RawDataTransforms soit uses the owner data
            holder, not itself for synchronization. Otherwise you get thread locks.

            * Update command line options

            * Update DecimatorParams.java

            * couple of updates to support new contact collator plugin

            * Sorting out sample rate info in clip display to support Contact Collator
            plugin

            * FLAC Speed

            Improve flac speed

            * Update .gitignore

            * Update .gitignore

            * Updates to support new features in Contact Collator

            * Small update to RawDatautils to handle null data

        * Updated data selector for click train detector

        * Click train detector updates and bug fixes

        Fixed very annoying bug which meant templates did not show properly when the dialog was first opened in swing.

        Added feature to simple classifier were % of clicks of one click classification (or other data selector paramter) can be used to classify.

        * Bug fix and improvements for Ketos

        Ketos models now automatically set the correct sample length when loaded.

        Bug fix for the TDisplayFX - null pointer exception if no class names loaded and sorted recently introduced bug in drawing predictions.

        * Updates to deep learning and FX GUI

        Added some more example sounds to deep learning UI.

        Updated click detector in the FX GUI.

        * PAMGuard FX sound output update

        * Updates to FX GUI

        * Updates to FX GUI

        * Update RawDataTransforms.java

        * Fixes to FX UI

        * Squashed commit of the following:

        commit 11ba8bf91e
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Thu Aug 4 11:45:47 2022 +0100

            MErge from DG Branch (#47)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

            * Click detector display fixes

            1. ICI not displaying correctly
            2. Component sizes in display dialog on hres monitors

            * Work on batch processing, after testing of options to autostart,
            autoexit and set wav file folder, database and binary store.

            * Update MHTClickTrainAlgorithm.java

            Fix unsynchronised access to a datablock in click train detector which was causing index errors.

            * Revamp of offline process messaging and control

            Includes some databsae logging of completed tasks

            * Offline task logging

            Bit more work, including notes and database storage of task
            reprocessing. Guess this could all become 'proper' PAMGuard data and be
            shown in a table on the display but that not priority enough.

            * Dialog packing

            Fix a couple of dialogs which don't back well on HDPI monitors

            * UDP Control

            Added multiport functionality

        commit 9a9f542d95
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Thu Aug 4 11:42:45 2022 +0100

            Merge DG to Main (#46)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

            * Click detector display fixes

            1. ICI not displaying correctly
            2. Component sizes in display dialog on hres monitors

            * Work on batch processing, after testing of options to autostart,
            autoexit and set wav file folder, database and binary store.

            * Update MHTClickTrainAlgorithm.java

            Fix unsynchronised access to a datablock in click train detector which was causing index errors.

            * Revamp of offline process messaging and control

            Includes some databsae logging of completed tasks

            * Offline task logging

            Bit more work, including notes and database storage of task
            reprocessing. Guess this could all become 'proper' PAMGuard data and be
            shown in a table on the display but that not priority enough.

            * Dialog packing

            Fix a couple of dialogs which don't back well on HDPI monitors

            * UDP Control

            Added multiport functionality

        commit 49cd547aee
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Thu Aug 4 11:40:29 2022 +0100

            Merge DG branch (#45)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

            * Click detector display fixes

            1. ICI not displaying correctly
            2. Component sizes in display dialog on hres monitors

            * Work on batch processing, after testing of options to autostart,
            autoexit and set wav file folder, database and binary store.

            * Update MHTClickTrainAlgorithm.java

            Fix unsynchronised access to a datablock in click train detector which was causing index errors.

            * Revamp of offline process messaging and control

            Includes some databsae logging of completed tasks

            * Offline task logging

            Bit more work, including notes and database storage of task
            reprocessing. Guess this could all become 'proper' PAMGuard data and be
            shown in a table on the display but that not priority enough.

            * Dialog packing

            Fix a couple of dialogs which don't back well on HDPI monitors

            * UDP Control

            Added multiport functionality

        commit 016cfd0da5
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Thu Aug 4 11:35:06 2022 +0100

            Dialog positioning

            New functions to better positions dialogs on screen

        commit c9f2ab3e97
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Mon Aug 1 11:13:24 2022 +0100

            puch to main (#44)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

            * Click detector display fixes

            1. ICI not displaying correctly
            2. Component sizes in display dialog on hres monitors

            * Work on batch processing, after testing of options to autostart,
            autoexit and set wav file folder, database and binary store.

            * Update MHTClickTrainAlgorithm.java

            Fix unsynchronised access to a datablock in click train detector which was causing index errors.

            * Revamp of offline process messaging and control

            Includes some databsae logging of completed tasks

            * Offline task logging

            Bit more work, including notes and database storage of task
            reprocessing. Guess this could all become 'proper' PAMGuard data and be
            shown in a table on the display but that not priority enough.

            * Dialog packing

            Fix a couple of dialogs which don't back well on HDPI monitors

        commit 55f5a3fcf1
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Mon Aug 1 10:59:36 2022 +0100

            Group detections menu

            Small changes to limit the number of menu items in "Add to existing
            group" to a maximum of 25 entries.

        commit b3f6c0e665
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Fri Jul 29 10:50:45 2022 +0100

            Handle -nogui option in PamWorker

            PamWorker used to catalog files at startup (if a file folder input
            system is used). This creates a progress dialog. Stop it appearing in
            -nogui operations.

        commit 8569b6b579
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Fri Jul 22 08:30:47 2022 +0100

            Click display fixes (#41)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

            * Click detector display fixes

            1. ICI not displaying correctly
            2. Component sizes in display dialog on hres monitors

        commit 128a512ff6
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Tue Jul 19 16:37:57 2022 +0100

            Another attempt at stopping it crashing on a headless system

            Dealing with displays that get created for clickangle vetos and a call
            to the gui in the click train detector.

        commit 6eaa6e4978
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Tue Jul 19 08:20:07 2022 +0100

            nogoi fix for headless systems. (#40)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

        commit 9fdd30556b
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Tue Jul 12 15:53:07 2022 +0100

            Variable sound output level (#39)

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

        * Bug fixes to click train detector

        Fixed bug with number of coasts in the MHT Kernel
        Added an option for amplitude to have a maximum
        Removed print statements.

        Co-authored-by: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>

    * Update DLModelWorker.java

    * Create matched_click_classifer_help.md

    * Update help files for matched click classifier

    * Update matched_click_classifer_help.md

    * Update matched_click_classifer_help.md

    * New screenshots got help files

    * New screenshot

    * Update matched_click_classifer_help.md

    New help file for the matched click classified.

    * Update matched_click_classifer_help.md

    * Squashed commit of the following:

    commit 6b15b3d536
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Tue Aug 23 15:21:28 2022 +0100

        Change min java version to 11 which should be ok on some embedded
        systems.

    commit 4b3a37636b
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Tue Aug 23 14:30:46 2022 +0100

        CTD Fixes

        Couple more fixes to menus and datablock selection

    commit c641c58e4f
    Author: Jamie Mac <macster110@gmail.com>
    Date:   Tue Aug 23 14:19:28 2022 +0100

        Bug fixes to click train detector (#51)

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Create click_train_help.md

        * Update click_train_help.md

        * Screenshots

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * More screenshots

        * Add screenshots

        * Update click_train_help.md

        * Add classifier screenshot

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Updates and bug fixes to click train detector and CPOD importer

        * Update click_train_help.md

        * Update POM with latest jdl4pam

        * Add screenshots for click train detector help

        * Screenshots

        * Update click_train_help.md

        * Defult option for CPOD and porpoise to click train detector.

        Also a minor

        * Update pom.xml

        * Bug fix for raw spectrogram in TDDisplayFX

        * Update KetosClassifier.java

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Create click_train_help.md

        * Update click_train_help.md

        * Screenshots

        * Update click_train_help.md

        * More screenshots

        * Update click_train_help.md

        * Update click_train_help.md

        * Add screenshots

        * Add classifier screenshot

        * Update click_train_help.md

        * Updates and bug fixes to click train detector and CPOD importer

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Add screenshots for click train detector help

        * Screenshots

        * Update click_train_help.md

        * Defult option for CPOD and porpoise to click train detector.

        Also a minor

        * Bug fix for raw spectrogram in TDDisplayFX

        * Update KetosClassifier.java

        * Fix standard classifier JSON logging

        * Update click_train_help.md

        * Fixed bug in sweep classifier when using SoundTrap click detections

        * Added some colour averaging in the TFDisplayFX spectrgoram

        * Bug fix for rainbow click bearings

        Bug fix when rainbow clicks are imported mean bearings cannot be calculated - was an array size issue in DelayGroup

        * Google humpback whale deep learning classifier

        Google's humpback whale deep learning classifier can now be imported.
        Updated TDisplayFX to make the data selection panes cleaner and clearer.
        Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

        * Updated the prediction plots on time display

        Deep learning prediciton plots on the time display have now been updated to have some colour options and also act as a legend.

        * Updates to TDisplayFX

        yFIshmael now owrks with TDisplayFX
        TDisplayFX UI changes to make simpler.
        Some abstraction for drawing lines on TDisplayFX

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Create click_train_help.md

        * Update click_train_help.md

        * Screenshots

        * Update click_train_help.md

        * More screenshots

        * Update click_train_help.md

        * Update click_train_help.md

        * Add screenshots

        * Add classifier screenshot

        * Update click_train_help.md

        * Updates and bug fixes to click train detector and CPOD importer

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Add screenshots for click train detector help

        * Screenshots

        * Update click_train_help.md

        * Defult option for CPOD and porpoise to click train detector.

        Also a minor

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Create click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Updates and bug fixes to click train detector and CPOD importer

        * Bug fix for raw spectrogram in TDDisplayFX

        * Update KetosClassifier.java

        * Fix standard classifier JSON logging

        * Fixed bug in sweep classifier when using SoundTrap click detections

        * Added some colour averaging in the TFDisplayFX spectrgoram

        * Bug fix for rainbow click bearings

        Bug fix when rainbow clicks are imported mean bearings cannot be calculated - was an array size issue in DelayGroup

        * Google humpback whale deep learning classifier

        Google's humpback whale deep learning classifier can now be imported.
        Updated TDisplayFX to make the data selection panes cleaner and clearer.
        Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

        * Updated the prediction plots on time display

        Deep learning prediciton plots on the time display have now been updated to have some colour options and also act as a legend.

        * Updates to TDisplayFX

        yFIshmael now owrks with TDisplayFX
        TDisplayFX UI changes to make simpler.
        Some abstraction for drawing lines on TDisplayFX

        * Merge fixes to click train detector

        * Bug fix to UI

        * Updates to FX GUI

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Screenshots

        * Updates and bug fixes to click train detector and CPOD importer

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Updates and bug fixes to click train detector and CPOD importer

        * Fix standard classifier JSON logging

        * Merge fixes to click train detector

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Screenshots

        * Updates and bug fixes to click train detector and CPOD importer

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Screenshots

        * Updates and bug fixes to click train detector and CPOD importer

        * Fix standard classifier JSON logging

        * Google humpback whale deep learning classifier

        Google's humpback whale deep learning classifier can now be imported.
        Updated TDisplayFX to make the data selection panes cleaner and clearer.
        Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

        * Bug fix to UI

        * Bug fixes to FX GUI

        * Updates to click train detector

        * Squashed commit of the following:

        commit 9f998165ee
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Mon May 2 19:40:24 2022 +0100

            Updates to support ContactCollator plugin (#33)

            * Change synchronization on RawDataTransforms soit uses the owner data
            holder, not itself for synchronization. Otherwise you get thread locks.

            * fix problem in SummaryComand

            * Update command line options

            * Change synchronization on RawDataTransforms soit uses the owner data
            holder, not itself for synchronization. Otherwise you get thread locks.

            * Update command line options

            * Update DecimatorParams.java

            * couple of updates to support new contact collator plugin

            * Sorting out sample rate info in clip display to support Contact Collator
            plugin

            * FLAC Speed

            Improve flac speed

            * Update .gitignore

            * Update .gitignore

            * Updates to support new features in Contact Collator

            * Small update to RawDatautils to handle null data

        * Updates to click train detector

        * Squashed commit of the following:

        commit 62b020b320
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Sat May 14 06:52:20 2022 +0100

            Add a new offlinefileslist function

        commit 3a9a5311aa
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Wed Apr 27 09:43:31 2022 +0100

            Update .gitignore

        commit 9f998165ee
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Mon May 2 19:40:24 2022 +0100

            Updates to support ContactCollator plugin (#33)

            * Change synchronization on RawDataTransforms soit uses the owner data
            holder, not itself for synchronization. Otherwise you get thread locks.

            * fix problem in SummaryComand

            * Update command line options

            * Change synchronization on RawDataTransforms soit uses the owner data
            holder, not itself for synchronization. Otherwise you get thread locks.

            * Update command line options

            * Update DecimatorParams.java

            * couple of updates to support new contact collator plugin

            * Sorting out sample rate info in clip display to support Contact Collator
            plugin

            * FLAC Speed

            Improve flac speed

            * Update .gitignore

            * Update .gitignore

            * Updates to support new features in Contact Collator

            * Small update to RawDatautils to handle null data

        * Updated data selector for click train detector

        * Click train detector updates and bug fixes

        Fixed very annoying bug which meant templates did not show properly when the dialog was first opened in swing.

        Added feature to simple classifier were % of clicks of one click classification (or other data selector paramter) can be used to classify.

        * Bug fix and improvements for Ketos

        Ketos models now automatically set the correct sample length when loaded.

        Bug fix for the TDisplayFX - null pointer exception if no class names loaded and sorted recently introduced bug in drawing predictions.

        * Updates to deep learning and FX GUI

        Added some more example sounds to deep learning UI.

        Updated click detector in the FX GUI.

        * PAMGuard FX sound output update

        * Updates to FX GUI

        * Updates to FX GUI

        * Update RawDataTransforms.java

        * Fixes to FX UI

        * Squashed commit of the following:

        commit 11ba8bf91e
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Thu Aug 4 11:45:47 2022 +0100

            MErge from DG Branch (#47)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

            * Click detector display fixes

            1. ICI not displaying correctly
            2. Component sizes in display dialog on hres monitors

            * Work on batch processing, after testing of options to autostart,
            autoexit and set wav file folder, database and binary store.

            * Update MHTClickTrainAlgorithm.java

            Fix unsynchronised access to a datablock in click train detector which was causing index errors.

            * Revamp of offline process messaging and control

            Includes some databsae logging of completed tasks

            * Offline task logging

            Bit more work, including notes and database storage of task
            reprocessing. Guess this could all become 'proper' PAMGuard data and be
            shown in a table on the display but that not priority enough.

            * Dialog packing

            Fix a couple of dialogs which don't back well on HDPI monitors

            * UDP Control

            Added multiport functionality

        commit 9a9f542d95
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Thu Aug 4 11:42:45 2022 +0100

            Merge DG to Main (#46)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

            * Click detector display fixes

            1. ICI not displaying correctly
            2. Component sizes in display dialog on hres monitors

            * Work on batch processing, after testing of options to autostart,
            autoexit and set wav file folder, database and binary store.

            * Update MHTClickTrainAlgorithm.java

            Fix unsynchronised access to a datablock in click train detector which was causing index errors.

            * Revamp of offline process messaging and control

            Includes some databsae logging of completed tasks

            * Offline task logging

            Bit more work, including notes and database storage of task
            reprocessing. Guess this could all become 'proper' PAMGuard data and be
            shown in a table on the display but that not priority enough.

            * Dialog packing

            Fix a couple of dialogs which don't back well on HDPI monitors

            * UDP Control

            Added multiport functionality

        commit 49cd547aee
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Thu Aug 4 11:40:29 2022 +0100

            Merge DG branch (#45)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

            * Click detector display fixes

            1. ICI not displaying correctly
            2. Component sizes in display dialog on hres monitors

            * Work on batch processing, after testing of options to autostart,
            autoexit and set wav file folder, database and binary store.

            * Update MHTClickTrainAlgorithm.java

            Fix unsynchronised access to a datablock in click train detector which was causing index errors.

            * Revamp of offline process messaging and control

            Includes some databsae logging of completed tasks

            * Offline task logging

            Bit more work, including notes and database storage of task
            reprocessing. Guess this could all become 'proper' PAMGuard data and be
            shown in a table on the display but that not priority enough.

            * Dialog packing

            Fix a couple of dialogs which don't back well on HDPI monitors

            * UDP Control

            Added multiport functionality

        commit 016cfd0da5
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Thu Aug 4 11:35:06 2022 +0100

            Dialog positioning

            New functions to better positions dialogs on screen

        commit c9f2ab3e97
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Mon Aug 1 11:13:24 2022 +0100

            puch to main (#44)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

            * Click detector display fixes

            1. ICI not displaying correctly
            2. Component sizes in display dialog on hres monitors

            * Work on batch processing, after testing of options to autostart,
            autoexit and set wav file folder, database and binary store.

            * Update MHTClickTrainAlgorithm.java

            Fix unsynchronised access to a datablock in click train detector which was causing index errors.

            * Revamp of offline process messaging and control

            Includes some databsae logging of completed tasks

            * Offline task logging

            Bit more work, including notes and database storage of task
            reprocessing. Guess this could all become 'proper' PAMGuard data and be
            shown in a table on the display but that not priority enough.

            * Dialog packing

            Fix a couple of dialogs which don't back well on HDPI monitors

        commit 55f5a3fcf1
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Mon Aug 1 10:59:36 2022 +0100

            Group detections menu

            Small changes to limit the number of menu items in "Add to existing
            group" to a maximum of 25 entries.

        commit b3f6c0e665
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Fri Jul 29 10:50:45 2022 +0100

            Handle -nogui option in PamWorker

            PamWorker used to catalog files at startup (if a file folder input
            system is used). This creates a progress dialog. Stop it appearing in
            -nogui operations.

        commit 8569b6b579
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Fri Jul 22 08:30:47 2022 +0100

            Click display fixes (#41)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

            * Click detector display fixes

            1. ICI not displaying correctly
            2. Component sizes in display dialog on hres monitors

        commit 128a512ff6
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Tue Jul 19 16:37:57 2022 +0100

            Another attempt at stopping it crashing on a headless system

            Dealing with displays that get created for clickangle vetos and a call
            to the gui in the click train detector.

        commit 6eaa6e4978
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Tue Jul 19 08:20:07 2022 +0100

            nogoi fix for headless systems. (#40)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

        commit 9fdd30556b
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Tue Jul 12 15:53:07 2022 +0100

            Variable sound output level (#39)

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

        * Bug fixes to click train detector

        Fixed bug with number of coasts in the MHT Kernel
        Added an option for amplitude to have a maximum
        Removed print statements.

        * Bug fix for click train logging

        The size of the string classifers field was dynamically set - this was a bug.

        * Bug fixes to the click train detector

        Bearing classifier section now updates properly when dialog reopened
        Fixed rare bug when garbage bot attempts to find the last data unit in a list of zero units.

        * Squashed commit of the following:

        commit 5a37bfe915
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Fri Aug 19 08:17:06 2022 +0100

            Changes from DG branch (#50)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

            * Click detector display fixes

            1. ICI not displaying correctly
            2. Component sizes in display dialog on hres monitors

            * Work on batch processing, after testing of options to autostart,
            autoexit and set wav file folder, database and binary store.

            * Update MHTClickTrainAlgorithm.java

            Fix unsynchronised access to a datablock in click train detector which was causing index errors.

            * Revamp of offline process messaging and control

            Includes some databsae logging of completed tasks

            * Offline task logging

            Bit more work, including notes and database storage of task
            reprocessing. Guess this could all become 'proper' PAMGuard data and be
            shown in a table on the display but that not priority enough.

            * Dialog packing

            Fix a couple of dialogs which don't back well on HDPI monitors

            * UDP Control

            Added multiport functionality

            * Java version

            Changes unpacker to deal with non numeric characters on Linux

            * Fix to getVersion()

            So new version of this command should now work on Linux and Windows.

            * Multiport test

            Quick tester for multiport comms

            * Spectrogram display

            Stop spectrogram display continually recreating panels since it was
            unsubscribing discarded ones and sometimes causing crash in observable
            notifications.

            * Backup manager bug

            Error if no database. Fixed.

        commit b08e86e330
        Author: Jamie Mac <macster110@gmail.com>
        Date:   Wed Aug 17 09:16:52 2022 +0100

            Bug fix for click train detector (#49)

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Screenshots

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * More screenshots

            * Add screenshots

            * Update click_train_help.md

            * Add classifier screenshot

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Update click_train_help.md

            * Update POM with latest jdl4pam

            * Add screenshots for click train detector help

            * Screenshots

            * Update click_train_help.md

            * Defult option for CPOD and porpoise to click train detector.

            Also a minor

            * Update pom.xml

            * Bug fix for raw spectrogram in TDDisplayFX

            * Update KetosClassifier.java

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Screenshots

            * Update click_train_help.md

            * More screenshots

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots

            * Add classifier screenshot

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots for click train detector help

            * Screenshots

            * Update click_train_help.md

            * Defult option for CPOD and porpoise to click train detector.

            Also a minor

            * Bug fix for raw spectrogram in TDDisplayFX

            * Update KetosClassifier.java

            * Fix standard classifier JSON logging

            * Update click_train_help.md

            * Fixed bug in sweep classifier when using SoundTrap click detections

            * Added some colour averaging in the TFDisplayFX spectrgoram

            * Bug fix for rainbow click bearings

            Bug fix when rainbow clicks are imported mean bearings cannot be calculated - was an array size issue in DelayGroup

            * Google humpback whale deep learning classifier

            Google's humpback whale deep learning classifier can now be imported.
            Updated TDisplayFX to make the data selection panes cleaner and clearer.
            Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

            * Updated the prediction plots on time display

            Deep learning prediciton plots on the time display have now been updated to have some colour options and also act as a legend.

            * Updates to TDisplayFX

            yFIshmael now owrks with TDisplayFX
            TDisplayFX UI changes to make simpler.
            Some abstraction for drawing lines on TDisplayFX

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Screenshots

            * Update click_train_help.md

            * More screenshots

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots

            * Add classifier screenshot

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots for click train detector help

            * Screenshots

            * Update click_train_help.md

            * Defult option for CPOD and porpoise to click train detector.

            Also a minor

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Bug fix for raw spectrogram in TDDisplayFX

            * Update KetosClassifier.java

            * Fix standard classifier JSON logging

            * Fixed bug in sweep classifier when using SoundTrap click detections

            * Added some colour averaging in the TFDisplayFX spectrgoram

            * Bug fix for rainbow click bearings

            Bug fix when rainbow clicks are imported mean bearings cannot be calculated - was an array size issue in DelayGroup

            * Google humpback whale deep learning classifier

            Google's humpback whale deep learning classifier can now be imported.
            Updated TDisplayFX to make the data selection panes cleaner and clearer.
            Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

            * Updated the prediction plots on time display

            Deep learning prediciton plots on the time display have now been updated to have some colour options and also act as a legend.

            * Updates to TDisplayFX

            yFIshmael now owrks with TDisplayFX
            TDisplayFX UI changes to make simpler.
            Some abstraction for drawing lines on TDisplayFX

            * Merge fixes to click train detector

            * Bug fix to UI

            * Updates to FX GUI

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Screenshots

            * Updates and bug fixes to click train detector and CPOD importer

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Updates and bug fixes to click train detector and CPOD importer

            * Fix standard classifier JSON logging

            * Merge fixes to click train detector

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Screenshots

            * Updates and bug fixes to click train detector and CPOD importer

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Screenshots

            * Updates and bug fixes to click train detector and CPOD importer

            * Fix standard classifier JSON logging

            * Google humpback whale deep learning classifier

            Google's humpback whale deep learning classifier can now be imported.
            Updated TDisplayFX to make the data selection panes cleaner and clearer.
            Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

            * Bug fix to UI

            * Bug fixes to FX GUI

            * Updates to click train detector

            * Squashed commit of the following:

            commit 9f998165ee
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Mon May 2 19:40:24 2022 +0100

                Updates to support ContactCollator plugin (#33)

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * fix problem in SummaryComand

                * Update command line options

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * Update command line options

                * Update DecimatorParams.java

                * couple of updates to support new contact collator plugin

                * Sorting out sample rate info in clip display to support Contact Collator
                plugin

                * FLAC Speed

                Improve flac speed

                * Update .gitignore

                * Update .gitignore

                * Updates to support new features in Contact Collator

                * Small update to RawDatautils to handle null data

            * Updates to click train detector

            * Squashed commit of the following:

            commit 62b020b320
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Sat May 14 06:52:20 2022 +0100

                Add a new offlinefileslist function

            commit 3a9a5311aa
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Wed Apr 27 09:43:31 2022 +0100

                Update .gitignore

            commit 9f998165ee
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Mon May 2 19:40:24 2022 +0100

                Updates to support ContactCollator plugin (#33)

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * fix problem in SummaryComand

                * Update command line options

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * Update command line options

                * Update DecimatorParams.java

                * couple of updates to support new contact collator plugin

                * Sorting out sample rate info in clip display to support Contact Collator
                plugin

                * FLAC Speed

                Improve flac speed

                * Update .gitignore

                * Update .gitignore

                * Updates to support new features in Contact Collator

                * Small update to RawDatautils to handle null data

            * Updated data selector for click train detector

            * Click train detector updates and bug fixes

            Fixed very annoying bug which meant templates did not show properly when the dialog was first opened in swing.

            Added feature to simple classifier were % of clicks of one click classification (or other data selector paramter) can be used to classify.

            * Bug fix and improvements for Ketos

            Ketos models now automatically set the correct sample length when loaded.

            Bug fix for the TDisplayFX - null pointer exception if no class names loaded and sorted recently introduced bug in drawing predictions.

            * Updates to deep learning and FX GUI

            Added some more example sounds to deep learning UI.

            Updated click detector in the FX GUI.

            * PAMGuard FX sound output update

            * Updates to FX GUI

            * Updates to FX GUI

            * Update RawDataTransforms.java

            * Fixes to FX UI

            * Squashed commit of the following:

            commit 11ba8bf91e
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Thu Aug 4 11:45:47 2022 +0100

                MErge from DG Branch (#47)

                * Variable sound output level

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

                * Code to support nogui operations when no screens present on headless
                system

                * Fix problem of nogui headless operation trying to access screen size.

                * Click detector display fixes

                1. ICI not displaying correctly
                2. Component sizes in display dialog on hres monitors

                * Work on batch processing, after testing of options to autostart,
                autoexit and set wav file folder, database and binary store.

                * Update MHTClickTrainAlgorithm.java

                Fix unsynchronised access to a datablock in click train detector which was causing index errors.

                * Revamp of offline process messaging and control

                Includes some databsae logging of completed tasks

                * Offline task logging

                Bit more work, including notes and database storage of task
                reprocessing. Guess this could all become 'proper' PAMGuard data and be
                shown in a table on the display but that not priority enough.

                * Dialog packing

                Fix a couple of dialogs which don't back well on HDPI monitors

                * UDP Control

                Added multiport functionality

            commit 9a9f542d95
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Thu Aug 4 11:42:45 2022 +0100

                Merge DG to Main (#46)

                * Variable sound output level

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

                * Code to support nogui operations when no screens present on headless
                system

                * Fix problem of nogui headless operation trying to access screen size.

                * Click detector display fixes

                1. ICI not displaying correctly
                2. Component sizes in display dialog on hres monitors

                * Work on batch processing, after testing of options to autostart,
                autoexit and set wav file folder, database and binary store.

                * Update MHTClickTrainAlgorithm.java

                Fix unsynchronised access to a datablock in click train detector which was causing index errors.

                * Revamp of offline process messaging and control

                Includes some databsae logging of completed tasks

                * Offline task logging

                Bit more work, including notes and database storage of task
                reprocessing. Guess this could all become 'proper' PAMGuard data and be
                shown in a table on the display but that not priority enough.

                * Dialog packing

                Fix a couple of dialogs which don't back well on HDPI monitors

                * UDP Control

                Added multiport functionality

            commit 49cd547aee
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Thu Aug 4 11:40:29 2022 +0100

                Merge DG branch (#45)

                * Variable sound output level

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

                * Code to support nogui operations when no screens present on headless
                system

                * Fix problem of nogui headless operation trying to access screen size.

                * Click detector display fixes

                1. ICI not displaying correctly
                2. Component sizes in display dialog on hres monitors

                * Work on batch processing, after testing of options to autostart,
                autoexit and set wav file folder, database and binary store.

                * Update MHTClickTrainAlgorithm.java

                Fix unsynchronised access to a datablock in click train detector which was causing index errors.

                * Revamp of offline process messaging and control

                Includes some databsae logging of completed tasks

                * Offline task logging

                Bit more work, including notes and database storage of task
                reprocessing. Guess this could all become 'proper' PAMGuard data and be
                shown in a table on the display but that not priority enough.

                * Dialog packing

                Fix a couple of dialogs which don't back well on HDPI monitors

                * UDP Control

                Added multiport functionality

            commit 016cfd0da5
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Thu Aug 4 11:35:06 2022 +0100

                Dialog positioning

                New functions to better positions dialogs on screen

            commit c9f2ab3e97
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Mon Aug 1 11:13:24 2022 +0100

                puch to main (#44)

                * Variable sound output level

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

                * Code to support nogui operations when no screens present on headless
                system

                * Fix problem of nogui headless operation trying to access screen size.

                * Click detector display fixes

                1. ICI not displaying correctly
                2. Component sizes in display dialog on hres monitors

                * Work on batch processing, after testing of options to autostart,
                autoexit and set wav file folder, database and binary store.

                * Update MHTClickTrainAlgorithm.java

                Fix unsynchronised access to a datablock in click train detector which was causing index errors.

                * Revamp of offline process messaging and control

                Includes some databsae logging of completed tasks

                * Offline task logging

                Bit more work, including notes and database storage of task
                reprocessing. Guess this could all become 'proper' PAMGuard data and be
                shown in a table on the display but that not priority enough.

                * Dialog packing

                Fix a couple of dialogs which don't back well on HDPI monitors

            commit 55f5a3fcf1
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Mon Aug 1 10:59:36 2022 +0100

                Group detections menu

                Small changes to limit the number of menu items in "Add to existing
                group" to a maximum of 25 entries.

            commit b3f6c0e665
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Fri Jul 29 10:50:45 2022 +0100

                Handle -nogui option in PamWorker

                PamWorker used to catalog files at startup (if a file folder input
                system is used). This creates a progress dialog. Stop it appearing in
                -nogui operations.

            commit 8569b6b579
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Fri Jul 22 08:30:47 2022 +0100

                Click display fixes (#41)

                * Variable sound output level

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

                * Code to support nogui operations when no screens present on headless
                system

                * Fix problem of nogui headless operation trying to access screen size.

                * Click detector display fixes

                1. ICI not displaying correctly
                2. Component sizes in display dialog on hres monitors

            commit 128a512ff6
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Tue Jul 19 16:37:57 2022 +0100

                Another attempt at stopping it crashing on a headless system

                Dealing with displays that get created for clickangle vetos and a call
                to the gui in the click train detector.

            commit 6eaa6e4978
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Tue Jul 19 08:20:07 2022 +0100

                nogoi fix for headless systems. (#40)

                * Variable sound output level

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

                * Code to support nogui operations when no screens present on headless
                system

                * Fix problem of nogui headless operation trying to access screen size.

            commit 9fdd30556b
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Tue Jul 12 15:53:07 2022 +0100

                Variable sound output level (#39)

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

            * Bug fixes to click train detector

            Fixed bug with number of coasts in the MHT Kernel
            Added an option for amplitude to have a maximum
            Removed print statements.

            * Bug fix for click train logging

            The size of the string classifers field was dynamically set - this was a bug.

            Co-authored-by: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>

        commit ef0330173b
        Author: Jamie Mac <macster110@gmail.com>
        Date:   Mon Aug 8 10:32:19 2022 +0100

            Click trian detector fixes (#48)

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Screenshots

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * More screenshots

            * Add screenshots

            * Update click_train_help.md

            * Add classifier screenshot

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Update click_train_help.md

            * Update POM with latest jdl4pam

            * Add screenshots for click train detector help

            * Screenshots

            * Update click_train_help.md

            * Defult option for CPOD and porpoise to click train detector.

            Also a minor

            * Update pom.xml

            * Bug fix for raw spectrogram in TDDisplayFX

            * Update KetosClassifier.java

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Screenshots

            * Update click_train_help.md

            * More screenshots

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots

            * Add classifier screenshot

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots for click train detector help

            * Screenshots

            * Update click_train_help.md

            * Defult option for CPOD and porpoise to click train detector.

            Also a minor

            * Bug fix for raw spectrogram in TDDisplayFX

            * Update KetosClassifier.java

            * Fix standard classifier JSON logging

            * Update click_train_help.md

            * Fixed bug in sweep classifier when using SoundTrap click detections

            * Added some colour averaging in the TFDisplayFX spectrgoram

            * Bug fix for rainbow click bearings

            Bug fix when rainbow clicks are imported mean bearings cannot be calculated - was an array size issue in DelayGroup

            * Google humpback whale deep learning classifier

            Google's humpback whale deep learning classifier can now be imported.
            Updated TDisplayFX to make the data selection panes cleaner and clearer.
            Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

            * Updated the prediction plots on time display

            Deep learning prediciton plots on the time display have now been updated to have some colour options and also act as a legend.

            * Updates to TDisplayFX

            yFIshmael now owrks with TDisplayFX
            TDisplayFX UI changes to make simpler.
            Some abstraction for drawing lines on TDisplayFX

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Screenshots

            * Update click_train_help.md

            * More screenshots

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots

            * Add classifier screenshot

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots for click train detector help

            * Screenshots

            * Update click_train_help.md

            * Defult option for CPOD and porpoise to click train detector.

            Also a minor

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Bug fix for raw spectrogram in TDDisplayFX

            * Update KetosClassifier.java

            * Fix standard classifier JSON logging

            * Fixed bug in sweep classifier when using SoundTrap click detections

            * Added some colour averaging in the TFDisplayFX spectrgoram

            * Bug fix for rainbow click bearings

            Bug fix when rainbow clicks are imported mean bearings cannot be calculated - was an array size issue in DelayGroup

            * Google humpback whale deep learning classifier

            Google's humpback whale deep learning classifier can now be imported.
            Updated TDisplayFX to make the data selection panes cleaner and clearer.
            Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

            * Updated the prediction plots on time display

            Deep learning prediciton plots on the time display have now been updated to have some colour options and also act as a legend.

            * Updates to TDisplayFX

            yFIshmael now owrks with TDisplayFX
            TDisplayFX UI changes to make simpler.
            Some abstraction for drawing lines on TDisplayFX

            * Merge fixes to click train detector

            * Bug fix to UI

            * Updates to FX GUI

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Screenshots

            * Updates and bug fixes to click train detector and CPOD importer

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Updates and bug fixes to click train detector and CPOD importer

            * Fix standard classifier JSON logging

            * Merge fixes to click train detector

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Screenshots

            * Updates and bug fixes to click train detector and CPOD importer

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Screenshots

            * Updates and bug fixes to click train detector and CPOD importer

            * Fix standard classifier JSON logging

            * Google humpback whale deep learning classifier

            Google's humpback whale deep learning classifier can now be imported.
            Updated TDisplayFX to make the data selection panes cleaner and clearer.
            Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

            * Bug fix to UI

            * Bug fixes to FX GUI

            * Updates to click train detector

            * Squashed commit of the following:

            commit 9f998165ee
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Mon May 2 19:40:24 2022 +0100

                Updates to support ContactCollator plugin (#33)

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * fix problem in SummaryComand

                * Update command line options

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * Update command line options

                * Update DecimatorParams.java

                * couple of updates to support new contact collator plugin

                * Sorting out sample rate info in clip display to support Contact Collator
                plugin

                * FLAC Speed

                Improve flac speed

                * Update .gitignore

                * Update .gitignore

                * Updates to support new features in Contact Collator

                * Small update to RawDatautils to handle null data

            * Updates to click train detector

            * Squashed commit of the following:

            commit 62b020b320
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Sat May 14 06:52:20 2022 +0100

                Add a new offlinefileslist function

            commit 3a9a5311aa
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Wed Apr 27 09:43:31 2022 +0100

                Update .gitignore

            commit 9f998165ee
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Mon May 2 19:40:24 2022 +0100

                Updates to support ContactCollator plugin (#33)

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * fix problem in SummaryComand

                * Update command line options

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * Update command line options

                * Update DecimatorParams.java

                * couple of updates to support new contact collator plugin

                * Sorting out sample rate info in clip display to support Contact Collator
                plugin

                * FLAC Speed

                Improve flac speed

                * Update .gitignore

                * Update .gitignore

                * Updates to support new features in Contact Collator

                * Small update to RawDatautils to handle null data

            * Updated data selector for click train detector

            * Click train detector updates and bug fixes

            Fixed very annoying bug which meant templates did not show properly when the dialog was first opened in swing.

            Added feature to simple classifier were % of clicks of one click classification (or other data selector paramter) can be used to classify.

            * Bug fix and improvements for Ketos

            Ketos models now automatically set the correct sample length when loaded.

            Bug fix for the TDisplayFX - null pointer exception if no class names loaded and sorted recently introduced bug in drawing predictions.

            * Updates to deep learning and FX GUI

            Added some more example sounds to deep learning UI.

            Updated click detector in the FX GUI.

            * PAMGuard FX sound output update

            * Updates to FX GUI

            * Updates to FX GUI

            * Update RawDataTransforms.java

            * Fixes to FX UI

            * Squashed commit of the following:

            commit 11ba8bf91e
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Thu Aug 4 11:45:47 2022 +0100

                MErge from DG Branch (#47)

                * Variable sound output level

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

                * Code to support nogui operations when no screens present on headless
                system

                * Fix problem of nogui headless operation trying to access screen size.

                * Click detector display fixes

                1. ICI not displaying correctly
                2. Component sizes in display dialog on hres monitors

                * Work on batch processing, after testing of options to autostart,
                autoexit and set wav file folder, database and binary store.

                * Update MHTClickTrainAlgorithm.java

                Fix unsynchronised access to a datablock in click train detector which was causing index errors.

                * Revamp of offline process messaging and control

                Includes some databsae logging of completed tasks

                * Offline task logging

                Bit more work, including notes and database storage of task
                reprocessing. Guess this could all become 'proper' PAMGuard data and be
                shown in a table on the display but that not priority enough.

                * Dialog packing

                Fix a couple of dialogs which don't back well on HDPI monitors

                * UDP Control

                Added multiport functionality

            commit 9a9f542d95
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Thu Aug 4 11:42:45 2022 +0100

                Merge DG to Main (#46)

                * Variable sound output level

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

                * Code to support nogui operations when no screens present on headless
                system

                * Fix problem of nogui headless operation trying to access screen size.

                * Click detector display fixes

                1. ICI not displaying correctly
                2. Component sizes in display dialog on hres monitors

                * Work on batch processing, after testing of options to autostart,
                autoexit and set wav file folder, database and binary store.

                * Update MHTClickTrainAlgorithm.java

                Fix unsynchronised …

    * Bug fixes to the matched click classifier

    The matched click classifier was not working when an in built click classifier was used. This was caused by an index out of bounds exception in the alarm system.

    Added new features;
    * The Time base display now exports sample rate to .mat files.
    * Bug fix file separator on time base display so it works on mac and Linux
    * Matched click classifier imports the first click in a list of click structures as a template.
    * Changed default length for restricted bins to 2048.

    * Add picture for help file

    * Update matched_click_classifer_help.md

    * Update matched_click_classifer_help.md

    * Squashed commit of the following:

    commit b01cb4d100
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Tue Sep 13 11:19:31 2022 +0100

        Fix bug in 3DOffline task

        Problems with making catalogue of offline tasks. not important for now,
        but needs revisiting.

    commit ae6e2f947b
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Tue Sep 13 09:12:34 2022 +0100

        Merge Dougs fork (#53)

        * Variable sound output level

        Mods to SoundPlayback module to allow additional parameters. Implemented
        system for NI cards to allow changes to selected output voltage range
        meaning output can be boosted to level higher than current default.

        * Code to support nogui operations when no screens present on headless
        system

        * Fix problem of nogui headless operation trying to access screen size.

        * Click detector display fixes

        1. ICI not displaying correctly
        2. Component sizes in display dialog on hres monitors

        * Work on batch processing, after testing of options to autostart,
        autoexit and set wav file folder, database and binary store.

        * Update MHTClickTrainAlgorithm.java

        Fix unsynchronised access to a datablock in click train detector which was causing index errors.

        * Revamp of offline process messaging and control

        Includes some databsae logging of completed tasks

        * Offline task logging

        Bit more work, including notes and database storage of task
        reprocessing. Guess this could all become 'proper' PAMGuard data and be
        shown in a table on the display but that not priority enough.

        * Dialog packing

        Fix a couple of dialogs which don't back well on HDPI monitors

        * UDP Control

        Added multiport functionality

        * Java version

        Changes unpacker to deal with non numeric characters on Linux

        * Fix to getVersion()

        So new version of this command should now work on Linux and Windows.

        * Multiport test

        Quick tester for multiport comms

        * Spectrogram display

        Stop spectrogram display continually recreating panels since it was
        unsubscribing discarded ones and sometimes causing crash in observable
        notifications.

        * Backup manager bug

        Error if no database. Fixed.

        * Daylight saving problem

        Fix daylight saving problem in generation of timestamps in SQLTypes. See long explanation in SQLTypes.java. Only occurred in the hour after daylight saving starts.

    commit cd89c65d7c
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Tue Sep 13 09:07:11 2022 +0100

        Fix synchronization problem in RawDataTransfroms

    commit 6b15b3d536
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Tue Aug 23 15:21:28 2022 +0100

        Change min java version to 11 which should be ok on some embedded
        systems.

    commit 4b3a37636b
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Tue Aug 23 14:30:46 2022 +0100

        CTD Fixes

        Couple more fixes to menus and datablock selection

    commit c641c58e4f
    Author: Jamie Mac <macster110@gmail.com>
    Date:   Tue Aug 23 14:19:28 2022 +0100

        Bug fixes to click train detector (#51)

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Create click_train_help.md

        * Update click_train_help.md

        * Screenshots

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * More screenshots

        * Add screenshots

        * Update click_train_help.md

        * Add classifier screenshot

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Updates and bug fixes to click train detector and CPOD importer

        * Update click_train_help.md

        * Update POM with latest jdl4pam

        * Add screenshots for click train detector help

        * Screenshots

        * Update click_train_help.md

        * Defult option for CPOD and porpoise to click train detector.

        Also a minor

        * Update pom.xml

        * Bug fix for raw spectrogram in TDDisplayFX

        * Update KetosClassifier.java

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Create click_train_help.md

        * Update click_train_help.md

        * Screenshots

        * Update click_train_help.md

        * More screenshots

        * Update click_train_help.md

        * Update click_train_help.md

        * Add screenshots

        * Add classifier screenshot

        * Update click_train_help.md

        * Updates and bug fixes to click train detector and CPOD importer

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Add screenshots for click train detector help

        * Screenshots

        * Update click_train_help.md

        * Defult option for CPOD and porpoise to click train detector.

        Also a minor

        * Bug fix for raw spectrogram in TDDisplayFX

        * Update KetosClassifier.java

        * Fix standard classifier JSON logging

        * Update click_train_help.md

        * Fixed bug in sweep classifier when using SoundTrap click detections

        * Added some colour averaging in the TFDisplayFX spectrgoram

        * Bug fix for rainbow click bearings

        Bug fix when rainbow clicks are imported mean bearings cannot be calculated - was an array size issue in DelayGroup

        * Google humpback whale deep learning classifier

        Google's humpback whale deep learning classifier can now be imported.
        Updated TDisplayFX to make the data selection panes cleaner and clearer.
        Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

        * Updated the prediction plots on time display

        Deep learning prediciton plots on the time display have now been updated to have some colour options and also act as a legend.

        * Updates to TDisplayFX

        yFIshmael now owrks with TDisplayFX
        TDisplayFX UI changes to make simpler.
        Some abstraction for drawing lines on TDisplayFX

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Create click_train_help.md

        * Update click_train_help.md

        * Screenshots

        * Update click_train_help.md

        * More screenshots

        * Update click_train_help.md

        * Update click_train_help.md

        * Add screenshots

        * Add classifier screenshot

        * Update click_train_help.md

        * Updates and bug fixes to click train detector and CPOD importer

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Add screenshots for click train detector help

        * Screenshots

        * Update click_train_help.md

        * Defult option for CPOD and porpoise to click train detector.

        Also a minor

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Create click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Updates and bug fixes to click train detector and CPOD importer

        * Bug fix for raw spectrogram in TDDisplayFX

        * Update KetosClassifier.java

        * Fix standard classifier JSON logging

        * Fixed bug in sweep classifier when using SoundTrap click detections

        * Added some colour averaging in the TFDisplayFX spectrgoram

        * Bug fix for rainbow click bearings

        Bug fix when rainbow clicks are imported mean bearings cannot be calculated - was an array size issue in DelayGroup

        * Google humpback whale deep learning classifier

        Google's humpback whale deep learning classifier can now be imported.
        Updated TDisplayFX to make the data selection panes cleaner and clearer.
        Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

        * Updated the prediction plots on time display

        Deep learning prediciton plots on the time display have now been updated to have some colour options and also act as a legend.

        * Updates to TDisplayFX

        yFIshmael now owrks with TDisplayFX
        TDisplayFX UI changes to make simpler.
        Some abstraction for drawing lines on TDisplayFX

        * Merge fixes to click train detector

        * Bug fix to UI

        * Updates to FX GUI

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Screenshots

        * Updates and bug fixes to click train detector and CPOD importer

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Updates and bug fixes to click train detector and CPOD importer

        * Fix standard classifier JSON logging

        * Merge fixes to click train detector

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Screenshots

        * Updates and bug fixes to click train detector and CPOD importer

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Screenshots

        * Updates and bug fixes to click train detector and CPOD importer

        * Fix standard classifier JSON logging

        * Google humpback whale deep learning classifier

        Google's humpback whale deep learning classifier can now be imported.
        Updated TDisplayFX to make the data selection panes cleaner and clearer.
        Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

        * Bug fix to UI

        * Bug fixes to FX GUI

        * Updates to click train detector

        * Squashed commit of the following:

        commit 9f998165ee
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Mon May 2 19:40:24 2022 +0100

            Updates to support ContactCollator plugin (#33)

            * Change synchronization on RawDataTransforms soit uses the owner data
            holder, not itself for synchronization. Otherwise you get thread locks.

            * fix problem in SummaryComand

            * Update command line options

            * Change synchronization on RawDataTransforms soit uses the owner data
            holder, not itself for synchronization. Otherwise you get thread locks.

            * Update command line options

            * Update DecimatorParams.java

            * couple of updates to support new contact collator plugin

            * Sorting out sample rate info in clip display to support Contact Collator
            plugin

            * FLAC Speed

            Improve flac speed

            * Update .gitignore

            * Update .gitignore

            * Updates to support new features in Contact Collator

            * Small update to RawDatautils to handle null data

        * Updates to click train detector

        * Squashed commit of the following:

        commit 62b020b320
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Sat May 14 06:52:20 2022 +0100

            Add a new offlinefileslist function

        commit 3a9a5311aa
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Wed Apr 27 09:43:31 2022 +0100

            Update .gitignore

        commit 9f998165ee
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Mon May 2 19:40:24 2022 +0100

            Updates to support ContactCollator plugin (#33)

            * Change synchronization on RawDataTransforms soit uses the owner data
            holder, not itself for synchronization. Otherwise you get thread locks.

            * fix problem in SummaryComand

            * Update command line options

            * Change synchronization on RawDataTransforms soit uses the owner data
            holder, not itself for synchronization. Otherwise you get thread locks.

            * Update command line options

            * Update DecimatorParams.java

            * couple of updates to support new contact collator plugin

            * Sorting out sample rate info in clip display to support Contact Collator
            plugin

            * FLAC Speed

            Improve flac speed

            * Update .gitignore

            * Update .gitignore

            * Updates to support new features in Contact Collator

            * Small update to RawDatautils to handle null data

        * Updated data selector for click train detector

        * Click train detector updates and bug fixes

        Fixed very annoying bug which meant templates did not show properly when the dialog was first opened in swing.

        Added feature to simple classifier were % of clicks of one click classification (or other data selector paramter) can be used to classify.

        * Bug fix and improvements for Ketos

        Ketos models now automatically set the correct sample length when loaded.

        Bug fix for the TDisplayFX - null pointer exception if no class names loaded and sorted recently introduced bug in drawing predictions.

        * Updates to deep learning and FX GUI

        Added some more example sounds to deep learning UI.

        Updated click detector in the FX GUI.

        * PAMGuard FX sound output update

        * Updates to FX GUI

        * Updates to FX GUI

        * Update RawDataTransforms.java

        * Fixes to FX UI

        * Squashed commit of the following:

        commit 11ba8bf91e
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Thu Aug 4 11:45:47 2022 +0100

            MErge from DG Branch (#47)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

            * Click detector display fixes

            1. ICI not displaying correctly
            2. Component sizes in display dialog on hres monitors

            * Work on batch processing, after testing of options to autostart,
            autoexit and set wav file folder, database and binary store.

            * Update MHTClickTrainAlgorithm.java

            Fix unsynchronised access to a datablock in click train detector which was causing index errors.

            * Revamp of offline process messaging and control

            Includes some databsae logging of completed tasks

            * Offline task logging

            Bit more work, including notes and database storage of task
            reprocessing. Guess this could all become 'proper' PAMGuard data and be
            shown in a table on the display but that not priority enough.

            * Dialog packing

            Fix a couple of dialogs which don't back well on HDPI monitors

            * UDP Control

            Added multiport functionality

        commit 9a9f542d95
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Thu Aug 4 11:42:45 2022 +0100

            Merge DG to Main (#46)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

            * Click detector display fixes

            1. ICI not displaying correctly
            2. Component sizes in display dialog on hres monitors

            * Work on batch processing, after testing of options to autostart,
            autoexit and set wav file folder, database and binary store.

            * Update MHTClickTrainAlgorithm.java

            Fix unsynchronised access to a datablock in click train detector which was causing index errors.

            * Revamp of offline process messaging and control

            Includes some databsae logging of completed tasks

            * Offline task logging

            Bit more work, including notes and database storage of task
            reprocessing. Guess this could all become 'proper' PAMGuard data and be
            shown in a table on the display but that not priority enough.

            * Dialog packing

            Fix a couple of dialogs which don't back well on HDPI monitors

            * UDP Control

            Added multiport functionality

        commit 49cd547aee
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Thu Aug 4 11:40:29 2022 +0100

            Merge DG branch (#45)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

            * Click detector display fixes

            1. ICI not displaying correctly
            2. Component sizes in display dialog on hres monitors

            * Work on batch processing, after testing of options to autostart,
            autoexit and set wav file folder, database and binary store.

            * Update MHTClickTrainAlgorithm.java

            Fix unsynchronised access to a datablock in click train detector which was causing index errors.

            * Revamp of offline process messaging and control

            Includes some databsae logging of completed tasks

            * Offline task logging

            Bit more work, including notes and database storage of task
            reprocessing. Guess this could all become 'proper' PAMGuard data and be
            shown in a table on the display but that not priority enough.

            * Dialog packing

            Fix a couple of dialogs which don't back well on HDPI monitors

            * UDP Control

            Added multiport functionality

        commit 016cfd0da5
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Thu Aug 4 11:35:06 2022 +0100

            Dialog positioning

            New functions to better positions dialogs on screen

        commit c9f2ab3e97
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Mon Aug 1 11:13:24 2022 +0100

            puch to main (#44)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

            * Click detector display fixes

            1. ICI not displaying correctly
            2. Component sizes in display dialog on hres monitors

            * Work on batch processing, after testing of options to autostart,
            autoexit and set wav file folder, database and binary store.

            * Update MHTClickTrainAlgorithm.java

            Fix unsynchronised access to a datablock in click train detector which was causing index errors.

            * Revamp of offline process messaging and control

            Includes some databsae logging of completed tasks

            * Offline task logging

            Bit more work, including notes and database storage of task
            reprocessing. Guess this could all become 'proper' PAMGuard data and be
            shown in a table on the display but that not priority enough.

            * Dialog packing

            Fix a couple of dialogs which don't back well on HDPI monitors

        commit 55f5a3fcf1
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Mon Aug 1 10:59:36 2022 +0100

            Group detections menu

            Small changes to limit the number of menu items in "Add to existing
            group" to a maximum of 25 entries.

        commit b3f6c0e665
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Fri Jul 29 10:50:45 2022 +0100

            Handle -nogui option in PamWorker

            PamWorker used to catalog files at startup (if a file folder input
            system is used). This creates a progress dialog. Stop it appearing in
            -nogui operations.

        commit 8569b6b579
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Fri Jul 22 08:30:47 2022 +0100

            Click display fixes (#41)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

            * Click detector display fixes

            1. ICI not displaying correctly
            2. Component sizes in display dialog on hres monitors

        commit 128a512ff6
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Tue Jul 19 16:37:57 2022 +0100

            Another attempt at stopping it crashing on a headless system

            Dealing with displays that get created for clickangle vetos and a call
            to the gui in the click train detector.

        commit 6eaa6e4978
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Tue Jul 19 08:20:07 2022 +0100

            nogoi fix for headless systems. (#40)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

        commit 9fdd30556b
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Tue Jul 12 15:53:07 2022 +0100

            Variable sound output level (#39)

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

        * Bug fixes to click train detector

        Fixed bug with number of coasts in the MHT Kernel
        Added an option for amplitude to have a maximum
        Removed print statements.

        * Bug fix for click train logging

        The size of the string classifers field was dynamically set - this was a bug.

        * Bug fixes to the click train detector

        Bearing classifier section now updates properly when dialog reopened
        Fixed rare bug when garbage bot attempts to find the last data unit in a list of zero units.

        * Squashed commit of the following:

        commit 5a37bfe915
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Fri Aug 19 08:17:06 2022 +0100

            Changes from DG branch (#50)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

            * Click detector display fixes

            1. ICI not displaying correctly
            2. Component sizes in display dialog on hres monitors

            * Work on batch processing, after testing of options to autostart,
            autoexit and set wav file folder, database and binary store.

            * Update MHTClickTrainAlgorithm.java

            Fix unsynchronised access to a datablock in click train detector which was causing index errors.

            * Revamp of offline process messaging and control

            Includes some databsae logging of completed tasks

            * Offline task logging

            Bit more work, including notes and database storage of task
            reprocessing. Guess this could all become 'proper' PAMGuard data and be
            shown in a table on the display but that not priority enough.

            * Dialog packing

            Fix a couple of dialogs which don't back well on HDPI monitors

            * UDP Control

            Added multiport functionality

            * Java version

            Changes unpacker to deal with non numeric characters on Linux

            * Fix to getVersion()

            So new version of this command should now work on Linux and Windows.

            * Multiport test

            Quick tester for multiport comms

            * Spectrogram display

            Stop spectrogram display continually recreating panels since it was
            unsubscribing discarded ones and sometimes causing crash in observable
            notifications.

            * Backup manager bug

            Error if no database. Fixed.

        commit b08e86e330
        Author: Jamie Mac <macster110@gmail.com>
        Date:   Wed Aug 17 09:16:52 2022 +0100

            Bug fix for click train detector (#49)

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Screenshots

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * More screenshots

            * Add screenshots

            * Update click_train_help.md

            * Add classifier screenshot

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Update click_train_help.md

            * Update POM with latest jdl4pam

            * Add screenshots for click train detector help

            * Screenshots

            * Update click_train_help.md

            * Defult option for CPOD and porpoise to click train detector.

            Also a minor

            * Update pom.xml

            * Bug fix for raw spectrogram in TDDisplayFX

            * Update KetosClassifier.java

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Screenshots

            * Update click_train_help.md

            * More screenshots

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots

            * Add classifier screenshot

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots for click train detector help

            * Screenshots

            * Update click_train_help.md

            * Defult option for CPOD and porpoise to click train detector.

            Also a minor

            * Bug fix for raw spectrogram in TDDisplayFX

            * Update KetosClassifier.java

            * Fix standard classifier JSON logging

            * Update click_train_help.md

            * Fixed bug in sweep classifier when using SoundTrap click detections

            * Added some colour averaging in the TFDisplayFX spectrgoram

            * Bug fix for rainbow click bearings

            Bug fix when rainbow clicks are imported mean bearings cannot be calculated - was an array size issue in DelayGroup

            * Google humpback whale deep learning classifier

            Google's humpback whale deep learning classifier can now be imported.
            Updated TDisplayFX to make the data selection panes cleaner and clearer.
            Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

            * Updated the prediction plots on time display

            Deep learning prediciton plots on the time display have now been updated to have some colour options and also act as a legend.

            * Updates to TDisplayFX

            yFIshmael now owrks with TDisplayFX
            TDisplayFX UI changes to make simpler.
            Some abstraction for drawing lines on TDisplayFX

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Screenshots

            * Update click_train_help.md

            * More screenshots

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots

            * Add classifier screenshot

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots for click train detector help

            * Screenshots

            * Update click_train_help.md

            * Defult option for CPOD and porpoise to click train detector.

            Also a minor

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Bug fix for raw spectrogram in TDDisplayFX

            * Update KetosClassifier.java

            * Fix standard classifier JSON logging

            * Fixed bug in sweep classifier when using SoundTrap click detections

            * Added some colour averaging in the TFDisplayFX spectrgoram

            * Bug fix for rainbow click bearings

            Bug fix when rainbow clicks are imported mean bearings cannot be calculated - was an array size issue in DelayGroup

            * Google humpback whale deep learning classifier

            Google's humpback whale deep learning classifier can now be imported.
            Updated TDisplayFX to make the data selection panes cleaner and clearer.
            Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

            * Updated the prediction plots on time display

            Deep learning prediciton plots on the time display have now been updated to have some colour options and also act as a legend.

            * Updates to TDisplayFX

            yFIshmael now owrks with TDisplayFX
            TDisplayFX UI changes to make simpler.
            Some abstraction for drawing lines on TDisplayFX

            * Merge fixes to click train detector

            * Bug fix to UI

            * Updates to FX GUI

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Screenshots

            * Updates and bug fixes to click train detector and CPOD importer

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Updates and bug fixes to click train detector and CPOD importer

            * Fix standard classifier JSON logging

            * Merge fixes to click train detector

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Screenshots

            * Updates and bug fixes to click train detector and CPOD importer

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Screenshots

            * Updates and bug fixes to click train detector and CPOD importer

            * Fix standard classifier JSON logging

            * Google humpback whale deep learning classifier

            Google's humpback whale deep learning classifier can now be imported.
            Updated TDisplayFX to make the data selection panes cleaner and clearer.
            Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

            * Bug fix to UI

            * Bug fixes to FX GUI

            * Updates to click train detector

            * Squashed commit of the following:

            commit 9f998165ee
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Mon May 2 19:40:24 2022 +0100

                Updates to support ContactCollator plugin (#33)

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * fix problem in SummaryComand

                * Update command line options

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * Update command line options

                * Update DecimatorParams.java

                * couple of updates to support new contact collator plugin

                * Sorting out sample rate info in clip display to support Contact Collator
                plugin

                * FLAC Speed

                Improve flac speed

                * Update .gitignore

                * Update .gitignore

                * Updates to support new features in Contact Collator

                * Small update to RawDatautils to handle null data

            * Updates to click train detector

            * Squashed commit of the following:

            commit 62b020b320
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Sat May 14 06:52:20 2022 +0100

                Add a new offlinefileslist function

            commit 3a9a5311aa
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Wed Apr 27 09:43:31 2022 +0100

                Update .gitignore

            commit 9f998165ee
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Mon May 2 19:40:24 2022 +0100

                Updates to support ContactCollator plugin (#33)

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * fix problem in SummaryComand

                * Update command line options

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * Update command line options

                * Update DecimatorParams.java

                * couple of updates to support new contact collator plugin

                * Sorting out sample rate info in clip display to support Contact Collator
                plugin

                * FLAC Speed

                Improve flac speed

                * Update .gitignore

                * Update .gitignore

                * Updates to support new features in Contact Collator

                * Small update to RawDatautils to handle null data

            * Updated data selector for click train detector

            * Click train detector updates and bug fixes

            Fixed very annoying bug which meant templates did not show properly when the dialog was first opened in swing.

            Added feature to simple classifier were % of clicks of one click classification (or other data selector paramter) can be used to classify.

            * Bug fix and improvements for Ketos

            Ketos models now automatically set the correct sample length when loaded.

            Bug fix for the TDisplayFX - null pointer exception if no class names loaded and sorted recently introduced bug in drawing predictions.

            * Updates to deep learning and FX GUI

            Added some more example sounds to deep learning UI.

            Updated click detector in the FX GUI.

            * PAMGuard FX sound output update

            * Updates to FX GUI

            * Updates to FX GUI

            * Update RawDataTransforms.java

            * Fixes to FX UI

            * Squashed commit of the following:

            commit 11ba8bf91e
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Thu Aug 4 11:45:47 2022 +0100

                MErge from DG Branch (#47)

                * Variable sound output level

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

                * Code to support nogui operations when no screens present on headless
                system

                * Fix problem of nogui headless operation trying to access screen size.

                * Click detector display fixes

                1. ICI not displaying correctly
                2. Component sizes in display dialog on hres monitors

                * Work on batch processing, after testing of options to autostart,
                autoexit and set wav file folder, database and binary store.

                * Update MHTClickTrainAlgorithm.java

                Fix unsynchronised access to a datablock in click train detector which was causing index errors.

                * Revamp of offline process messaging and control

                Includes some databsae logging of completed tasks

                * Offline task logging

                Bit more work, including notes and database storage of task
                reprocessing. Guess this could all become 'proper' PAMGuard data and be
                shown in a table on the display but that not priority enough.

                * Dialog packing

                Fix a couple of dialogs which don't back well on HDPI monitors

                * UDP Control

                Added multiport functionality

            commit 9a9f542d95
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Thu Aug 4 11:42:45 2022 +0100

                Merge DG to Main (#46)

                * Variable sound output level

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

                * Code to support nogui operations when no screens present on headless
                system

                * Fix problem of nogui headless operation trying to access screen size.

                * Click detector display fixes

                1. ICI not displaying correctly
                2. Component sizes in display dialog on hres monitors

                * Work on batch processing, after testing of options to autostart,
                autoexit and set wav file folder, database and binary store.

                * Update MHTClickTrainAlgorithm.java

                Fix unsynchronised access to a datablock in click train detector which was causing index errors.

                * Revamp of offline process messaging and control

                Includes some databsae logging of completed tasks

                * Offline task logging

                Bit more work, including notes and database storage of task
                reprocessing. Guess this could all become 'proper' PAMGuard data and be
                shown in a table on the display but that not priority enough.

                * Dialog packing

                Fix a couple of dialogs which don't back well on HDPI monitors

                * UDP Control

                Added multiport functionality

            commit 49cd547aee
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Thu Aug 4 11:40:29 2022 +0100

                Merge DG branch (#45)

                * Variable sound output level

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

                * Code to support nogui operations when no screens present on headless
                system

                * Fix problem of nogui headless operation trying to access screen size.

                * Click detector display fixes

                1. ICI not displaying correctly
                2. Component sizes in display dialog on hres monitors

                * Work on batch processing, after testing of options to autostart,
                autoexit and set wav file folder, database and binary store.

                * Update MHTClickTrainAlgorithm.java

                Fix unsynchronised access to a datablock in click train detector which was causing index errors.

                * Revamp of offline process messaging and control

                Includes some databsae logging of completed tasks

                * Offline task logging

                Bit more work, including notes and database storage of task
                reprocessing. Guess this could all become 'proper' PAMGuard data and be
                shown in a table on the display but that not priority enough.

                * Dialog packing

                Fix a couple of dialogs which don't back well on HDPI monitors

                * UDP Control

                Added multiport functionality

            commit 016cfd0da5
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Thu Aug 4 11:35:06 2022 +0100

                Dialog positioning

                New functions to better positions dialogs on screen

            commit c9f2ab3e97
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Mon Aug 1 11:13:24 2022 +0100

                puch to main (#44)

                * Variable sound output level

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

                * Code to support nogui operations when no screens present on headless
                system

                * Fix problem of nogui headless operation trying to access screen size.

                * Click detector display fixes

                1. ICI not displaying correctly
                2. Component sizes in display dialog on hres monitors

                * Work on batch processing, after testing of options to autostart,
                autoexit and set wav file folder, database and binary store.

                * Update MHTClickTrainAlgorithm.java

                Fix unsynchronised access to a datablock in click train detector which was causing index errors.

                * Revamp of offline process messaging and control

                Includes some databsae logging of completed tasks

                * Offline task logging

                Bit more work, including notes and database storage of task
                reprocessing. Guess this could all become 'proper' PAMGuard data and be
                shown in a table on the display but that not priority enough.

                * Dialog packing

                Fix a couple of dialogs which don't back well on HDPI monitors

            commit 55f5a3fcf1
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Mon Aug 1 10:59:36 2022 +0100

                Group detections menu

                Small changes to limit the number of menu items in "Add to existing
                group" to a maximum of 25 entries.

            commit b3f6c0e665
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Fri Jul 29 10:50:45 2022 +0100

                Handle -nogui option in PamWorker

                PamWorker used to catalog files at startup (if a file folder input
                system is used). This creates a progress dialog. Stop it appearing in
                -nogui operations.

            commit 8569b6b579
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Fri Jul 22 08:30:47 2022 +0100

                Click display fixes (#41)

                * Variable sound output level

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

                * Code to support nogui operations when no screens present on headless
                system

                * Fix problem of nogui headless operation trying to access screen size.

                * Click detector display fixes

                1. ICI not displaying correctly
                2. Component sizes in display dialog on hres monitors

            commit 128a512ff6
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Tue Jul 19 16:37:57 2022 +0100

                Another attempt at stopping it crashing on a headless system

                Dealing with displays that get created for clickangle vetos and a call
                to the gui in the click train detector.

            commit 6eaa6e4978
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Tue Jul 19 08:20:07 2022 +0100

                nogoi fix for headless systems. (#40)

                * Variable sound output level

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

                * Code to support nogui operations when no screens present on headless
                system

                * Fix problem of nogui headless operation trying to access screen size.

            commit 9fdd30556b
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Tue Jul 12 15:53:07 2022 +0100

                Variable sound output level (#39)

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

            * Bug fixes to click train detector

            Fixed bug with number of coasts in the MHT Kernel
            Added an option for amplitude to have a maximum
            Removed print statements.

            * Bug fix for click train logging

            The size of the string classifers field was dynamically set - this was a bug.

            Co-authored-by: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>

        commit ef0330173b
        Author: Jamie Mac <macster110@gmail.com>
        Date:   Mon Aug 8 10:32:19 2022 +0100

            Click trian detector fixes (#48)

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Screenshots

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * More screenshots

            * Add screenshots

            * Update click_train_help.md

            * Add classifier screenshot

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Update click_train_help.md

            * Update POM with latest jdl4pam

            * Add screenshots for click train detector help

            * Screenshots

            * Update click_train_help.md

            * Defult option for CPOD and porpoise to click train detector.

            Also a minor

            * Update pom.xml

            * Bug fix for raw spectrogram in TDDisplayFX

            * Update KetosClassifier.java

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Screenshots

            * Update click_train_help.md

            * More screenshots

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots

            * Add classifier screenshot

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots for click train detector help

            * Screenshots

            * Update click_train_help.md

            * Defult option for CPOD and porpoise to click train detector.

            Also a minor

            * Bug fix for raw spectrogram in TDDisplayFX

            * Update KetosClassifier.java

            * Fix standard classifier JSON logging

            * Update click_train_help.md

            * Fixed bug in sweep classifier when using SoundTrap click detections

            * Added some colour averaging in the TFDisplayFX spectrgoram

            * Bug fix for rainbow click bearings

            Bug fix when rainbow clicks are imported mean bearings cannot be calculated - was an array size issue in DelayGroup

            * Google humpback whale deep learning classifier

            Google's humpback whale deep learning classifier can now be imported.
            Updated TDisplayFX to make the data selection panes cleaner and clearer.
            Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

            * Updated the prediction plots on time display

            Deep learning prediciton plots on the time display have now been updated to have some colour options and also act as a legend.

            * Updates to TDisplayFX

            yFIshmael now owrks with TDisplayFX
            TDisplayFX UI changes to make simpler.
            Some abstraction for drawing lines on TDisplayFX

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Screenshots

            * Update click_train_help.md

            * More screenshots

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots

            * Add classifier screenshot

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots for click train detector help

            * Screenshots

            * Update click_train_help.md

            * Defult option for CPOD and porpoise to click train detector.

            Also a minor

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Bug fix for raw spectrogram in TDDisplayFX

            * Update KetosClassifier.java

            * Fix standard classifier JSON logging

            * Fixed bug in sweep classifier when using SoundTrap click detections

            * Added some colour averaging in the TFDisplayFX spectrgoram

            * Bug fix for rainbow click bearings

            Bug fix when rainbow clicks are imported mean bearings cannot be calculated - was an array size issue in DelayGroup

            * Google humpback whale deep learning classifier

            Google's humpback whale deep learning classifier can now be imported.
            Updated TDisplayFX to make the data selection panes cleaner and clearer.
            Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

            * Updated the prediction plots on time display

            Deep learning prediciton plots on the time display have now been updated to have some colour options and also act as a legend.

            * Updates to TDisplayFX

            yFIshmael now owrks with TDisplayFX
            TDisplayFX UI changes to make simpler.
            Some abstraction for drawing lines on TDisplayFX

            * Merge fixes to click train detector

            * Bug fix to UI

            * Updates to FX GUI

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Screenshots

            * Updates and bug fixes to click train detector and CPOD importer

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Updates and bug fixes to click train detector and CPOD importer

            * Fix standard classifier JSON logging

            * Merge fixes to click train detector

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Screenshots

            * Updates and bug fixes to click train detector and CPOD importer

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Screenshots

            * Updates and bug fixes to click train detector and CPOD importer

            * Fix standard classifier JSON logging

            * Google humpback whale deep learning classifier

            Google's humpback whale deep learning classifier can now be imported.
            Updated TDisplayFX to make the data selection panes cleaner and clearer.
            Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

            * Bug fix to UI

            * Bug fixes to FX GUI

            * Updates to click train detector

            * Squashed commit of the following:

            commit 9f998165ee
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Mon May 2 19:40:24 2022 +0100

                Updates to support ContactCollator plugin (#33)

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * fix problem in SummaryComand

                * Update command line options

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * Update command line options

                * Update DecimatorParams.java

                * couple of updates to support new contact collator plugin

                * Sorting out sample rate info in clip display to support Contact Collator
                plugin

                * FLAC Speed

                Improve flac speed

                * Update .gitignore

                * Update .gitignore

                * Updates to support new features in Contact Collator

                * Small update to RawDatautils to handle null data

            * Updates to click train detector

            * Squashed commit of the following:

            commit 62b020b320
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Sat May 14 06:52:20 2022 +0100

                Add a new offlinefileslist function

            commit 3a9a5311aa
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Wed Apr 27 09:43:31 2022 +0100

                Update .gitignore

            commit 9f998165ee
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Mon May 2 19:40:24 2022 +0100

                Updates to support ContactCollator plugin (#33)

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * fix problem in SummaryComand

                * Update command line options

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * Update command line options

                * Update DecimatorParams.java

                * couple of updates to support new contact collator plugin

                * Sorting out sample rate info in clip display to support Contact Collator
                plugin

                * FLAC Speed

                Improve flac speed

                * Update .gitignore

                * Update .gitignore

                * Updates to support new features in Contact Collator

                * Small update to RawDatautils to handle null data

            * Updated data selector for click train detector

            * Click train detector updates and bug fixes

            Fixed very annoying bug which meant templates did not show properly when the dialog was first opened in swing.

            Added feature to simple classifier were % of clicks of one click classification (or other data selector paramter) can be used to classify.

            * Bug fix and improvements for Ketos

            Ketos models now automatically set the correct sample length when loaded.

            Bug fix for the TDisplayFX - null pointer exception if no class names loaded and sorted recently introduced bug in drawing predictions.

            * Updates to deep learning and FX GUI

            Added some more example sounds to deep learning UI.

            Updated click detector in the FX GUI.

            * PAMGuard FX sound output update

            * Updates to FX GUI

            * Updates to FX GUI

            * Update RawDataTransforms.java

            * Fixes to FX UI

            * Squashed commit of the following:

            commit 11ba8bf91e
            Author: Douglas Gillespie <50671166+…

    * Fixes to click train detector and deep learning

    * Squashed commit of the following:

    commit 313ce0c46f
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Wed Sep 21 15:55:12 2022 +0100

        Help update (#60)

        * Plugin Help

        Small change to Help system so that plugins under development can more
        easily display their help

        * PamModel update

        Notes on how to add a plugin to the model during the plugin development
        phase.

        * Click Train Detector Help

        * Help for backup manager

    commit 290f2fbb95
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Wed Sep 21 15:54:01 2022 +0100

        Click Train Detector help (#59)

        * Plugin Help

        Small change to Help system so that plugins under development can more
        easily display their help

        * PamModel update

        Notes on how to add a plugin to the model during the plugin development
        phase.

        * Click Train Detector Help

        * Help for backup manager

    commit 6aefbc124b
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Tue Sep 20 17:34:30 2022 +0100

        Merge from DG fork (#58)

        * Plugin Help

        Small change to Help system so that plugins under development can more
        easily display their help

        * PamModel update

        Notes on how to add a plugin to the model during the plugin development
        phase.

    commit eb176a4568
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Thu Sep 15 17:10:09 2022 +0100

        Merge from dg (#57)

    commit dee7e1d52e
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Thu Sep 15 17:08:32 2022 +0100

        Merge pull request #13 from PAMGuard/main (#56)

    commit 1ed74bebe3
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Thu Sep 15 17:06:22 2022 +0100

        Merge pull request #13 from PAMGuard/main (#55)

    commit fbe39a7416
    Merge: 0114c80 425dd21
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Thu Sep 15 17:05:16 2022 +0100

        Merge branch 'main' into main

    commit 425dd21d9f
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Thu Sep 15 17:01:45 2022 +0100

        Data selector for whistle classifier

        Added standard data selection options to whistle classifier output, and
        also made it a 'Detector' type for down stream data connections

    commit 0114c80d61
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Thu Sep 15 16:59:37 2022 +0100

        Work on click train detector help

    commit c8e271734f
    Author: Jamie Mac <macster110@gmail.com>
    Date:   Thu Sep 15 09:18:48 2022 +0100

        Bug fixes to matched click classifier (#54)

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Create click_train_help.md

        * Update click_train_help.md

        * Screenshots

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * More screenshots

        * Add screenshots

        * Update click_train_help.md

        * Add classifier screenshot

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Updates and bug fixes to click train detector and CPOD importer

        * Update click_train_help.md

        * Update POM with latest jdl4pam

        * Add screenshots for click train detector help

        * Screenshots

        * Update click_train_help.md

        * Defult option for CPOD and porpoise to click train detector.

        Also a minor

        * Update pom.xml

        * Bug fix for raw spectrogram in TDDisplayFX

        * Update KetosClassifier.java

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Create click_train_help.md

        * Update click_train_help.md

        * Screenshots

        * Update click_train_help.md

        * More screenshots

        * Update click_train_help.md

        * Update click_train_help.md

        * Add screenshots

        * Add classifier screenshot

        * Update click_train_help.md

        * Updates and bug fixes to click train detector and CPOD importer

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Add screenshots for click train detector help

        * Screenshots

        * Update click_train_help.md

        * Defult option for CPOD and porpoise to click train detector.

        Also a minor

        * Bug fix for raw spectrogram in TDDisplayFX

        * Update KetosClassifier.java

        * Fix standard classifier JSON logging

        * Update click_train_help.md

        * Fixed bug in sweep classifier when using SoundTrap click detections

        * Added some colour averaging in the TFDisplayFX spectrgoram

        * Bug fix for rainbow click bearings

        Bug fix when rainbow clicks are imported mean bearings cannot be calculated - was an array size issue in DelayGroup

        * Google humpback whale deep learning classifier

        Google's humpback whale deep learning classifier can now be imported.
        Updated TDisplayFX to make the data selection panes cleaner and clearer.
        Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

        * Updated the prediction plots on time display

        Deep learning prediciton plots on the time display have now been updated to have some colour options and also act as a legend.

        * Updates to TDisplayFX

        yFIshmael now owrks with TDisplayFX
        TDisplayFX UI changes to make simpler.
        Some abstraction for drawing lines on TDisplayFX

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Create click_train_help.md

        * Update click_train_help.md

        * Screenshots

        * Update click_train_help.md

        * More screenshots

        * Update click_train_help.md

        * Update click_train_help.md

        * Add screenshots

        * Add classifier screenshot

        * Update click_train_help.md

        * Updates and bug fixes to click train detector and CPOD importer

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Add screenshots for click train detector help

        * Screenshots

        * Update click_train_help.md

        * Defult option for CPOD and porpoise to click train detector.

        Also a minor

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Create click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Updates and bug fixes to click train detector and CPOD importer

        * Bug fix for raw spectrogram in TDDisplayFX

        * Update KetosClassifier.java

        * Fix standard classifier JSON logging

        * Fixed bug in sweep classifier when using SoundTrap click detections

        * Added some colour averaging in the TFDisplayFX spectrgoram

        * Bug fix for rainbow click bearings

        Bug fix when rainbow clicks are imported mean bearings cannot be calculated - was an array size issue in DelayGroup

        * Google humpback whale deep learning classifier

        Google's humpback whale deep learning classifier can now be imported.
        Updated TDisplayFX to make the data selection panes cleaner and clearer.
        Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

        * Updated the prediction plots on time display

        Deep learning prediciton plots on the time display have now been updated to have some colour options and also act as a legend.

        * Updates to TDisplayFX

        yFIshmael now owrks with TDisplayFX
        TDisplayFX UI changes to make simpler.
        Some abstraction for drawing lines on TDisplayFX

        * Merge fixes to click train detector

        * Bug fix to UI

        * Updates to FX GUI

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Screenshots

        * Updates and bug fixes to click train detector and CPOD importer

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Updates and bug fixes to click train detector and CPOD importer

        * Fix standard classifier JSON logging

        * Merge fixes to click train detector

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Screenshots

        * Updates and bug fixes to click train detector and CPOD importer

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Screenshots

        * Updates and bug fixes to click train detector and CPOD importer

        * Fix standard classifier JSON logging

        * Google humpback whale deep learning classifier

        Google's humpback whale deep learning classifier can now be imported.
        Updated TDisplayFX to make the data selection panes cleaner and clearer.
        Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

        * Bug fix to UI

        * Bug fixes to FX GUI

        * Updates to click train detector

        * Squashed commit of the following:

        commit 9f998165ee
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Mon May 2 19:40:24 2022 +0100

            Updates to support ContactCollator plugin (#33)

            * Change synchronization on RawDataTransforms soit uses the owner data
            holder, not itself for synchronization. Otherwise you get thread locks.

            * fix problem in SummaryComand

            * Update command line options

            * Change synchronization on RawDataTransforms soit uses the owner data
            holder, not itself for synchronization. Otherwise you get thread locks.

            * Update command line options

            * Update DecimatorParams.java

            * couple of updates to support new contact collator plugin

            * Sorting out sample rate info in clip display to support Contact Collator
            plugin

            * FLAC Speed

            Improve flac speed

            * Update .gitignore

            * Update .gitignore

            * Updates to support new features in Contact Collator

            * Small update to RawDatautils to handle null data

        * Updates to click train detector

        * Squashed commit of the following:

        commit 62b020b320
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Sat May 14 06:52:20 2022 +0100

            Add a new offlinefileslist function

        commit 3a9a5311aa
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Wed Apr 27 09:43:31 2022 +0100

            Update .gitignore

        commit 9f998165ee
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Mon May 2 19:40:24 2022 +0100

            Updates to support ContactCollator plugin (#33)

            * Change synchronization on RawDataTransforms soit uses the owner data
            holder, not itself for synchronization. Otherwise you get thread locks.

            * fix problem in SummaryComand

            * Update command line options

            * Change synchronization on RawDataTransforms soit uses the owner data
            holder, not itself for synchronization. Otherwise you get thread locks.

            * Update command line options

            * Update DecimatorParams.java

            * couple of updates to support new contact collator plugin

            * Sorting out sample rate info in clip display to support Contact Collator
            plugin

            * FLAC Speed

            Improve flac speed

            * Update .gitignore

            * Update .gitignore

            * Updates to support new features in Contact Collator

            * Small update to RawDatautils to handle null data

        * Updated data selector for click train detector

        * Click train detector updates and bug fixes

        Fixed very annoying bug which meant templates did not show properly when the dialog was first opened in swing.

        Added feature to simple classifier were % of clicks of one click classification (or other data selector paramter) can be used to classify.

        * Bug fix and improvements for Ketos

        Ketos models now automatically set the correct sample length when loaded.

        Bug fix for the TDisplayFX - null pointer exception if no class names loaded and sorted recently introduced bug in drawing predictions.

        * Updates to deep learning and FX GUI

        Added some more example sounds to deep learning UI.

        Updated click detector in the FX GUI.

        * PAMGuard FX sound output update

        * Updates to FX GUI

        * Updates to FX GUI

        * Update RawDataTransforms.java

        * Fixes to FX UI

        * Squashed commit of the following:

        commit 11ba8bf91e
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Thu Aug 4 11:45:47 2022 +0100

            MErge from DG Branch (#47)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

            * Click detector display fixes

            1. ICI not displaying correctly
            2. Component sizes in display dialog on hres monitors

            * Work on batch processing, after testing of options to autostart,
            autoexit and set wav file folder, database and binary store.

            * Update MHTClickTrainAlgorithm.java

            Fix unsynchronised access to a datablock in click train detector which was causing index errors.

            * Revamp of offline process messaging and control

            Includes some databsae logging of completed tasks

            * Offline task logging

            Bit more work, including notes and database storage of task
            reprocessing. Guess this could all become 'proper' PAMGuard data and be
            shown in a table on the display but that not priority enough.

            * Dialog packing

            Fix a couple of dialogs which don't back well on HDPI monitors

            * UDP Control

            Added multiport functionality

        commit 9a9f542d95
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Thu Aug 4 11:42:45 2022 +0100

            Merge DG to Main (#46)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

            * Click detector display fixes

            1. ICI not displaying correctly
            2. Component sizes in display dialog on hres monitors

            * Work on batch processing, after testing of options to autostart,
            autoexit and set wav file folder, database and binary store.

            * Update MHTClickTrainAlgorithm.java

            Fix unsynchronised access to a datablock in click train detector which was causing index errors.

            * Revamp of offline process messaging and control

            Includes some databsae logging of completed tasks

            * Offline task logging

            Bit more work, including notes and database storage of task
            reprocessing. Guess this could all become 'proper' PAMGuard data and be
            shown in a table on the display but that not priority enough.

            * Dialog packing

            Fix a couple of dialogs which don't back well on HDPI monitors

            * UDP Control

            Added multiport functionality

        commit 49cd547aee
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Thu Aug 4 11:40:29 2022 +0100

            Merge DG branch (#45)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

            * Click detector display fixes

            1. ICI not displaying correctly
            2. Component sizes in display dialog on hres monitors

            * Work on batch processing, after testing of options to autostart,
            autoexit and set wav file folder, database and binary store.

            * Update MHTClickTrainAlgorithm.java

            Fix unsynchronised access to a datablock in click train detector which was causing index errors.

            * Revamp of offline process messaging and control

            Includes some databsae logging of completed tasks

            * Offline task logging

            Bit more work, including notes and database storage of task
            reprocessing. Guess this could all become 'proper' PAMGuard data and be
            shown in a table on the display but that not priority enough.

            * Dialog packing

            Fix a couple of dialogs which don't back well on HDPI monitors

            * UDP Control

            Added multiport functionality

        commit 016cfd0da5
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Thu Aug 4 11:35:06 2022 +0100

            Dialog positioning

            New functions to better positions dialogs on screen

        commit c9f2ab3e97
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Mon Aug 1 11:13:24 2022 +0100

            puch to main (#44)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

            * Click detector display fixes

            1. ICI not displaying correctly
            2. Component sizes in display dialog on hres monitors

            * Work on batch processing, after testing of options to autostart,
            autoexit and set wav file folder, database and binary store.

            * Update MHTClickTrainAlgorithm.java

            Fix unsynchronised access to a datablock in click train detector which was causing index errors.

            * Revamp of offline process messaging and control

            Includes some databsae logging of completed tasks

            * Offline task logging

            Bit more work, including notes and database storage of task
            reprocessing. Guess this could all become 'proper' PAMGuard data and be
            shown in a table on the display but that not priority enough.

            * Dialog packing

            Fix a couple of dialogs which don't back well on HDPI monitors

        commit 55f5a3fcf1
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Mon Aug 1 10:59:36 2022 +0100

            Group detections menu

            Small changes to limit the number of menu items in "Add to existing
            group" to a maximum of 25 entries.

        commit b3f6c0e665
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Fri Jul 29 10:50:45 2022 +0100

            Handle -nogui option in PamWorker

            PamWorker used to catalog files at startup (if a file folder input
            system is used). This creates a progress dialog. Stop it appearing in
            -nogui operations.

        commit 8569b6b579
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Fri Jul 22 08:30:47 2022 +0100

            Click display fixes (#41)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

            * Click detector display fixes

            1. ICI not displaying correctly
            2. Component sizes in display dialog on hres monitors

        commit 128a512ff6
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Tue Jul 19 16:37:57 2022 +0100

            Another attempt at stopping it crashing on a headless system

            Dealing with displays that get created for clickangle vetos and a call
            to the gui in the click train detector.

        commit 6eaa6e4978
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Tue Jul 19 08:20:07 2022 +0100

            nogoi fix for headless systems. (#40)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

        commit 9fdd30556b
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Tue Jul 12 15:53:07 2022 +0100

            Variable sound output level (#39)

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

        * Bug fixes to click train detector

        Fixed bug with number of coasts in the MHT Kernel
        Added an option for amplitude to have a maximum
        Removed print statements.

        * Bug fix for click train logging

        The size of the string classifers field was dynamically set - this was a bug.

        * Bug fixes to the click train detector

        Bearing classifier section now updates properly when dialog reopened
        Fixed rare bug when garbage bot attempts to find the last data unit in a list of zero units.

        * Squashed commit of the following:

        commit 5a37bfe915
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Fri Aug 19 08:17:06 2022 +0100

            Changes from DG branch (#50)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

            * Click detector display fixes

            1. ICI not displaying correctly
            2. Component sizes in display dialog on hres monitors

            * Work on batch processing, after testing of options to autostart,
            autoexit and set wav file folder, database and binary store.

            * Update MHTClickTrainAlgorithm.java

            Fix unsynchronised access to a datablock in click train detector which was causing index errors.

            * Revamp of offline process messaging and control

            Includes some databsae logging of completed tasks

            * Offline task logging

            Bit more work, including notes and database storage of task
            reprocessing. Guess this could all become 'proper' PAMGuard data and be
            shown in a table on the display but that not priority enough.

            * Dialog packing

            Fix a couple of dialogs which don't back well on HDPI monitors

            * UDP Control

            Added multiport functionality

            * Java version

            Changes unpacker to deal with non numeric characters on Linux

            * Fix to getVersion()

            So new version of this command should now work on Linux and Windows.

            * Multiport test

            Quick tester for multiport comms

            * Spectrogram display

            Stop spectrogram display continually recreating panels since it was
            unsubscribing discarded ones and sometimes causing crash in observable
            notifications.

            * Backup manager bug

            Error if no database. Fixed.

        commit b08e86e330
        Author: Jamie Mac <macster110@gmail.com>
        Date:   Wed Aug 17 09:16:52 2022 +0100

            Bug fix for click train detector (#49)

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Screenshots

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * More screenshots

            * Add screenshots

            * Update click_train_help.md

            * Add classifier screenshot

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Update click_train_help.md

            * Update POM with latest jdl4pam

            * Add screenshots for click train detector help

            * Screenshots

            * Update click_train_help.md

            * Defult option for CPOD and porpoise to click train detector.

            Also a minor

            * Update pom.xml

            * Bug fix for raw spectrogram in TDDisplayFX

            * Update KetosClassifier.java

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Screenshots

            * Update click_train_help.md

            * More screenshots

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots

            * Add classifier screenshot

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots for click train detector help

            * Screenshots

            * Update click_train_help.md

            * Defult option for CPOD and porpoise to click train detector.

            Also a minor

            * Bug fix for raw spectrogram in TDDisplayFX

            * Update KetosClassifier.java

            * Fix standard classifier JSON logging

            * Update click_train_help.md

            * Fixed bug in sweep classifier when using SoundTrap click detections

            * Added some colour averaging in the TFDisplayFX spectrgoram

            * Bug fix for rainbow click bearings

            Bug fix when rainbow clicks are imported mean bearings cannot be calculated - was an array size issue in DelayGroup

            * Google humpback whale deep learning classifier

            Google's humpback whale deep learning classifier can now be imported.
            Updated TDisplayFX to make the data selection panes cleaner and clearer.
            Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

            * Updated the prediction plots on time display

            Deep learning prediciton plots on the time display have now been updated to have some colour options and also act as a legend.

            * Updates to TDisplayFX

            yFIshmael now owrks with TDisplayFX
            TDisplayFX UI changes to make simpler.
            Some abstraction for drawing lines on TDisplayFX

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Screenshots

            * Update click_train_help.md

            * More screenshots

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots

            * Add classifier screenshot

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots for click train detector help

            * Screenshots

            * Update click_train_help.md

            * Defult option for CPOD and porpoise to click train detector.

            Also a minor

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Bug fix for raw spectrogram in TDDisplayFX

            * Update KetosClassifier.java

            * Fix standard classifier JSON logging

            * Fixed bug in sweep classifier when using SoundTrap click detections

            * Added some colour averaging in the TFDisplayFX spectrgoram

            * Bug fix for rainbow click bearings

            Bug fix when rainbow clicks are imported mean bearings cannot be calculated - was an array size issue in DelayGroup

            * Google humpback whale deep learning classifier

            Google's humpback whale deep learning classifier can now be imported.
            Updated TDisplayFX to make the data selection panes cleaner and clearer.
            Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

            * Updated the prediction plots on time display

            Deep learning prediciton plots on the time display have now been updated to have some colour options and also act as a legend.

            * Updates to TDisplayFX

            yFIshmael now owrks with TDisplayFX
            TDisplayFX UI changes to make simpler.
            Some abstraction for drawing lines on TDisplayFX

            * Merge fixes to click train detector

            * Bug fix to UI

            * Updates to FX GUI

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Screenshots

            * Updates and bug fixes to click train detector and CPOD importer

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Updates and bug fixes to click train detector and CPOD importer

            * Fix standard classifier JSON logging

            * Merge fixes to click train detector

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Screenshots

            * Updates and bug fixes to click train detector and CPOD importer

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Screenshots

            * Updates and bug fixes to click train detector and CPOD importer

            * Fix standard classifier JSON logging

            * Google humpback whale deep learning classifier

            Google's humpback whale deep learning classifier can now be imported.
            Updated TDisplayFX to make the data selection panes cleaner and clearer.
            Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

            * Bug fix to UI

            * Bug fixes to FX GUI

            * Updates to click train detector

            * Squashed commit of the following:

            commit 9f998165ee
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Mon May 2 19:40:24 2022 +0100

                Updates to support ContactCollator plugin (#33)

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * fix problem in SummaryComand

                * Update command line options

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * Update command line options

                * Update DecimatorParams.java

                * couple of updates to support new contact collator plugin

                * Sorting out sample rate info in clip display to support Contact Collator
                plugin

                * FLAC Speed

                Improve flac speed

                * Update .gitignore

                * Update .gitignore

                * Updates to support new features in Contact Collator

                * Small update to RawDatautils to handle null data

            * Updates to click train detector

            * Squashed commit of the following:

            commit 62b020b320
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Sat May 14 06:52:20 2022 +0100

                Add a new offlinefileslist function

            commit 3a9a5311aa
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Wed Apr 27 09:43:31 2022 +0100

                Update .gitignore

            commit 9f998165ee
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Mon May 2 19:40:24 2022 +0100

                Updates to support ContactCollator plugin (#33)

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * fix problem in SummaryComand

                * Update command line options

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * Update command line options

                * Update DecimatorParams.java

                * couple of updates to support new contact collator plugin

                * Sorting out sample rate info in clip display to support Contact Collator
                plugin

                * FLAC Speed

                Improve flac speed

                * Update .gitignore

                * Update .gitignore

                * Updates to support new features in Contact Collator

                * Small update to RawDatautils to handle null data

            * Updated data selector for click train detector

            * Click train detector updates and bug fixes

            Fixed very annoying bug which meant templates did not show properly when the dialog was first opened in swing.

            Added feature to simple classifier were % of clicks of one click classification (or other data selector paramter) can be used to classify.

            * Bug fix and improvements for Ketos

            Ketos models now automatically set the correct sample length when loaded.

            Bug fix for the TDisplayFX - null pointer exception if no class names loaded and sorted recently introduced bug in drawing predictions.

            * Updates to deep learning and FX GUI

            Added some more example sounds to deep learning UI.

            Updated click detector in the FX GUI.

            * PAMGuard FX sound output update

            * Updates to FX GUI

            * Updates to FX GUI

            * Update RawDataTransforms.java

            * Fixes to FX UI

            * Squashed commit of the following:

            commit 11ba8bf91e
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Thu Aug 4 11:45:47 2022 +0100

                MErge from DG Branch (#47)

                * Variable sound output level

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

                * Code to support nogui operations when no screens present on headless
                system

                * Fix problem of nogui headless operation trying to access screen size.

                * Click detector display fixes

                1. ICI not displaying correctly
                2. Component sizes in display dialog on hres monitors

                * Work on batch processing, after testing of options to autostart,
                autoexit and set wav file folder, database and binary store.

                * Update MHTClickTrainAlgorithm.java

                Fix unsynchronised access to a datablock in click train detector which was causing index errors.

                * Revamp of offline process messaging and control

                Includes some databsae logging of completed tasks

                * Offline task logging

                Bit more work, including notes and database storage of task
                reprocessing. Guess this could all become 'proper' PAMGuard data and be
                shown in a table on the display but that not priority enough.

                * Dialog packing

                Fix a couple of dialogs which don't back well on HDPI monitors

                * UDP Control

                Added multiport functionality

            commit 9a9f542d95
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Thu Aug 4 11:42:45 2022 +0100

                Merge DG to Main (#46)

                * Variable sound output level

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

                * Code to support nogui operations when no screens present on headless
                system

                * Fix problem of nogui headless operation trying to access screen size.

                * Click detector display fixes

                1. ICI not displaying correctly
                2. Component sizes in display dialog on hres monitors

                * Work on batch processing, after testing of options to autostart,
                autoexit and set wav file folder, database and binary store.

                * Update MHTClickTrainAlgorithm.java

                Fix unsynchronised access to a datablock in click train detector which was causing index errors.

                * Revamp of offline process messaging and control

                Includes some databsae logging of completed tasks

                * Offline task logging

                Bit more work, including notes and database storage of task
                reprocessing. Guess this could all become 'proper' PAMGuard data and be
                shown in a table on the display but that not priority enough.

                * Dialog packing

                Fix a couple of dialogs which don't back well on HDPI monitors

                * UDP Control

                Added multiport functionality

            commit 49cd547aee
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Thu Aug 4 11:40:29 2022 +0100

                Merge DG branch (#45)

                * Variable sound output level

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

                * Code to support nogui operations when no screens present on headless
                system

                * Fix problem of nogui headless operation trying to access screen size.

                * Click detector display fixes

                1. ICI not displaying correctly
                2. Component sizes in display dialog on hres monitors

                * Work on batch processing, after testing of options to autostart,
                autoexit and set wav file folder, database and binary store.

                * Update MHTClickTrainAlgorithm.java

                Fix unsynchronised access to a datablock in click train detector which was causing index errors.

                * Revamp of offline process messaging and control

                Includes some databsae logging of completed tasks

                * Offline task logging

                Bit more work, including notes and database storage of task
                reprocessing. Guess this could all become 'proper' PAMGuard data and be
                shown in a table on the display but that not priority enough.

                * Dialog packing

                Fix a couple of dialogs which don't back well on HDPI monitors

                * UDP Control

                Added multiport functionality

            commit 016cfd0da5
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Thu Aug 4 11:35:06 2022 +0100

                Dialog positioning

                New functions to better positions dialogs on screen

            commit c9f2ab3e97
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Mon Aug 1 11:13:24 2022 +0100

                puch to main (#44)

                * Variable sound output level

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

                * Code to support nogui operations when no screens present on headless
                system

                * Fix problem of nogui headless operation trying to access screen size.

                * Click detector display fixes

                1. ICI not displaying correctly
                2. Component sizes in display dialog on hres monitors

                * Work on batch processing, after testing of options to autostart,
                autoexit and set wav file folder, database and binary store.

                * Update MHTClickTrainAlgorithm.java

                Fix unsynchronised access to a datablock in click train detector which was causing index errors.

                * Revamp of offline process messaging and control

                Includes some databsae logging of completed tasks

                * Offline task logging

                Bit more work, including notes and database storage of task
                reprocessing. Guess this could all become 'proper' PAMGuard data and be
                shown in a table on the display but that not priority enough.

                * Dialog packing

                Fix a couple of dialogs which don't back well on HDPI monitors

            commit 55f5a3fcf1
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Mon Aug 1 10:59:36 2022 +0100

                Group detections menu

                Small changes to limit the number of menu items in "Add to existing
                group" to a maximum of 25 entries.

            commit b3f6c0e665
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Fri Jul 29 10:50:45 2022 +0100

                Handle -nogui option in PamWorker

                PamWorker used to catalog files at startup (if a file folder input
                system is used). This creates a progress dialog. Stop it appearing in
                -nogui operations.

            commit 8569b6b579
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Fri Jul 22 08:30:47 2022 +0100

                Click display fixes (#41)

                * Variable sound output level

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

                * Code to support nogui operations when no screens present on headless
                system

                * Fix problem of nogui headless operation trying to access screen size.

                * Click detector display fixes

                1. ICI not displaying correctly
                2. Component sizes in display dialog on hres monitors

            commit 128a512ff6
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Tue Jul 19 16:37:57 2022 +0100

                Another attempt at stopping it crashing on a headless system

                Dealing with displays that get created for clickangle vetos and a call
                to the gui in the click train detector.

            commit 6eaa6e4978
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Tue Jul 19 08:20:07 2022 +0100

                nogoi fix for headless systems. (#40)

                * Variable sound output level

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

                * Code to support nogui operations when no screens present on headless
                system

                * Fix problem of nogui headless operation trying to access screen size.

            commit 9fdd30556b
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Tue Jul 12 15:53:07 2022 +0100

                Variable sound output level (#39)

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

            * Bug fixes to click train detector

            Fixed bug with number of coasts in the MHT Kernel
            Added an option for amplitude to have a maximum
            Removed print statements.

            * Bug fix for click train logging

            The size of the string classifers field was dynamically set - this was a bug.

            Co-authored-by: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>

        commit ef0330173b
        Author: Jamie Mac <macster110@gmail.com>
        Date:   Mon Aug 8 10:32:19 2022 +0100

            Click trian detector fixes (#48)

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Screenshots

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * More screenshots

            * Add screenshots

            * Update click_train_help.md

            * Add classifier screenshot

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Update click_train_help.md

            * Update POM with latest jdl4pam

            * Add screenshots for click train detector help

            * Screenshots

            * Update click_train_help.md

            * Defult option for CPOD and porpoise to click train detector.

            Also a minor

            * Update pom.xml

            * Bug fix for raw spectrogram in TDDisplayFX

            * Update KetosClassifier.java

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Screenshots

            * Update click_train_help.md

            * More screenshots

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots

            * Add classifier screenshot

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots for click train detector help

            * Screenshots

            * Update click_train_help.md

            * Defult option for CPOD and porpoise to click train detector.

            Also a minor

            * Bug fix for raw spectrogram in TDDisplayFX

            * Update KetosClassifier.java

            * Fix standard classifier JSON logging

            * Update click_train_help.md

            * Fixed bug in sweep classifier when using SoundTrap click detections

            * Added some colour averaging in the TFDisplayFX spectrgoram

            * Bug fix for rainbow click bearings

            Bug fix when rainbow clicks are imported mean bearings cannot be calculated - was an array size issue in DelayGroup

            * Google humpback whale deep learning classifier

            Google's humpback whale deep learning classifier can now be imported.
            Updated TDisplayFX to make the data selection panes cleaner and clearer.
            Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

            * Updated the prediction plots on time display

            Deep learning prediciton plots on the time display have now been updated to have some colour options and also act as a legend.

            * Updates to TDisplayFX

            yFIshmael now owrks with TDisplayFX
            TDisplayFX UI changes to make simpler.
            Some abstraction for drawing lines on TDisplayFX

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Screenshots

            * Update click_train_help.md

            * More screenshots

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots

            * Add classifier screenshot

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots for click train detector help

            * Screenshots

            * Update click_train_help.md

            * Defult option for CPOD and porpoise to click train detector.

            Also a minor

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Bug fix for raw spectrogram in TDDisplayFX

            * Update KetosClassifier.java

            * Fix standard classifier JSON logging

            * Fixed bug in sweep classifier when using SoundTrap click detections

            * Added some colour averaging in the TFDisplayFX spectrgoram

            * Bug fix for rainbow click bearings

            Bug fix when rainbow clicks are imported mean bearings cannot be calculated - was an array size issue in DelayGroup

            * Google humpback whale deep learning classifier

            Google's humpback whale deep learning classifier can now be imported.
            Updated TDisplayFX to make the data selection panes cleaner and clearer.
            Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

            * Updated the prediction plots on time display

            Deep learning prediciton plots on the time display have now been updated to have some colour options and also act as a legend.

            * Updates to TDisplayFX

            yFIshmael now owrks with TDisplayFX
            TDisplayFX UI changes to make simpler.
            Some abstraction for drawing lines on TDisplayFX

            * Merge fixes to click train detector

            * Bug fix to UI

            * Updates to FX GUI

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Screenshots

            * Updates and bug fixes to click train detector and CPOD importer

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Updates and bug fixes to click train detector and CPOD importer

            * Fix standard classifier JSON logging

            * Merge fixes to click train detector

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Screenshots

            * Updates and bug fixes to click train detector and CPOD importer

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Screenshots

            * Updates and bug fixes to click train detector and CPOD importer

            * Fix standard classifier JSON logging

            * Google humpback whale deep learning classifier

            Google's humpback whale deep learning classifier can now be imported.
            Updated TDisplayFX to make the data selection panes cleaner and clearer.
            Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

            * Bug fix to UI

            * Bug fixes to FX GUI

            * Updates to click train detector

            * Squashed commit of the following:

            commit 9f998165ee
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Mon May 2 19:40:24 2022 +0100

                Updates to support ContactCollator plugin (#33)

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * fix problem in SummaryComand

                * Update command line options

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * Update command line options

                * Update DecimatorParams.java

                * couple of updates to support new contact collator plugin

                * Sorting out sample rate info in clip display to support Contact Collator
                plugin

                * FLAC Speed

                Improve flac speed

                * Update .gitignore

                * Update .gitignore

                * Updates to support new features in Contact Collator

                * Small update to RawDatautils to handle null data

            * Updates to click train detector

            * Squashed commit of the following:

            commit 62b020b320
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Sat May 14 06:52:20 2022 +0100

                Add a new offlinefileslist function

            commit 3a9a5311aa
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Wed Apr 27 09:43:31 2022 +0100

                Update .gitignore

            commit 9f998165ee
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Mon May 2 19:40:24 2022 +0100

                Updates to support ContactCollator plugin (#33)

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * fix problem in SummaryComand

                * Update command line options

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * Update command line options

                * Update DecimatorParams.java

                * couple of updates to support new contact collator plugin

                * Sorting out sample rate info in clip display to support Contact Collator
                plugin

                * FLAC Speed

                Improve flac speed

                * Update .gitignore

                * Update .gitignore

                * Updates to support new features in Contact Collator

                * Small update to RawDatautils to handle null data

            * Updated data selector for click train detector

            * Click train detector updates and bug fixes

            Fixed very annoying bug which meant templates did not show properly when the dialog was first opened in swing.

            Added feature to simple classifier were % of clicks of one click classification (or other data selector paramter) can be used to classify.

            * Bug fix and improvements for Ketos

            Ketos models now automatically set the correct sample length when loaded.

            Bug fix for the TDisplayFX - null pointer exception if no class names loaded and sorted recently introduced bug in drawing predictions.

            * Updates to deep learning and FX GUI

            Added some more example sounds to deep learning UI.

            Updated click detector in the FX GUI.

            * PAMGuard FX sound output update

            * Updates to FX GUI

            * Updates to FX GUI

            * Update RawDataTransforms.java

            * Fixes to FX UI

            * Squashed commit of the following:

            commit 11ba8bf91e
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Thu Aug 4 11:45:47 2022 +0100

                MErge from DG Branch (#47)

                * Variable sound output level

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher t…

    * fix bug in TDOA

    * Squashed commit of the following:

    commit 149dfab281
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Fri Sep 30 09:56:13 2022 +0100

        Work on bug fixes in CTD classifier (#72)

    commit 91a704b07a
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Fri Sep 30 09:54:33 2022 +0100

        Work on bug fixes in CTD classifier (#71)

    commit d01576c855
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Fri Sep 30 09:53:51 2022 +0100

        Work on bug fixes in CTD classifier (#70)

    commit 11bed6ffba
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Thu Sep 29 14:56:29 2022 +0100

        Work on bug fixes in CTD classifier (#69)

    commit fccc0a715d
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Thu Sep 29 14:54:30 2022 +0100

        Work on bug fixes in CTD classifier

    commit 5983f30ded
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Tue Sep 27 16:44:12 2022 +0100

        Delete C:\temp\PamGuardTesting 2_02_04f\PAMBinary directory

        Get rid of a folder of pgdf files that Jamie had added to the repo

    commit 075aceb4aa
    Author: Jamie Mac <macster110@gmail.com>
    Date:   Tue Sep 27 16:41:05 2022 +0100

        Click train detector bug fix (#68)

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Create click_train_help.md

        * Update click_train_help.md

        * Screenshots

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * More screenshots

        * Add screenshots

        * Update click_train_help.md

        * Add classifier screenshot

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Updates and bug fixes to click train detector and CPOD importer

        * Update click_train_help.md

        * Update POM with latest jdl4pam

        * Add screenshots for click train detector help

        * Screenshots

        * Update click_train_help.md

        * Defult option for CPOD and porpoise to click train detector.

        Also a minor

        * Update pom.xml

        * Bug fix for raw spectrogram in TDDisplayFX

        * Update KetosClassifier.java

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Create click_train_help.md

        * Update click_train_help.md

        * Screenshots

        * Update click_train_help.md

        * More screenshots

        * Update click_train_help.md

        * Update click_train_help.md

        * Add screenshots

        * Add classifier screenshot

        * Update click_train_help.md

        * Updates and bug fixes to click train detector and CPOD importer

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Add screenshots for click train detector help

        * Screenshots

        * Update click_train_help.md

        * Defult option for CPOD and porpoise to click train detector.

        Also a minor

        * Bug fix for raw spectrogram in TDDisplayFX

        * Update KetosClassifier.java

        * Fix standard classifier JSON logging

        * Update click_train_help.md

        * Fixed bug in sweep classifier when using SoundTrap click detections

        * Added some colour averaging in the TFDisplayFX spectrgoram

        * Bug fix for rainbow click bearings

        Bug fix when rainbow clicks are imported mean bearings cannot be calculated - was an array size issue in DelayGroup

        * Google humpback whale deep learning classifier

        Google's humpback whale deep learning classifier can now be imported.
        Updated TDisplayFX to make the data selection panes cleaner and clearer.
        Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

        * Updated the prediction plots on time display

        Deep learning prediciton plots on the time display have now been updated to have some colour options and also act as a legend.

        * Updates to TDisplayFX

        yFIshmael now owrks with TDisplayFX
        TDisplayFX UI changes to make simpler.
        Some abstraction for drawing lines on TDisplayFX

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Create click_train_help.md

        * Update click_train_help.md

        * Screenshots

        * Update click_train_help.md

        * More screenshots

        * Update click_train_help.md

        * Update click_train_help.md

        * Add screenshots

        * Add classifier screenshot

        * Update click_train_help.md

        * Updates and bug fixes to click train detector and CPOD importer

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Add screenshots for click train detector help

        * Screenshots

        * Update click_train_help.md

        * Defult option for CPOD and porpoise to click train detector.

        Also a minor

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Create click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Updates and bug fixes to click train detector and CPOD importer

        * Bug fix for raw spectrogram in TDDisplayFX

        * Update KetosClassifier.java

        * Fix standard classifier JSON logging

        * Fixed bug in sweep classifier when using SoundTrap click detections

        * Added some colour averaging in the TFDisplayFX spectrgoram

        * Bug fix for rainbow click bearings

        Bug fix when rainbow clicks are imported mean bearings cannot be calculated - was an array size issue in DelayGroup

        * Google humpback whale deep learning classifier

        Google's humpback whale deep learning classifier can now be imported.
        Updated TDisplayFX to make the data selection panes cleaner and clearer.
        Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

        * Updated the prediction plots on time display

        Deep learning prediciton plots on the time display have now been updated to have some colour options and also act as a legend.

        * Updates to TDisplayFX

        yFIshmael now owrks with TDisplayFX
        TDisplayFX UI changes to make simpler.
        Some abstraction for drawing lines on TDisplayFX

        * Merge fixes to click train detector

        * Bug fix to UI

        * Updates to FX GUI

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Screenshots

        * Updates and bug fixes to click train detector and CPOD importer

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Updates and bug fixes to click train detector and CPOD importer

        * Fix standard classifier JSON logging

        * Merge fixes to click train detector

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Screenshots

        * Updates and bug fixes to click train detector and CPOD importer

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Screenshots

        * Updates and bug fixes to click train detector and CPOD importer

        * Fix standard classifier JSON logging

        * Google humpback whale deep learning classifier

        Google's humpback whale deep learning classifier can now be imported.
        Updated TDisplayFX to make the data selection panes cleaner and clearer.
        Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

        * Bug fix to UI

        * Bug fixes to FX GUI

        * Updates to click train detector

        * Squashed commit of the following:

        commit 9f998165ee
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Mon May 2 19:40:24 2022 +0100

            Updates to support ContactCollator plugin (#33)

            * Change synchronization on RawDataTransforms soit uses the owner data
            holder, not itself for synchronization. Otherwise you get thread locks.

            * fix problem in SummaryComand

            * Update command line options

            * Change synchronization on RawDataTransforms soit uses the owner data
            holder, not itself for synchronization. Otherwise you get thread locks.

            * Update command line options

            * Update DecimatorParams.java

            * couple of updates to support new contact collator plugin

            * Sorting out sample rate info in clip display to support Contact Collator
            plugin

            * FLAC Speed

            Improve flac speed

            * Update .gitignore

            * Update .gitignore

            * Updates to support new features in Contact Collator

            * Small update to RawDatautils to handle null data

        * Updates to click train detector

        * Squashed commit of the following:

        commit 62b020b320
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Sat May 14 06:52:20 2022 +0100

            Add a new offlinefileslist function

        commit 3a9a5311aa
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Wed Apr 27 09:43:31 2022 +0100

            Update .gitignore

        commit 9f998165ee
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Mon May 2 19:40:24 2022 +0100

            Updates to support ContactCollator plugin (#33)

            * Change synchronization on RawDataTransforms soit uses the owner data
            holder, not itself for synchronization. Otherwise you get thread locks.

            * fix problem in SummaryComand

            * Update command line options

            * Change synchronization on RawDataTransforms soit uses the owner data
            holder, not itself for synchronization. Otherwise you get thread locks.

            * Update command line options

            * Update DecimatorParams.java

            * couple of updates to support new contact collator plugin

            * Sorting out sample rate info in clip display to support Contact Collator
            plugin

            * FLAC Speed

            Improve flac speed

            * Update .gitignore

            * Update .gitignore

            * Updates to support new features in Contact Collator

            * Small update to RawDatautils to handle null data

        * Updated data selector for click train detector

        * Click train detector updates and bug fixes

        Fixed very annoying bug which meant templates did not show properly when the dialog was first opened in swing.

        Added feature to simple classifier were % of clicks of one click classification (or other data selector paramter) can be used to classify.

        * Bug fix and improvements for Ketos

        Ketos models now automatically set the correct sample length when loaded.

        Bug fix for the TDisplayFX - null pointer exception if no class names loaded and sorted recently introduced bug in drawing predictions.

        * Updates to deep learning and FX GUI

        Added some more example sounds to deep learning UI.

        Updated click detector in the FX GUI.

        * PAMGuard FX sound output update

        * Updates to FX GUI

        * Updates to FX GUI

        * Update RawDataTransforms.java

        * Fixes to FX UI

        * Squashed commit of the following:

        commit 11ba8bf91e
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Thu Aug 4 11:45:47 2022 +0100

            MErge from DG Branch (#47)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

            * Click detector display fixes

            1. ICI not displaying correctly
            2. Component sizes in display dialog on hres monitors

            * Work on batch processing, after testing of options to autostart,
            autoexit and set wav file folder, database and binary store.

            * Update MHTClickTrainAlgorithm.java

            Fix unsynchronised access to a datablock in click train detector which was causing index errors.

            * Revamp of offline process messaging and control

            Includes some databsae logging of completed tasks

            * Offline task logging

            Bit more work, including notes and database storage of task
            reprocessing. Guess this could all become 'proper' PAMGuard data and be
            shown in a table on the display but that not priority enough.

            * Dialog packing

            Fix a couple of dialogs which don't back well on HDPI monitors

            * UDP Control

            Added multiport functionality

        commit 9a9f542d95
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Thu Aug 4 11:42:45 2022 +0100

            Merge DG to Main (#46)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

            * Click detector display fixes

            1. ICI not displaying correctly
            2. Component sizes in display dialog on hres monitors

            * Work on batch processing, after testing of options to autostart,
            autoexit and set wav file folder, database and binary store.

            * Update MHTClickTrainAlgorithm.java

            Fix unsynchronised access to a datablock in click train detector which was causing index errors.

            * Revamp of offline process messaging and control

            Includes some databsae logging of completed tasks

            * Offline task logging

            Bit more work, including notes and database storage of task
            reprocessing. Guess this could all become 'proper' PAMGuard data and be
            shown in a table on the display but that not priority enough.

            * Dialog packing

            Fix a couple of dialogs which don't back well on HDPI monitors

            * UDP Control

            Added multiport functionality

        commit 49cd547aee
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Thu Aug 4 11:40:29 2022 +0100

            Merge DG branch (#45)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

            * Click detector display fixes

            1. ICI not displaying correctly
            2. Component sizes in display dialog on hres monitors

            * Work on batch processing, after testing of options to autostart,
            autoexit and set wav file folder, database and binary store.

            * Update MHTClickTrainAlgorithm.java

            Fix unsynchronised access to a datablock in click train detector which was causing index errors.

            * Revamp of offline process messaging and control

            Includes some databsae logging of completed tasks

            * Offline task logging

            Bit more work, including notes and database storage of task
            reprocessing. Guess this could all become 'proper' PAMGuard data and be
            shown in a table on the display but that not priority enough.

            * Dialog packing

            Fix a couple of dialogs which don't back well on HDPI monitors

            * UDP Control

            Added multiport functionality

        commit 016cfd0da5
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Thu Aug 4 11:35:06 2022 +0100

            Dialog positioning

            New functions to better positions dialogs on screen

        commit c9f2ab3e97
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Mon Aug 1 11:13:24 2022 +0100

            puch to main (#44)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

            * Click detector display fixes

            1. ICI not displaying correctly
            2. Component sizes in display dialog on hres monitors

            * Work on batch processing, after testing of options to autostart,
            autoexit and set wav file folder, database and binary store.

            * Update MHTClickTrainAlgorithm.java

            Fix unsynchronised access to a datablock in click train detector which was causing index errors.

            * Revamp of offline process messaging and control

            Includes some databsae logging of completed tasks

            * Offline task logging

            Bit more work, including notes and database storage of task
            reprocessing. Guess this could all become 'proper' PAMGuard data and be
            shown in a table on the display but that not priority enough.

            * Dialog packing

            Fix a couple of dialogs which don't back well on HDPI monitors

        commit 55f5a3fcf1
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Mon Aug 1 10:59:36 2022 +0100

            Group detections menu

            Small changes to limit the number of menu items in "Add to existing
            group" to a maximum of 25 entries.

        commit b3f6c0e665
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Fri Jul 29 10:50:45 2022 +0100

            Handle -nogui option in PamWorker

            PamWorker used to catalog files at startup (if a file folder input
            system is used). This creates a progress dialog. Stop it appearing in
            -nogui operations.

        commit 8569b6b579
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Fri Jul 22 08:30:47 2022 +0100

            Click display fixes (#41)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

            * Click detector display fixes

            1. ICI not displaying correctly
            2. Component sizes in display dialog on hres monitors

        commit 128a512ff6
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Tue Jul 19 16:37:57 2022 +0100

            Another attempt at stopping it crashing on a headless system

            Dealing with displays that get created for clickangle vetos and a call
            to the gui in the click train detector.

        commit 6eaa6e4978
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Tue Jul 19 08:20:07 2022 +0100

            nogoi fix for headless systems. (#40)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

        commit 9fdd30556b
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Tue Jul 12 15:53:07 2022 +0100

            Variable sound output level (#39)

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

        * Bug fixes to click train detector

        Fixed bug with number of coasts in the MHT Kernel
        Added an option for amplitude to have a maximum
        Removed print statements.

        * Bug fix for click train logging

        The size of the string classifers field was dynamically set - this was a bug.

        * Bug fixes to the click train detector

        Bearing classifier section now updates properly when dialog reopened
        Fixed rare bug when garbage bot attempts to find the last data unit in a list of zero units.

        * Squashed commit of the following:

        commit 5a37bfe915
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Fri Aug 19 08:17:06 2022 +0100

            Changes from DG branch (#50)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

            * Click detector display fixes

            1. ICI not displaying correctly
            2. Component sizes in display dialog on hres monitors

            * Work on batch processing, after testing of options to autostart,
            autoexit and set wav file folder, database and binary store.

            * Update MHTClickTrainAlgorithm.java

            Fix unsynchronised access to a datablock in click train detector which was causing index errors.

            * Revamp of offline process messaging and control

            Includes some databsae logging of completed tasks

            * Offline task logging

            Bit more work, including notes and database storage of task
            reprocessing. Guess this could all become 'proper' PAMGuard data and be
            shown in a table on the display but that not priority enough.

            * Dialog packing

            Fix a couple of dialogs which don't back well on HDPI monitors

            * UDP Control

            Added multiport functionality

            * Java version

            Changes unpacker to deal with non numeric characters on Linux

            * Fix to getVersion()

            So new version of this command should now work on Linux and Windows.

            * Multiport test

            Quick tester for multiport comms

            * Spectrogram display

            Stop spectrogram display continually recreating panels since it was
            unsubscribing discarded ones and sometimes causing crash in observable
            notifications.

            * Backup manager bug

            Error if no database. Fixed.

        commit b08e86e330
        Author: Jamie Mac <macster110@gmail.com>
        Date:   Wed Aug 17 09:16:52 2022 +0100

            Bug fix for click train detector (#49)

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Screenshots

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * More screenshots

            * Add screenshots

            * Update click_train_help.md

            * Add classifier screenshot

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Update click_train_help.md

            * Update POM with latest jdl4pam

            * Add screenshots for click train detector help

            * Screenshots

            * Update click_train_help.md

            * Defult option for CPOD and porpoise to click train detector.

            Also a minor

            * Update pom.xml

            * Bug fix for raw spectrogram in TDDisplayFX

            * Update KetosClassifier.java

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Screenshots

            * Update click_train_help.md

            * More screenshots

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots

            * Add classifier screenshot

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots for click train detector help

            * Screenshots

            * Update click_train_help.md

            * Defult option for CPOD and porpoise to click train detector.

            Also a minor

            * Bug fix for raw spectrogram in TDDisplayFX

            * Update KetosClassifier.java

            * Fix standard classifier JSON logging

            * Update click_train_help.md

            * Fixed bug in sweep classifier when using SoundTrap click detections

            * Added some colour averaging in the TFDisplayFX spectrgoram

            * Bug fix for rainbow click bearings

            Bug fix when rainbow clicks are imported mean bearings cannot be calculated - was an array size issue in DelayGroup

            * Google humpback whale deep learning classifier

            Google's humpback whale deep learning classifier can now be imported.
            Updated TDisplayFX to make the data selection panes cleaner and clearer.
            Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

            * Updated the prediction plots on time display

            Deep learning prediciton plots on the time display have now been updated to have some colour options and also act as a legend.

            * Updates to TDisplayFX

            yFIshmael now owrks with TDisplayFX
            TDisplayFX UI changes to make simpler.
            Some abstraction for drawing lines on TDisplayFX

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Screenshots

            * Update click_train_help.md

            * More screenshots

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots

            * Add classifier screenshot

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots for click train detector help

            * Screenshots

            * Update click_train_help.md

            * Defult option for CPOD and porpoise to click train detector.

            Also a minor

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Bug fix for raw spectrogram in TDDisplayFX

            * Update KetosClassifier.java

            * Fix standard classifier JSON logging

            * Fixed bug in sweep classifier when using SoundTrap click detections

            * Added some colour averaging in the TFDisplayFX spectrgoram

            * Bug fix for rainbow click bearings

            Bug fix when rainbow clicks are imported mean bearings cannot be calculated - was an array size issue in DelayGroup

            * Google humpback whale deep learning classifier

            Google's humpback whale deep learning classifier can now be imported.
            Updated TDisplayFX to make the data selection panes cleaner and clearer.
            Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

            * Updated the prediction plots on time display

            Deep learning prediciton plots on the time display have now been updated to have some colour options and also act as a legend.

            * Updates to TDisplayFX

            yFIshmael now owrks with TDisplayFX
            TDisplayFX UI changes to make simpler.
            Some abstraction for drawing lines on TDisplayFX

            * Merge fixes to click train detector

            * Bug fix to UI

            * Updates to FX GUI

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Screenshots

            * Updates and bug fixes to click train detector and CPOD importer

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Updates and bug fixes to click train detector and CPOD importer

            * Fix standard classifier JSON logging

            * Merge fixes to click train detector

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Screenshots

            * Updates and bug fixes to click train detector and CPOD importer

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Screenshots

            * Updates and bug fixes to click train detector and CPOD importer

            * Fix standard classifier JSON logging

            * Google humpback whale deep learning classifier

            Google's humpback whale deep learning classifier can now be imported.
            Updated TDisplayFX to make the data selection panes cleaner and clearer.
            Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

            * Bug fix to UI

            * Bug fixes to FX GUI

            * Updates to click train detector

            * Squashed commit of the following:

            commit 9f998165ee
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Mon May 2 19:40:24 2022 +0100

                Updates to support ContactCollator plugin (#33)

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * fix problem in SummaryComand

                * Update command line options

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * Update command line options

                * Update DecimatorParams.java

                * couple of updates to support new contact collator plugin

                * Sorting out sample rate info in clip display to support Contact Collator
                plugin

                * FLAC Speed

                Improve flac speed

                * Update .gitignore

                * Update .gitignore

                * Updates to support new features in Contact Collator

                * Small update to RawDatautils to handle null data

            * Updates to click train detector

            * Squashed commit of the following:

            commit 62b020b320
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Sat May 14 06:52:20 2022 +0100

                Add a new offlinefileslist function

            commit 3a9a5311aa
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Wed Apr 27 09:43:31 2022 +0100

                Update .gitignore

            commit 9f998165ee
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Mon May 2 19:40:24 2022 +0100

                Updates to support ContactCollator plugin (#33)

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * fix problem in SummaryComand

                * Update command line options

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * Update command line options

                * Update DecimatorParams.java

                * couple of updates to support new contact collator plugin

                * Sorting out sample rate info in clip display to support Contact Collator
                plugin

                * FLAC Speed

                Improve flac speed

                * Update .gitignore

                * Update .gitignore

                * Updates to support new features in Contact Collator

                * Small update to RawDatautils to handle null data

            * Updated data selector for click train detector

            * Click train detector updates and bug fixes

            Fixed very annoying bug which meant templates did not show properly when the dialog was first opened in swing.

            Added feature to simple classifier were % of clicks of one click classification (or other data selector paramter) can be used to classify.

            * Bug fix and improvements for Ketos

            Ketos models now automatically set the correct sample length when loaded.

            Bug fix for the TDisplayFX - null pointer exception if no class names loaded and sorted recently introduced bug in drawing predictions.

            * Updates to deep learning and FX GUI

            Added some more example sounds to deep learning UI.

            Updated click detector in the FX GUI.

            * PAMGuard FX sound output update

            * Updates to FX GUI

            * Updates to FX GUI

            * Update RawDataTransforms.java

            * Fixes to FX UI

            * Squashed commit of the following:

            commit 11ba8bf91e
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Thu Aug 4 11:45:47 2022 +0100

                MErge from DG Branch (#47)

                * Variable sound output level

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

                * Code to support nogui operations when no screens present on headless
                system

                * Fix problem of nogui headless operation trying to access screen size.

                * Click detector display fixes

                1. ICI not displaying correctly
                2. Component sizes in display dialog on hres monitors

                * Work on batch processing, after testing of options to autostart,
                autoexit and set wav file folder, database and binary store.

                * Update MHTClickTrainAlgorithm.java

                Fix unsynchronised access to a datablock in click train detector which was causing index errors.

                * Revamp of offline process messaging and control

                Includes some databsae logging of completed tasks

                * Offline task logging

                Bit more work, including notes and database storage of task
                reprocessing. Guess this could all become 'proper' PAMGuard data and be
                shown in a table on the display but that not priority enough.

                * Dialog packing

                Fix a couple of dialogs which don't back well on HDPI monitors

                * UDP Control

                Added multiport functionality

            commit 9a9f542d95
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Thu Aug 4 11:42:45 2022 +0100

                Merge DG to Main (#46)

                * Variable sound output level

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

                * Code to support nogui operations when no screens present on headless
                system

                * Fix problem of nogui headless operation trying to access screen size.

                * Click detector display fixes

                1. ICI not displaying correctly
                2. Component sizes in display dialog on hres monitors

                * Work on batch processing, after testing of options to autostart,
                autoexit and set wav file folder, database and binary store.

                * Update MHTClickTrainAlgorithm.java

                Fix unsynchronised access to a datablock in click train detector which was causing index errors.

                * Revamp of offline process messaging and control

                Includes some databsae logging of completed tasks

                * Offline task logging

                Bit more work, including notes and database storage of task
                reprocessing. Guess this could all become 'proper' PAMGuard data and be
                shown in a table on the display but that not priority enough.

                * Dialog packing

                Fix a couple of dialogs which don't back well on HDPI monitors

                * UDP Control

                Added multiport functionality

            commit 49cd547aee
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Thu Aug 4 11:40:29 2022 +0100

                Merge DG branch (#45)

                * Variable sound output level

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

                * Code to support nogui operations when no screens present on headless
                system

                * Fix problem of nogui headless operation trying to access screen size.

                * Click detector display fixes

                1. ICI not displaying correctly
                2. Component sizes in display dialog on hres monitors

                * Work on batch processing, after testing of options to autostart,
                autoexit and set wav file folder, database and binary store.

                * Update MHTClickTrainAlgorithm.java

                Fix unsynchronised access to a datablock in click train detector which was causing index errors.

                * Revamp of offline process messaging and control

                Includes some databsae logging of completed tasks

                * Offline task logging

                Bit more work, including notes and database storage of task
                reprocessing. Guess this could all become 'proper' PAMGuard data and be
                shown in a table on the display but that not priority enough.

                * Dialog packing

                Fix a couple of dialogs which don't back well on HDPI monitors

                * UDP Control

                Added multiport functionality

            commit 016cfd0da5
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Thu Aug 4 11:35:06 2022 +0100

                Dialog positioning

                New functions to better positions dialogs on screen

            commit c9f2ab3e97
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Mon Aug 1 11:13:24 2022 +0100

                puch to main (#44)

                * Variable sound output level

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

                * Code to support nogui operations when no screens present on headless
                system

                * Fix problem of nogui headless operation trying to access screen size.

                * Click detector display fixes

                1. ICI not displaying correctly
                2. Component sizes in display dialog on hres monitors

                * Work on batch processing, after testing of options to autostart,
                autoexit and set wav file folder, database and binary store.

                * Update MHTClickTrainAlgorithm.java

                Fix unsynchronised access to a datablock in click train detector which was causing index errors.

                * Revamp of offline process messaging and control

                Includes some databsae logging of completed tasks

                * Offline task logging

                Bit more work, including notes and database storage of task
                reprocessing. Guess this could all become 'proper' PAMGuard data and be
                shown in a table on the display but that not priority enough.

                * Dialog packing

                Fix a couple of dialogs which don't back well on HDPI monitors

            commit 55f5a3fcf1
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Mon Aug 1 10:59:36 2022 +0100

                Group detections menu

                Small changes to limit the number of menu items in "Add to existing
                group" to a maximum of 25 entries.

            commit b3f6c0e665
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Fri Jul 29 10:50:45 2022 +0100

                Handle -nogui option in PamWorker

                PamWorker used to catalog files at startup (if a file folder input
                system is used). This creates a progress dialog. Stop it appearing in
                -nogui operations.

            commit 8569b6b579
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Fri Jul 22 08:30:47 2022 +0100

                Click display fixes (#41)

                * Variable sound output level

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

                * Code to support nogui operations when no screens present on headless
                system

                * Fix problem of nogui headless operation trying to access screen size.

                * Click detector display fixes

                1. ICI not displaying correctly
                2. Component sizes in display dialog on hres monitors

            commit 128a512ff6
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Tue Jul 19 16:37:57 2022 +0100

                Another attempt at stopping it crashing on a headless system

                Dealing with displays that get created for clickangle vetos and a call
                to the gui in the click train detector.

            commit 6eaa6e4978
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Tue Jul 19 08:20:07 2022 +0100

                nogoi fix for headless systems. (#40)

                * Variable sound output level

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

                * Code to support nogui operations when no screens present on headless
                system

                * Fix problem of nogui headless operation trying to access screen size.

            commit 9fdd30556b
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Tue Jul 12 15:53:07 2022 +0100

                Variable sound output level (#39)

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

            * Bug fixes to click train detector

            Fixed bug with number of coasts in the MHT Kernel
            Added an option for amplitude to have a maximum
            Removed print statements.

            * Bug fix for click train logging

            The size of the string classifers field was dynamically set - this was a bug.

            Co-authored-by: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>

        commit ef0330173b
        Author: Jamie Mac <macster110@gmail.com>
        Date:   Mon Aug 8 10:32:19 2022 +0100

            Click trian detector fixes (#48)

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Screenshots

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * More screenshots

            * Add screenshots

            * Update click_train_help.md

            * Add classifier screenshot

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Update click_train_help.md

            * Update POM with latest jdl4pam

            * Add screenshots for click train detector help

            * Screenshots

            * Update click_train_help.md

            * Defult option for CPOD and porpoise to click train detector.

            Also a minor

            * Update pom.xml

            * Bug fix for raw spectrogram in TDDisplayFX

            * Update KetosClassifier.java

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Screenshots

            * Update click_train_help.md

            * More screenshots

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots

            * Add classifier screenshot

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots for click train detector help

            * Screenshots

            * Update click_train_help.md

            * Defult option for CPOD and porpoise to click train detector.

            Also a minor

            * Bug fix for raw spectrogram in TDDisplayFX

            * Update KetosClassifier.java

            * Fix standard classifier JSON logging

            * Update click_train_help.md

            * Fixed bug in sweep classifier when using SoundTrap click detections

            * Added some colour averaging in the TFDisplayFX spectrgoram

            * Bug fix for rainbow click bearings

            Bug fix when rainbow clicks are imported mean bearings cannot be calculated - was an array size issue in DelayGroup

            * Google humpback whale deep learning classifier

            Google's humpback whale deep learning classifier can now be imported.
            Updated TDisplayFX to make the data selection panes cleaner and clearer.
            Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

            * Updated the prediction plots on time display

            Deep learning prediciton plots on the time display have now been updated to have some colour options and also act as a legend.

            * Updates to TDisplayFX

            yFIshmael now owrks with TDisplayFX
            TDisplayFX UI changes to make simpler.
            Some abstraction for drawing lines on TDisplayFX

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Screenshots

            * Update click_train_help.md

            * More screenshots

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots

            * Add classifier screenshot

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots for click train detector help

            * Screenshots

            * Update click_train_help.md

            * Defult option for CPOD and porpoise to click train detector.

            Also a minor

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Bug fix for raw spectrogram in TDDisplayFX

            * Update KetosClassifier.java

            * Fix standard classifier JSON logging

            * Fixed bug in sweep classifier when using SoundTrap click detections

            * Added some colour averaging in the TFDisplayFX spectrgoram

            * Bug fix for rainbow click bearings

            Bug fix when rainbow clicks are imported mean bearings cannot be calculated - was an array size issue in DelayGroup

            * Google humpback whale deep learning classifier

            Google's humpback whale deep learning classifier can now be imported.
            Updated TDisplayFX to make the data selection panes cleaner and clearer.
            Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

            * Updated the prediction plots on time display

            Deep learning prediciton plots on the time display have now been updated to have some colour options and also act as a legend.

            * Updates to TDisplayFX

            yFIshmael now owrks with TDisplayFX
            TDisplayFX UI changes to make simpler.
            Some abstraction for drawing lines on TDisplayFX

            * Merge fixes to click train detector

            * Bug fix to UI

            * Updates to FX GUI

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Screenshots

            * Updates and bug fixes to click train detector and CPOD importer

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Updates and bug fixes to click train detector and CPOD importer

            * Fix standard classifier JSON logging

            * Merge fixes to click train detector

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Screenshots

            * Updates and bug fixes to click train detector and CPOD importer

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Screenshots

            * Updates and bug fixes to click train detector and CPOD importer

            * Fix standard classifier JSON logging

            * Google humpback whale deep learning classifier

            Google's humpback whale deep learning classifier can now be imported.
            Updated TDisplayFX to make the data selection panes cleaner and clearer.
            Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

            * Bug fix to UI

            * Bug fixes to FX GUI

            * Updates to click train detector

            * Squashed commit of the following:

            commit 9f998165ee
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Mon May 2 19:40:24 2022 +0100

                Updates to support ContactCollator plugin (#33)

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * fix problem in SummaryComand

                * Update command line options

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * Update command line options

                * Update DecimatorParams.java

                * couple of updates to support new contact collator plugin

                * Sorting out sample rate info in clip display to support Contact Collator
                plugin

                * FLAC Speed

                Improve flac speed

                * Update .gitignore

                * Update .gitignore

                * Updates to support new features in Contact Collator

                * Small update to RawDatautils to handle null data

            * Updates to click train detector

            * Squashed commit of the following:

            commit 62b020b320
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Sat May 14 06:52:20 2022 +0100

                Add a new offlinefileslist function

            commit 3a9a5311aa
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Wed Apr 27 09:43:31 2022 +0100

                Update .gitignore

            commit 9f998165ee
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Mon May 2 19:40:24 2022 +0100

                Updates to support ContactCollator plugin (#33)

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * fix problem in SummaryComand

                * Update command line options

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * Update command line options

                * Update DecimatorParams.java

                * couple of updates to support new contact collator plugin

                * Sorting out sample rate info in clip display to support Contact Collator
                plugin

                * FLAC Speed

                Improve flac speed

                * Update .gitignore

                * Update .gitignore

                * Updates to support new features in Contact Collator

                * Small update to RawDatautils to handle null data

            * Updated data selector for click train detector

            * Click train detector updates and bug fixes

            Fixed very annoying bug which meant templates did not show properly when the dialog was first opened in swing.

            Added feature to simple classifier were % of clicks of one click classification (or other data selector paramter) can be used to classify.

            * Bug fix and improvements for Ketos

            Ketos models now automatically set the correct sample length when loaded.

            Bug fix for the TDisplayFX - null pointer exception if no class names loaded and sorted recently introduced bug in drawing predictions.

            * Updates to deep learning and FX GUI

            Added some more example sounds to deep learning UI.

            Updated click detector in the FX GUI.

            * PAMGuard FX sound output update

            * Updates to FX GUI

            * Updates to FX GUI

            * Update RawDataTransforms.java

            * Fixes to FX UI

            * Squashed commit of the following:

            commit 11ba8bf91e
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Thu Aug 4 11:45:47 2022 +0100

                MErge from DG Branch (#47)

                * Variable sound output level

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

                * Code to support nogui operations when no screens present on headless
                system

                * Fix problem of nogui headless operation trying to access screen size.

                * Click detector display fixes

                1. ICI not displaying correctly
                2. Component sizes in display dialog on hres monitors

                * Work on batch processing, after testing of options to autostart,
                autoexit and set wav file folder, database and binary store.

                * Update MHTClickTrainAlgorithm.java

                Fix unsynchronised access to a datablock in click train detector which was causing index errors.

                * Revamp of offline process messaging and control

                Includes some databsae logging of completed tasks

                * Offline task logging

                Bit more work, including notes and database storage of task
                reprocessing. Guess this could all become 'proper' PAMGuard data and be
                shown in a table on the display but that not priority enough.

                * Dialog packing

                Fix a couple of dialogs which don't back well on HDPI monitors

                * UDP Control

                Added multiport functionality

            commit 9a9f542d95
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Thu Aug 4 11:42:45 2022 +0100

                Merge DG to Main (#46)

          …

    * Click train fixes

    * Fixes to click train detector

    * Squashed commit of the following:

    commit 3a452936c0
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Fri Sep 30 14:50:33 2022 +0100

        Fixes from DG (#74)

        * Work on bug fixes in CTD classifier

        * couple of final neatenings up of CTD

    commit 4015461fbc
    Author: Jamie Mac <macster110@gmail.com>
    Date:   Fri Sep 30 14:23:17 2022 +0100

        Fixes to click train detector (#73)

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Create click_train_help.md

        * Update click_train_help.md

        * Screenshots

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * More screenshots

        * Add screenshots

        * Update click_train_help.md

        * Add classifier screenshot

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Updates and bug fixes to click train detector and CPOD importer

        * Update click_train_help.md

        * Update POM with latest jdl4pam

        * Add screenshots for click train detector help

        * Screenshots

        * Update click_train_help.md

        * Defult option for CPOD and porpoise to click train detector.

        Also a minor

        * Update pom.xml

        * Bug fix for raw spectrogram in TDDisplayFX

        * Update KetosClassifier.java

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Create click_train_help.md

        * Update click_train_help.md

        * Screenshots

        * Update click_train_help.md

        * More screenshots

        * Update click_train_help.md

        * Update click_train_help.md

        * Add screenshots

        * Add classifier screenshot

        * Update click_train_help.md

        * Updates and bug fixes to click train detector and CPOD importer

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Add screenshots for click train detector help

        * Screenshots

        * Update click_train_help.md

        * Defult option for CPOD and porpoise to click train detector.

        Also a minor

        * Bug fix for raw spectrogram in TDDisplayFX

        * Update KetosClassifier.java

        * Fix standard classifier JSON logging

        * Update click_train_help.md

        * Fixed bug in sweep classifier when using SoundTrap click detections

        * Added some colour averaging in the TFDisplayFX spectrgoram

        * Bug fix for rainbow click bearings

        Bug fix when rainbow clicks are imported mean bearings cannot be calculated - was an array size issue in DelayGroup

        * Google humpback whale deep learning classifier

        Google's humpback whale deep learning classifier can now be imported.
        Updated TDisplayFX to make the data selection panes cleaner and clearer.
        Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

        * Updated the prediction plots on time display

        Deep learning prediciton plots on the time display have now been updated to have some colour options and also act as a legend.

        * Updates to TDisplayFX

        yFIshmael now owrks with TDisplayFX
        TDisplayFX UI changes to make simpler.
        Some abstraction for drawing lines on TDisplayFX

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Create click_train_help.md

        * Update click_train_help.md

        * Screenshots

        * Update click_train_help.md

        * More screenshots

        * Update click_train_help.md

        * Update click_train_help.md

        * Add screenshots

        * Add classifier screenshot

        * Update click_train_help.md

        * Updates and bug fixes to click train detector and CPOD importer

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Add screenshots for click train detector help

        * Screenshots

        * Update click_train_help.md

        * Defult option for CPOD and porpoise to click train detector.

        Also a minor

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Create click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Updates and bug fixes to click train detector and CPOD importer

        * Bug fix for raw spectrogram in TDDisplayFX

        * Update KetosClassifier.java

        * Fix standard classifier JSON logging

        * Fixed bug in sweep classifier when using SoundTrap click detections

        * Added some colour averaging in the TFDisplayFX spectrgoram

        * Bug fix for rainbow click bearings

        Bug fix when rainbow clicks are imported mean bearings cannot be calculated - was an array size issue in DelayGroup

        * Google humpback whale deep learning classifier

        Google's humpback whale deep learning classifier can now be imported.
        Updated TDisplayFX to make the data selection panes cleaner and clearer.
        Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

        * Updated the prediction plots on time display

        Deep learning prediciton plots on the time display have now been updated to have some colour options and also act as a legend.

        * Updates to TDisplayFX

        yFIshmael now owrks with TDisplayFX
        TDisplayFX UI changes to make simpler.
        Some abstraction for drawing lines on TDisplayFX

        * Merge fixes to click train detector

        * Bug fix to UI

        * Updates to FX GUI

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Screenshots

        * Updates and bug fixes to click train detector and CPOD importer

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Updates and bug fixes to click train detector and CPOD importer

        * Fix standard classifier JSON logging

        * Merge fixes to click train detector

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Screenshots

        * Updates and bug fixes to click train detector and CPOD importer

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Screenshots

        * Updates and bug fixes to click train detector and CPOD importer

        * Fix standard classifier JSON logging

        * Google humpback whale deep learning classifier

        Google's humpback whale deep learning classifier can now be imported.
        Updated TDisplayFX to make the data selection panes cleaner and clearer.
        Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

        * Bug fix to UI

        * Bug fixes to FX GUI

        * Updates to click train detector

        * Squashed commit of the following:

        commit 9f998165ee
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Mon May 2 19:40:24 2022 +0100

            Updates to support ContactCollator plugin (#33)

            * Change synchronization on RawDataTransforms soit uses the owner data
            holder, not itself for synchronization. Otherwise you get thread locks.

            * fix problem in SummaryComand

            * Update command line options

            * Change synchronization on RawDataTransforms soit uses the owner data
            holder, not itself for synchronization. Otherwise you get thread locks.

            * Update command line options

            * Update DecimatorParams.java

            * couple of updates to support new contact collator plugin

            * Sorting out sample rate info in clip display to support Contact Collator
            plugin

            * FLAC Speed

            Improve flac speed

            * Update .gitignore

            * Update .gitignore

            * Updates to support new features in Contact Collator

            * Small update to RawDatautils to handle null data

        * Updates to click train detector

        * Squashed commit of the following:

        commit 62b020b320
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Sat May 14 06:52:20 2022 +0100

            Add a new offlinefileslist function

        commit 3a9a5311aa
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Wed Apr 27 09:43:31 2022 +0100

            Update .gitignore

        commit 9f998165ee
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Mon May 2 19:40:24 2022 +0100

            Updates to support ContactCollator plugin (#33)

            * Change synchronization on RawDataTransforms soit uses the owner data
            holder, not itself for synchronization. Otherwise you get thread locks.

            * fix problem in SummaryComand

            * Update command line options

            * Change synchronization on RawDataTransforms soit uses the owner data
            holder, not itself for synchronization. Otherwise you get thread locks.

            * Update command line options

            * Update DecimatorParams.java

            * couple of updates to support new contact collator plugin

            * Sorting out sample rate info in clip display to support Contact Collator
            plugin

            * FLAC Speed

            Improve flac speed

            * Update .gitignore

            * Update .gitignore

            * Updates to support new features in Contact Collator

            * Small update to RawDatautils to handle null data

        * Updated data selector for click train detector

        * Click train detector updates and bug fixes

        Fixed very annoying bug which meant templates did not show properly when the dialog was first opened in swing.

        Added feature to simple classifier were % of clicks of one click classification (or other data selector paramter) can be used to classify.

        * Bug fix and improvements for Ketos

        Ketos models now automatically set the correct sample length when loaded.

        Bug fix for the TDisplayFX - null pointer exception if no class names loaded and sorted recently introduced bug in drawing predictions.

        * Updates to deep learning and FX GUI

        Added some more example sounds to deep learning UI.

        Updated click detector in the FX GUI.

        * PAMGuard FX sound output update

        * Updates to FX GUI

        * Updates to FX GUI

        * Update RawDataTransforms.java

        * Fixes to FX UI

        * Squashed commit of the following:

        commit 11ba8bf91e
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Thu Aug 4 11:45:47 2022 +0100

            MErge from DG Branch (#47)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

            * Click detector display fixes

            1. ICI not displaying correctly
            2. Component sizes in display dialog on hres monitors

            * Work on batch processing, after testing of options to autostart,
            autoexit and set wav file folder, database and binary store.

            * Update MHTClickTrainAlgorithm.java

            Fix unsynchronised access to a datablock in click train detector which was causing index errors.

            * Revamp of offline process messaging and control

            Includes some databsae logging of completed tasks

            * Offline task logging

            Bit more work, including notes and database storage of task
            reprocessing. Guess this could all become 'proper' PAMGuard data and be
            shown in a table on the display but that not priority enough.

            * Dialog packing

            Fix a couple of dialogs which don't back well on HDPI monitors

            * UDP Control

            Added multiport functionality

        commit 9a9f542d95
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Thu Aug 4 11:42:45 2022 +0100

            Merge DG to Main (#46)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

            * Click detector display fixes

            1. ICI not displaying correctly
            2. Component sizes in display dialog on hres monitors

            * Work on batch processing, after testing of options to autostart,
            autoexit and set wav file folder, database and binary store.

            * Update MHTClickTrainAlgorithm.java

            Fix unsynchronised access to a datablock in click train detector which was causing index errors.

            * Revamp of offline process messaging and control

            Includes some databsae logging of completed tasks

            * Offline task logging

            Bit more work, including notes and database storage of task
            reprocessing. Guess this could all become 'proper' PAMGuard data and be
            shown in a table on the display but that not priority enough.

            * Dialog packing

            Fix a couple of dialogs which don't back well on HDPI monitors

            * UDP Control

            Added multiport functionality

        commit 49cd547aee
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Thu Aug 4 11:40:29 2022 +0100

            Merge DG branch (#45)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

            * Click detector display fixes

            1. ICI not displaying correctly
            2. Component sizes in display dialog on hres monitors

            * Work on batch processing, after testing of options to autostart,
            autoexit and set wav file folder, database and binary store.

            * Update MHTClickTrainAlgorithm.java

            Fix unsynchronised access to a datablock in click train detector which was causing index errors.

            * Revamp of offline process messaging and control

            Includes some databsae logging of completed tasks

            * Offline task logging

            Bit more work, including notes and database storage of task
            reprocessing. Guess this could all become 'proper' PAMGuard data and be
            shown in a table on the display but that not priority enough.

            * Dialog packing

            Fix a couple of dialogs which don't back well on HDPI monitors

            * UDP Control

            Added multiport functionality

        commit 016cfd0da5
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Thu Aug 4 11:35:06 2022 +0100

            Dialog positioning

            New functions to better positions dialogs on screen

        commit c9f2ab3e97
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Mon Aug 1 11:13:24 2022 +0100

            puch to main (#44)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

            * Click detector display fixes

            1. ICI not displaying correctly
            2. Component sizes in display dialog on hres monitors

            * Work on batch processing, after testing of options to autostart,
            autoexit and set wav file folder, database and binary store.

            * Update MHTClickTrainAlgorithm.java

            Fix unsynchronised access to a datablock in click train detector which was causing index errors.

            * Revamp of offline process messaging and control

            Includes some databsae logging of completed tasks

            * Offline task logging

            Bit more work, including notes and database storage of task
            reprocessing. Guess this could all become 'proper' PAMGuard data and be
            shown in a table on the display but that not priority enough.

            * Dialog packing

            Fix a couple of dialogs which don't back well on HDPI monitors

        commit 55f5a3fcf1
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Mon Aug 1 10:59:36 2022 +0100

            Group detections menu

            Small changes to limit the number of menu items in "Add to existing
            group" to a maximum of 25 entries.

        commit b3f6c0e665
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Fri Jul 29 10:50:45 2022 +0100

            Handle -nogui option in PamWorker

            PamWorker used to catalog files at startup (if a file folder input
            system is used). This creates a progress dialog. Stop it appearing in
            -nogui operations.

        commit 8569b6b579
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Fri Jul 22 08:30:47 2022 +0100

            Click display fixes (#41)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

            * Click detector display fixes

            1. ICI not displaying correctly
            2. Component sizes in display dialog on hres monitors

        commit 128a512ff6
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Tue Jul 19 16:37:57 2022 +0100

            Another attempt at stopping it crashing on a headless system

            Dealing with displays that get created for clickangle vetos and a call
            to the gui in the click train detector.

        commit 6eaa6e4978
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Tue Jul 19 08:20:07 2022 +0100

            nogoi fix for headless systems. (#40)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

        commit 9fdd30556b
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Tue Jul 12 15:53:07 2022 +0100

            Variable sound output level (#39)

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

        * Bug fixes to click train detector

        Fixed bug with number of coasts in the MHT Kernel
        Added an option for amplitude to have a maximum
        Removed print statements.

        * Bug fix for click train logging

        The size of the string classifers field was dynamically set - this was a bug.

        * Bug fixes to the click train detector

        Bearing classifier section now updates properly when dialog reopened
        Fixed rare bug when garbage bot attempts to find the last data unit in a list of zero units.

        * Squashed commit of the following:

        commit 5a37bfe915
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Fri Aug 19 08:17:06 2022 +0100

            Changes from DG branch (#50)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

            * Click detector display fixes

            1. ICI not displaying correctly
            2. Component sizes in display dialog on hres monitors

            * Work on batch processing, after testing of options to autostart,
            autoexit and set wav file folder, database and binary store.

            * Update MHTClickTrainAlgorithm.java

            Fix unsynchronised access to a datablock in click train detector which was causing index errors.

            * Revamp of offline process messaging and control

            Includes some databsae logging of completed tasks

            * Offline task logging

            Bit more work, including notes and database storage of task
            reprocessing. Guess this could all become 'proper' PAMGuard data and be
            shown in a table on the display but that not priority enough.

            * Dialog packing

            Fix a couple of dialogs which don't back well on HDPI monitors

            * UDP Control

            Added multiport functionality

            * Java version

            Changes unpacker to deal with non numeric characters on Linux

            * Fix to getVersion()

            So new version of this command should now work on Linux and Windows.

            * Multiport test

            Quick tester for multiport comms

            * Spectrogram display

            Stop spectrogram display continually recreating panels since it was
            unsubscribing discarded ones and sometimes causing crash in observable
            notifications.

            * Backup manager bug

            Error if no database. Fixed.

        commit b08e86e330
        Author: Jamie Mac <macster110@gmail.com>
        Date:   Wed Aug 17 09:16:52 2022 +0100

            Bug fix for click train detector (#49)

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Screenshots

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * More screenshots

            * Add screenshots

            * Update click_train_help.md

            * Add classifier screenshot

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Update click_train_help.md

            * Update POM with latest jdl4pam

            * Add screenshots for click train detector help

            * Screenshots

            * Update click_train_help.md

            * Defult option for CPOD and porpoise to click train detector.

            Also a minor

            * Update pom.xml

            * Bug fix for raw spectrogram in TDDisplayFX

            * Update KetosClassifier.java

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Screenshots

            * Update click_train_help.md

            * More screenshots

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots

            * Add classifier screenshot

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots for click train detector help

            * Screenshots

            * Update click_train_help.md

            * Defult option for CPOD and porpoise to click train detector.

            Also a minor

            * Bug fix for raw spectrogram in TDDisplayFX

            * Update KetosClassifier.java

            * Fix standard classifier JSON logging

            * Update click_train_help.md

            * Fixed bug in sweep classifier when using SoundTrap click detections

            * Added some colour averaging in the TFDisplayFX spectrgoram

            * Bug fix for rainbow click bearings

            Bug fix when rainbow clicks are imported mean bearings cannot be calculated - was an array size issue in DelayGroup

            * Google humpback whale deep learning classifier

            Google's humpback whale deep learning classifier can now be imported.
            Updated TDisplayFX to make the data selection panes cleaner and clearer.
            Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

            * Updated the prediction plots on time display

            Deep learning prediciton plots on the time display have now been updated to have some colour options and also act as a legend.

            * Updates to TDisplayFX

            yFIshmael now owrks with TDisplayFX
            TDisplayFX UI changes to make simpler.
            Some abstraction for drawing lines on TDisplayFX

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Screenshots

            * Update click_train_help.md

            * More screenshots

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots

            * Add classifier screenshot

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots for click train detector help

            * Screenshots

            * Update click_train_help.md

            * Defult option for CPOD and porpoise to click train detector.

            Also a minor

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Bug fix for raw spectrogram in TDDisplayFX

            * Update KetosClassifier.java

            * Fix standard classifier JSON logging

            * Fixed bug in sweep classifier when using SoundTrap click detections

            * Added some colour averaging in the TFDisplayFX spectrgoram

            * Bug fix for rainbow click bearings

            Bug fix when rainbow clicks are imported mean bearings cannot be calculated - was an array size issue in DelayGroup

            * Google humpback whale deep learning classifier

            Google's humpback whale deep learning classifier can now be imported.
            Updated TDisplayFX to make the data selection panes cleaner and clearer.
            Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

            * Updated the prediction plots on time display

            Deep learning prediciton plots on the time display have now been updated to have some colour options and also act as a legend.

            * Updates to TDisplayFX

            yFIshmael now owrks with TDisplayFX
            TDisplayFX UI changes to make simpler.
            Some abstraction for drawing lines on TDisplayFX

            * Merge fixes to click train detector

            * Bug fix to UI

            * Updates to FX GUI

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Screenshots

            * Updates and bug fixes to click train detector and CPOD importer

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Updates and bug fixes to click train detector and CPOD importer

            * Fix standard classifier JSON logging

            * Merge fixes to click train detector

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Screenshots

            * Updates and bug fixes to click train detector and CPOD importer

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Screenshots

            * Updates and bug fixes to click train detector and CPOD importer

            * Fix standard classifier JSON logging

            * Google humpback whale deep learning classifier

            Google's humpback whale deep learning classifier can now be imported.
            Updated TDisplayFX to make the data selection panes cleaner and clearer.
            Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

            * Bug fix to UI

            * Bug fixes to FX GUI

            * Updates to click train detector

            * Squashed commit of the following:

            commit 9f998165ee
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Mon May 2 19:40:24 2022 +0100

                Updates to support ContactCollator plugin (#33)

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * fix problem in SummaryComand

                * Update command line options

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * Update command line options

                * Update DecimatorParams.java

                * couple of updates to support new contact collator plugin

                * Sorting out sample rate info in clip display to support Contact Collator
                plugin

                * FLAC Speed

                Improve flac speed

                * Update .gitignore

                * Update .gitignore

                * Updates to support new features in Contact Collator

                * Small update to RawDatautils to handle null data

            * Updates to click train detector

            * Squashed commit of the following:

            commit 62b020b320
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Sat May 14 06:52:20 2022 +0100

                Add a new offlinefileslist function

            commit 3a9a5311aa
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Wed Apr 27 09:43:31 2022 +0100

                Update .gitignore

            commit 9f998165ee
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Mon May 2 19:40:24 2022 +0100

                Updates to support ContactCollator plugin (#33)

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * fix problem in SummaryComand

                * Update command line options

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * Update command line options

                * Update DecimatorParams.java

                * couple of updates to support new contact collator plugin

                * Sorting out sample rate info in clip display to support Contact Collator
                plugin

                * FLAC Speed

                Improve flac speed

                * Update .gitignore

                * Update .gitignore

                * Updates to support new features in Contact Collator

                * Small update to RawDatautils to handle null data

            * Updated data selector for click train detector

            * Click train detector updates and bug fixes

            Fixed very annoying bug which meant templates did not show properly when the dialog was first opened in swing.

            Added feature to simple classifier were % of clicks of one click classification (or other data selector paramter) can be used to classify.

            * Bug fix and improvements for Ketos

            Ketos models now automatically set the correct sample length when loaded.

            Bug fix for the TDisplayFX - null pointer exception if no class names loaded and sorted recently introduced bug in drawing predictions.

            * Updates to deep learning and FX GUI

            Added some more example sounds to deep learning UI.

            Updated click detector in the FX GUI.

            * PAMGuard FX sound output update

            * Updates to FX GUI

            * Updates to FX GUI

            * Update RawDataTransforms.java

            * Fixes to FX UI

            * Squashed commit of the following:

            commit 11ba8bf91e
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Thu Aug 4 11:45:47 2022 +0100

                MErge from DG Branch (#47)

                * Variable sound output level

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

                * Code to support nogui operations when no screens present on headless
                system

                * Fix problem of nogui headless operation trying to access screen size.

                * Click detector display fixes

                1. ICI not displaying correctly
                2. Component sizes in display dialog on hres monitors

                * Work on batch processing, after testing of options to autostart,
                autoexit and set wav file folder, database and binary store.

                * Update MHTClickTrainAlgorithm.java

                Fix unsynchronised access to a datablock in click train detector which was causing index errors.

                * Revamp of offline process messaging and control

                Includes some databsae logging of completed tasks

                * Offline task logging

                Bit more work, including notes and database storage of task
                reprocessing. Guess this could all become 'proper' PAMGuard data and be
                shown in a table on the display but that not priority enough.

                * Dialog packing

                Fix a couple of dialogs which don't back well on HDPI monitors

                * UDP Control

                Added multiport functionality

            commit 9a9f542d95
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Thu Aug 4 11:42:45 2022 +0100

                Merge DG to Main (#46)

                * Variable sound output level

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

                * Code to support nogui operations when no screens present on headless
                system

                * Fix problem of nogui headless operation trying to access screen size.

                * Click detector display fixes

                1. ICI not displaying correctly
                2. Component sizes in display dialog on hres monitors

                * Work on batch processing, after testing of options to autostart,
                autoexit and set wav file folder, database and binary store.

                * Update MHTClickTrainAlgorithm.java

                Fix unsynchronised access to a datablock in click train detector which was causing index errors.

                * Revamp of offline process messaging and control

                Includes some databsae logging of completed tasks

                * Offline task logging

                Bit more work, including notes and database storage of task
                reprocessing. Guess this could all become 'proper' PAMGuard data and be
                shown in a table on the display but that not priority enough.

                * Dialog packing

                Fix a couple of dialogs which don't back well on HDPI monitors

                * UDP Control

                Added multiport functionality

            commit 49cd547aee
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Thu Aug 4 11:40:29 2022 +0100

                Merge DG branch (#45)

                * Variable sound output level

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

                * Code to support nogui operations when no screens present on headless
                system

                * Fix problem of nogui headless operation trying to access screen size.

                * Click detector display fixes

                1. ICI not displaying correctly
                2. Component sizes in display dialog on hres monitors

                * Work on batch processing, after testing of options to autostart,
                autoexit and set wav file folder, database and binary store.

                * Update MHTClickTrainAlgorithm.java

                Fix unsynchronised access to a datablock in click train detector which was causing index errors.

                * Revamp of offline process messaging and control

                Includes some databsae logging of completed tasks

                * Offline task logging

                Bit more work, including notes and database storage of task
                reprocessing. Guess this could all become 'proper' PAMGuard data and be
                shown in a table on the display but that not priority enough.

                * Dialog packing

                Fix a couple of dialogs which don't back well on HDPI monitors

                * UDP Control

                Added multiport functionality

            commit 016cfd0da5
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Thu Aug 4 11:35:06 2022 +0100

                Dialog positioning

                New functions to better positions dialogs on screen

            commit c9f2ab3e97
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Mon Aug 1 11:13:24 2022 +0100

                puch to main (#44)

                * Variable sound output level

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

                * Code to support nogui operations when no screens present on headless
                system

                * Fix problem of nogui headless operation trying to access screen size.

                * Click detector display fixes

                1. ICI not displaying correctly
                2. Component sizes in display dialog on hres monitors

                * Work on batch processing, after testing of options to autostart,
                autoexit and set wav file folder, database and binary store.

                * Update MHTClickTrainAlgorithm.java

                Fix unsynchronised access to a datablock in click train detector which was causing index errors.

                * Revamp of offline process messaging and control

                Includes some databsae logging of completed tasks

                * Offline task logging

                Bit more work, including notes and database storage of task
                reprocessing. Guess this could all become 'proper' PAMGuard data and be
                shown in a table on the display but that not priority enough.

                * Dialog packing

                Fix a couple of dialogs which don't back well on HDPI monitors

            commit 55f5a3fcf1
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Mon Aug 1 10:59:36 2022 +0100

                Group detections menu

                Small changes to limit the number of menu items in "Add to existing
                group" to a maximum of 25 entries.

            commit b3f6c0e665
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Fri Jul 29 10:50:45 2022 +0100

                Handle -nogui option in PamWorker

                PamWorker used to catalog files at startup (if a file folder input
                system is used). This creates a progress dialog. Stop it appearing in
                -nogui operations.

            commit 8569b6b579
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Fri Jul 22 08:30:47 2022 +0100

                Click display fixes (#41)

                * Variable sound output level

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

                * Code to support nogui operations when no screens present on headless
                system

                * Fix problem of nogui headless operation trying to access screen size.

                * Click detector display fixes

                1. ICI not displaying correctly
                2. Component sizes in display dialog on hres monitors

            commit 128a512ff6
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Tue Jul 19 16:37:57 2022 +0100

                Another attempt at stopping it crashing on a headless system

                Dealing with displays that get created for clickangle vetos and a call
                to the gui in the click train detector.

            commit 6eaa6e4978
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Tue Jul 19 08:20:07 2022 +0100

                nogoi fix for headless systems. (#40)

                * Variable sound output level

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

                * Code to support nogui operations when no screens present on headless
                system

                * Fix problem of nogui headless operation trying to access screen size.

            commit 9fdd30556b
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Tue Jul 12 15:53:07 2022 +0100

                Variable sound output level (#39)

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

            * Bug fixes to click train detector

            Fixed bug with number of coasts in the MHT Kernel
            Added an option for amplitude to have a maximum
            Removed print statements.

            * Bug fix for click train logging

            The size of the string classifers field was dynamically set - this was a bug.

            Co-authored-by: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>

        commit ef0330173b
        Author: Jamie Mac <macster110@gmail.com>
        Date:   Mon Aug 8 10:32:19 2022 +0100

            Click trian detector fixes (#48)

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Screenshots

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * More screenshots

            * Add screenshots

            * Update click_train_help.md

            * Add classifier screenshot

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Update click_train_help.md

            * Update POM with latest jdl4pam

            * Add screenshots for click train detector help

            * Screenshots

            * Update click_train_help.md

            * Defult option for CPOD and porpoise to click train detector.

            Also a minor

            * Update pom.xml

            * Bug fix for raw spectrogram in TDDisplayFX

            * Update KetosClassifier.java

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Screenshots

            * Update click_train_help.md

            * More screenshots

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots

            * Add classifier screenshot

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots for click train detector help

            * Screenshots

            * Update click_train_help.md

            * Defult option for CPOD and porpoise to click train detector.

            Also a minor

            * Bug fix for raw spectrogram in TDDisplayFX

            * Update KetosClassifier.java

            * Fix standard classifier JSON logging

            * Update click_train_help.md

            * Fixed bug in sweep classifier when using SoundTrap click detections

            * Added some colour averaging in the TFDisplayFX spectrgoram

            * Bug fix for rainbow click bearings

            Bug fix when rainbow clicks are imported mean bearings cannot be calculated - was an array size issue in DelayGroup

            * Google humpback whale deep learning classifier

            Google's humpback whale deep learning classifier can now be imported.
            Updated TDisplayFX to make the data selection panes cleaner and clearer.
            Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

            * Updated the prediction plots on time display

            Deep learning prediciton plots on the time display have now been updated to have some colour options and also act as a legend.

            * Updates to TDisplayFX

            yFIshmael now owrks with TDisplayFX
            TDisplayFX UI changes to make simpler.
            Some abstraction for drawing lines on TDisplayFX

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Screenshots

            * Update click_train_help.md

            * More screenshots

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots

            * Add classifier screenshot

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots for click train detector help

            * Screenshots

            * Update click_train_help.md

            * Defult option for CPOD and porpoise to click train detector.

            Also a minor

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Bug fix for raw spectrogram in TDDisplayFX

            * Update KetosClassifier.java

            * Fix standard classifier JSON logging

            * Fixed bug in sweep classifier when using SoundTrap click detections

            * Added some colour averaging in the TFDisplayFX spectrgoram

            * Bug fix for rainbow click bearings

            Bug fix when rainbow clicks are imported mean bearings cannot be calculated - was an array size issue in DelayGroup

            * Google humpback whale deep learning classifier

            Google's humpback whale deep learning classifier can now be imported.
            Updated TDisplayFX to make the data selection panes cleaner and clearer.
            Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

            * Updated the prediction plots on time display

            Deep learning prediciton plots on the time display have now been updated to have some colour options and also act as a legend.

            * Updates to TDisplayFX

            yFIshmael now owrks with TDisplayFX
            TDisplayFX UI changes to make simpler.
            Some abstraction for drawing lines on TDisplayFX

            * Merge fixes to click train detector

            * Bug fix to UI

            * Updates to FX GUI

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Screenshots

            * Updates and bug fixes to click train detector and CPOD importer

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Updates and bug fixes to click train detector and CPOD importer

            * Fix standard classifier JSON logging

            * Merge fixes to click train detector

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Screenshots

            * Updates and bug fixes to click train detector and CPOD importer

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Screenshots

            * Updates and bug fixes to click train detector and CPOD importer

            * Fix standard classifier JSON logging

            * Google humpback whale deep learning classifier

            Google's humpback whale deep learning classifier can now be imported.
            Updated TDisplayFX to make the data selection panes cleaner and clearer.
            Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

            * Bug fix to UI

            * Bug fixes to FX GUI

            * Updates to click train detector

            * Squashed commit of the following:

            commit 9f998165ee
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Mon May 2 19:40:24 2022 +0100

                Updates to support ContactCollator plugin (#33)

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * fix problem in SummaryComand

                * Update command line options

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * Update command line options

                * Update DecimatorParams.java

                * couple of updates to support new contact collator plugin

                * Sorting out sample rate info in clip display to support Contact Collator
                plugin

                * FLAC Speed

                Improve flac speed

                * Update .gitignore

                * Update .gitignore

                * Updates to support new features in Contact Collator

                * Small update to RawDatautils to handle null data

            * Updates to click train detector

            * Squashed commit of the following:

            commit 62b020b320
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Sat May 14 06:52:20 2022 +0100

                Add a new offlinefileslist function

            commit 3a9a5311aa
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Wed Apr 27 09:43:31 2022 +0100

                Update .gitignore

            commit 9f998165ee
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Mon May 2 19:40:24 2022 +0100

                Updates to support ContactCollator plugin (#33)

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * fix problem in SummaryComand

                * Update command line options

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * Update command line options

                * Update DecimatorParams.java

                * couple of updates to support new contact collator plugin

                * Sorting out sample rate info in clip display to support Contact Collator
                plugin

                * FLAC Speed

                Improve flac speed

                * Update .gitignore

                * Update .gitignore

                * Updates to support new features in Contact Collator

                * Small update to RawDatautils to handle null data

            * Updated data selector for click train detector

            * Click train detector updates and bug fixes

            Fixed very annoying bug which meant templates did not show properly when the dialog was first opened in swing.

            Added feature to simple classifier were % of clicks of one click classification (or other data selector paramter) can be used to classify.

            * Bug fix and improvements for Ketos

            Ketos models now automatically set the correct sample length when loaded.

            Bug fix for the TDisplayFX - null pointer exception if no class names loaded and sorted recently introduced bug in drawing predictions.

            * Updates to deep learning and FX GUI

            Added some more example sounds to deep learning UI.

            Updated click detector in the FX GUI.

            * PAMGuard FX sound output update

            * Updates to FX GUI

            * Updates to FX GUI

            * Update RawDataTransforms.java

            * Fixes to FX UI

            * Squashed commit of the following:

            commit 11ba8bf91e
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Thu Aug 4 11:45:47 2022 +0100

                MErge from DG Branch (#47)

                * Variable sound output level

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

                * Code to support nogui operations when no screens present on headless
                system

                * Fix problem of nogui headless operation trying to access screen size.

                * Click detector display fixes

                1. ICI not displaying correctly
                2. Component sizes in display dialog on hres monitors

                * Work on batch processing, after testing of options to autostart,
                autoexit and set wav file folder, database and binary store.

                * Update MHTClickTrainAlgorithm.java

                Fix unsynchronised access to a datablock in click train detector which was causing index errors.

                * Revamp of offline process messaging and control

                Includes some databsae logging of completed tasks

                * Offline task logging

                Bit more work, including notes and database storage of task
                reprocessing. Guess this could all become 'proper' PAMGuard data and be
                shown in a table on the display but that not priority enough.

                * Dialog packing

                Fix a couple of dialogs which don't back well on HDPI monitors

                * UDP Control

                Added multiport functionality

            commit 9a9f542d95
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Thu Aug 4 11:42:45 2022 +0100

                Merge DG to Main (#46)

                * Variable sound output level

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

                * Code to support nogui operations when no screens present on headless
                system

                * Fix problem of nogui headless operation trying to access screen size.

                * Click detector display fixes

                1. ICI not displaying correctly
                2. Component sizes in display dialog on hres monitors

                * Work on batch processing, after testing of options to autostart,
                autoexit and set wav file folder, database and binary store.

                * Update MHTClickTrainAlgorithm.java

                Fix unsynchronised access to a datablock in click train detector which was causing index errors.

                * Revamp of offline process messaging and control

                Includes some databsae logging of completed tasks

          …

    * Fix to click train detector

    NO_SPECIES flag was not being in standard classifier so beaked whales were being classified.

    * Getting sud files working

    * .sud decompression implemented

    Sud decompression implemented in real time and viewer mode. .sudx files hold a file map which is reloaded allowing rapid scrolling of sud files in viewer mode.

    * Rewrite how PAMGuard manages Audio Files

    PAMGuard audio file management is a mess (sorry Doug) requiring changes to code in at least 3 separate classes to make a new type of audio file work in real time and viewer mode.

    Have consolidated all audio file stuff into a PamAudioFileManager class which has a static getInstance() function. Any new type of audio file added in future (e.g. next is probably AudioMoth triggered recordings) then all that is needed is the Interface PamAudioFileloader to be satisfied and added to PamAudioFileManager list of audio file loaders.

    * Bug fix for sud in viewer mode and FX updates

    Fixed bug in sud file where IO exception occurred at the end of a file in viewer mode.

    Updates to click detector dialog in FX GUI.

    Updates to example sound factory.

    * Some more work on FX GUI

    * Added some validators in FX GUI

    ValidatorFX is awesome

    * Updates to FX GUI

    * Squashed commit of the following:

    commit 67060016c2
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Fri Oct 21 12:26:42 2022 +0100

        REsolve issues in binayUIDFunctions

    commit 61c3d80f30
    Merge: 1de5ec6 4473d1b
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Fri Oct 21 12:23:08 2022 +0100

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

    commit 1de5ec6e11
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Fri Oct 21 12:22:09 2022 +0100

        Change error reporting in Binary UID functions

        Message on screen rather than stack trace since it's normal when a psfx
        moves to a different pc

    commit 4473d1b1bf
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Fri Oct 21 11:12:04 2022 +0100

        Merge from DG (#77)

        * Work on bug fixes in CTD classifier

        * couple of final neatenings up of CTD

        * DWV Import

        Fixed DWV importer so that a binary file is still created if a DWV file
        doesn't exist. this is totally normal in quiet conditions, so the
        correct thing to do is to generate a binary file with no data so that
        effort is correctly recorded.

        * Error reporting in -nogui

        A lot of warnings were being issued and trying to use the default window
        which caused a null pointer when running -nogui. This is fixed by a) not
        trying to access frames which are null and b) changing the PAMWarning
        system to write messages to terminal rather than open a dialog.

    commit 63cc66a4b1
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Tue Oct 18 17:04:16 2022 +0100

        Merge from DG (#76)

        * Work on bug fixes in CTD classifier

        * couple of final neatenings up of CTD

        * DWV Import

        Fixed DWV importer so that a binary file is still created if a DWV file
        doesn't exist. this is totally normal in quiet conditions, so the
        correct thing to do is to generate a binary file with no data so that
        effort is correctly recorded.

    commit e4faed5cfc
    Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
    Date:   Tue Oct 4 11:18:37 2022 +0100

        Add exitnosave command

        Add command for UDP or terminal control which will exit PAMGuard without
        first saving the settings

    commit f4f7cc59b6
    Author: Jamie Mac <macster110@gmail.com>
    Date:   Mon Oct 3 14:30:22 2022 +0100

        Fix to click trian detector (#75)

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Create click_train_help.md

        * Update click_train_help.md

        * Screenshots

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * More screenshots

        * Add screenshots

        * Update click_train_help.md

        * Add classifier screenshot

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Updates and bug fixes to click train detector and CPOD importer

        * Update click_train_help.md

        * Update POM with latest jdl4pam

        * Add screenshots for click train detector help

        * Screenshots

        * Update click_train_help.md

        * Defult option for CPOD and porpoise to click train detector.

        Also a minor

        * Update pom.xml

        * Bug fix for raw spectrogram in TDDisplayFX

        * Update KetosClassifier.java

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Create click_train_help.md

        * Update click_train_help.md

        * Screenshots

        * Update click_train_help.md

        * More screenshots

        * Update click_train_help.md

        * Update click_train_help.md

        * Add screenshots

        * Add classifier screenshot

        * Update click_train_help.md

        * Updates and bug fixes to click train detector and CPOD importer

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Add screenshots for click train detector help

        * Screenshots

        * Update click_train_help.md

        * Defult option for CPOD and porpoise to click train detector.

        Also a minor

        * Bug fix for raw spectrogram in TDDisplayFX

        * Update KetosClassifier.java

        * Fix standard classifier JSON logging

        * Update click_train_help.md

        * Fixed bug in sweep classifier when using SoundTrap click detections

        * Added some colour averaging in the TFDisplayFX spectrgoram

        * Bug fix for rainbow click bearings

        Bug fix when rainbow clicks are imported mean bearings cannot be calculated - was an array size issue in DelayGroup

        * Google humpback whale deep learning classifier

        Google's humpback whale deep learning classifier can now be imported.
        Updated TDisplayFX to make the data selection panes cleaner and clearer.
        Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

        * Updated the prediction plots on time display

        Deep learning prediciton plots on the time display have now been updated to have some colour options and also act as a legend.

        * Updates to TDisplayFX

        yFIshmael now owrks with TDisplayFX
        TDisplayFX UI changes to make simpler.
        Some abstraction for drawing lines on TDisplayFX

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Create click_train_help.md

        * Update click_train_help.md

        * Screenshots

        * Update click_train_help.md

        * More screenshots

        * Update click_train_help.md

        * Update click_train_help.md

        * Add screenshots

        * Add classifier screenshot

        * Update click_train_help.md

        * Updates and bug fixes to click train detector and CPOD importer

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Add screenshots for click train detector help

        * Screenshots

        * Update click_train_help.md

        * Defult option for CPOD and porpoise to click train detector.

        Also a minor

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Create click_train_help.md

        * Update click_train_help.md

        * Update click_train_help.md

        * Updates and bug fixes to click train detector and CPOD importer

        * Bug fix for raw spectrogram in TDDisplayFX

        * Update KetosClassifier.java

        * Fix standard classifier JSON logging

        * Fixed bug in sweep classifier when using SoundTrap click detections

        * Added some colour averaging in the TFDisplayFX spectrgoram

        * Bug fix for rainbow click bearings

        Bug fix when rainbow clicks are imported mean bearings cannot be calculated - was an array size issue in DelayGroup

        * Google humpback whale deep learning classifier

        Google's humpback whale deep learning classifier can now be imported.
        Updated TDisplayFX to make the data selection panes cleaner and clearer.
        Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

        * Updated the prediction plots on time display

        Deep learning prediciton plots on the time display have now been updated to have some colour options and also act as a legend.

        * Updates to TDisplayFX

        yFIshmael now owrks with TDisplayFX
        TDisplayFX UI changes to make simpler.
        Some abstraction for drawing lines on TDisplayFX

        * Merge fixes to click train detector

        * Bug fix to UI

        * Updates to FX GUI

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Screenshots

        * Updates and bug fixes to click train detector and CPOD importer

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Updates and bug fixes to click train detector and CPOD importer

        * Fix standard classifier JSON logging

        * Merge fixes to click train detector

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Screenshots

        * Updates and bug fixes to click train detector and CPOD importer

        * Updates to click train detector

        New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
        CPOD data can now build average waveforms.
        CPOD click trains can be viewed in TDisplayFX pop up menu displays
        Fixed Peak Frequency symbol chooser so it saves the colour box settings

        * Screenshots

        * Updates and bug fixes to click train detector and CPOD importer

        * Fix standard classifier JSON logging

        * Google humpback whale deep learning classifier

        Google's humpback whale deep learning classifier can now be imported.
        Updated TDisplayFX to make the data selection panes cleaner and clearer.
        Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

        * Bug fix to UI

        * Bug fixes to FX GUI

        * Updates to click train detector

        * Squashed commit of the following:

        commit 9f998165ee
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Mon May 2 19:40:24 2022 +0100

            Updates to support ContactCollator plugin (#33)

            * Change synchronization on RawDataTransforms soit uses the owner data
            holder, not itself for synchronization. Otherwise you get thread locks.

            * fix problem in SummaryComand

            * Update command line options

            * Change synchronization on RawDataTransforms soit uses the owner data
            holder, not itself for synchronization. Otherwise you get thread locks.

            * Update command line options

            * Update DecimatorParams.java

            * couple of updates to support new contact collator plugin

            * Sorting out sample rate info in clip display to support Contact Collator
            plugin

            * FLAC Speed

            Improve flac speed

            * Update .gitignore

            * Update .gitignore

            * Updates to support new features in Contact Collator

            * Small update to RawDatautils to handle null data

        * Updates to click train detector

        * Squashed commit of the following:

        commit 62b020b320
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Sat May 14 06:52:20 2022 +0100

            Add a new offlinefileslist function

        commit 3a9a5311aa
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Wed Apr 27 09:43:31 2022 +0100

            Update .gitignore

        commit 9f998165ee
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Mon May 2 19:40:24 2022 +0100

            Updates to support ContactCollator plugin (#33)

            * Change synchronization on RawDataTransforms soit uses the owner data
            holder, not itself for synchronization. Otherwise you get thread locks.

            * fix problem in SummaryComand

            * Update command line options

            * Change synchronization on RawDataTransforms soit uses the owner data
            holder, not itself for synchronization. Otherwise you get thread locks.

            * Update command line options

            * Update DecimatorParams.java

            * couple of updates to support new contact collator plugin

            * Sorting out sample rate info in clip display to support Contact Collator
            plugin

            * FLAC Speed

            Improve flac speed

            * Update .gitignore

            * Update .gitignore

            * Updates to support new features in Contact Collator

            * Small update to RawDatautils to handle null data

        * Updated data selector for click train detector

        * Click train detector updates and bug fixes

        Fixed very annoying bug which meant templates did not show properly when the dialog was first opened in swing.

        Added feature to simple classifier were % of clicks of one click classification (or other data selector paramter) can be used to classify.

        * Bug fix and improvements for Ketos

        Ketos models now automatically set the correct sample length when loaded.

        Bug fix for the TDisplayFX - null pointer exception if no class names loaded and sorted recently introduced bug in drawing predictions.

        * Updates to deep learning and FX GUI

        Added some more example sounds to deep learning UI.

        Updated click detector in the FX GUI.

        * PAMGuard FX sound output update

        * Updates to FX GUI

        * Updates to FX GUI

        * Update RawDataTransforms.java

        * Fixes to FX UI

        * Squashed commit of the following:

        commit 11ba8bf91e
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Thu Aug 4 11:45:47 2022 +0100

            MErge from DG Branch (#47)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

            * Click detector display fixes

            1. ICI not displaying correctly
            2. Component sizes in display dialog on hres monitors

            * Work on batch processing, after testing of options to autostart,
            autoexit and set wav file folder, database and binary store.

            * Update MHTClickTrainAlgorithm.java

            Fix unsynchronised access to a datablock in click train detector which was causing index errors.

            * Revamp of offline process messaging and control

            Includes some databsae logging of completed tasks

            * Offline task logging

            Bit more work, including notes and database storage of task
            reprocessing. Guess this could all become 'proper' PAMGuard data and be
            shown in a table on the display but that not priority enough.

            * Dialog packing

            Fix a couple of dialogs which don't back well on HDPI monitors

            * UDP Control

            Added multiport functionality

        commit 9a9f542d95
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Thu Aug 4 11:42:45 2022 +0100

            Merge DG to Main (#46)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

            * Click detector display fixes

            1. ICI not displaying correctly
            2. Component sizes in display dialog on hres monitors

            * Work on batch processing, after testing of options to autostart,
            autoexit and set wav file folder, database and binary store.

            * Update MHTClickTrainAlgorithm.java

            Fix unsynchronised access to a datablock in click train detector which was causing index errors.

            * Revamp of offline process messaging and control

            Includes some databsae logging of completed tasks

            * Offline task logging

            Bit more work, including notes and database storage of task
            reprocessing. Guess this could all become 'proper' PAMGuard data and be
            shown in a table on the display but that not priority enough.

            * Dialog packing

            Fix a couple of dialogs which don't back well on HDPI monitors

            * UDP Control

            Added multiport functionality

        commit 49cd547aee
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Thu Aug 4 11:40:29 2022 +0100

            Merge DG branch (#45)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

            * Click detector display fixes

            1. ICI not displaying correctly
            2. Component sizes in display dialog on hres monitors

            * Work on batch processing, after testing of options to autostart,
            autoexit and set wav file folder, database and binary store.

            * Update MHTClickTrainAlgorithm.java

            Fix unsynchronised access to a datablock in click train detector which was causing index errors.

            * Revamp of offline process messaging and control

            Includes some databsae logging of completed tasks

            * Offline task logging

            Bit more work, including notes and database storage of task
            reprocessing. Guess this could all become 'proper' PAMGuard data and be
            shown in a table on the display but that not priority enough.

            * Dialog packing

            Fix a couple of dialogs which don't back well on HDPI monitors

            * UDP Control

            Added multiport functionality

        commit 016cfd0da5
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Thu Aug 4 11:35:06 2022 +0100

            Dialog positioning

            New functions to better positions dialogs on screen

        commit c9f2ab3e97
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Mon Aug 1 11:13:24 2022 +0100

            puch to main (#44)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

            * Click detector display fixes

            1. ICI not displaying correctly
            2. Component sizes in display dialog on hres monitors

            * Work on batch processing, after testing of options to autostart,
            autoexit and set wav file folder, database and binary store.

            * Update MHTClickTrainAlgorithm.java

            Fix unsynchronised access to a datablock in click train detector which was causing index errors.

            * Revamp of offline process messaging and control

            Includes some databsae logging of completed tasks

            * Offline task logging

            Bit more work, including notes and database storage of task
            reprocessing. Guess this could all become 'proper' PAMGuard data and be
            shown in a table on the display but that not priority enough.

            * Dialog packing

            Fix a couple of dialogs which don't back well on HDPI monitors

        commit 55f5a3fcf1
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Mon Aug 1 10:59:36 2022 +0100

            Group detections menu

            Small changes to limit the number of menu items in "Add to existing
            group" to a maximum of 25 entries.

        commit b3f6c0e665
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Fri Jul 29 10:50:45 2022 +0100

            Handle -nogui option in PamWorker

            PamWorker used to catalog files at startup (if a file folder input
            system is used). This creates a progress dialog. Stop it appearing in
            -nogui operations.

        commit 8569b6b579
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Fri Jul 22 08:30:47 2022 +0100

            Click display fixes (#41)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

            * Click detector display fixes

            1. ICI not displaying correctly
            2. Component sizes in display dialog on hres monitors

        commit 128a512ff6
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Tue Jul 19 16:37:57 2022 +0100

            Another attempt at stopping it crashing on a headless system

            Dealing with displays that get created for clickangle vetos and a call
            to the gui in the click train detector.

        commit 6eaa6e4978
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Tue Jul 19 08:20:07 2022 +0100

            nogoi fix for headless systems. (#40)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

        commit 9fdd30556b
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Tue Jul 12 15:53:07 2022 +0100

            Variable sound output level (#39)

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

        * Bug fixes to click train detector

        Fixed bug with number of coasts in the MHT Kernel
        Added an option for amplitude to have a maximum
        Removed print statements.

        * Bug fix for click train logging

        The size of the string classifers field was dynamically set - this was a bug.

        * Bug fixes to the click train detector

        Bearing classifier section now updates properly when dialog reopened
        Fixed rare bug when garbage bot attempts to find the last data unit in a list of zero units.

        * Squashed commit of the following:

        commit 5a37bfe915
        Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
        Date:   Fri Aug 19 08:17:06 2022 +0100

            Changes from DG branch (#50)

            * Variable sound output level

            Mods to SoundPlayback module to allow additional parameters. Implemented
            system for NI cards to allow changes to selected output voltage range
            meaning output can be boosted to level higher than current default.

            * Code to support nogui operations when no screens present on headless
            system

            * Fix problem of nogui headless operation trying to access screen size.

            * Click detector display fixes

            1. ICI not displaying correctly
            2. Component sizes in display dialog on hres monitors

            * Work on batch processing, after testing of options to autostart,
            autoexit and set wav file folder, database and binary store.

            * Update MHTClickTrainAlgorithm.java

            Fix unsynchronised access to a datablock in click train detector which was causing index errors.

            * Revamp of offline process messaging and control

            Includes some databsae logging of completed tasks

            * Offline task logging

            Bit more work, including notes and database storage of task
            reprocessing. Guess this could all become 'proper' PAMGuard data and be
            shown in a table on the display but that not priority enough.

            * Dialog packing

            Fix a couple of dialogs which don't back well on HDPI monitors

            * UDP Control

            Added multiport functionality

            * Java version

            Changes unpacker to deal with non numeric characters on Linux

            * Fix to getVersion()

            So new version of this command should now work on Linux and Windows.

            * Multiport test

            Quick tester for multiport comms

            * Spectrogram display

            Stop spectrogram display continually recreating panels since it was
            unsubscribing discarded ones and sometimes causing crash in observable
            notifications.

            * Backup manager bug

            Error if no database. Fixed.

        commit b08e86e330
        Author: Jamie Mac <macster110@gmail.com>
        Date:   Wed Aug 17 09:16:52 2022 +0100

            Bug fix for click train detector (#49)

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Screenshots

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * More screenshots

            * Add screenshots

            * Update click_train_help.md

            * Add classifier screenshot

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Update click_train_help.md

            * Update POM with latest jdl4pam

            * Add screenshots for click train detector help

            * Screenshots

            * Update click_train_help.md

            * Defult option for CPOD and porpoise to click train detector.

            Also a minor

            * Update pom.xml

            * Bug fix for raw spectrogram in TDDisplayFX

            * Update KetosClassifier.java

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Screenshots

            * Update click_train_help.md

            * More screenshots

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots

            * Add classifier screenshot

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots for click train detector help

            * Screenshots

            * Update click_train_help.md

            * Defult option for CPOD and porpoise to click train detector.

            Also a minor

            * Bug fix for raw spectrogram in TDDisplayFX

            * Update KetosClassifier.java

            * Fix standard classifier JSON logging

            * Update click_train_help.md

            * Fixed bug in sweep classifier when using SoundTrap click detections

            * Added some colour averaging in the TFDisplayFX spectrgoram

            * Bug fix for rainbow click bearings

            Bug fix when rainbow clicks are imported mean bearings cannot be calculated - was an array size issue in DelayGroup

            * Google humpback whale deep learning classifier

            Google's humpback whale deep learning classifier can now be imported.
            Updated TDisplayFX to make the data selection panes cleaner and clearer.
            Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

            * Updated the prediction plots on time display

            Deep learning prediciton plots on the time display have now been updated to have some colour options and also act as a legend.

            * Updates to TDisplayFX

            yFIshmael now owrks with TDisplayFX
            TDisplayFX UI changes to make simpler.
            Some abstraction for drawing lines on TDisplayFX

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Screenshots

            * Update click_train_help.md

            * More screenshots

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots

            * Add classifier screenshot

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots for click train detector help

            * Screenshots

            * Update click_train_help.md

            * Defult option for CPOD and porpoise to click train detector.

            Also a minor

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Bug fix for raw spectrogram in TDDisplayFX

            * Update KetosClassifier.java

            * Fix standard classifier JSON logging

            * Fixed bug in sweep classifier when using SoundTrap click detections

            * Added some colour averaging in the TFDisplayFX spectrgoram

            * Bug fix for rainbow click bearings

            Bug fix when rainbow clicks are imported mean bearings cannot be calculated - was an array size issue in DelayGroup

            * Google humpback whale deep learning classifier

            Google's humpback whale deep learning classifier can now be imported.
            Updated TDisplayFX to make the data selection panes cleaner and clearer.
            Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

            * Updated the prediction plots on time display

            Deep learning prediciton plots on the time display have now been updated to have some colour options and also act as a legend.

            * Updates to TDisplayFX

            yFIshmael now owrks with TDisplayFX
            TDisplayFX UI changes to make simpler.
            Some abstraction for drawing lines on TDisplayFX

            * Merge fixes to click train detector

            * Bug fix to UI

            * Updates to FX GUI

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Screenshots

            * Updates and bug fixes to click train detector and CPOD importer

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Updates and bug fixes to click train detector and CPOD importer

            * Fix standard classifier JSON logging

            * Merge fixes to click train detector

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Screenshots

            * Updates and bug fixes to click train detector and CPOD importer

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Screenshots

            * Updates and bug fixes to click train detector and CPOD importer

            * Fix standard classifier JSON logging

            * Google humpback whale deep learning classifier

            Google's humpback whale deep learning classifier can now be imported.
            Updated TDisplayFX to make the data selection panes cleaner and clearer.
            Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

            * Bug fix to UI

            * Bug fixes to FX GUI

            * Updates to click train detector

            * Squashed commit of the following:

            commit 9f998165ee
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Mon May 2 19:40:24 2022 +0100

                Updates to support ContactCollator plugin (#33)

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * fix problem in SummaryComand

                * Update command line options

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * Update command line options

                * Update DecimatorParams.java

                * couple of updates to support new contact collator plugin

                * Sorting out sample rate info in clip display to support Contact Collator
                plugin

                * FLAC Speed

                Improve flac speed

                * Update .gitignore

                * Update .gitignore

                * Updates to support new features in Contact Collator

                * Small update to RawDatautils to handle null data

            * Updates to click train detector

            * Squashed commit of the following:

            commit 62b020b320
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Sat May 14 06:52:20 2022 +0100

                Add a new offlinefileslist function

            commit 3a9a5311aa
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Wed Apr 27 09:43:31 2022 +0100

                Update .gitignore

            commit 9f998165ee
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Mon May 2 19:40:24 2022 +0100

                Updates to support ContactCollator plugin (#33)

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * fix problem in SummaryComand

                * Update command line options

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * Update command line options

                * Update DecimatorParams.java

                * couple of updates to support new contact collator plugin

                * Sorting out sample rate info in clip display to support Contact Collator
                plugin

                * FLAC Speed

                Improve flac speed

                * Update .gitignore

                * Update .gitignore

                * Updates to support new features in Contact Collator

                * Small update to RawDatautils to handle null data

            * Updated data selector for click train detector

            * Click train detector updates and bug fixes

            Fixed very annoying bug which meant templates did not show properly when the dialog was first opened in swing.

            Added feature to simple classifier were % of clicks of one click classification (or other data selector paramter) can be used to classify.

            * Bug fix and improvements for Ketos

            Ketos models now automatically set the correct sample length when loaded.

            Bug fix for the TDisplayFX - null pointer exception if no class names loaded and sorted recently introduced bug in drawing predictions.

            * Updates to deep learning and FX GUI

            Added some more example sounds to deep learning UI.

            Updated click detector in the FX GUI.

            * PAMGuard FX sound output update

            * Updates to FX GUI

            * Updates to FX GUI

            * Update RawDataTransforms.java

            * Fixes to FX UI

            * Squashed commit of the following:

            commit 11ba8bf91e
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Thu Aug 4 11:45:47 2022 +0100

                MErge from DG Branch (#47)

                * Variable sound output level

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

                * Code to support nogui operations when no screens present on headless
                system

                * Fix problem of nogui headless operation trying to access screen size.

                * Click detector display fixes

                1. ICI not displaying correctly
                2. Component sizes in display dialog on hres monitors

                * Work on batch processing, after testing of options to autostart,
                autoexit and set wav file folder, database and binary store.

                * Update MHTClickTrainAlgorithm.java

                Fix unsynchronised access to a datablock in click train detector which was causing index errors.

                * Revamp of offline process messaging and control

                Includes some databsae logging of completed tasks

                * Offline task logging

                Bit more work, including notes and database storage of task
                reprocessing. Guess this could all become 'proper' PAMGuard data and be
                shown in a table on the display but that not priority enough.

                * Dialog packing

                Fix a couple of dialogs which don't back well on HDPI monitors

                * UDP Control

                Added multiport functionality

            commit 9a9f542d95
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Thu Aug 4 11:42:45 2022 +0100

                Merge DG to Main (#46)

                * Variable sound output level

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

                * Code to support nogui operations when no screens present on headless
                system

                * Fix problem of nogui headless operation trying to access screen size.

                * Click detector display fixes

                1. ICI not displaying correctly
                2. Component sizes in display dialog on hres monitors

                * Work on batch processing, after testing of options to autostart,
                autoexit and set wav file folder, database and binary store.

                * Update MHTClickTrainAlgorithm.java

                Fix unsynchronised access to a datablock in click train detector which was causing index errors.

                * Revamp of offline process messaging and control

                Includes some databsae logging of completed tasks

                * Offline task logging

                Bit more work, including notes and database storage of task
                reprocessing. Guess this could all become 'proper' PAMGuard data and be
                shown in a table on the display but that not priority enough.

                * Dialog packing

                Fix a couple of dialogs which don't back well on HDPI monitors

                * UDP Control

                Added multiport functionality

            commit 49cd547aee
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Thu Aug 4 11:40:29 2022 +0100

                Merge DG branch (#45)

                * Variable sound output level

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

                * Code to support nogui operations when no screens present on headless
                system

                * Fix problem of nogui headless operation trying to access screen size.

                * Click detector display fixes

                1. ICI not displaying correctly
                2. Component sizes in display dialog on hres monitors

                * Work on batch processing, after testing of options to autostart,
                autoexit and set wav file folder, database and binary store.

                * Update MHTClickTrainAlgorithm.java

                Fix unsynchronised access to a datablock in click train detector which was causing index errors.

                * Revamp of offline process messaging and control

                Includes some databsae logging of completed tasks

                * Offline task logging

                Bit more work, including notes and database storage of task
                reprocessing. Guess this could all become 'proper' PAMGuard data and be
                shown in a table on the display but that not priority enough.

                * Dialog packing

                Fix a couple of dialogs which don't back well on HDPI monitors

                * UDP Control

                Added multiport functionality

            commit 016cfd0da5
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Thu Aug 4 11:35:06 2022 +0100

                Dialog positioning

                New functions to better positions dialogs on screen

            commit c9f2ab3e97
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Mon Aug 1 11:13:24 2022 +0100

                puch to main (#44)

                * Variable sound output level

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

                * Code to support nogui operations when no screens present on headless
                system

                * Fix problem of nogui headless operation trying to access screen size.

                * Click detector display fixes

                1. ICI not displaying correctly
                2. Component sizes in display dialog on hres monitors

                * Work on batch processing, after testing of options to autostart,
                autoexit and set wav file folder, database and binary store.

                * Update MHTClickTrainAlgorithm.java

                Fix unsynchronised access to a datablock in click train detector which was causing index errors.

                * Revamp of offline process messaging and control

                Includes some databsae logging of completed tasks

                * Offline task logging

                Bit more work, including notes and database storage of task
                reprocessing. Guess this could all become 'proper' PAMGuard data and be
                shown in a table on the display but that not priority enough.

                * Dialog packing

                Fix a couple of dialogs which don't back well on HDPI monitors

            commit 55f5a3fcf1
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Mon Aug 1 10:59:36 2022 +0100

                Group detections menu

                Small changes to limit the number of menu items in "Add to existing
                group" to a maximum of 25 entries.

            commit b3f6c0e665
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Fri Jul 29 10:50:45 2022 +0100

                Handle -nogui option in PamWorker

                PamWorker used to catalog files at startup (if a file folder input
                system is used). This creates a progress dialog. Stop it appearing in
                -nogui operations.

            commit 8569b6b579
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Fri Jul 22 08:30:47 2022 +0100

                Click display fixes (#41)

                * Variable sound output level

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

                * Code to support nogui operations when no screens present on headless
                system

                * Fix problem of nogui headless operation trying to access screen size.

                * Click detector display fixes

                1. ICI not displaying correctly
                2. Component sizes in display dialog on hres monitors

            commit 128a512ff6
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Tue Jul 19 16:37:57 2022 +0100

                Another attempt at stopping it crashing on a headless system

                Dealing with displays that get created for clickangle vetos and a call
                to the gui in the click train detector.

            commit 6eaa6e4978
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Tue Jul 19 08:20:07 2022 +0100

                nogoi fix for headless systems. (#40)

                * Variable sound output level

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

                * Code to support nogui operations when no screens present on headless
                system

                * Fix problem of nogui headless operation trying to access screen size.

            commit 9fdd30556b
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Tue Jul 12 15:53:07 2022 +0100

                Variable sound output level (#39)

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

            * Bug fixes to click train detector

            Fixed bug with number of coasts in the MHT Kernel
            Added an option for amplitude to have a maximum
            Removed print statements.

            * Bug fix for click train logging

            The size of the string classifers field was dynamically set - this was a bug.

            Co-authored-by: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>

        commit ef0330173b
        Author: Jamie Mac <macster110@gmail.com>
        Date:   Mon Aug 8 10:32:19 2022 +0100

            Click trian detector fixes (#48)

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Screenshots

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * More screenshots

            * Add screenshots

            * Update click_train_help.md

            * Add classifier screenshot

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Update click_train_help.md

            * Update POM with latest jdl4pam

            * Add screenshots for click train detector help

            * Screenshots

            * Update click_train_help.md

            * Defult option for CPOD and porpoise to click train detector.

            Also a minor

            * Update pom.xml

            * Bug fix for raw spectrogram in TDDisplayFX

            * Update KetosClassifier.java

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Screenshots

            * Update click_train_help.md

            * More screenshots

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots

            * Add classifier screenshot

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots for click train detector help

            * Screenshots

            * Update click_train_help.md

            * Defult option for CPOD and porpoise to click train detector.

            Also a minor

            * Bug fix for raw spectrogram in TDDisplayFX

            * Update KetosClassifier.java

            * Fix standard classifier JSON logging

            * Update click_train_help.md

            * Fixed bug in sweep classifier when using SoundTrap click detections

            * Added some colour averaging in the TFDisplayFX spectrgoram

            * Bug fix for rainbow click bearings

            Bug fix when rainbow clicks are imported mean bearings cannot be calculated - was an array size issue in DelayGroup

            * Google humpback whale deep learning classifier

            Google's humpback whale deep learning classifier can now be imported.
            Updated TDisplayFX to make the data selection panes cleaner and clearer.
            Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

            * Updated the prediction plots on time display

            Deep learning prediciton plots on the time display have now been updated to have some colour options and also act as a legend.

            * Updates to TDisplayFX

            yFIshmael now owrks with TDisplayFX
            TDisplayFX UI changes to make simpler.
            Some abstraction for drawing lines on TDisplayFX

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Screenshots

            * Update click_train_help.md

            * More screenshots

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots

            * Add classifier screenshot

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Add screenshots for click train detector help

            * Screenshots

            * Update click_train_help.md

            * Defult option for CPOD and porpoise to click train detector.

            Also a minor

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Create click_train_help.md

            * Update click_train_help.md

            * Update click_train_help.md

            * Updates and bug fixes to click train detector and CPOD importer

            * Bug fix for raw spectrogram in TDDisplayFX

            * Update KetosClassifier.java

            * Fix standard classifier JSON logging

            * Fixed bug in sweep classifier when using SoundTrap click detections

            * Added some colour averaging in the TFDisplayFX spectrgoram

            * Bug fix for rainbow click bearings

            Bug fix when rainbow clicks are imported mean bearings cannot be calculated - was an array size issue in DelayGroup

            * Google humpback whale deep learning classifier

            Google's humpback whale deep learning classifier can now be imported.
            Updated TDisplayFX to make the data selection panes cleaner and clearer.
            Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

            * Updated the prediction plots on time display

            Deep learning prediciton plots on the time display have now been updated to have some colour options and also act as a legend.

            * Updates to TDisplayFX

            yFIshmael now owrks with TDisplayFX
            TDisplayFX UI changes to make simpler.
            Some abstraction for drawing lines on TDisplayFX

            * Merge fixes to click train detector

            * Bug fix to UI

            * Updates to FX GUI

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Screenshots

            * Updates and bug fixes to click train detector and CPOD importer

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Updates and bug fixes to click train detector and CPOD importer

            * Fix standard classifier JSON logging

            * Merge fixes to click train detector

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Screenshots

            * Updates and bug fixes to click train detector and CPOD importer

            * Updates to click train detector

            New GUI for click train classification - more intuitive and allows users to build more powerful classifiers.
            CPOD data can now build average waveforms.
            CPOD click trains can be viewed in TDisplayFX pop up menu displays
            Fixed Peak Frequency symbol chooser so it saves the colour box settings

            * Screenshots

            * Updates and bug fixes to click train detector and CPOD importer

            * Fix standard classifier JSON logging

            * Google humpback whale deep learning classifier

            Google's humpback whale deep learning classifier can now be imported.
            Updated TDisplayFX to make the data selection panes cleaner and clearer.
            Updated the TDisplayFX so that predicitons from deep learning models now have some display options e.g. changing colour.

            * Bug fix to UI

            * Bug fixes to FX GUI

            * Updates to click train detector

            * Squashed commit of the following:

            commit 9f998165ee
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Mon May 2 19:40:24 2022 +0100

                Updates to support ContactCollator plugin (#33)

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * fix problem in SummaryComand

                * Update command line options

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * Update command line options

                * Update DecimatorParams.java

                * couple of updates to support new contact collator plugin

                * Sorting out sample rate info in clip display to support Contact Collator
                plugin

                * FLAC Speed

                Improve flac speed

                * Update .gitignore

                * Update .gitignore

                * Updates to support new features in Contact Collator

                * Small update to RawDatautils to handle null data

            * Updates to click train detector

            * Squashed commit of the following:

            commit 62b020b320
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Sat May 14 06:52:20 2022 +0100

                Add a new offlinefileslist function

            commit 3a9a5311aa
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Wed Apr 27 09:43:31 2022 +0100

                Update .gitignore

            commit 9f998165ee
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Mon May 2 19:40:24 2022 +0100

                Updates to support ContactCollator plugin (#33)

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * fix problem in SummaryComand

                * Update command line options

                * Change synchronization on RawDataTransforms soit uses the owner data
                holder, not itself for synchronization. Otherwise you get thread locks.

                * Update command line options

                * Update DecimatorParams.java

                * couple of updates to support new contact collator plugin

                * Sorting out sample rate info in clip display to support Contact Collator
                plugin

                * FLAC Speed

                Improve flac speed

                * Update .gitignore

                * Update .gitignore

                * Updates to support new features in Contact Collator

                * Small update to RawDatautils to handle null data

            * Updated data selector for click train detector

            * Click train detector updates and bug fixes

            Fixed very annoying bug which meant templates did not show properly when the dialog was first opened in swing.

            Added feature to simple classifier were % of clicks of one click classification (or other data selector paramter) can be used to classify.

            * Bug fix and improvements for Ketos

            Ketos models now automatically set the correct sample length when loaded.

            Bug fix for the TDisplayFX - null pointer exception if no class names loaded and sorted recently introduced bug in drawing predictions.

            * Updates to deep learning and FX GUI

            Added some more example sounds to deep learning UI.

            Updated click detector in the FX GUI.

            * PAMGuard FX sound output update

            * Updates to FX GUI

            * Updates to FX GUI

            * Update RawDataTransforms.java

            * Fixes to FX UI

            * Squashed commit of the following:

            commit 11ba8bf91e
            Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
            Date:   Thu Aug 4 11:45:47 2022 +0100

                MErge from DG Branch (#47)

                * Variable sound output level

                Mods to SoundPlayback module to allow additional parameters. Implemented
                system for NI cards to allow changes to selected output voltage range
                meaning output can be boosted to level higher than current default.

                * Code to support nogui operations when no screens present on headless
                system

                * Fix problem of nogui headless operation trying to access screen size.

                * Click detector display fixes

                1. ICI not displaying correctly
               …

    Co-authored-by: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>

commit 30793b55b0
Merge: abc33adb 63cc66a4
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Fri Oct 21 11:11:03 2022 +0100

    Merge pull request #26 from PAMGuard/main

    Merge from DG (#76)

commit abc33adbfd
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Fri Oct 21 11:09:35 2022 +0100

    Error reporting in -nogui

    A lot of warnings were being issued and trying to use the default window
    which caused a null pointer when running -nogui. This is fixed by a) not
    trying to access frames which are null and b) changing the PAMWarning
    system to write messages to terminal rather than open a dialog.

commit 0029fbb1c1
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Tue Oct 18 17:02:49 2022 +0100

    DWV Import

    Fixed DWV importer so that a binary file is still created if a DWV file
    doesn't exist. this is totally normal in quiet conditions, so the
    correct thing to do is to generate a binary file with no data so that
    effort is correctly recorded.

commit 15d4468a0e
Merge: 68271501 e4faed5c
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Tue Oct 4 11:19:37 2022 +0100

    Merge pull request #25 from PAMGuard/main

    Merge changes from main

commit 682715018f
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Fri Sep 30 14:49:33 2022 +0100

    couple of final neatenings up of CTD

commit de809b6572
Merge: cc003c16 4015461f
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Fri Sep 30 14:24:34 2022 +0100

    Merge pull request #24 from PAMGuard/main

    Fixes to click train detector (#73)

commit cc003c167a
Merge: 55cd735e 149dfab2
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Fri Sep 30 14:10:59 2022 +0100

    Merge pull request #23 from PAMGuard/main

    Work on bug fixes in CTD classifier (#72)

commit 55cd735ec3
Merge: f899d01a 91a704b0
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Fri Sep 30 09:55:32 2022 +0100

    Merge pull request #22 from PAMGuard/main

    merge main

commit f899d01a41
Merge: 83f1343b fccc0a71
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Thu Sep 29 14:55:24 2022 +0100

    Merge pull request #21 from PAMGuard/main

    Work on bug fixes in CTD classifier

commit 83f1343b02
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Thu Sep 29 14:54:52 2022 +0100

    Work on bug fixes in CTD classifier

commit 481315187f
Merge: 570479ef 5983f30d
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Tue Sep 27 16:57:54 2022 +0100

    Merge pull request #20 from PAMGuard/main

    Get CTD bug fix

commit 570479efcf
Merge: ec4082eb cf4c97a2
Author: Douglas Gillespie <50671166+douggillespie@users.noreply.github.com>
Date:   Fri Sep 23 11:47:13 2022 +0100

    Merge pull request #19 from PAMGuard/main

    CTD Data Selector fixes (#66)
This commit is contained in:
Jamie Mac 2022-11-17 16:46:39 +00:00
parent 403ed74c26
commit 793ac96576
74 changed files with 2463 additions and 571 deletions

1
.gitignore vendored
View File

@ -40,4 +40,3 @@ settings.xml
.classpath
.classpath
.classpath
.project

View File

@ -15,12 +15,12 @@
@font-face
{font-family:"Calibri Light";
panose-1:2 15 3 2 2 2 4 3 2 4;}
@font-face
{font-family:Tahoma;
panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
{font-family:Cambria;
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Tahoma;
panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin-top:0cm;
@ -388,7 +388,10 @@ PamguardBeta_ViewerMode.exe):</p>
<h1><a name="_LATEST_VERSION_2.02.03"></a><em><span style='font-size:12.0pt;
font-family:"Cambria",serif;font-style:normal'><a
href="#_Latest_Version_2.02.05">LATEST VERSION 2.02.05 October 2022</a></span></em></h1>
href="#_Latest_Version_2.02.06">LATEST VERSION 2.02.06 November 2022</a></span></em></h1>
<h1><em><span style='font-size:12.0pt;font-family:"Cambria",serif;font-style:
normal'><a href="#_Latest_Version_2.02.05">Version 2.02.05 October 2022</a></span></em></h1>
<h1><em><span style='font-size:12.0pt;font-family:"Cambria",serif;font-style:
normal'><a href="#_Latest_Version_2.02.03_2">Version 2.02.03 February 2022</a></span></em></h1>
@ -443,8 +446,34 @@ Version 2.00.10 June 2017</a></span></h1>
<h1><span style='font-size:12.0pt'><a href="#_Older_Versions">Older Versions</a></span></h1>
<h1><a name="_Latest_Version_2.02.03_1"></a><a name="_Latest_Version_2.02.05"></a><span
lang=EN-US>Latest Version 2.02.05 October 2022</span></h1>
<h1><a name="_Latest_Version_2.02.03_1"></a><a name="_Latest_Version_2.02.05"></a><a
name="_Latest_Version_2.02.06"></a><span lang=EN-US>Latest Version 2.02.06
November 2022</span></h1>
<h2><span lang=EN-US>Bug Fixes</span></h2>
<p class=MsoNormal><span lang=EN-US>Two memory leaks:</span></p>
<p class=MsoNormal><span lang=EN-US>A memory leak has been found which seems to
mostly occur in Viewer mode. Some data on background noise measurements are not
being cleared from memory, so memory will eventually run out. This could happen
after browsing a lot of data, but was most likely when reprocessing files
offline, for example running click classifiers. This is now fixed. </span></p>
<p class=MsoNormal><span lang=EN-US>Also fixed a memory leak in the ROCCA
whistle classification module.</span></p>
<h2><span lang=EN-US>New Features</span></h2>
<p class=MsoNormal><span lang=EN-US>SoundTrap SUD file reading. If youre using
SoundTrap autonomous recorders from Ocean Instruments, you no longer need to
decompress the SoundTrap files prior to processing. This will save time and a
lot of disk space. Extraction of clicks from the inbuilt SoundTrap Click
detector can also happen while processing SUD file data with other detectors,
thereby streamlining the whole processing chain. Read the online Help for
details. &nbsp;&nbsp;</span></p>
<h1><span lang=EN-US>Version 2.02.05 October 2022</span></h1>
<h2><span lang=EN-US>Click Train Detector Features and Bug Fixes</span></h2>
@ -453,16 +482,16 @@ lang=EN-US>Latest Version 2.02.05 October 2022</span></h1>
<p class=MsoNormal><span lang=EN-US>Changes to GUI to make dialog shorter for
low DPI screens. </span></p>
<p class=MsoNormal><span lang=EN-US>Complete rewrite of the classification system
to have nested classifiers which can be enabled or disabled. </span></p>
<p class=MsoNormal><span lang=EN-US>Complete rewrite of the classification
system to have nested classifiers which can be enabled or disabled. </span></p>
<p class=MsoNormal><span lang=EN-US>Changes to classification GUI to
accommodate the new classification system.</span></p>
<p class=MsoNormal><span lang=EN-US>Addition of data selectors to the minimum
number of clicks accepted by the classifier. This allows the click-by-click
classifier and the click train detector to be used to together to improve
classification accuracy. </span></p>
<p class=MsoNormal><span lang=EN-US>Addition of data selectors to the minimum number
of clicks accepted by the classifier. This allows the click-by-click classifier
and the click train detector to be used to together to improve classification
accuracy. </span></p>
<p class=MsoNormal><b><span lang=EN-US>Bug fixes</span></b></p>
@ -499,9 +528,9 @@ audio files. </span></p>
<h2><span lang=EN-US>Bug Fixes</span></h2>
<p class=MsoNormal><span lang=EN-US>Soundtrap DWV import. Will now generate binary
files even if DWV file doesn’t exist (which is correct behavior in quiet
conditions when no clicks were detected). </span></p>
<p class=MsoNormal><span lang=EN-US>Soundtrap DWV import. Will now generate
binary files even if DWV file doesnÂt exist (which is correct behavior in
quiet conditions when no clicks were detected). </span></p>
<p class=MsoNormal><span lang=EN-US>Spectrogram. Changes to stop occasional
crashing when restarting processing of wav files. </span></p>
@ -535,8 +564,8 @@ running in real time. Added template names based on file names. </p>
<p class=MsoNormal>#13 Merging files when offline processing file folders: Had
an error introduced in last release which caused it to fail to recognise gaps
between files, meaning that some output data (i.e. after a gap) would have an
incorrect time stamp. This did not affect data if the ‘merge contiguous files’
option was not selected. </p>
incorrect time stamp. This did not affect data if the ÃÂmerge contiguous
filesÃÂ option was not selected. </p>
<p class=MsoNormal>#14 Logger forms data were not plotting correctly. This was
due to the required data selection functions not being fully implemented. This
@ -609,10 +638,10 @@ href="http://www.pamguard.org/downloads.php?cat_id=3">here</a>.</p>
<p class=MsoNormal><b><span lang=EN-US>Detection Group Localiser</span></b><span
lang=EN-US> </span></p>
<p class=MsoNormal>This module has been renamed “Detection Grouper”, so as to
avoid confusion with the Group 3D localizer. This is because the Detection
Grouper is more for organizing data into groups to be localized than it is for
doing localization.</p>
<p class=MsoNormal>This module has been renamed ÓDetection GrouperÔ, so
as to avoid confusion with the Group 3D localizer. This is because the
Detection Grouper is more for organizing data into groups to be localized than
it is for doing localization.</p>
<p class=MsoNormal><b><span lang=EN-US>Minor Bug Fixes</span></b><span
lang=EN-US> </span></p>
@ -672,13 +701,13 @@ Implemented a Backup Manager for backing up multiple types of data to multiple
locations] </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>6. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
Upgrades to how PAMGuard lets the user enter custom date formats in the Sound
Acquisition dialog </p>
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
lang=EN-US> </span>Upgrades to how PAMGuard lets the user enter custom date
formats in the Sound Acquisition dialog </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>7. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
Extended XML-output support to all of the modules </p>
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
lang=EN-US> </span>Extended XML-output support to all of the modules </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>8. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
@ -690,8 +719,8 @@ lang=EN-US> </span>Upgrades to the Symbol Manager framework, to give more
control over colours and symbols </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>10. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
Added an option to hide the ship on the map </p>
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
lang=EN-US> </span>Added an option to hide the ship on the map </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>11. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
@ -720,9 +749,9 @@ decimating/upsampling by a non-integer amount </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>16. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
Noise Level Outputs - as an aid to performance diagnosis, some detectors
(currently the GPL, Click Detector and Whistle and Moan Detector) are outputting
additional noise metrics to their binary output files. These can be read with
the <a href="https://sourceforge.net/projects/pamguard/files/Matlab/">PAMGuard
(currently the GPL, Click Detector and Whistle and Moan Detector) are
outputting additional noise metrics to their binary output files. These can be
read with the <a href="https://sourceforge.net/projects/pamguard/files/Matlab/">PAMGuard
Matlab library</a> and used to diagnose system performance in varying noise
conditions. Improved displays within PAMGuard for these noise metrics will be
included in a future release. </p>
@ -730,10 +759,10 @@ included in a future release. </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>17. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
An implementation of the Generalized Power Law Detector, developed by Tyler
Helble ([Helble et al., ‘A generalized power-law detection algorithm for humpback
whale vocalizations’, The Journal of the Acoustical Society of America, vol.
131, no. 4, pp. 2682–2699, 2012) is now available. For details, see the online
help </p>
Helble ([Helble et al., ÃÂA generalized power-law detection algorithm for
humpback whale vocalizationsÃÂ, The Journal of the Acoustical Society of
America, vol. 131, no. 4, pp. 2682ÃÂ2699, 2012) is now available. For
details, see the online help </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>18. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
@ -755,10 +784,10 @@ Version 2.00.10</a> before proceeding with installation and use of this
version.</b></p>
<p class=MsoNormal>This version of PAMGuard has been bundled with Java 13
(release 13.0.1). PSFX files generated in previous beta releases (2.xx.xx) should
be compatible with this version, and vice-versa. PSF files generated in core
releases (1.15.xx) can be loaded in this version, but will be converted to PSFX
files when PAMGuard exits.</p>
(release 13.0.1). PSFX files generated in previous beta releases (2.xx.xx)
should be compatible with this version, and vice-versa. PSF files generated in
core releases (1.15.xx) can be loaded in this version, but will be converted to
PSFX files when PAMGuard exits.</p>
<p class=MsoNormal><b><span lang=EN-US>Bug Fixes</span></b></p>
@ -841,8 +870,8 @@ lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nb
Added logger form annotation to Spectrogram Annotation module. </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>6. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
Better auto-scaling in Ishmael Detector graphics window. </p>
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
lang=EN-US> </span>Better auto-scaling in Ishmael Detector graphics window. </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>7. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
@ -969,8 +998,8 @@ lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nb
<p class=MsoNormal><b><span lang=EN-US>Upgrades</span></b></p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>1. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
Add functionality for bluetooth headsets. </p>
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
lang=EN-US> </span>Add functionality for bluetooth headsets. </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>2. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
@ -1040,11 +1069,10 @@ placement, etc.</p>
<h1><a name="_Latest_Beta_Version_2.01.03"></a><span lang=EN-US>Version 2.01.03
February 2020</span></h1>
<p class=MsoNormal><b>If you are upgrading from a PAMGuard core release
(1.15.xx), PAMGuard Version 2 contains major updates. You should read and
understand the notes listed for <a href="#_Latest_Beta_Version_2.00.10">Beta
Version 2.00.10</a> before proceeding with installation and use of this
version.</b></p>
<p class=MsoNormal><b>If you are upgrading from a PAMGuard core release (1.15.xx),
PAMGuard Version 2 contains major updates. You should read and understand the
notes listed for <a href="#_Latest_Beta_Version_2.00.10">Beta Version 2.00.10</a>
before proceeding with installation and use of this version.</b></p>
<p class=MsoNormal>This version of PAMGuard has been bundled with Java 13
(release 13.0.1). PSFX files generated in previous beta releases (2.xx.xx)
@ -1068,9 +1096,9 @@ lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nb
Bug 435. Logger forms subtabs not working.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>4. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
Bug 436. Bug in Serial Port interface was occassionally causing PAMGuard to
crash without error message.</p>
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
lang=EN-US> </span>Bug 436. Bug in Serial Port interface was occassionally
causing PAMGuard to crash without error message.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>5. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
@ -1094,13 +1122,14 @@ lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nb
Bug 441. Plot coordinate calculations incorrect in PamAxis.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>10. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
Bug 442. BT Display does not change click symbol color when Colour By
Superdetection is selected.</p>
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
lang=EN-US> </span>Bug 442. BT Display does not change click symbol color when
Colour By Superdetection is selected.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>11. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
Bug 443. NI playback crashing immediately if a device is not present.</p>
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
lang=EN-US> </span>Bug 443. NI playback crashing immediately if a device is not
present.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>12. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
@ -1149,13 +1178,13 @@ Added option in Sound Acquisition settings dialog to override filename time
stamp and use PC local time instead. </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>3. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
Add option to Whistle &amp; Moan Detector data selector to only display
whistles that have super-detections. </p>
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
lang=EN-US> </span>Add option to Whistle &amp; Moan Detector data selector to
only display whistles that have super-detections. </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>4. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
Functionality to clone hydrophone streamers. </p>
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
lang=EN-US> </span>Functionality to clone hydrophone streamers. </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>5. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
@ -1183,9 +1212,9 @@ lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nb
Added a few new options to the Click Detector Sweep Classifier. </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>10. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
Add option to the Map module's Plot Overlay Options dialog, to show events
occuring in the future (<em><span style='font-family:"Calibri",sans-serif'>look
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
lang=EN-US> </span>Add option to the Map module's Plot Overlay Options dialog,
to show events occuring in the future (<em><span style='font-family:"Calibri",sans-serif'>look
ahead</span></em>) instead of the default display of events which have already
occurred. Can make it easier to match up the map with clicks seen in the Click
Detector display. </p>
@ -1235,8 +1264,9 @@ lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nb
Bug 429. Click Bearings at 180 degrees</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>4. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
Bug 430. Rocca calculates inflection point parameters incorrectly</p>
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
lang=EN-US> </span>Bug 430. Rocca calculates inflection point parameters
incorrectly</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>5. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
@ -1250,20 +1280,21 @@ Bug 432. MySQL database interface - connection problems</p>
<p class=MsoNormal><b><span lang=EN-US>Upgrades</span></b></p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>1. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
New display for Gebco Netcdf bathymetry maps.</p>
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
lang=EN-US> </span>New display for Gebco Netcdf bathymetry maps.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>2. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
lang=EN-US> </span>Difar enhancements based on recent field testing.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>3. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
Click Train Detector upgrades, including localisation capabilities.</p>
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
lang=EN-US> </span>Click Train Detector upgrades, including localisation
capabilities.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>4. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
Updates to the Ishmael detectors.</p>
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
lang=EN-US> </span>Updates to the Ishmael detectors.</p>
<!-- ************************************************************************************************************************** --><!-- ************************************************************************************************************************** -->
@ -1347,9 +1378,9 @@ lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nb
Upgrades to the Group Localiser, including better error estimation.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>2. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
Click Train Detector upgrades, including ability to import time chunks from csv
file for batch processing.</p>
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
lang=EN-US> </span>Click Train Detector upgrades, including ability to import
time chunks from csv file for batch processing.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>3. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
@ -1362,9 +1393,9 @@ lang=EN-US> </span>Added adaptive noise filter to Ishmael Detectors.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>5. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
lang=EN-US> </span>Many upgrades to the Sound Playback module, including a
high-pass filter, gain control, and the ability to mix wavefrom and envelope
data together to listen to high-frequency clicks and dolphin whistles at the
same time.</p>
high-pass filter, gain control, and the ability to mix wavefrom and envelope data
together to listen to high-frequency clicks and dolphin whistles at the same
time.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>6. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
@ -1476,14 +1507,14 @@ lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nb
Updates to the Ishmael module.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>9. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
Added option to the WarnOnce dialog to hide a warning for the current PAMGuard
session, but not forever.</p>
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
lang=EN-US> </span>Added option to the WarnOnce dialog to hide a warning for
the current PAMGuard session, but not forever.</p>
<!-- ************************************************************************************************************************** --><!-- ************************************************************************************************************************** -->
<h1><a name="_Latest_Beta_Version_2.00.14c"></a><span lang=EN-US>Beta Version 2.00.14c
October 2018</span></h1>
<h1><a name="_Latest_Beta_Version_2.00.14c"></a><span lang=EN-US>Beta Version
2.00.14c October 2018</span></h1>
<p class=MsoNormal><span lang=EN-US>PAMGuard Version 2 contains major updates.
You should read and understand the notes listed for <a
@ -1519,10 +1550,10 @@ lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nb
lang=EN-US> </span>Added decimal degrees option to latitude/longitude dialog.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>2. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
Added option in the Click Delay parameters to restrict the number of initial
samples used in the calculation. This can be useful for cleaning up delays in
the presence of echoes and small time delays.</p>
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
lang=EN-US> </span>Added option in the Click Delay parameters to restrict the
number of initial samples used in the calculation. This can be useful for
cleaning up delays in the presence of echoes and small time delays.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>3. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
@ -1590,7 +1621,8 @@ Annotation module which has now been given two text type annotations.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>9. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Bug 391. Click Detector not registering change in multi-threading option.</p>
</span>Bug 391. Click Detector not registering change in multi-threading
option.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>10. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@ -1633,11 +1665,11 @@ lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nb
lang=EN-US> </span>Added ability to read differential GPS data.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>5. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
Added check for duplicate settings in the psf file when exiting Pamguard. If
duplicate settings are found, user is given the option to leave them in the psf
or get rid of them. Duplicate settings are ignored by Pamguard, but can cause
the psf file to grow large over time.</p>
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
lang=EN-US> </span>Added check for duplicate settings in the psf file when
exiting Pamguard. If duplicate settings are found, user is given the option to
leave them in the psf or get rid of them. Duplicate settings are ignored by
Pamguard, but can cause the psf file to grow large over time.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>6. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
@ -1705,8 +1737,8 @@ lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nb
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>10. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Bug 376. Error when using a serialised data map which spans a period of time
in which Pamguard modules have changed.</p>
</span>Bug 376. Error when using a serialised data map which spans a period of
time in which Pamguard modules have changed.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>11. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@ -1745,8 +1777,9 @@ used in older versions. Older psf files can be loaded with this version, but
will be converted.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>4. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
Many updates to the Video Range module. Will currently only work with landmarks.</p>
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
lang=EN-US> </span>Many updates to the Video Range module. Will currently only
work with landmarks.</p>
<!-- ************************************************************************************************************************** -->
@ -1809,8 +1842,8 @@ Beta versions</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>11. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Bug 366. Rocca manual whistle contour extraction throws error when trying
to classify a boxed whistle</p>
</span>Bug 366. Rocca manual whistle contour extraction throws error when
trying to classify a boxed whistle</p>
<p class=MsoNormal><b><span lang=EN-US>Upgrades</span></b></p>
@ -1879,8 +1912,8 @@ lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nb
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>10.</span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Bug 354. Whistle Classifier was crashing if user accidentally entered invalid
parameters. Have added diagnostics to prevent this.</p>
</span>Bug 354. Whistle Classifier was crashing if user accidentally entered
invalid parameters. Have added diagnostics to prevent this.</p>
<p class=MsoNormal><b><span lang=EN-US>Upgrades</span></b></p>
@ -1946,8 +1979,8 @@ lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nb
Added sound playback and other useful information to bar on FX display</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>2. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
Updates/bug fixes to the landmark module. </p>
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
lang=EN-US> </span>Updates/bug fixes to the landmark module. </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>3. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
@ -1955,8 +1988,9 @@ lang=EN-US> </span>Added a simulated white noise source which can be moved
around in the same way as other sources. </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>4. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
Reworked annotation system, and added annotations to binary storage </p>
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
lang=EN-US> </span>Reworked annotation system, and added annotations to binary
storage </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>5. </span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
@ -1996,7 +2030,7 @@ file format is the addition of a Unique Data Identifier (UID) to each unit of
data. This is intended to aid in offline analysis by making it easier for the
user to link what they are seeing on different PAMGuard displays and also to
link with any data post processed in Matlab or other custom analysis software.
UID’s are also added to PAMGuard database tables. </span></p>
UID’s are also added to PAMGuard database tables. </span></p>
<h4><span lang=EN-US>Converting Old Data</span></h4>
@ -2004,14 +2038,14 @@ UID’s are also added to PAMGuard database tables. </span></p>
viewer they will automatically be converted. For safety, the original binary
files will not be overwritten and the new data will be placed in a new folder
on your computer with the same path as the old data, but suffixed with
‘_WithUID’, e.g. if your binary data were previously stored in the folder
ÃÂ_WithUIDÃÂ, e.g. if your binary data were previously stored in the folder
C:\MySurvey\binarydata the new data will be written to
C:\MySurvey\binarydata_WithUID. </span></p>
<p class=MsoNormal><span lang=EN-US>The additional UID column will be added to
all database tables and populated with unique values. For data which are stored
in both the binary files and in database tables, the same UID’s will be used in
both data stores. </span></p>
in both the binary files and in database tables, the same UIDÃÂs will be used
in both data stores. </span></p>
<h3><span lang=EN-US>New Displays</span></h3>
@ -2025,11 +2059,11 @@ Note that this display is only available if you are running Java 8 or later. </s
<h3><span lang=EN-US>Event Marking and the Detection Group Localiser</span></h3>
<p class=MsoNormal><span lang=EN-US>A new system of event marking which can be used
both online and offline has been added to PAMGuard. Details are in the PAMGuard
help file (Displays/Display Marking). Data can be selected on the Map, the
Spectrogram Display and the new Time Display FX in a similar way and sent to
other PAMGuard modules. The new marking and data selection system works with
<p class=MsoNormal><span lang=EN-US>A new system of event marking which can be
used both online and offline has been added to PAMGuard. Details are in the
PAMGuard help file (Displays/Display Marking). Data can be selected on the Map,
the Spectrogram Display and the new Time Display FX in a similar way and sent
to other PAMGuard modules. The new marking and data selection system works with
the new Detection Group Localiser. The Detection Group Localiser extends the
functionality which always existed in the click detector to other types of data
(e.g. Whistles) so that they can be grouped and tracked using target motion
@ -2074,8 +2108,8 @@ lang=EN-US>&nbsp;</span></p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>1.</span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><span lang=EN-US>Bug 317. Rocca Module Data Purging. </span>The ROCCA
module was not performing data purging when using classifiers developed for
</span><span lang=EN-US>Bug 317. Rocca Module Data Purging. </span>The ROCCA module
was not performing data purging when using classifiers developed for
Hawaii/Temperate Pacific/North Atlantic datasets. This has been corrected.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>2.</span><span
@ -2154,8 +2188,8 @@ happens when the user selects save as new configuration. This has been fixed.</p
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Bug 315. code searched for file in working folder, which is the
installation folder when starting PAMGuard using a shortcut link. But when
double-clicking on a psf, the working folder is the location of the psf. This has
been fixed.</p>
double-clicking on a psf, the working folder is the location of the psf. This
has been fixed.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>7.</span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span
@ -2184,8 +2218,8 @@ jar file will be required rather than a new bespoke PAMGuard installation.</span
<p class=MsoNormal><span lang=EN-US>Module code development remains largely
unchanged, in most cases simply requiring the addition of an interface class.
&nbsp;Instructions for the development of new modules utilizing the plug-in scheme
can be found <a href="http://www.pamguard.org/16_HowtomakePlug-Ins.html"
&nbsp;Instructions for the development of new modules utilizing the plug-in
scheme can be found <a href="http://www.pamguard.org/16_HowtomakePlug-Ins.html"
target="_blank">here</a>. &nbsp;Plug-in modules can be downloaded from the
PAMGuard website here, but developers are encouraged to host and maintain their
own modules.</span></p>
@ -2193,8 +2227,8 @@ own modules.</span></p>
<p class=MsoNormal><span lang=EN-US>Modules of interest to the general PAM
community will remain as part of the core PAMGuard installation. However,
specialized modules which are useful to only a small number of users have been
removed and are available as a separate download. The following modules have been
removed:</span></p>
removed and are available as a separate download. The following modules have
been removed:</span></p>
<p class=MsoListParagraph style='margin-left:43.5pt;text-indent:-25.5pt'>1.<span
style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@ -2245,19 +2279,19 @@ November 2016</span></h1>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>1.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Bug 303. Some ASIO sound cards not working with either ASIO system in PAMGuard.
For the PAMGuard ASIO system, this was due to a data format used by some sound
cards never being properly implemented. For the “New ASIO system” which is
based on jAsioHost, the unpacking of that format contained a bug which returned
incorrect numbers, so data were swamped with noise. Both systems are now fixed.
By preference, users should use the PAMGuard ASIO system since the JAsioHost
based system seems to drop samples when many channels are running at high
sample rate. </span></p>
cards never being properly implemented. For the ÓNew ASIO systemÔ which
is based on jAsioHost, the unpacking of that format contained a bug which
returned incorrect numbers, so data were swamped with noise. Both systems are
now fixed. By preference, users should use the PAMGuard ASIO system since the
JAsioHost based system seems to drop samples when many channels are running at
high sample rate. </span></p>
<p class=MsoListParagraph style='text-indent:-18.0pt'>2.<span style='font-size-adjust: none;
font-stretch: normal'><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></span><span lang=EN-US>Bug 305. Date and Time not being correctly
extracted from wav files created using SoundTrap recorders. Fixed by correctly
finding and unpacking information in the accompanying xml log files that come with
SoundTrap files. </span></p>
finding and unpacking information in the accompanying xml log files that come
with SoundTrap files. </span></p>
<h1><a name="_Latest_Version_1.15.06"></a><span lang=EN-US>Version 1.15.06
November 2016</span></h1>
@ -2376,9 +2410,9 @@ the database. </span></p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>2.</span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><span lang=EN-US>The number of data streams associated with the click detector
has been tidied up so that there are a) All Click, b) Tracked Clicks (those
which are part of an event) and c) Events. </span></p>
</span><span lang=EN-US>The number of data streams associated with the click
detector has been tidied up so that there are a) All Click, b) Tracked Clicks
(those which are part of an event) and c) Events. </span></p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>3.</span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@ -2394,9 +2428,9 @@ automatic click train identification and tracking. </span></p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>5.</span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><span lang=EN-US>The automatic click train identification is now using the
same internal structures as the manual tracking, so it's possible to combine
automatic and manual tracking. </span></p>
</span><span lang=EN-US>The automatic click train identification is now using
the same internal structures as the manual tracking, so it's possible to
combine automatic and manual tracking. </span></p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>6.</span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@ -2428,15 +2462,15 @@ memory that needed to be cleaned up). In some circumstances, these pauses were
making data acquisition systems unstable. We have therefore entirely rewritten
the way in which PAMGuard handles arrays of spectrogram data (complex numbers)
so that instead of large numbers of small Java objects there are now fewer,
larger, simpler java objects. These reduce processing delays for garbage
collection and give an overall speed improvement, but will otherwise not be
noticed by users. </span></p>
larger, simpler java objects. These reduce processing delays for garbage collection
and give an overall speed improvement, but will otherwise not be noticed by
users. </span></p>
<p class=MsoNormal><i><span lang=EN-US>Click Detector RainbowClick file output</span></i></p>
<p class=MsoNormal><span lang=EN-US>This feature has been removed since it has
been obsolete for several years. Users should use the PAMGuard binary storage
system for Click Detector data. </span></p>
been obsolete for several years. Users should use the PAMGuard binary storage system
for Click Detector data. </span></p>
<h1><a name="_Latest_Version_1.15.04"></a><span lang=EN-US>Version 1.15.04 July
2016</span></h1>
@ -2476,8 +2510,9 @@ today.&nbsp; </p>
<p class=MsoListParagraph style='margin-left:38.25pt;text-indent:-20.25pt'>5.<span
style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Bug 277. Text fields in classifier dialog were not large enough to display
times greater than 10ms. We have increased length of text fields in the dialog.</p>
</span>Bug 277. Text fields in classifier dialog were not large enough to
display times greater than 10ms. We have increased length of text fields in the
dialog.</p>
<p class=MsoListParagraph style='margin-left:38.25pt;text-indent:-20.25pt'>6.<span
style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@ -2495,8 +2530,8 @@ style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&n
</span>Bug 279. GUI Resizing: The whole PAMGuard GUI would suddenly resize to
something very small when a dialog is opened. This has been traced to improper
use of a common dialog component SourcePanel which tries to repack its parent
Window. Some programmers had inadvertently set it to repack the main PAMGuard GUI
instead. This has been Fixed.</p>
Window. Some programmers had inadvertently set it to repack the main PAMGuard
GUI instead. This has been Fixed.</p>
<p class=MsoListParagraph style='margin-left:38.25pt;text-indent:-20.25pt'>8.<span
style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@ -2639,12 +2674,12 @@ boundaries when file durations are set to a maximum fixed value. </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span lang=EN-US>5.</span><span
lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Bug 262. Access to SQLite database conversion. This would fail when tables
were present which were not created by PAMGuard. &nbsp;Fixes have been put in
place for spaces in the table name or for not having an 'Id' column. Fixes have
not been implemented for spaces in a column name or use of a reserved word as a
column name, however if either of these problems do exist it will no longer
crash but issue a clear warning and carry onto the next table.</p>
</span>Bug 262. Access to SQLite database conversion. This would fail when
tables were present which were not created by PAMGuard. &nbsp;Fixes have been
put in place for spaces in the table name or for not having an 'Id' column.
Fixes have not been implemented for spaces in a column name or use of a
reserved word as a column name, however if either of these problems do exist it
will no longer crash but issue a clear warning and carry onto the next table.</p>
<p class=MsoNormal style='margin-left:18.0pt'><span lang=EN-US>&nbsp;</span></p>
@ -2653,8 +2688,8 @@ name="_Toc312065299"></a><a name="_Toc312063944"></a><a name="_Toc312065300"></a
name="_Toc312063945"></a>Version 1.14.00 Beta, September 2015</h1>
<p class=MsoNormal>The format of configuration files has changed for version
1.14.00. Older configurations will load with this new version, but
configurations saved with 1.14.00 may not open correctly with earlier versions.</p>
1.14.00. Older configurations will load with this new version, but configurations
saved with 1.14.00 may not open correctly with earlier versions.</p>
<p class=MsoNormal>PAMGuard Versions 1.14.00 and above will work with Java 8.
PAMGuard will continue to work with Java 7, but support for Java 7 will be
@ -2732,8 +2767,8 @@ events. </span></p>
<p class=MsoListParagraph style='margin-left:38.25pt;text-indent:-20.25pt'><span
lang=EN-US>5.</span><span lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><span lang=EN-US>Bug 250. DIFAR module was crashing if it attempted to
triangulate between more than two simultaneous bearings. Fixed. </span></p>
</span><span lang=EN-US>Bug 250. DIFAR module was crashing if it attempted to triangulate
between more than two simultaneous bearings. Fixed. </span></p>
<p class=MsoListParagraph style='margin-left:38.25pt;text-indent:-20.25pt'><span
lang=EN-US>6.</span><span lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@ -2834,11 +2869,11 @@ which is useful when using PAMGuard for demonstration purposes. </p>
<p class=MsoListParagraph style='margin-left:47.25pt;text-indent:-29.25pt'><span
lang=EN-US>4.</span><span lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>The sound File and Folder audio input systems now have an optional time
zone setting. Note that PAMGuard analysis should still all be taking place in
UTC and that this option is intended to allow the conversion of file times
which were not recorded as UTC into UTC and not the other way around. Use the
option with caution !</p>
</span>The sound File and Folder audio input systems now have an optional time zone
setting. Note that PAMGuard analysis should still all be taking place in UTC
and that this option is intended to allow the conversion of file times which
were not recorded as UTC into UTC and not the other way around. Use the option
with caution !</p>
<p class=MsoListParagraph style='margin-left:47.25pt;text-indent:-29.25pt'><span
lang=EN-US>5.</span><span lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@ -2879,8 +2914,8 @@ minutes and seconds. Now correctly displays the number of remaining days. </p>
<p class=MsoListParagraph style='margin-left:47.25pt;text-indent:-29.25pt'><span
lang=EN-US>4.</span><span lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Bug 226. Spectrogram Mark Observer list doesn't refresh when modules added
or removed. </p>
</span>Bug 226. Spectrogram Mark Observer list doesn't refresh when modules
added or removed. </p>
<p class=MsoListParagraph style='margin-left:47.25pt;text-indent:-29.25pt'><span
lang=EN-US>5.</span><span lang=EN-US style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@ -2953,9 +2988,8 @@ total loss of the PAMGuard configuration in viewer mode and has been rectified.
7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>Bug
218. SAIL Acquisition card would hang the system. This has also been fixed. </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'>7.&nbsp;&nbsp;&nbsp; Bug
219. Problems displaying Offline Click Events in the Viewer map have been
fixed. </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'>7.&nbsp;&nbsp;&nbsp; Bug 219.
Problems displaying Offline Click Events in the Viewer map have been fixed. </p>
<p class=MsoNormal>&nbsp;</p>
@ -3053,9 +3087,9 @@ sonobuoys. See online help for details.&nbsp; </p>
<p class=MsoNormal>This module, developed by Jamie Macaulay of St Andrews
University estimates the 3D localisation of clicks using a variety of
algorithms. It's primarily been developed to track harbour porpoise in three
dimensions over scales of 10's of metres. While currently only working with
output from the click detector, we hope eventually to extend its use to
whistles as well. </p>
dimensions over scales of 10's of metres. While currently only working with output
from the click detector, we hope eventually to extend its use to whistles as
well. </p>
<p class=MsoNormal><i>Accelerometer Readout</i> (Sensors group)</p>
@ -3073,12 +3107,12 @@ marine mammal survey package. See online help for details. </p>
<p class=MsoNormal><i>Alarms</i> (Utilities Group)</p>
<p class=MsoNormal>This is a general system of visual and audio alarms developed
by Doug Gillespie for use on a variety of projects. The alarms can be coupled
to any module or detector in PAMGuard. Where appropriate, modules can control
which of their data will cause an alarm action (e.g. in the Click detector you
can set which types of classified click will fire the alarm). See online help
for details. &nbsp;</p>
<p class=MsoNormal>This is a general system of visual and audio alarms
developed by Doug Gillespie for use on a variety of projects. The alarms can be
coupled to any module or detector in PAMGuard. Where appropriate, modules can
control which of their data will cause an alarm action (e.g. in the Click
detector you can set which types of classified click will fire the alarm). See
online help for details. &nbsp;</p>
<p class=MsoNormal><i>Noise Band Monitor</i> (Sound Processing Group)</p>
@ -3125,11 +3159,10 @@ different. Details are available in the online help. </p>
<p class=MsoNormal><i>FLAC File Support</i></p>
<p class=MsoNormal>Can now read raw audio data direct from FLAC files. <a
href="http://en.wikipedia.org/wiki/FLAC">FLAC</a> is a lossless compression
algorithm for audio data. Files, or folders of files are accessed in the same
way as WAV and AIFF files in the Sound Acquisition module. In a future release
we also hope to provide support for writing FLAC files from the sound recorder
module. </p>
href="http://en.wikipedia.org/wiki/FLAC">FLAC</a> is a lossless compression algorithm
for audio data. Files, or folders of files are accessed in the same way as WAV
and AIFF files in the Sound Acquisition module. In a future release we also
hope to provide support for writing FLAC files from the sound recorder module. </p>
<p class=MsoNormal><i>Sound Recorder Module</i></p>
@ -3195,8 +3228,8 @@ whistle.</p>
longer possible to change configurations once PAMGuard has been launched
and pressing 'Cancel' on the select dialog causes PAMGuard to exit. </li>
<li class=MsoNormal style='margin-bottom:0cm'>Airgun display. If this was
included in the PAMGuard model before the GPS module it would hang
PAMGuard. This has been rectified. </li>
included in the PAMGuard model before the GPS module it would hang PAMGuard.
This has been rectified. </li>
<li class=MsoNormal style='margin-bottom:0cm'>Fixed occasional exceptions in
the sound output modules when playing back from files. </li>
<li class=MsoNormal style='margin-bottom:0cm'>Fixed exceptions in spectrogram
@ -3276,9 +3309,9 @@ other data sources for the PAMGuard viewer. </p>
<p class=MsoNormal style='margin-left:36.0pt'><i>Database</i></p>
<p class=MsoNormal style='margin-left:36.0pt'>Can now copy data from binary storage
to the database offline for any module having both binary and database storage.
</p>
<p class=MsoNormal style='margin-left:36.0pt'>Can now copy data from binary
storage to the database offline for any module having both binary and database
storage. </p>
<p class=MsoNormal style='margin-left:36.0pt'>Can create a blank MS Access
database (2007 and later *.accdb formats only).</p>
@ -3470,9 +3503,9 @@ Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:
Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Offline event marking. Offline event marking similar to functionality in
RainbowClick is now available in the PAMGUARD viewer. Event summary data is stored
in the database and can also be exported to text files (e.g. for importing into
the Distance software).&nbsp; </p>
RainbowClick is now available in the PAMGUARD viewer. Event summary data is
stored in the database and can also be exported to text files (e.g. for
importing into the Distance software).&nbsp; </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:
Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@ -3579,8 +3612,8 @@ the correct data stream. This has been fixed. </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:
Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Whistle classifier has some new features in the classifier training
panel. It is also now possible to export training data files directly from binary
data files. </p>
panel. It is also now possible to export training data files directly from
binary data files. </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:
Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@ -3600,10 +3633,10 @@ source, even if that data source is loaded after the FFT module is created.</p>
<p class=MsoNormal>1. Binary storage module. </p>
<p class=MsoNormal>Performs a parallel role to the PAMGAURD database but uses
binary files in a proprietary format which is considerably more efficient for
data of unknown length such as whistle contours or small clips of click
waveform. This feature is currently implemented in the following modules:</p>
<p class=MsoNormal>Performs a parallel role to the PAMGAURD database but uses binary
files in a proprietary format which is considerably more efficient for data of
unknown length such as whistle contours or small clips of click waveform. This
feature is currently implemented in the following modules:</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:
Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@ -3720,9 +3753,9 @@ re-label those channels 0,1,2,3. </p>
numbering scheme. For instance, if you had a configuration which worked in real
time using channels 7 and 8 of a sound card, you could not use that same
configuration to analyse wav files, which would always read their data as
channels 0 and 1. Similarly if you switched sound cards, you may have to
reconfigure every detector and several of the displays to handle the changes in
channel numbering. </p>
channels 0 and 1. Similarly if you switched sound cards, you may have to reconfigure
every detector and several of the displays to handle the changes in channel
numbering. </p>
<p class=MsoNormal>I have spent a considerable amount of time trying to work
out a better system for handling channel numbering in PAMGUARD and have decided
@ -3833,10 +3866,10 @@ port is closed. Might prevent a few problems when using a GPS. </p>
<p class=MsoNormal>Crashes caused in real time or Mixed Mode if the number of
software channels exceeds the number of hydrophones configured in the array
manager. It is of course illogical to have software channels which are not
assigned to a hydrophone, so rather than entirely prevent PAMGUARD from crashing
I have inserted additional checks into the hydrophone array dialog which will
prevent the user from closing that dialog unless all software channels are
assigned to a hydrophone. </p>
assigned to a hydrophone, so rather than entirely prevent PAMGUARD from
crashing I have inserted additional checks into the hydrophone array dialog
which will prevent the user from closing that dialog unless all software
channels are assigned to a hydrophone. </p>
<h2><span style='font-weight:normal'>Version 1.8.01 Beta February 2010</span></h2>
@ -3854,8 +3887,8 @@ frequency versions of the click detector.</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:
Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Note that this does not (yet) permit simultaneous acquisition and
playback through</p>
</span>Note that this does not (yet) permit simultaneous acquisition and playback
through</p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:
Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@ -3933,15 +3966,15 @@ classifier is still available). </p>
Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Bearing ambiguity resolution for planar and volumetric arrays. New
features in array dialog for estimations of errors on array location. These
feed into to a maximum likelihood estimate of angles from small 2D or 3D sub arrays
to give two polar angle coordinates. this can be used to resolve left right
ambiguity and is implemented for both the click and the whistle/moan detectors.
As a result, the click detector bearing time display can now be set to go from
-180 to 180 degrees rather than 0 - 180 degrees. In this case, clicks in the
upper half of the bearing display will be to port and clicks in the right half
will be to starboard. As you pass a whale which is to port, the clicks will
move UP the display. In the long term, I hope to turn this display around so
that time is up the screen rather than across.&nbsp; </p>
feed into to a maximum likelihood estimate of angles from small 2D or 3D sub
arrays to give two polar angle coordinates. this can be used to resolve left
right ambiguity and is implemented for both the click and the whistle/moan
detectors. As a result, the click detector bearing time display can now be set
to go from -180 to 180 degrees rather than 0 - 180 degrees. In this case,
clicks in the upper half of the bearing display will be to port and clicks in
the right half will be to starboard. As you pass a whale which is to port, the
clicks will move UP the display. In the long term, I hope to turn this display
around so that time is up the screen rather than across.&nbsp; </p>
<p class=MsoNormal><b>Small features and bug fixes</b></p>
@ -4050,10 +4083,10 @@ Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:
Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>New menu functionality by right clicking on any of the tabs of the main
tab control will allow the user to copy the tab contents to the system
clipboard from where it can be copied into other programs (e.g. Word,
Powerpoint, etc.).Some modules, such as the map, have this implemented in other
menus (right click) and also allow printing.&nbsp; </p>
tab control will allow the user to copy the tab contents to the system clipboard
from where it can be copied into other programs (e.g. Word, Powerpoint,
etc.).Some modules, such as the map, have this implemented in other menus
(right click) and also allow printing.&nbsp; </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:
Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@ -4136,10 +4169,10 @@ help pages</p>
<p class=MsoNormal><b>Bug Fixes</b></p>
<p class=MsoNormal>Memory leak caused by Night / Day colour manager now fixed. This
would cause memory leaks when multiple files were being analysed off-line and
would eventually crash PAMGUARD. The way that colours are managed in PAMGUARD
has been rewritten.&nbsp; </p>
<p class=MsoNormal>Memory leak caused by Night / Day colour manager now fixed.
This would cause memory leaks when multiple files were being analysed off-line
and would eventually crash PAMGUARD. The way that colours are managed in
PAMGUARD has been rewritten.&nbsp; </p>
<p class=MsoNormal>Some issues with Swing fixed that might have been causing
hang ups on startup especially on Macs/Linux machines</p>
@ -4210,8 +4243,8 @@ file)</p>
<p class=MsoNormal><b>Changes</b></p>
<p class=MsoNormal>The User Input module (for text entry of information by the user)
has been moved from the Displays sub menu of the Add Modules menu, to
<p class=MsoNormal>The User Input module (for text entry of information by the
user) has been moved from the Displays sub menu of the Add Modules menu, to
Utilities. This will not affect how existing settings files are loaded. </p>
<p class=MsoNormal><b>Multi-screen environments.</b></p>
@ -4230,8 +4263,8 @@ acquisition.&nbsp; </p>
<p class=MsoNormal><b>Bug fixes</b></p>
<p class=MsoNormal>Speed up of graphics, particularly regarding large quantities
of gps track &nbsp;data</p>
<p class=MsoNormal>Speed up of graphics, particularly regarding large
quantities of gps track &nbsp;data</p>
<p class=MsoNormal>National Instruments cards with names &gt; 20 characters
long are now correctly &nbsp;recognised. </p>
@ -4382,8 +4415,8 @@ channels or textual content change. </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:
Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span>Model viewer. Have stopped it from jumping on top of the main PAMGUARD &nbsp;display
when dialogs are closed. </p>
</span>Model viewer. Have stopped it from jumping on top of the main PAMGUARD
&nbsp;display when dialogs are closed. </p>
<p class=MsoListParagraph style='text-indent:-18.0pt'><span style='font-family:
Symbol'>'</span><span style='font-size:7.0pt;font-family:"Times New Roman",serif'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@ -4714,12 +4747,12 @@ and Ishmael-type detectors and localisers. </p>
<p class=MsoNormal>Information from above modules can be displayed on
configurable user displays which support real time scrolling spectrograms and
radar displays. Detection and localisation information can be optionally
displayed on the map display.Map enhancements include improved scrolling whereby
the user can click and drag to pan the area. PamGuard can now interface with
MySQL database servers and users can easily select which information is logged.
(This replaces the previous 'flat-file' logging feature). A simulation module
allows virtual vocalising animals to be placed on the map to assist in training
and development. Extensive online user help has been added to PamGuard
displayed on the map display.Map enhancements include improved scrolling
whereby the user can click and drag to pan the area. PamGuard can now interface
with MySQL database servers and users can easily select which information is
logged. (This replaces the previous 'flat-file' logging feature). A simulation
module allows virtual vocalising animals to be placed on the map to assist in
training and development. Extensive online user help has been added to PamGuard
Application</p>
<h2>0.03b - first version used in a real 'at sea' environment.18/08/06</h2>

View File

@ -4,7 +4,7 @@
<groupId>org.pamguard</groupId>
<artifactId>Pamguard</artifactId>
<name>Pamguard Java12+</name>
<version>2.02.04ae</version>
<version>2.02.06</version>
<description>Pamguard for Java 12+, using Maven to control dependcies</description>
<url>www.pamguard.org</url>
<organization>

View File

@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.pamguard</groupId>
<artifactId>Pamguard</artifactId>
<version>2.02.05</version>
<version>2.02.06</version>
<name>Pamguard Java12+</name>
<description>Pamguard for Java 12+, using Maven to control dependcies</description>
<url>www.pamguard.org</url>

View File

@ -1,4 +1,4 @@
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
#Tue Nov 01 15:41:45 GMT 2022
#Tue Oct 11 15:59:57 BST 2022
x3-2.1.0.jar>=
x3-2.1.0.pom>=

View File

@ -38,6 +38,9 @@ import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.SwingConstants;
import org.pamguard.x3.sud.Chunk;
import org.pamguard.x3.sud.SudFileListener;
import dataGram.DatagramManager;
import dataMap.OfflineDataMapPoint;
import dataMap.filemaps.OfflineFileServer;
@ -49,12 +52,13 @@ import simulatedAcquisition.SimProcess;
import asiojni.ASIOSoundSystem;
import asiojni.NewAsioSoundSystem;
import nidaqdev.NIDAQProcess;
import nidaqdev.networkdaq.NINetworkDaq;
import Acquisition.filedate.FileDate;
import Acquisition.filedate.StandardFileDate;
import Acquisition.filetypes.SoundFileTypes;
import Acquisition.layoutFX.AquisitionGUIFX;
import Acquisition.offlineFuncs.OfflineWavFileServer;
import Acquisition.rona.RonaOfflineFileServer;
import Acquisition.sud.SUDNotificationManager;
import Array.ArrayManager;
import Array.PamArray;
import Array.Preamplifier;
@ -133,6 +137,9 @@ public class AcquisitionControl extends PamControlledUnit implements PamSettings
*/
private AquisitionGUIFX aquisitionGUIFX;
private SUDNotificationManager sudNotificationManager;
protected SoundFileTypes soundFileTypes;
/**
* Main control unit for audio data acquisition.
@ -158,6 +165,8 @@ public class AcquisitionControl extends PamControlledUnit implements PamSettings
pamController = PamController.getInstance();
soundFileTypes = new SoundFileTypes(this);
registerDaqSystem(new SoundCardSystem(this));
if (PlatformInfo.calculateOS() == OSType.WINDOWS) {
registerDaqSystem(new ASIOSoundSystem(this));
@ -201,14 +210,8 @@ public class AcquisitionControl extends PamControlledUnit implements PamSettings
else {
PamStatusBar statusBar = PamStatusBar.getStatusBar();
if (statusBar != null) {
// statusBar.getToolBar().add(statusBarText = new JLabel());
// fillStatusBarText();
// statusBar.getToolBar().add(levelBar = new JProgressBar(-60, 0));
// levelBar.setValue(-60);
// levelBar.setOrientation(JProgressBar.HORIZONTAL);
if (statusBar != null && statusBarComponent != null) {
statusBar.add(statusBarComponent);
// statusBar.getToolBar().addSeparator();
setupStatusBar();
}
}
@ -239,6 +242,7 @@ public class AcquisitionControl extends PamControlledUnit implements PamSettings
private PamPanel systemPanel;
protected Component getStatusBarComponent() {
PamPanel p = new PamPanel();
p.add(statusBarText = new PamLabel());
@ -834,4 +838,15 @@ public class AcquisitionControl extends PamControlledUnit implements PamSettings
return getDaqProcess().getRawDataBlock().getSummaryString(clear);
}
/**
* Get the SUD processing notification manager.
* @return SUD processing notification manager.
*/
public SUDNotificationManager getSUDNotificationManager() {
if (sudNotificationManager == null) {
sudNotificationManager = new SUDNotificationManager();
}
return sudNotificationManager;
}
}

View File

@ -33,23 +33,23 @@ public class AcquisitionLogging extends SQLLogging {
this.acquisitionControl = acquisitionControl;
tableDef = new PamTableDefinition(pamDataBlock.getDataName(), UPDATE_POLICY_OVERWRITE);
tableDef.addTableItem(adcClockTime = new PamTableItem("ADC Clock", Types.TIMESTAMP));
tableDef.addTableItem(adcClockMillis = new PamTableItem("ADC Clock millis", Types.INTEGER));
tableDef.addTableItem(rawADCTime = new PamTableItem("RAW ADC Clock", Types.TIMESTAMP));
tableDef.addTableItem(gSamples = new PamTableItem("GigaSamples", Types.INTEGER));
tableDef.addTableItem(samples = new PamTableItem("Samples", Types.INTEGER));
tableDef.addTableItem(GPSPPSTime = new PamTableItem("GPSPPSTime", Types.TIMESTAMP));
tableDef.addTableItem(status = new PamTableItem("Status", Types.CHAR, 20));
tableDef.addTableItem(reason = new PamTableItem("Reason", Types.CHAR, 50));
tableDef.addTableItem(daqSystemType = new PamTableItem("SystemType", Types.CHAR, 50));
tableDef.addTableItem(daqSystemName = new PamTableItem("SystemName", Types.CHAR, 50));
tableDef.addTableItem(sampleRate = new PamTableItem("sampleRate", Types.INTEGER));
tableDef.addTableItem(nChannels = new PamTableItem("nChannels", Types.INTEGER));
tableDef.addTableItem(voltsPeak2Peak = new PamTableItem("voltsPeak2Peak", Types.DOUBLE));
tableDef.addTableItem(gain = new PamTableItem("gain", Types.REAL));
tableDef.addTableItem(duration = new PamTableItem("duration", Types.DOUBLE));
tableDef.addTableItem(clockError = new PamTableItem("clockError", Types.DOUBLE));
tableDef.addTableItem(serverTime = new PamTableItem("Server Time", Types.TIMESTAMP));
tableDef.addTableItem(adcClockTime = new PamTableItem("ADC Clock", Types.TIMESTAMP, "Time based on PC clock and samples since last PC clock read"));
tableDef.addTableItem(adcClockMillis = new PamTableItem("ADC Clock millis", Types.INTEGER, "Millis for adcClockTime if not supported by database"));
tableDef.addTableItem(rawADCTime = new PamTableItem("RAW ADC Clock", Types.TIMESTAMP, "Time based on start time and number of samples acquired"));
tableDef.addTableItem(gSamples = new PamTableItem("GigaSamples", Types.INTEGER, "Billions of samples. Add this*1e9 to samples"));
tableDef.addTableItem(samples = new PamTableItem("Samples", Types.INTEGER, "Samples. Add this to GigaSamples*1e9"));
tableDef.addTableItem(GPSPPSTime = new PamTableItem("GPSPPSTime", Types.TIMESTAMP, "Time derived from a GPS with PPS output"));
tableDef.addTableItem(status = new PamTableItem("Status", Types.CHAR, 20, "Acquisition Status: 'Start', 'Stop', 'Continue'"));
tableDef.addTableItem(reason = new PamTableItem("Reason", Types.CHAR, 50, "Reason for status change"));
tableDef.addTableItem(daqSystemType = new PamTableItem("SystemType", Types.CHAR, 50, "Type of acquisition system"));
tableDef.addTableItem(daqSystemName = new PamTableItem("SystemName", Types.CHAR, 50, "Specific acquistision system"));
tableDef.addTableItem(sampleRate = new PamTableItem("sampleRate", Types.INTEGER, "Sample rate (samples per second)"));
tableDef.addTableItem(nChannels = new PamTableItem("nChannels", Types.INTEGER, "Total number of channels"));
tableDef.addTableItem(voltsPeak2Peak = new PamTableItem("voltsPeak2Peak", Types.DOUBLE, "Peak to peak input voltage of ADC"));
tableDef.addTableItem(gain = new PamTableItem("gain", Types.REAL, "Additional amplifier gain"));
tableDef.addTableItem(duration = new PamTableItem("duration", Types.DOUBLE, "Time since start in seconds"));
tableDef.addTableItem(clockError = new PamTableItem("clockError", Types.DOUBLE, "Clock error in milliseconds"));
tableDef.addTableItem(serverTime = new PamTableItem("Server Time", Types.TIMESTAMP, "Time taken from an Internet time server"));
setTableDefinition(tableDef);
}

View File

@ -254,10 +254,12 @@ public class AcquisitionProcess extends PamProcess {
bufferOverflow = false;
// daqCheckTime = PamCalendar.getTimeInMillis();
if (!netRX) {
Timer t = new Timer(1, new ReallyStart());
t.setRepeats(false);
t.start();
}
}
private boolean addServerTime(DaqStatusDataUnit daqStatusDataUnit) {
if (runningSystem.isRealTime() == false) {

View File

@ -7,6 +7,8 @@ import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
@ -14,6 +16,8 @@ import java.io.IOException;
import java.io.Serializable;
import java.text.DateFormat;
import java.util.Calendar;
import java.util.List;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.UnsupportedAudioFileException;
@ -31,6 +35,10 @@ import javax.swing.border.TitledBorder;
import org.jflac.FLACDecoder;
import org.jflac.frame.Frame;
import org.jflac.util.ByteData;
import org.pamguard.x3.sud.Chunk;
import org.pamguard.x3.sud.SudAudioInputStream;
import org.pamguard.x3.sud.SudFileListener;
import org.pamguard.x3.sud.SudParams;
import org.jflac.PCMProcessor;
import org.jflac.metadata.StreamInfo;
import org.jflac.sound.spi.FlacEncoding;
@ -47,15 +55,14 @@ import wavFiles.ByteConverter;
import Acquisition.filedate.FileDate;
import Acquisition.filedate.FileDateDialogStrip;
import Acquisition.filedate.FileDateObserver;
import Acquisition.filetypes.SoundFileType;
import Acquisition.pamAudio.PamAudioFileManager;
import Acquisition.pamAudio.PamAudioFileFilter;
import Acquisition.pamAudio.PamAudioSystem;
import PamController.PamControlledUnitSettings;
import PamController.PamController;
import PamController.PamSettingManager;
import PamController.PamSettings;
import PamDetection.RawDataUnit;
import PamModel.SMRUEnable;
import PamUtils.PamCalendar;
import PamUtils.PamFileChooser;
import PamView.dialog.PamLabel;
@ -141,6 +148,11 @@ public class FileInputSystem extends DaqSystem implements ActionListener, PamSe
protected FileDateDialogStrip fileDateStrip;
/**
* Sound file types present in the current selections.
*/
private List<SoundFileType> selectedFileTypes;
/**
* Text field for skipping initial few seconds of a file.
*/
@ -151,6 +163,9 @@ public class FileInputSystem extends DaqSystem implements ActionListener, PamSe
*/
private PamWarning fileWarning;
private SudAudioInputStream sudAudioInputStream;
private SudListener sudListener;
public FileInputSystem(AcquisitionControl acquisitionControl) {
this.acquisitionControl = acquisitionControl;
@ -393,6 +408,9 @@ public class FileInputSystem extends DaqSystem implements ActionListener, PamSe
if (newFile.length() == 0) return;
File file = new File(newFile);
setSelectedFileTypes(acquisitionControl.soundFileTypes.getUsedTypes(file));
if (file == null) return;
// try to work out the date of the file
@ -421,6 +439,10 @@ public class FileInputSystem extends DaqSystem implements ActionListener, PamSe
// }
// }
if (audioStream instanceof SudAudioInputStream) {
acquisitionControl.getSUDNotificationManager().interpretNewFile(newFile, (SudAudioInputStream) audioStream);
}
AudioFormat audioFormat = audioStream.getFormat();
// fileLength = file.length();
fileSamples = audioStream.getFrameLength();
@ -538,7 +560,7 @@ public class FileInputSystem extends DaqSystem implements ActionListener, PamSe
}
public File getCurrentFile() {
System.out.println("fileInputParameters: " + fileInputParameters);
// System.out.println("fileInputParameters: " + fileInputParameters);
if (fileInputParameters.recentFiles == null) return null;
if (fileInputParameters.recentFiles.size() < 1) return null;
String fileName = fileInputParameters.recentFiles.get(0);
@ -565,7 +587,7 @@ public class FileInputSystem extends DaqSystem implements ActionListener, PamSe
System.out.println("The current file was null");
return false;
}
System.out.printf("*********************************** Opening file %s\n", currentFile.getName());
// System.out.printf("*********************************** Opening file %s\n", currentFile.getName());
try {
@ -575,6 +597,19 @@ public class FileInputSystem extends DaqSystem implements ActionListener, PamSe
audioStream = PamAudioFileManager.getInstance().getAudioInputStream(currentFile);
if (audioStream instanceof SudAudioInputStream) {
sudAudioInputStream = (SudAudioInputStream) audioStream;
if (sudListener == null) {
sudListener = new SudListener();
}
sudAudioInputStream.addSudFileListener(sudListener);
// sudAudioInputStream.ad
acquisitionControl.getSUDNotificationManager().newSudInputStream(sudAudioInputStream);
}
else {
sudAudioInputStream = null;
}
if (audioStream == null) {
return false;
}
@ -608,6 +643,15 @@ public class FileInputSystem extends DaqSystem implements ActionListener, PamSe
return true;
}
private class SudListener implements SudFileListener {
@Override
public void chunkProcessed(int chunkID, Chunk sudChunk) {
acquisitionControl.getSUDNotificationManager().chunkProcessed(chunkID, sudChunk);
}
}
public boolean runFileAnalysis() {
// keep a reference to where data will be put.
@ -997,6 +1041,9 @@ public class FileInputSystem extends DaqSystem implements ActionListener, PamSe
}
}
if (audioStream != null) {
if (audioStream instanceof SudAudioInputStream) {
acquisitionControl.getSUDNotificationManager().sudStreamClosed();
}
try {
audioStream.close();
audioStream = null;
@ -1186,4 +1233,27 @@ public class FileInputSystem extends DaqSystem implements ActionListener, PamSe
getDialogPanel();
}
}
/**
* @return the selectedFileTypes
*/
public List<SoundFileType> getSelectedFileTypes() {
return selectedFileTypes;
}
/**
* Called when the file or file list selection is changes and finds a list of all
* sound file types included in the selection. this is only implemented for SUD files
* at the moment, the idea being to offer some additional functionality.
* @param selectedFileTypes the selectedFileTypes to set
*/
public void setSelectedFileTypes(List<SoundFileType> selectedFileTypes) {
this.selectedFileTypes = selectedFileTypes;
if (selectedFileTypes == null) {
return;
}
for (SoundFileType aType : selectedFileTypes) {
aType.selected(this);
}
}
}

View File

@ -10,6 +10,8 @@ import java.awt.event.ActionListener;
import java.io.File;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.swing.BoxLayout;
@ -495,6 +497,9 @@ public class FolderInputSystem extends FileInputSystem implements PamSettings{
// fileListData.getFileCount(), System.currentTimeMillis() - wavListStart);
allFiles = fileListData.getListCopy();
List<WavFileType> asList = allFiles;
setSelectedFileTypes(acquisitionControl.soundFileTypes.getUsedTypes(allFiles));
setFileDateText();
// also open up the first file and get the sample rate and number of channels from it
// and set these

View File

@ -13,6 +13,7 @@ import java.util.TimeZone;
import Acquisition.KETime;
import Acquisition.layoutFX.FileDatePane;
import Acquisition.layoutFX.StandardFileDatePane;
import Acquisition.sud.SUDFileTime;
import PamController.PamControlledUnitSettings;
import PamController.PamSettingManager;
import PamController.PamSettings;
@ -158,6 +159,11 @@ public class StandardFileDate implements FileDate, PamSettings {
return forcedDataFormat(file, settings.getForcedDateFormat());
}
long sudTime = SUDFileTime.getSUDFileTime(file);
if (sudTime != Long.MIN_VALUE) {
return sudTime;
}
/*
* Dtag files have an accompanying XML file which
* has the same name. Try to find such a file and get
@ -169,6 +175,7 @@ public class StandardFileDate implements FileDate, PamSettings {
return dTagTime;
}
long stTime = SoundTrapTime.getSoundTrapTime(file, settings.getDateTimeFormatToUse());
if (stTime != Long.MIN_VALUE) {
setLastFormat("Soundtrap file format \"" + settings.getDateTimeFormatToUse() + "\"");

View File

@ -0,0 +1,29 @@
package Acquisition.filetypes;
import Acquisition.FileInputSystem;
import PamView.dialog.warn.WarnOnce;
public class SUDFileType extends SoundFileType {
private boolean isShown = false;
private String sudInfoText = "<html>There are SoundTrap SUD files in your selection. PAMGuard can now process data from these " +
"directly with no need to unpack them into WAV files. " +
"<p>If the SoundTrap was running with the click detector, then you should add a SoundTrap Click Detector module" +
" and detected clicks will automatically be extracted to binary files while processing the wav data." +
"<p>See the Click Detector help for further details";
public SUDFileType() {
super(".sud");
}
@Override
public void selected(FileInputSystem fileInputSystem) {
if (isShown) {
return;
}
WarnOnce.showWarning("SoundTrap SUD Files", sudInfoText, WarnOnce.OK_OPTION);
isShown = true;
}
}

View File

@ -0,0 +1,65 @@
package Acquisition.filetypes;
import java.io.File;
import java.util.List;
import Acquisition.FileInputSystem;
import Acquisition.pamAudio.PamAudioFileFilter;
import PamUtils.worker.filelist.WavFileType;
/**
* Some functions for the File and Folder input systems to give a bit of
* extra functionality / help for different file types. Primarily introduced
* to give a couple of extras for sud files.
* @author dg50
*
*/
public abstract class SoundFileType {
private String fileType;
private PamAudioFileFilter fileFilter = new PamAudioFileFilter();
public SoundFileType(String fileType) {
this.fileType = fileType.toLowerCase();
}
/**
* Work out if any files of this type are included in the current selection.
* @param fileOrFolder this for a single file.
* @param includeSubfolders used with folders.
* @return true if any exist.
*/
public boolean isFileType(File oneFile) {
if (oneFile == null) {
return false;
}
if (oneFile.isFile()) {
return oneFile.getName().toLowerCase().endsWith(fileType);
}
return false;
}
/**
* Work out if any files of this type are included in the current selection.
* @param fileOrFolder this for a single file.
* @param includeSubfolders used with folders.
* @return true if any exist.
*/
public boolean hasFileType(List<WavFileType> files) {
if (files == null) {
return false;
}
for (File aFile : files) {
if (isFileType(aFile)) {
return true;
}
}
return false;
}
public abstract void selected(FileInputSystem fileInputSystem);
}

View File

@ -0,0 +1,74 @@
package Acquisition.filetypes;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import Acquisition.AcquisitionControl;
import PamUtils.worker.filelist.WavFileType;
/**
* List of SoundFileType objects.
* @author dg50
*
*/
public class SoundFileTypes {
private AcquisitionControl acquisitionControl;
private ArrayList<SoundFileType> availableTypes = new ArrayList<>();
public SoundFileTypes(AcquisitionControl acquisitionControl) {
this.acquisitionControl = acquisitionControl;
availableTypes.add(new SUDFileType());
}
/**
* Get a list of used file types. Reaslistically this
* can only return one value.
* @param aFile
* @return
*/
public SoundFileType getFileType(File aFile) {
ArrayList<SoundFileType> usedTypes = new ArrayList<>();
for (SoundFileType aType : availableTypes) {
if (aType.isFileType(aFile)) {
return aType;
}
}
return null;
}
/**
* Get a list of used file types. Realistically this
* can only return one value but possibly it's useful to have it in the same
* format as the multiple file version. .
* @param aFile
* @return
*/
public List<SoundFileType> getUsedTypes(File aFile) {
ArrayList<SoundFileType> usedTypes = new ArrayList<>();
for (SoundFileType aType : availableTypes) {
if (aType.isFileType(aFile)) {
usedTypes.add(aType);
}
}
return usedTypes;
}
/**
* Get a list of used file types for the folder Input System.
* @param aFile
* @return
*/
public List<SoundFileType> getUsedTypes(List<WavFileType> aFile) {
ArrayList<SoundFileType> usedTypes = new ArrayList<>();
for (SoundFileType aType : availableTypes) {
if (aType.hasFileType(aFile)) {
usedTypes.add(aType);
}
}
return usedTypes;
}
}

View File

@ -109,7 +109,7 @@ public class PamAudioFileManager {
AudioInputStream stream = null;
for (int i = 0; i < pamAudioFileTypes.size(); i++) {
System.out.println(file.getName() + " " + pamAudioFileTypes.get(i).getName());
// System.out.println(file.getName() + " " + pamAudioFileTypes.get(i).getName());
if (isExtension(file, pamAudioFileTypes.get(i))) {
//System.out.println("Get stream for: " +pamAudioFileTypes.get(i).getName());
stream = pamAudioFileTypes.get(i).getAudioStream(file);

View File

@ -0,0 +1,86 @@
package Acquisition.sud;
import java.io.File;
import org.pamguard.x3.sud.ChunkHeader;
import org.pamguard.x3.sud.SudAudioInputStream;
import org.pamguard.x3.sud.SudFileMap;
import org.pamguard.x3.sud.SudParams;
import PamUtils.PamCalendar;
public class SUDFileTime {
private static long sudTime;
private static String lastFilePath = "";
/**
* Temp measure to get the time from the first available sud record.
* @param file
* @return
*/
public static long getSUDFileTime(File file) {
if (file == null || file.exists() == false) {
return Long.MIN_VALUE;
}
if (file.getName().toLowerCase().endsWith(".sud") == false) {
return Long.MIN_VALUE;
}
String filePath = file.getAbsolutePath();
if (filePath.equals(lastFilePath)) {
return sudTime;
}
/**
* Open the sud file and read it until the first chunk arrive, get the time
* from there and close it again. I don't really see another way.
*/
// long t1 = System.currentTimeMillis();
sudTime = Long.MIN_VALUE;
SudParams sudParams = new SudParams();
sudParams.saveMeta = false;
sudParams.saveWav = false;
try {
SudAudioInputStream sudAudioInputStream = SudAudioInputStream.openInputStream(file, sudParams, false);
if (sudAudioInputStream == null) {
return Long.MIN_VALUE;
}
SudFileMap sudMap = sudAudioInputStream.getSudMap();
if (sudMap == null) {
return Long.MIN_VALUE;
}
long t = sudMap.getFirstChunkTimeMillis();
if (t != 0) {
sudTime = t;
}
// sudAudioInputStream.addSudFileListener((chunkID, sudChunk)->{
// ChunkHeader chunkHead = sudChunk.chunkHeader;
// if (chunkHead == null || sudTime != Long.MIN_VALUE) {
// return;
// }
// long millis = (long) chunkHead.TimeS*1000 + (long) chunkHead.TimeOffsetUs/1000;
// if (millis > 0) {
// sudTime = millis;
// lastFilePath = filePath;
// }
// });
//
// while (sudAudioInputStream.available() > 0 && sudTime == Long.MIN_VALUE) {
//
// //note this is reading bytes of uncompressed continuous recordings only.
// sudAudioInputStream.read();
// }
//
sudAudioInputStream.close();
// long t2 = System.currentTimeMillis();
// System.out.printf("SUD file time %s extracted in %d milliseconds\n", PamCalendar.formatDBDateTime(sudTime), t2-t1);
} catch (Exception e) {
System.err.println("Error getting time from SUD file: " + e.getMessage());
}
return sudTime;
}
}

View File

@ -0,0 +1,36 @@
package Acquisition.sud;
import org.pamguard.x3.sud.Chunk;
import org.pamguard.x3.sud.SudAudioInputStream;
import org.pamguard.x3.sud.SudFileListener;
import org.pamguard.x3.sud.SudProgressListener;
public interface SUDNotificationHandler extends SudFileListener, SudProgressListener {
/**
* A new SUD file input stream has been opened.
* @param sudAudioInputStream
*/
public void newSudInputStream(SudAudioInputStream sudAudioInputStream);
/**
* SUD stream has closed.
*/
public void sudStreamClosed();
@Override
public void progress(double arg0, int arg1, int arg2);
@Override
public void chunkProcessed(int chunkId, Chunk sudChunk);
/**
* Notification that a new file or folder is selected. This is called when a file
* or folder is selected in the dialog, NOT when acquisition starts, so is a good
* opportunity for the SUD Click Detector to work out channel maps and sample rates.
* @param newFile
* @param sudAudioStream
*/
public void interpretNewFile(String newFile, SudAudioInputStream sudAudioStream);
}

View File

@ -0,0 +1,66 @@
package Acquisition.sud;
import java.util.ArrayList;
import org.pamguard.x3.sud.Chunk;
import org.pamguard.x3.sud.SudAudioInputStream;
import org.pamguard.x3.sud.SudFileListener;
import org.pamguard.x3.sud.SudProgressListener;
/**
* Class to handle appropriate notifications for SUD files, which go a bit
* beyond what's handled in the chunk notifications.
* @author dg50
*
*/
public class SUDNotificationManager implements SUDNotificationHandler {
private ArrayList<SUDNotificationHandler> handlers = new ArrayList();
public void addNotificationHandler(SUDNotificationHandler sudNotificationHandler) {
if (handlers.contains(sudNotificationHandler)) {
return;
}
handlers.add(sudNotificationHandler);
}
public boolean removeNotificationHandler(SUDNotificationHandler sudNotificationHandler) {
return handlers.remove(sudNotificationHandler);
}
@Override
public void newSudInputStream(SudAudioInputStream sudAudioInputStream) {
for (SUDNotificationHandler handler : handlers) {
handler.newSudInputStream(sudAudioInputStream);
}
}
@Override
public void sudStreamClosed() {
for (SUDNotificationHandler handler : handlers) {
handler.sudStreamClosed();
}
}
@Override
public void progress(double arg0, int arg1, int arg2) {
for (SUDNotificationHandler handler : handlers) {
handler.progress(arg0, arg1, arg2);
}
}
@Override
public void chunkProcessed(int chunkId, Chunk sudChunk) {
for (SUDNotificationHandler handler : handlers) {
handler.chunkProcessed(chunkId, sudChunk);
}
}
@Override
public void interpretNewFile(String newFile, SudAudioInputStream sudAudioStream) {
for (SUDNotificationHandler handler : handlers) {
handler.interpretNewFile(newFile, sudAudioStream);
}
}
}

View File

@ -77,6 +77,9 @@ public class ThreadingHydrophoneLocator extends StraightHydrophoneLocator implem
*/
while (gpsIt.hasPrevious()) {
gpsUnit = gpsIt.previous();
if (gpsUnit == null) {
continue;
}
gpsData = gpsUnit;
if (gpsUnit.getTimeInMillis() < timeMilliseconds) {
break;

View File

@ -313,6 +313,9 @@ public abstract class IIRFilterMethod extends FilterMethod {
// if (nOddOnes != 0) {
pole1 = pzPairs[i].getPole();
zero1 = pzPairs[i].getZero();
if (pole1 == null || zero1 == null) {
continue;
}
a1 = -zero1.real;
b1 = pole1.real;
doubleCoefficients[j+0] = a1;

View File

@ -31,12 +31,12 @@ public class PamguardVersionInfo {
* Version number, major version.minorversion.sub-release.
* Note: can't go higher than sub-release 'f'
*/
static public final String version = "2.02.05";
static public final String version = "2.02.06";
/**
* Release date
*/
static public final String date = "21 October 2022";
static public final String date = "15 November 2022";
// /**
// * Release type - Beta or Core

View File

@ -1,6 +1,5 @@
package PamController.command;
import Map.GetMapFile;
import PamController.PamControlledUnit;
import PamController.PamController;
import PamUtils.PamCalendar;
@ -56,6 +55,9 @@ public class SummaryCommand extends ExtCommand {
totalString += String.format("\n<%s>%s:%s<\\%s>", aModule.getShortUnitType(),
aModule.getUnitName(), aString, aModule.getShortUnitType());
}
if (clear) {
lastCallTime = nowTime;
}
return totalString;
}

View File

@ -674,11 +674,6 @@ final public class PamModel implements PamModelInterface, PamSettings {
mi.setModulesMenuGroup(detectorsGroup);
mi.addGUICompatabilityFlag(PamGUIManager.FX);
mi = PamModuleInfo.registerControlledUnit("soundtrap.STClickControl", "SoundTrap Click Detector");
mi.setModulesMenuGroup(detectorsGroup);
mi.setToolTipText("Click Detector module for Soundtrap detector data");
mi.setHidden(isViewer == false);
mi = PamModuleInfo.registerControlledUnit("clickTrainDetector.ClickTrainControl", "Click Train Detector");
mi.addDependency(new PamDependency(RawDataUnit.class, "clickDetector.ClickControl"));
mi.setToolTipText("Searches for click trains in detected clicks.");
@ -729,6 +724,11 @@ final public class PamModel implements PamModelInterface, PamSettings {
mi.setToolTipText("Generalised Power Law Detector for tonal sounds");
mi.setModulesMenuGroup(detectorsGroup);
mi = PamModuleInfo.registerControlledUnit("soundtrap.STClickControl", "SoundTrap Click Detector");
mi.setModulesMenuGroup(detectorsGroup);
mi.setToolTipText("Click Detector module for Soundtrap detector data only");
// mi.setHidden(isViewer == false);
// mi = PamModuleInfo.registerControlledUnit("WorkshopDemo.WorkshopController", "Workshop Demo Detector");
// mi.addDependency(new PamDependency(FFTDataUnit.class, "fftManager.PamFFTControl"));
// mi.setToolTipText("Simple demo detector for programmers");

View File

@ -17,7 +17,7 @@ public class PamAudioFileFilter extends PamFileFilter {
// addFileType(".AIFF");
// addFileType(".FLAC");
addFileType(".flac");
// addFileType(".sud");
addFileType(".sud");
}
}

View File

@ -1,7 +1,9 @@
package PamUtils;
import java.io.BufferedWriter;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringWriter;
@ -9,6 +11,7 @@ import java.io.StringWriter;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
@ -183,4 +186,47 @@ public class XMLUtils {
}
return doc;
}
/**
* Write to the given file.
* @param doc xml document
* @param outFile file
* @throws IOException
*/
public static void writeToFile(Document doc, File outFile) throws IOException {
String asString = getAsString(doc);
if (asString!=null) {
try {
BufferedWriter out = new BufferedWriter(new FileWriter(outFile, false));
out.write(asString);
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* Get the xml document as a String.
* @param doc xml document
* @return xml content as a a string.
*/
public static String getAsString(Document doc) {
try {
DOMSource domSource = new DOMSource(doc);
StringWriter writer = new StringWriter();
StreamResult result = new StreamResult(writer);
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.setOutputProperty(OutputKeys.METHOD, "xml");
transformer.setOutputProperty(OutputKeys.ENCODING, "ISO-8859-1");
// transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
transformer.transform(domSource, result);
return writer.toString();
} catch (TransformerException e) {
e.printStackTrace();
return null;
}
}
}

View File

@ -65,6 +65,7 @@ import PamDetection.LocalisationInfo;
import PamUtils.PamCalendar;
import PamUtils.PamUtils;
import PamView.symbol.PamSymbolManager;
import PamguardMVC.background.BackgroundDataBlock;
import PamguardMVC.background.BackgroundManager;
import PamguardMVC.dataOffline.OfflineDataLoadInfo;
import PamguardMVC.dataOffline.OfflineDataLoading;
@ -944,6 +945,12 @@ public class PamDataBlock<Tunit extends PamDataUnit> extends PamObservable {
recycledUnits.clear();
}
}
if (backgroundManager != null) {
BackgroundDataBlock bdb = backgroundManager.getBackgroundDataBlock();
if (bdb != null) {
bdb.clearAll();
}
}
}
/**

View File

@ -400,7 +400,7 @@ public class PamObservable {//extends PanelOverlayDraw {
}
}
private Timer t = new Timer(1000, new ActionListener() {
private Timer t = new Timer(4321, new ActionListener() {
public void actionPerformed(ActionEvent evt) {
long now = System.currentTimeMillis();
if (cpuUsage == null) return;
@ -413,6 +413,16 @@ public class PamObservable {//extends PanelOverlayDraw {
}
});
/**
* Had some issues with the Timer holding a reference to the underlying PamDataBlock
* (RoccaContourDataBlock, in this case) and not releasing it for garbage collection.
* Added in this method to force the timer to stop and release it's hold.
*/
public void stopTimer() {
t.stop();
}
public double getCPUPercent(int objectIndex) {
if (objectIndex < 0 || objectIndex >= cpuPercent.length) return -1;
return cpuPercent[objectIndex];

View File

@ -17,6 +17,7 @@ import javax.swing.Timer;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import Acquisition.FolderInputSystem;
import PamController.PamControlledUnit;
import PamController.PamControlledUnitSettings;
import PamController.PamController;
@ -24,6 +25,7 @@ import PamController.PamControllerInterface;
import PamController.PamSettingManager;
import PamController.PamSettings;
import PamController.command.CommandManager;
import PamUtils.FileFunctions;
import PamUtils.PamCalendar;
import PamUtils.PamUtils;
import PamView.MenuItemEnabler;
@ -35,6 +37,7 @@ import SoundRecorder.trigger.RecorderTrigger;
import SoundRecorder.trigger.RecorderTriggerData;
import SoundRecorder.trigger.TriggerDecisionMaker;
import backupmanager.BackupInformation;
import pamguard.GlobalArguments;
/**
* Control a sound file recorder. The sound file recorder has two
@ -434,9 +437,51 @@ public class RecorderControl extends PamControlledUnit implements PamSettings {
public boolean restoreSettings(PamControlledUnitSettings pamControlledUnitSettings) {
recorderSettings = ((RecorderSettings) pamControlledUnitSettings.getSettings()).clone();
newParams();
/*
* Then check to see if there is a command line override of the currently stored folder name.
*/
String globFolder = GlobalArguments.getParam(FolderInputSystem.GlobalWavFolderArg);
if (globFolder != null) {
boolean ok = checkGlobFolder(globFolder);
if (ok) {
recorderSettings.setOutputFolder(globFolder); // remember it.
}
else {
System.err.println("Unable to set recording storage folder " + globFolder);
}
}
return true;
}
/**
* Set and create if necessary the global folder.
* @param globFolder
*/
private boolean checkGlobFolder(String globFolder) {
File outFold = new File(globFolder);
if (outFold.exists()) {
if (outFold.isDirectory()) {
return true; // all OK
}
else {
return false; // it must be a file - that's bad !
}
}
// try to create it.
try {
if (outFold.mkdirs()) {
FileFunctions.setNonIndexingBit(outFold);
return true;
}
else {
return false; // unable to make the folder.
}
}
catch (Exception e) {
System.err.println("Can't set recording store folder: " + e.getLocalizedMessage());
return false;
}
}
/**
* Adds a recorder trigger to this recorderControl. This can either be called

View File

@ -64,6 +64,10 @@ public class RecorderSettings implements Serializable, Cloneable, ManagedParamet
*/
public String outputFolder;
public void setOutputFolder(String outputFolder) {
this.outputFolder = outputFolder;
}
/**
* Initials to add to the start of a file name, the rest
* of which is made up from the date.

View File

@ -17,7 +17,7 @@ public class SnrSqlAddon implements SQLLoggingAddon {
public SnrSqlAddon(SNRAnnotationType snrAnnotationType) {
super();
this.snrAnnotationType = snrAnnotationType;
snr = new PamTableItem("snr", Types.DOUBLE);
snr = new PamTableItem("snr", Types.DOUBLE, "Signal to Noise ratio");
}
@Override

View File

@ -18,10 +18,10 @@ public class SPLSqlAddon implements SQLLoggingAddon {
public SPLSqlAddon(SPLAnnotationType splAnnotationType) {
super();
this.splAnnotationType = splAnnotationType;
rms = new PamTableItem("RMS", Types.DOUBLE);
zeroPeak = new PamTableItem("ZeroPeak", Types.DOUBLE);
peakPeak = new PamTableItem("PeakPeak", Types.DOUBLE);
sel = new PamTableItem("SEL", Types.DOUBLE);
rms = new PamTableItem("RMS", Types.DOUBLE, "RMS Level");
zeroPeak = new PamTableItem("ZeroPeak", Types.DOUBLE, "Zero to Peak Level");
peakPeak = new PamTableItem("PeakPeak", Types.DOUBLE, "Peak to Peak Level");
sel = new PamTableItem("SEL", Types.DOUBLE, "Sound Exposure Level");
}
@Override

View File

@ -20,7 +20,7 @@ public class StringSQLLogging implements SQLLoggingAddon {
super();
this.stringAnnotationType = stringAnnotationType;
notes = new PamTableItem(stringAnnotationType.getAnnotationName(),
Types.CHAR, stringAnnotationType.getMaxLength());
Types.CHAR, stringAnnotationType.getMaxLength(), "Notes");
}
@Override

View File

@ -21,16 +21,16 @@ public class BearingAnnotationSQL implements SQLLoggingAddon {
public BearingAnnotationSQL(BearingAnnotationType bearingAnnotationType) {
super();
this.bearingAnnotationType = bearingAnnotationType;
algoName = new PamTableItem("BearingAlgorithm", Types.CHAR, 30);
angle[0] = new PamTableItem("BearingAngle1", Types.REAL);
angle[1] = new PamTableItem("BearingAngle2", Types.REAL);
angleError[0] = new PamTableItem("BearingError1", Types.REAL);
angleError[1] = new PamTableItem("BearingError2", Types.REAL);
refAngles[0] = new PamTableItem("ReferenceAngle1", Types.REAL);
refAngles[1] = new PamTableItem("ReferenceAngle2", Types.REAL);
bfPhones = new PamTableItem("BearingPhones", Types.INTEGER);
bfArrayType = new PamTableItem("BearingArrayType", Types.SMALLINT);
bfContents = new PamTableItem("BearingLocContents", Types.INTEGER);
algoName = new PamTableItem("BearingAlgorithm", Types.CHAR, 30, "Algorithm Name");
angle[0] = new PamTableItem("BearingAngle1", Types.REAL, "Horizontal angle (radians)");
angle[1] = new PamTableItem("BearingAngle2", Types.REAL, "Vertical angle (radians)");
angleError[0] = new PamTableItem("BearingError1", Types.REAL, "Horizontal angle error (radians)");
angleError[1] = new PamTableItem("BearingError2", Types.REAL, "Vertical angle error (radians)");
refAngles[0] = new PamTableItem("ReferenceAngle1", Types.REAL, "Horizontal angle reference");
refAngles[1] = new PamTableItem("ReferenceAngle2", Types.REAL, "Vertical angle reference");
bfPhones = new PamTableItem("BearingPhones", Types.INTEGER, "Used hydrophones bitmap");
bfArrayType = new PamTableItem("BearingArrayType", Types.SMALLINT, "Array Type 1=point;2=line;3=plane;4=volume");
bfContents = new PamTableItem("BearingLocContents", Types.INTEGER, "Bitmap of localisation information types");
}
@Override

View File

@ -131,6 +131,17 @@ public class BinaryStorageDialogPanel {
binaryStoreSettings.datedSubFolders = dateSubFolders.isSelected();
binaryStoreSettings.limitFileSize = limitfileSize.isSelected();
if (allowChannelOffsets) {
try {
binaryStoreSettings.channelShift = Integer.valueOf(channelOffset.getText());
}
catch (NumberFormatException e) {
return PamDialog.showWarning(owner, errorTitle, "Invalid channel offset number format");
}
if (binaryStoreSettings.channelShift < 0 || binaryStoreSettings.channelShift > 31) {
return PamDialog.showWarning(owner, errorTitle, "Channel offset bust be between 0 and 31");
}
}
if (PamController.getInstance().getRunMode() == PamController.RUN_PAMVIEW) {
return true;
}
@ -157,17 +168,6 @@ public class BinaryStorageDialogPanel {
return PamDialog.showWarning(owner, errorTitle, "Invalid file size data");
}
}
if (allowChannelOffsets) {
try {
binaryStoreSettings.channelShift = Integer.valueOf(channelOffset.getText());
}
catch (NumberFormatException e) {
return PamDialog.showWarning(owner, errorTitle, "Invalid channel offset number format");
}
if (binaryStoreSettings.channelShift < 0 || binaryStoreSettings.channelShift > 31) {
return PamDialog.showWarning(owner, errorTitle, "Channel offset bust be between 0 and 31");
}
}
NoiseStoreType nst = (NoiseStoreType) noiseStoreType.getSelectedItem();
if (nst == null) {
return PamDialog.showWarning(owner, errorTitle, "You must select a noise storage type");

View File

@ -1096,7 +1096,7 @@ public class ClickDetector extends PamProcess {
* @return true if the tasks complete successfully and the click is to be kept.
* false otherwise.
*/
private boolean completeClick(ClickDetection newClick) {
public boolean completeClick(ClickDetection newClick) {
if (newClick.dataType == ClickDetection.CLICK_CLICK) {
int nChannels = PamUtils.getNumChannels(newClick.getChannelBitmap());

View File

@ -428,11 +428,26 @@ PamSettingsSource {
JMenuItem speedMenu = new JMenuItem("Test database speed");
speedMenu.addActionListener(new SpeedMenu(parentFrame));
menu.add(speedMenu);
JMenuItem exSchema = new JMenuItem("Export database schema");
exSchema.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
exportDatabaseSchema(parentFrame);
}
});
menu.add(exSchema);
}
return menu;
}
protected void exportDatabaseSchema(JFrame parentFrame) {
dbProcess.exportDatabaseSchema(parentFrame);
}
class DatabaseFileMenuAction implements ActionListener {
private Frame frame;

View File

@ -22,6 +22,8 @@ import java.sql.Statement;
import java.sql.Types;
import java.util.ArrayList;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;
import javax.swing.Timer;
@ -36,7 +38,9 @@ import loggerForms.UDFTableDefinition;
import loggerForms.formdesign.FormEditor;
import PamController.PamControlledUnit;
import PamController.PamController;
import PamController.PamFolders;
import PamUtils.PamCalendar;
import PamUtils.PamFileChooser;
import PamView.dialog.warn.WarnOnce;
import PamguardMVC.PamDataBlock;
import PamguardMVC.PamDataUnit;
@ -1393,4 +1397,42 @@ public class DBProcess extends PamProcess {
return logViewerSettings;
}
/**
* Export all available database schema, converting PamTableDefinitions into
* valid xsd documents.
* @param parentFrame
*/
public void exportDatabaseSchema(JFrame parentFrame) {
File startLoc = PamFolders.getFileChooserPath(PamFolders.getDefaultProjectFolder());
PamFileChooser fc = new PamFileChooser();
fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
startLoc = PamFolders.getFileChooserPath(startLoc);
fc.setCurrentDirectory(startLoc);
int ans = fc.showDialog(parentFrame, "Select storage folder");
if (ans == JFileChooser.APPROVE_OPTION) {
startLoc = fc.getSelectedFile();
exportDatabaseSchema(parentFrame, startLoc);
}
}
/**
* Export all table definitions to xsd files in given folder.
* @param parentFrame
* @param folder
*/
private void exportDatabaseSchema(JFrame parentFrame, File folder) {
ArrayList<PamDataBlock> allDataBlocks = PamController.getInstance().getDataBlocks();
DBSchemaWriter schemaWriter = new DBSchemaWriter();
for (PamDataBlock aBlock : allDataBlocks) {
SQLLogging logging = aBlock.getLogging();
if (logging == null) {
continue;
}
schemaWriter.writeSchema(folder, aBlock);
}
}
}

View File

@ -0,0 +1,263 @@
package generalDatabase;
import java.io.File;
import java.io.IOException;
import java.sql.Types;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import PamUtils.XMLUtils;
import PamguardMVC.PamDataBlock;
/**
* Functions for writing database table schema in a format
* compatible with the Tethys schemas.
* @author dg50
*
*/
public class DBSchemaWriter {
private PamTableDefinition baseTableDefinition = new PamTableDefinition("PamTableDefinition");
private PamTableDefinition parentTable;
public DBSchemaWriter() {
// TODO Auto-generated constructor stub
}
public boolean writeStandardTableDef(File outputFolder, PamDataBlock dataBlock) {
PamTableDefinition aTable = new PamTableDefinition("PamStandardTable");
parentTable = null;
exportDatabaseSchema(outputFolder, dataBlock, null, aTable);
parentTable = aTable;
return true;
}
public boolean writeSchema(File outputFolder, PamDataBlock dataBlock) {
if (dataBlock == null) {
return false;
}
SQLLogging logging = dataBlock.getLogging();
if (logging == null) {
return false;
}
PamTableDefinition tableDef = logging.getTableDefinition();
tableDef = logging.getBaseTableDefinition();
if (tableDef instanceof PamTableDefinition) {
writeStandardTableDef(outputFolder, dataBlock);
}
else {
parentTable = null;
}
exportDatabaseSchema(outputFolder, dataBlock, logging, tableDef);
return true;
}
private void exportDatabaseSchema(File outputFolder, PamDataBlock dataBlock, SQLLogging logging, PamTableDefinition tableDef) {
/**
* write a parent item, e.g. if tableDef is a sub class of PamTableDefinition
*/
// String parentName = writeParentTableSchema(outputFolder, dataBlock, tableDef);
String tableName = tableDef.getTableName();
Document doc = PamUtils.XMLUtils.createBlankDoc();
Element schemaEl = doc.createElement("xs:schema");
schemaEl.setAttribute("xmlns:xs","http://www.w3.org/2001/XMLSchema");
schemaEl.setAttribute("targetNamespace", "http://tethys.sdsu.edu/schema/1.0");
doc.appendChild(schemaEl);
if (parentTable != null) {
Element parentEl = doc.createElement("xs:include");
parentEl.setAttribute("schemaLocation", parentTable.getTableName()+".xsd");
schemaEl.appendChild(parentEl);
}
fillItemElement(doc, schemaEl, tableDef.pamTableItems);
if (logging != null) {
ArrayList<SQLLoggingAddon> annots = logging.getLoggingAddOns();
if (annots != null) {
for (SQLLoggingAddon addon : annots) {
Element compEl = addAddonElement(doc, schemaEl, addon);
if (compEl != null) {
schemaEl.appendChild(compEl);
}
}
}
}
try {
File outputFile = new File(outputFolder, tableName+".xsd");
XMLUtils.writeToFile(doc, outputFile);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* Add a complex element for a SQLLogging addon.
* @param doc
* @param schemaEl
* @param addon
*/
private Element addAddonElement(Document doc, Element schemaEl, SQLLoggingAddon addon) {
Element compEl = doc.createElement("xs:complexType");
Element oEl = doc.createElement("xs:element");
oEl.setAttribute("name", addon.getName());
Element seqEl = doc.createElement("xs:sequence");
PamTableDefinition mtTable = new PamTableDefinition(addon.getName());
addon.addTableItems(mtTable);
// this is a mess ! must avoid the standard items.
fillItemElement(doc, seqEl, mtTable.pamTableItems);
compEl.appendChild(seqEl);
oEl.appendChild(compEl);
return oEl;
}
/**
* Fills information on items in a list into the given element
* This may be the schema element or may be a complex element.
* @param doc
* @param schemaEl
* @param tableItems
*/
private void fillItemElement(Document doc, Element schemaEl, List<PamTableItem> tableItems) {
for (PamTableItem tableItem : tableItems) {
if (shouldSkip(tableItem, parentTable)) {
// element is included in parent table, so skip it.
continue;
}
Element itemEl = doc.createElement("xs:element");
itemEl.setAttribute("name", tableItem.getName());
itemEl.setAttribute("type", sqlTypeToString(tableItem.getSqlType(), tableItem.getLength()));
String documentation = tableItem.getDescription();
if (documentation != null) {
Element annotation = doc.createElement("xs:annotation");
itemEl.appendChild(annotation);
Element docEl = doc.createElement("xs:documentation");
docEl.setTextContent(documentation);
annotation.appendChild(docEl);
}
schemaEl.appendChild(itemEl);
}
}
private boolean shouldSkip(PamTableItem tableItem, PamTableDefinition parentTable) {
if (parentTable == null) {
return false;
}
if (parentTable.findTableItem(tableItem.getName()) != null) {
return true;
}
return false;
}
// private String writeParentTableSchema(File outputFolder, PamDataBlock dataBlock, PamTableDefinition tableDef) {
// /**
// * Write a schema of everything that is in the parent table, then include a reference to that
// * schema. To do this, we need to a) establish if there is a table def parent, then go through
// * all the fields in THIS tableDef, see if the field exists in the parent. IF it exists in the
// * parent, write it in the parent doc, if it's only in this, write it in this doc. So far so good, but
// * we need to also make this recursive so it can build layer on layer ?
// * Reaslistically, this is all too complicated ! Just write out the schema for the PamTableDefinition
// * at the start of everything, and skip those fields in everything else. This will be a bit ad-hoc, but
// * it will otherwise be a nightmare since we don't know which table items are in which class at this point.
// */
// Class tableClass = tableDef.getClass();
// Class parentClass = tableClass.getSuperclass();
// if (parentClass.isAssignableFrom(tableClass) == false) {
// return null;
// }
//
//
// return null;
// }
private String sqlTypeToString(int sqlType, int length) {
switch (sqlType) {
case Types.ARRAY:
return "ARRAY";
case Types.BIGINT:
return "xs:long";
case Types.BINARY:
return "BINARY";
case Types.BIT:
return "BIT";
case Types.BLOB:
return "BLOB";
case Types.BOOLEAN:
return "xs:boolean";
case Types.CHAR:
return "xs:string";
case Types.CLOB:
return "CLOB";
case Types.DATALINK:
return "DATALINK";
case Types.DATE:
return "xs:dateTime";
case Types.DECIMAL:
return "DECIMAL";
case Types.DISTINCT:
return "DISTINCT";
case Types.DOUBLE:
return "xs:double";
case Types.FLOAT:
return "xs:float";
case Types.INTEGER:
return "xs:int";
case Types.JAVA_OBJECT:
return "JAVA_OBJECT";
case Types.LONGVARBINARY:
return "LONGVARBINARY(" + length + ")";
case Types.LONGVARCHAR:
return "LONGVARCHAR(" + length + ")";
case Types.NULL:
return "NULL";
case Types.NUMERIC:
return "NUMERIC";
case Types.OTHER:
return "OTHER";
case Types.REAL:
return "xs:float";
case Types.REF:
return "REF";
case Types.SMALLINT:
return "xs:short";
case Types.STRUCT:
return "STRUCT";
case Types.TIME:
return "TIME";
case Types.TIMESTAMP:
return "xs:dateTime";
case Types.TINYINT:
return "TINYINT";
case Types.VARBINARY:
return "VARBINARY(" + length + ")";
case Types.VARCHAR:
return "VARCHAR(" + length + ")";
}
return null;
}
}

View File

@ -0,0 +1,33 @@
package generalDatabase;
/**
* Run some tests to try to work out why it's so much slower to load
* data when the query is based on a non indexed column compared
* to an index one, even though the actual query execution time
* is a small fraction of the total time.
* @author dg50
*
*/
public class DatabaseFetchSpeed {
String dbName = "C:\\ProjectData\\meyGenMayData\\Database\\MeygenTritechDetectHDD_03_24.06.2022.sqlite3";
long[] idRange = {9906111, 9906977};
long[] uidRange = {8030630, 8031496};
String[] utcRange = {"2022-05-24 09:27:34", "2022-05-24 09:27:52"};
public static void main(String[] args) {
// TODO Auto-generated method stub
}
public DatabaseFetchSpeed() {
//
// qStr{1} = sprintf('SELECT Id FROM Gemini_Threshold_Detector_Targets WHERE Id BETWEEN %d and %d', ...
// idRange(1), idRange(2));
// qStr{2} = sprintf('SELECT Id FROM Gemini_Threshold_Detector_Targets WHERE UID BETWEEN %d and %d', ...
// uidRange(1), uidRange(2));
// qStr{3} = sprintf('SELECT Id FROM Gemini_Threshold_Detector_Targets WHERE UTC BETWEEN ''%s'' and ''%s''', ...
// utcRange{1}, utcRange{2});
}
}

View File

@ -43,7 +43,7 @@ public class EmptyTableDefinition implements Cloneable {
this.tableName = tableName;
this.setUpdatePolicy(updatePolicy);
pamTableItems = new ArrayList<PamTableItem>();
pamTableItems.add(indexItem = new PamTableItem(indexColName, Types.INTEGER));
pamTableItems.add(indexItem = new PamTableItem(indexColName, Types.INTEGER, "Primary key"));
indexItem.setPrimaryKey(true);
indexItem.setCounter(true);
}

View File

@ -55,15 +55,15 @@ public class PamTableDefinition extends EmptyTableDefinition implements Cloneabl
*/
public PamTableDefinition(String tableName, int updatePolicy) {
super(tableName, updatePolicy);
pamTableItems.add(uid = new PamTableItem("UID", Types.BIGINT));
pamTableItems.add(timeStampItem = new PamTableItem(utcColName, Types.TIMESTAMP));
pamTableItems.add(timeStampMillis = new PamTableItem("UTCMilliseconds", Types.SMALLINT));
pamTableItems.add(localTime = new PamTableItem("PCLocalTime", Types.TIMESTAMP));
pamTableItems.add(pcTime = new PamTableItem("PCTime", Types.TIMESTAMP));
pamTableItems.add(channelBitmap = new PamTableItem("ChannelBitmap", Types.INTEGER));
pamTableItems.add(sequenceBitmap = new PamTableItem("SequenceBitmap", Types.INTEGER));
pamTableItems.add(uid = new PamTableItem("UID", Types.BIGINT, "Unique Identifier"));
pamTableItems.add(timeStampItem = new PamTableItem(utcColName, Types.TIMESTAMP, "Timestamp UTC"));
pamTableItems.add(timeStampMillis = new PamTableItem("UTCMilliseconds", Types.SMALLINT, "Time milliseconds (for databases which do not support millis)"));
pamTableItems.add(localTime = new PamTableItem("PCLocalTime", Types.TIMESTAMP, "Local time on PC"));
pamTableItems.add(pcTime = new PamTableItem("PCTime", Types.TIMESTAMP, "Time data written, UTC. Same as UTC for real time data, current time for offline file analysis"));
pamTableItems.add(channelBitmap = new PamTableItem("ChannelBitmap", Types.INTEGER, "Bitmap of input channels used"));
pamTableItems.add(sequenceBitmap = new PamTableItem("SequenceBitmap", Types.INTEGER, "Bitmap of beam or channel outputs used"));
if (updatePolicy == SQLLogging.UPDATE_POLICY_WRITENEW) {
addTableItem(updateReference = new PamTableItem("UpdateOf", Types.INTEGER));
addTableItem(updateReference = new PamTableItem("UpdateOf", Types.INTEGER, "Reference to previous value"));
}
}

View File

@ -50,6 +50,14 @@ public class PamTableItem implements Cloneable {
*/
private Object value;
/**
* Test description of field. Can be exported to schema and may
* be possible to write into database description fields one day. In any case
* it can be useful to the programmer when looking back to see what on earth
* code is supposed to be doing.
*/
private String description;
/*
* Reference to another PamTableItem in a different
* table. This must be of the same sqlType as this
@ -60,6 +68,11 @@ public class PamTableItem implements Cloneable {
*/
private PamTableItem crossReferenceItem;
/**
* Generate a table item
* @param name name of table item
* @param sqlType SQL Type from java.sql.Types, e.g. Types.INTEGER
*/
public PamTableItem(String name, int sqlType) {
super();
this.name = name;
@ -68,6 +81,27 @@ public class PamTableItem implements Cloneable {
this.required = false;
}
/**
* Generate a table item
* @param name name of table item
* @param sqlType SQL Type from java.sql.Types, e.g. Types.INTEGER
* @param description optional description
*/
public PamTableItem(String name, int sqlType, String description) {
super();
this.name = name;
this.sqlType = sqlType;
this.description = description;
this.length = 0;
this.required = false;
}
/**
* Generate a table item
* @param name name of table item
* @param sqlType SQL Type from java.sql.Types, e.g. Types.INTEGER
* @param length length (only applicable to Types.CHAR types)
*/
public PamTableItem(String name, int sqlType, int length) {
super();
this.name = name;
@ -76,6 +110,22 @@ public class PamTableItem implements Cloneable {
this.required = false;
}
/**
* Generate a table item
* @param name name of table item
* @param sqlType SQL Type from java.sql.Types, e.g. Types.INTEGER
* @param length length (only applicable to Types.CHAR types)
* @param description optional description
*/
public PamTableItem(String name, int sqlType, int length, String description) {
super();
this.name = name;
this.sqlType = sqlType;
this.length = length;
this.description = description;
this.required = false;
}
public PamTableItem(String name, int sqlType, int length, boolean required) {
super();
this.name = name;
@ -501,5 +551,19 @@ public class PamTableItem implements Cloneable {
}
}
/**
* @return the description
*/
public String getDescription() {
return description;
}
/**
* @param description the description to set
*/
public void setDescription(String description) {
this.description = description;
}
}

View File

@ -2183,5 +2183,12 @@ public abstract class SQLLogging {
return subDetection.getSuperDetection(superDataBlock);
}
/**
* @return the loggingAddOns
*/
public ArrayList<SQLLoggingAddon> getLoggingAddOns() {
return loggingAddOns;
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,2 +1,2 @@
JavaSearch 1.0
TMAP bs=2048 rt=1 fl=-1 id1=6679 id2=1
TMAP bs=2048 rt=1 fl=-1 id1=6700 id2=1

Binary file not shown.

View File

@ -574,6 +574,8 @@
<mapID target="utilities.SIDEModule.docs.SIDE_Overview_seq" url="utilities/SIDEModule/docs/SIDE_Overview.html#seq"/>
<mapID target="detectors.clickDetectorHelp.docs.SoundTrapClickDetector" url="detectors/clickDetectorHelp/docs/SoundTrapClickDetector.html"/>
<mapID target="utilities.spectrogramannotations.docs.using" url="utilities/spectrogramannotations/docs/using.html"/>
<mapID target="visual_methods.loggerFormsHelp.docs.NMEAINT" url="visual_methods/loggerFormsHelp/docs/NMEAINT.html"/>
@ -802,6 +804,8 @@
<mapID target="visual_methods.loggerFormsHelp.docs.NMEACHAR" url="visual_methods/loggerFormsHelp/docs/NMEACHAR.html"/>
<mapID target="sound_processing.AcquisitionHelp.docs.sudfiles" url="sound_processing/AcquisitionHelp/docs/sudfiles.html"/>
<mapID target="sound_processing.LTSA.Docs.LTSADisplays" url="sound_processing/LTSA/Docs/LTSADisplays.html"/>
<mapID target="localisation.difar.difarLocalisation.docs.difar_PostProcessingTutorial__Toc396467156" url="localisation/difar/difarLocalisation/docs/difar_PostProcessingTutorial.html#_Toc396467156"/>

View File

@ -15,6 +15,12 @@
@ -34,6 +40,12 @@
@ -53,6 +65,12 @@
@ -74,6 +92,12 @@ top
@ -93,6 +117,12 @@ top
@ -112,6 +142,12 @@ top
@ -131,6 +167,12 @@ top
@ -152,6 +194,12 @@ TOC
@ -173,6 +221,12 @@ TOC
@ -194,6 +248,12 @@ javax.help.TOCView
@ -215,6 +275,12 @@ PAMGUARDTOC.xml
@ -234,6 +300,12 @@ PAMGUARDTOC.xml
@ -253,6 +325,12 @@ PAMGUARDTOC.xml
@ -274,6 +352,12 @@ Index
@ -295,6 +379,12 @@ Index
@ -316,6 +406,12 @@ javax.help.IndexView
@ -337,6 +433,12 @@ PAMGUARDIndex.xml
@ -356,6 +458,12 @@ PAMGUARDIndex.xml
@ -375,6 +483,12 @@ PAMGUARDIndex.xml
@ -396,6 +510,12 @@ Search
@ -417,6 +537,12 @@ Search
@ -438,6 +564,12 @@ javax.help.SearchView
@ -459,6 +591,12 @@ JavaHelpSearch
@ -478,6 +616,12 @@ JavaHelpSearch

View File

@ -2,6 +2,18 @@
<!DOCTYPE index PUBLIC "-//Sun Microsystems Inc.//DTD JavaHelp Index Version 1.0//EN" "http://java.sun.com/products/javahelp/index_2_0.dtd"><!--generated by JHelpDev Version: 0.63, 14 May 2008, see jhelpdev.sourceforge.net-->
<index version="1.0">
<indexitem text="SUD Files " target="sound_processing.AcquisitionHelp.docs.sudfiles"/>
<indexitem text="SoundTrap " target="sound_processing.AcquisitionHelp.docs.sudfiles"/>
<indexitem text="Sound Trap " target="sound_processing.AcquisitionHelp.docs.sudfiles"/>
<indexitem text="Click Train " target="detectors.ClickTrainDetector.docs.ClickTrainDetector"/>
<indexitem text="SUD " target="detectors.clickDetectorHelp.docs.SoundTrapClickDetector"/>
<indexitem text="SoundTrap " target="detectors.clickDetectorHelp.docs.SoundTrapClickDetector"/>
<indexitem text="3D Localisation " target="detectors.Pam3DHelp.docs.guiOverview"/>
<indexitem text="Adding or Editing a Hydrophone " target="utilities.hydrophoneArrayManagerHelp.docs.Array_NewHydrophone"/>

View File

@ -278,8 +278,10 @@
<tocitem text="Asio Sound Cards " target="sound_processing.AcquisitionHelp.docs.AcquisitionAsioSoundCard" image="topic"/>
<tocitem text="Audio Files " target="sound_processing.AcquisitionHelp.docs.AcquisitionFile" image="topic"/>
<tocitem text="Audio Files " target="sound_processing.AcquisitionHelp.docs.AcquisitionFile" image="topic">
<tocitem text="SUD Files " target="sound_processing.AcquisitionHelp.docs.sudfiles" image="topic"/>
</tocitem>
<tocitem text="Audio File Folders " target="sound_processing.AcquisitionHelp.docs.AcquisitionFileFolder" image="topic"/>
<tocitem text="File Dates " target="sound_processing.AcquisitionHelp.docs.FileTimeZone" image="topic"/>
@ -426,6 +428,8 @@
<tocitem text="Create Binary Files Offline " target="utilities.BinaryStore.docs.CreateBinariesOffline" image="topic"/>
</tocitem>
<tocitem text="SoundTrap Click Detector " target="detectors.clickDetectorHelp.docs.SoundTrapClickDetector" image="topic"/>
</tocitem>
<tocitem text="Whistle and Moan Detector ">
<tocitem text="Overview " target="detectors.whistleMoanHelp.docs.whistleMoan_Overview" image="topic"/>

View File

@ -0,0 +1,82 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>
<link href="../../../pamHelpStylesheet.css" type="text/css" rel="STYLESHEET"><title>Click Classification</title></head>
<body><h1>Click Detector</h1>
<h2>SoundTrap Click Detector</h2>
<p>If you are using a SountTrap recording device with built in click detection from
<a href="https://www.oceaninstruments.co.nz/">Ocean Instruments</a>,
you may need to use a modified version of the <a href="ClickDetector_clickDetector.html">Click Detector</a>.
</p>
<p>The SoundTrap click detector allows you to detect and store clicks at high frequencies (say 384kS/sec), suitable for odontocete echolocation clicks, and
at the same time, record audio data files at a lower frequency (e.g. 96 or 48kS/sec). This optimises disk space usage and makes long deployments
of several months possible without running out of data storage. </p>
<p>Having two sample rates present within a single PAMGuard configuration is possible using
<a href="../../../sound_processing/decimatorHelp/docs/decimator_decimator.html">Decimator</</a> modules. However such configurations become particularly
complicated to configure when the sample rate of the recorded files is lower than the sample rate of the click detector.</p>
<p>We therefore recommend that you use a modified version of the <a href="ClickDetector_clickDetector.html">Click Detector</a>, which manages it's own sample rate and
channel information based on information extracted from the SoundTrap data.</p>
<p>Note that the SoundTrap click detector should only be used for clicks automatically detected by the SoundTrap. If you want to detect clicks from the
SoundTrap recordings, then use a normal <a href="ClickDetector_clickDetector.html">Click Detector</a> in the normal way.</p>
<h3>Creating an instance of the SoundTrap Click Detector</h3>
<p>
From the <strong><em>File>Add modules>Detectors</em></strong> menu, or
from the pop-up menu on the data model display, select <i>'SoundTrap Click
Detector'</i> near the bottom of the Detectors list. Enter a descriptive name for the new detector and press Ok.
</p>
<h3>Importing SoundTrap Data</h3>
<p>SoundTrap data are stored in proprietary files called <a href="../../../sound_processing/AcquisitionHelp/docs/sudfiles.html">SUD files</a>.</p>
<p> There are two ways in which you can get data from <a href="../../../sound_processing/AcquisitionHelp/docs/sudfiles.html">SUD files</a> into
the SoundTrap Click Detector. </p>
<h4>The Old Way</h4>
<p>The 'standard' way of using SoundTrap data was to inflate all of the data from the compressed SUD files. For details of this process, see the
SoundTrap user manuals and the SoundTrap Host software.</p>
<p>Normally, several inflated files are generated from each sud file:</p>
<ol>
<li>A wav file: Audio data in standard wav file format</li>
<li>An XML file: Metadata on the SoundTrap configuration, file start times in various formats, etc.</li>
<li>If the click detector was running BCL and DWV files, which contain the times of clicks and click waveforms respectively.</li>
</ol>
<p>To convert the SUD files to the binary storage format used by PAMGuard, working in the
<a href="../../../overview/PamMasterHelp/docs/viewerMode.html">PAMGuard Viewer</a>, create a Binary Store, a
SoundTrap Click Detector and also create a 'SoundTrap Detector Import' module. Then use the import module to import the BCL and DWV
data into PAMGuard. Once imported you can run <a href="ClickDetector_clickClassification.html">Click Classifiers</a>
and use other Click Detector offline functions to mark events, etc. </p>
<p>If you want to run additional analysis on the WAV file data (for example to
<a href="../../../sound_processing/NoiseBands/Docs/NoiseBands.html">make noise measurements</a> or to
<a href="../../whistleMoanHelp/docs/whistleMoan_Overview.html">detect whistles</a>),
create a different PAMGuard configuration to process those data.<p>
<h4>The (better) New Way</h4>
<p>Current versions of PAMGuard can read <a href="../../../sound_processing/AcquisitionHelp/docs/sudfiles.html">SUD files</a> directly,
without first unpacking them into WAV, XML, BCL and DWV files. This not
only reduces the amount of disk space you need by about x4, but also saves a lot of time.</p>
<p>Better still, you can now set up PAMGuard in normal mode to simultaneously process the audio data in the
<a href="../../../sound_processing/AcquisitionHelp/docs/sudfiles.html">SUD file</a> with one set of
detectors, and simultaneously extract the click detector data into appropriate files for a SoundTrap Click Detector. </p>
<p>Start PAMGuard in <a href="../../../overview/PamMasterHelp/docs/normalMode.html">Normal Mode</a> and add a
<a href="../../../sound_processing/AcquisitionHelp/docs/AcquisitionOverview.html">Sound Acquisition</a> module.
Add a SoundTrap Click Detector, a <a href="../../../utilities/BinaryStore/docs/binarystore_overview.html">Binary Store</a> store and a
<a href="../../../utilities/generalDatabaseHelp/docs/database_database.html">Database</a>
module (optional). In the <a href="../../../sound_processing/AcquisitionHelp/docs/AcquisitionConfiguration.html">Sound Acquisition dialog</a>
select a single SUD file or a folder of SUD files. At this point, the SoundTrap
Click Detector will be automatically configured with the correct sample rate (which won't be the sample rate displayed in the Sound Acquisition
module). </p>
<p>Configure any <a href="ClickDetector_clickClassification.html">Click Classifiers</a> you want to be run on the SoundTrap click data as it is imported.</p>
<p>You can then add any other detectors and measurement processes you want to run on the SoundTrap audio data, this may include
instances of the normal Click Detector module if you want to detect clicks in the lower frequency audio data.</p>
<p>Process the data in the normal way and clicks will automatically be generated within the SoundTrap click detector</p>
<p>Further process you data using the <a href="../../../overview/PamMasterHelp/docs/viewerMode.html">PAMGuard Viewer</a> in the normal way.</p>
<br>
<br>
<br>
</body></html>

View File

@ -7,7 +7,9 @@
<h1>Audio Files</h1>
<p>As well as analysing data from sound cards in real time, PAMGUARD can be used to analyse archived data
from audio filed in WAV or AIF format.</p>
from audio filed in <a href="https://en.wikipedia.org/wiki/WAV">WAV</a>,
<a href="https://en.wikipedia.org/wiki/Audio_Interchange_File_Format">AIF</a>, <a href="https://en.wikipedia.org/wiki/FLAC">FLAC</a>,
or <a href="sudfiles.html">SUD</a> file format.</p>
<br>
<h2>Setting up an Audio File</h2>

View File

@ -0,0 +1,45 @@
<html>
<head>
<LINK href="../../../pamHelpStylesheet.css" type=text/css rel=STYLESHEET>
<title>SUD Files</title>
</head>
<body>
<h1>SoundTrap data files</h1>
<h3>SUD Files</h3>
<p>
SoundTrap recorders from
<a href="https://www.oceaninstruments.co.nz/">Ocean Instruments</a>
store data in proprietary files called SUD files. See SoundTrap documentation for information on how to
extract SUD files from SoundTrap recorders. </p>
<p>Earlier versions of PAMGuard required you to 'inflate' the SUD files into standard wav audio files using
the <a href="https://www.oceaninstruments.co.nz/downloads/">SoundTrap Host software</a> before they could be processed.</p>
<p>The current version of PAMGuard no longer requires this since it can read data directly from the SUD files.</p>
<p>Inflating SUD files to WAV files generally required between 3 and 5 times as much disk space and could also take
a fair amount of time, so not inflating will save both!</p>
<h3>SUD Index Files</h3>
<p>To efficiently navigate SUD files, PAMGuard makes a map of each file and stores it in a new file in the same
folder as the original SUD file. The index files have the same name as the original file, but end with .sudx.
The index files are about 2.5% of the size of the original SUD files. When processing SUD files it is therefore
important that a) the drive containing the SUD files is less than 95% full and b) that the system running PAMGuard has
write access to the folder containing the SUD files. </p>
<h3>SUD File Times</h3>
<p>The name of each SUD file contains the device serial number and a timestamp (data and time) in the form YYMMDDhhmmss.
Note that these time stamps are in local time. When processing the file, PAMGuard will extract a UTC timestamp from within
each SUD file and apply the UTC time to the data. you may therefore notice that the times of binary files and database
entries differ from the times in the file names. </p>
<h3>Mixing SUD and WAV files</h3>
<p>If a SUD file and a WAV file with the same name are in the same folder, then PAMGuard will ignore the SUD file
and process the WAV file. Note that in this case, PAMGuard will be unable to extract any metadata from the SUD file
and will not extract SoundTrap Click Detections (see below).</p>
<h3>SoundTrap Click Detector</h3>
<p>If you are using the SoundTrap build in click detector (see SoundTrap manuals) then the SUD files will also contain
detected clicks.</p> <p>See the help page for the <a href="../../../detectors/clickDetectorHelp/docs/SoundTrapClickDetector.html">SoundTrap Click Detector</a>
for information on how to get these clicks from the SUD files into PAMGuard. </p>
<br><br><br>
</body>
</html>

View File

@ -17,6 +17,7 @@ import Acquisition.DaqSystem;
import Acquisition.AudioDataQueue;
import PamController.PamControlledUnitSettings;
import PamController.PamController;
import PamController.PamGUIManager;
import PamController.PamSettingManager;
import PamController.PamSettings;
import PamDetection.RawDataUnit;
@ -192,7 +193,12 @@ public class SmruDaqSystem extends DaqSystem implements PamSettings {
+ " in another instance of PAMGuard. \n"
+ "Check that no other instances of PAMGuard are open and try again. \nIf no other instances of PAMGuard are open "
+ "then you should cycle the power on the card(s) and restart PAMGuard");
if (PamGUIManager.getGUIType() == PamGUIManager.NOGUI) {
System.out.println(msg);
}
else {
JOptionPane.showMessageDialog(daqControl.getGuiFrame(), msg, daqControl.getUnitName() + " Error", JOptionPane.ERROR_MESSAGE);
}
PamController.getInstance().stopLater();
return false;
}

View File

@ -144,4 +144,9 @@ public class BuoyStatusData implements Serializable, ManagedParameters {
return ps;
}
@Override
public String toString() {
return String.format("Buoy %d(%d) ip %s", buoyId1, buoyId2, ipAddr);
}
}

View File

@ -387,6 +387,11 @@ public class BuoyStatusDataUnit extends PamDataUnit {
return buoyStatusData;
}
@Override
public String toString() {
return String.format("Status %s\n", buoyStatusData.toString());
}
// /**
// * @return the genericStringPairsChanged
// */

View File

@ -23,17 +23,14 @@ package pamguard;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import Acquisition.AcquisitionControl;
import Acquisition.FolderInputSystem;
import PamController.PamController;
import PamController.PamGUIManager;
import PamController.PamSettingManager;
import PamController.PamguardVersionInfo;
import PamController.pamBuoyGlobals;
import PamController.command.TerminalController;
import PamModel.SMRUEnable;
import PamUtils.FileFunctions;
import PamUtils.PamCalendar;
import PamUtils.PamExceptionHandler;
import PamUtils.PlatformInfo;
import PamUtils.Splash;
@ -45,6 +42,7 @@ import PamguardMVC.debug.Debug;
import binaryFileStorage.BinaryStore;
import dataPlotsFX.JamieDev;
import generalDatabase.DBControl;
import rocca.RoccaDev;
import java.io.BufferedReader;
import java.io.File;
@ -190,6 +188,10 @@ public class Pamguard {
JamieDev.setEnabled(true);
System.out.println("Enabling Jamie Macaulay modifications.");
}
else if (anArg.equalsIgnoreCase("-rocca")) {
RoccaDev.setEnabled(true);
System.out.println("Enabling Rocca development mode");
}
else if (anArg.equalsIgnoreCase(Debug.flag)) {
Debug.setPrintDebug(true);
Debug.out.println("Enabling debug terminal output.");

View File

@ -408,6 +408,10 @@ public class RoccaClassifier {
// load the whistle classifier
if (roccaControl.roccaParameters.isClassifyWhistles()) {
if (roccaControl.roccaParameters.roccaClassifierModelFilename==null) {
roccaControl.roccaParameters.setClassifyWhistles(false);
}
else {
String fname = roccaControl.roccaParameters.roccaClassifierModelFilename.getAbsolutePath();
File f = new File(fname);
if (f.exists() == false) {
@ -450,9 +454,14 @@ public class RoccaClassifier {
}
}
}
}
// serialVersionUID=24 2016/08/10 added to load click classifier
if (roccaControl.roccaParameters.isClassifyClicks()) {
if (roccaControl.roccaParameters.roccaClickClassifierModelFilename==null) {
roccaControl.roccaParameters.setClassifyClicks(false);
}
else {
String fname = roccaControl.roccaParameters.roccaClickClassifierModelFilename.getAbsolutePath();
File f = new File(fname);
if (f.exists() == false) {
@ -495,6 +504,7 @@ public class RoccaClassifier {
}
}
}
}
// if we didn't load either classifier, don't bother loading trying to load an encounter
// classifier because it relies on the species. Just reset the side panel and return
@ -505,6 +515,10 @@ public class RoccaClassifier {
// serialVersionUID=24 2016/08/10 added to load event classifier
if (roccaControl.roccaParameters.isClassifyEvents()) {
if (roccaControl.roccaParameters.roccaEventClassifierModelFilename==null) {
roccaControl.roccaParameters.setClassifyEvents(false);
}
else {
String fname = roccaControl.roccaParameters.roccaEventClassifierModelFilename.getAbsolutePath();
File f = new File(fname);
if (f.exists() == false) {
@ -543,6 +557,7 @@ public class RoccaClassifier {
}
}
}
}
resetSidePanel();
return true;

27
src/rocca/RoccaDev.java Normal file
View File

@ -0,0 +1,27 @@
package rocca;
/**
* Global flag set at runtime for Rocca development flags.
* @author mo55
*
*/
public class RoccaDev {
private static boolean enabled = false;
/**
* @return the enabled
*/
public static boolean isEnabled() {
return enabled;
}
/**
* @param enabled the enabled to set
*/
public static void setEnabled(boolean enabled) {
RoccaDev.enabled = enabled;
}
}

View File

@ -26,7 +26,6 @@ import java.awt.Frame;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Point;
import java.util.ArrayList;
import java.util.Objects;
import java.util.Vector;
@ -48,8 +47,6 @@ import PamUtils.PamFileChooser;
import PamView.dialog.PamDialog;
import PamView.dialog.SourcePanel;
import PamguardMVC.PamDataBlock;
import PamguardMVC.PamDataUnit;
import java.awt.Dimension;
import java.awt.Insets;
import java.awt.event.ActionEvent;
@ -60,20 +57,14 @@ import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.ButtonGroup;
import javax.swing.DefaultComboBoxModel;
import javax.swing.GroupLayout;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JRadioButton;
import javax.swing.JFileChooser;
import javax.swing.JScrollPane;
@ -87,7 +78,6 @@ import javax.swing.border.EtchedBorder;
import clickDetector.ClickControl;
import clickDetector.ClickDetection;
import clickDetector.NoiseDataBlock;
import weka.classifiers.AbstractClassifier;
import weka.core.Attribute;
import weka.core.Instances;
import weka.core.SerializationHelper;
@ -523,7 +513,13 @@ public class RoccaParametersDialog extends PamDialog implements ActionListener,
reclassifyButton.addActionListener(this);
reclassifyButton.setToolTipText("Load the whistle data from the contour stats output file, and run it through the current Classifier");
reclassifyButton.setVisible(true);
extraButtonsSubPanel.setVisible(true); // ******** THIS LINES CONTROLS THE VISIBILITY ********
// ******** THIS LINES CONTROLS THE VISIBILITY ********
if (RoccaDev.isEnabled()) {
extraButtonsSubPanel.setVisible(true);
} else {
extraButtonsSubPanel.setVisible(false);
}
GroupLayout extraPanelLayout = new GroupLayout(extraButtonsSubPanel);
extraButtonsSubPanel.setLayout(extraPanelLayout);
extraPanelLayout.setAutoCreateGaps(true);

View File

@ -388,7 +388,9 @@ public class RoccaProcess extends PamProcess {
rcdb.getContour().get(RoccaContourStats.ParamIndx.DURATION) > 1.5 ||
rcdb.getContour().get(RoccaContourStats.ParamIndx.FREQABSSLOPEMEAN) < 2000. ||
rcdb.getContour().get(RoccaContourStats.ParamIndx.FREQABSSLOPEMEAN) > 28000. )) {
rcdb.setNaturalLifetimeMillis(0);
// rcdb.setNaturalLifetimeMillis(0);
rcdb.stopTimer();
rcdb = null;
return;
}
if (roccaControl.roccaParameters.roccaClassifierModelFilename.getName().equals("HIWhist.model") &&
@ -402,7 +404,9 @@ public class RoccaProcess extends PamProcess {
rcdb.getContour().get(RoccaContourStats.ParamIndx.FREQABSSLOPEMEAN) > 60000. ||
rcdb.getContour().get(RoccaContourStats.ParamIndx.FREQRANGE) < 800. ||
rcdb.getContour().get(RoccaContourStats.ParamIndx.FREQRANGE) > 14000. )) {
rcdb.setNaturalLifetimeMillis(0);
// rcdb.setNaturalLifetimeMillis(0);
rcdb.stopTimer();
rcdb = null;
return;
}
if (roccaControl.roccaParameters.roccaClassifierModelFilename.getName().equals("NWAtlWhist.model") &&
@ -412,7 +416,9 @@ public class RoccaProcess extends PamProcess {
rcdb.getContour().get(RoccaContourStats.ParamIndx.DURATION) > 2.5 ||
rcdb.getContour().get(RoccaContourStats.ParamIndx.FREQABSSLOPEMEAN) < 9100. ||
rcdb.getContour().get(RoccaContourStats.ParamIndx.FREQABSSLOPEMEAN) > 82000. )) {
rcdb.setNaturalLifetimeMillis(0);
// rcdb.setNaturalLifetimeMillis(0);
rcdb.stopTimer();
rcdb = null;
return;
}
}
@ -431,7 +437,9 @@ public class RoccaProcess extends PamProcess {
saveContourPoints(rcdb, rcdb.getChannelMap(), ++numDetections, sNum);
saveContourStats(rcdb, rcdb.getChannelMap(), numDetections, sNum);
saveContour(rcdb, rcdb.getChannelMap(), numDetections, sNum);
rcdb.setNaturalLifetimeMillis(0);
// rcdb.setNaturalLifetimeMillis(0);
rcdb.stopTimer();
rcdb = null;
/* if this is a click detection (signal, not noise) */
} else if (o==manClickSourceData || o==autoClickSourceData) {
@ -499,18 +507,24 @@ public class RoccaProcess extends PamProcess {
(rcdb.getContour().get(RoccaContourStats.ParamIndx.SNR) > 35. ||
rcdb.getContour().get(RoccaContourStats.ParamIndx.DURATION) < 0.005 ||
rcdb.getContour().get(RoccaContourStats.ParamIndx.DURATION) > 0.6 )) {
rcdb.stopTimer();
rcdb = null;
return;
}
if (roccaControl.roccaParameters.roccaClassifierModelFilename.getName().equals("HIClick.model") &&
(rcdb.getContour().get(RoccaContourStats.ParamIndx.SNR) > 40. ||
rcdb.getContour().get(RoccaContourStats.ParamIndx.DURATION) < 0.01 ||
rcdb.getContour().get(RoccaContourStats.ParamIndx.DURATION) > 0.6 )) {
rcdb.stopTimer();
rcdb = null;
return;
}
if (roccaControl.roccaParameters.roccaClassifierModelFilename.getName().equals("NWAtlClick.model") &&
(rcdb.getContour().get(RoccaContourStats.ParamIndx.SNR) > 35. ||
rcdb.getContour().get(RoccaContourStats.ParamIndx.DURATION) < 0.005 ||
rcdb.getContour().get(RoccaContourStats.ParamIndx.DURATION) > 0.6 )) {
rcdb.stopTimer();
rcdb = null;
return;
}
}
@ -529,7 +543,9 @@ public class RoccaProcess extends PamProcess {
// add call to update side panel. Set the isClick flag to True
updateSidePanel(rcdb, true);
saveContourStats(rcdb, rcdb.getChannelMap(), numDetections, sNum);
rcdb.setNaturalLifetimeMillis(0);
// rcdb.setNaturalLifetimeMillis(0);
rcdb.stopTimer();
rcdb = null;
}

View File

@ -24,7 +24,10 @@
package soundtrap;
import java.awt.Component;
import Acquisition.AcquisitionControl;
import Acquisition.DaqSystem;
/**
* @author SCANS
@ -34,6 +37,14 @@ public class STAcquisitionControl extends AcquisitionControl {
public static final String STUNITTYPE = "SoundTrap Data Acquisition";
private STAcquisitionProcess stAcquisitionProcess;
private STDaqSystem stDaqSystem;
/*
* Standard voltage for soundtrap data. note that ST calibration is only
* provided as end to end peak input, so the correct thing to do is set the peak to peak as 2
* (0-peak = 1) and then put the hydrophone sensitivity as - the end to end and all will be well.
*/
public static final double SOUNDTRAPVP2P = 2.0;
/**
* @param name
@ -41,46 +52,12 @@ public class STAcquisitionControl extends AcquisitionControl {
public STAcquisitionControl(String name) {
super(name);
// super(STUNITTYPE, name);
//
// acquisitionControl = this;
//
// fileDate = new StandardFileDate(this);
//
// pamController = PamController.getInstance();
//
// registerDaqSystem(new FileInputSystem(this));
// registerDaqSystem(folderSystem = new FolderInputSystem(this));
//
// daqChannelListManager = new DAQChannelListManager(this);
//
// PamSettingManager.getInstance().registerSettings(this);
//
// addPamProcess(acquisitionProcess = new STAcquisitionProcess(this));
//
// daqMenuEnabler = new MenuItemEnabler();
//
// statusBarComponent = getStatusBarComponent();
//
// if (isViewer) {
// offlineFileServer = new OfflineFileServer(this, fileDate);
// }
// else {
// PamStatusBar statusBar = PamStatusBar.getStatusBar();
//
// if (statusBar != null) {
// statusBar.getToolBar().add(statusBarComponent);
// statusBar.getToolBar().addSeparator();
// setupStatusBar();
// }
// }
// setSelectedSystem();
//
// TDDataProviderRegisterFX.getInstance().registerDataInfo(new RawSoundProviderFX(this));
// add a second PAM process, for the click data
registerDaqSystem(stDaqSystem = new STDaqSystem());
addPamProcess(stAcquisitionProcess = new STAcquisitionProcess(this));
acquisitionParameters.voltsPeak2Peak = SOUNDTRAPVP2P;
}
@Override
@ -101,6 +78,30 @@ public class STAcquisitionControl extends AcquisitionControl {
return stAcquisitionProcess;
}
// @Override
// protected Component getStatusBarComponent() {
// // call it to create the fields, just incase, then return null;
// super.getStatusBarComponent();
// return null;
// }
// @Override
// protected void setupStatusBar() {
//// if (systemPanel == null) return;
//// systemPanel.removeAll();
//// DaqSystem daqSys = findDaqSystem(null);
//// if (daqSys == null) return;
//// Component specialComponent = daqSys.getStatusBarComponent();
//// if (specialComponent != null) {
//// systemPanel.add(specialComponent);
//// }
// }
@Override
public DaqSystem findDaqSystem(String systemType) {
return stDaqSystem;
}
}

View File

@ -25,13 +25,20 @@
package soundtrap;
import java.awt.Frame;
import java.util.ArrayList;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import Acquisition.AcquisitionControl;
import Acquisition.sud.SUDNotificationManager;
import PamController.PamController;
import PamguardMVC.PamRawDataBlock;
import clickDetector.ClickBTDisplay;
import clickDetector.ClickControl;
import clickDetector.ClickDisplay;
import clickDetector.ClickDisplayManager;
import soundtrap.sud.SudFileDWVHandler;
/**
* @author mo55
@ -46,6 +53,9 @@ public class STClickControl extends ClickControl {
*/
private AcquisitionControl rawSource;
private SudFileDWVHandler sudFileDWVHandler;
/**
* @param name
*/
@ -53,7 +63,10 @@ public class STClickControl extends ClickControl {
super(name);
// create a private acquisition control that only this module can see
rawSource = new AcquisitionControl("Private Sound Acq for Soundtrap Click Detector");
rawSource = new STAcquisitionControl("Private Sound Acq for Soundtrap Click Detector");
sudFileDWVHandler = new SudFileDWVHandler(this);
sudFileDWVHandler.subscribeSUD();
}
@Override
@ -107,5 +120,39 @@ public class STClickControl extends ClickControl {
return newMenu;
}
@Override
public void pamStart() {
sudFileDWVHandler.pamStart();
super.pamStart();
}
@Override
public void pamStop() {
sudFileDWVHandler.pamStop();
super.pamStop();
}
@Override
public void notifyModelChanged(int changeType) {
super.notifyModelChanged(changeType);
if (changeType == PamController.INITIALIZATION_COMPLETE) {
sudFileDWVHandler.subscribeSUD();
}
}
/**
* Called when running SUD file data to find and scroll the BT Display's
* @param timeMillis
*/
public void updateDisplayScrollers(long timeMillis) {
ClickDisplayManager dispManager = getDisplayManager();
ArrayList<ClickDisplay> dispList = dispManager.getWindowList();
for (ClickDisplay display : dispList) {
if (display instanceof ClickBTDisplay) {
((ClickBTDisplay) display).newScrollTimingData(timeMillis);
}
}
}
}

View File

@ -0,0 +1,107 @@
package soundtrap;
import javax.swing.JComponent;
import Acquisition.AcquisitionControl;
import Acquisition.AcquisitionDialog;
import Acquisition.DaqSystem;
public class STDaqSystem extends DaqSystem {
public STDaqSystem() {
// TODO Auto-generated constructor stub
}
@Override
public String getSystemType() {
return "SoundTrap clicks";
}
@Override
public String getSystemName() {
return "SoundTrap clicks";
}
@Override
public JComponent getDaqSpecificDialogComponent(AcquisitionDialog acquisitionDialog) {
// TODO Auto-generated method stub
return null;
}
@Override
public void dialogSetParams() {
// TODO Auto-generated method stub
}
@Override
public boolean dialogGetParams() {
// TODO Auto-generated method stub
return false;
}
@Override
public int getMaxSampleRate() {
return PARAMETER_UNKNOWN;
}
@Override
public int getMaxChannels() {
return 1;
}
@Override
public double getPeak2PeakVoltage(int swChannel) {
// TODO Auto-generated method stub
return 2;
}
@Override
public boolean prepareSystem(AcquisitionControl daqControl) {
// TODO Auto-generated method stub
return true;
}
@Override
public boolean startSystem(AcquisitionControl daqControl) {
// TODO Auto-generated method stub
return true;
}
@Override
public void stopSystem(AcquisitionControl daqControl) {
// TODO Auto-generated method stub
}
@Override
public boolean isRealTime() {
// TODO Auto-generated method stub
return true;
}
@Override
public boolean canPlayBack(float sampleRate) {
// TODO Auto-generated method stub
return false;
}
@Override
public int getDataUnitSamples() {
// TODO Auto-generated method stub
return 100;
}
@Override
public void daqHasEnded() {
// TODO Auto-generated method stub
}
@Override
public String getDeviceName() {
// TODO Auto-generated method stub
return "Sound Trap detector";
}
}

View File

@ -12,6 +12,7 @@ import PamController.PamControlledUnit;
import PamController.PamControlledUnitSettings;
import PamController.PamSettingManager;
import PamController.PamSettings;
import PamView.dialog.warn.WarnOnce;
public class STToolsControl extends PamControlledUnit implements PamSettings {
@ -21,9 +22,17 @@ public class STToolsControl extends PamControlledUnit implements PamSettings {
public static final String dwvFileEnd = ".dwv";
public static final String bclFileEnd = ".bcl";
private String warn = "<html>Versions 2.02.06 of PAMGuard and later can read SoundTrap SUD files directly, removing the need " +
" to decompress them and then use this module to import the SoundTrap click detector data into PAMGuard.<p><br>" +
"Instead you should process the SUD files in 'normal mode' and include a SoundTrap Click Detector in "
+ "your configuration. Click data will then be automatically unpacked into the correct binary files"
+ " as you process the SUD file audio data.<p><br>"
+ "You can remove this module which is now obsolete. See the online help for details.";
public STToolsControl(String unitName) {
super("Sound Trap Tools", unitName);
PamSettingManager.getInstance().registerSettings(this);
WarnOnce.showWarning("Importing SoundTrap data", warn, WarnOnce.WARNING_MESSAGE);
}
/* (non-Javadoc)

View File

@ -0,0 +1,59 @@
package soundtrap.sud;
import org.pamguard.x3.sud.Chunk;
public class BCLDetectionChunk {
private long javaMillis;
private boolean isDetection;
private String bclRecord;
private Chunk sudChunk;
private long javaMicros;
public BCLDetectionChunk(long javaMillis, long javaMicros, boolean isDetection, String bclRecord, Chunk sudChunk) {
super();
this.javaMillis = javaMillis;
this.javaMicros = javaMicros;
this.isDetection = isDetection;
this.bclRecord = bclRecord;
this.sudChunk = sudChunk;
}
/**
* @return the javaMillis
*/
public long getJavaMillis() {
return javaMillis;
}
/**
* @return the isDetection
*/
public boolean isDetection() {
return isDetection;
}
/**
* @return the bclRecord
*/
public String getBclRecord() {
return bclRecord;
}
/**
* @return the sudChunk
*/
public Chunk getSudChunk() {
return sudChunk;
}
/**
* @return the javaMicros
*/
public long getJavaMicros() {
return javaMicros;
}
}

View File

@ -0,0 +1,268 @@
package soundtrap.sud;
import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import org.pamguard.x3.sud.Chunk;
import org.pamguard.x3.sud.SudAudioInputStream;
import org.pamguard.x3.sud.SudDataInputStream;
import Acquisition.AcquisitionControl;
import Acquisition.sud.SUDNotificationHandler;
import Acquisition.sud.SUDNotificationManager;
import PamController.PamController;
import PamUtils.PamCalendar;
import clickDetector.ClickDetection;
import clickDetector.ClickDetector;
import clickDetector.ClickDetector.ChannelGroupDetector;
import soundtrap.STAcquisitionControl;
import soundtrap.STClickControl;
import wavFiles.ByteConverter;
/**
* Class to handle BCL and DWV data from a SUD file during sud file processing.
* SUD files are the compressed data files from soundtraps. The latest PAMGuard
* version contains a audioinputstream for SUD files, making it possible to
* process them withoug having to first inflate them to wav files. During
* 'normal mode' processing, this class will subscribe to packets from the SUD
* files, unpack what would normally be BCL and DWV data and generate
* appropriate binary output files.
*
* @author dg50
*
*/
public class SudFileDWVHandler implements SUDNotificationHandler {
private STClickControl stClickControl;
private SudAudioInputStream sudAudioInputStream;
private int txtCount = 0;
private List<Chunk> clickChunks = new LinkedList();
private List<BCLDetectionChunk> bclChunks = new LinkedList();
int bclDetCount, bclNoiseCount, dwvCount, processedChunks;
private long effortStart, fileStartMicros;
private double sampleRate;
private ByteConverter byteConverter;
private ClickDetector clickDetector;
private ChannelGroupDetector channelGroupDetector;
public SudFileDWVHandler(STClickControl stClickControl) {
this.stClickControl = stClickControl;
clickDetector = stClickControl.getClickDetector();
}
@Override
public void newSudInputStream(SudAudioInputStream sudAudioInputStream) {
this.sudAudioInputStream = sudAudioInputStream;
interpretNewFile(null, sudAudioInputStream);
bclDetCount = bclNoiseCount = dwvCount = processedChunks = 0;
bclChunks.clear();
clickChunks.clear();
byteConverter = ByteConverter.createByteConverter(sudAudioInputStream.getFormat());
}
@Override
public void interpretNewFile(String newFile, SudAudioInputStream sudAudioInputStream) {
// this is the wav sample rate, not the detector sample rate, so don't use it
// sampleRate = sudAudioInputStream.getFormat().getFrameRate();
// this is the right one
sampleRate = sudAudioInputStream.getSudMap().clickDetSampleRate;
fileStartMicros = sudAudioInputStream.getSudMap().getFirstChunkTimeMicros();
stClickControl.findRawDataBlock().setChannelMap(1);
stClickControl.findRawDataBlock().setSampleRate((float) sampleRate, true);
stClickControl.getSTAcquisition().acquisitionParameters.sampleRate = (float) sampleRate;
stClickControl.getSTAcquisition().acquisitionParameters.voltsPeak2Peak = STAcquisitionControl.SOUNDTRAPVP2P;
stClickControl.getSTAcquisition().getAcquisitionProcess().setSampleRate((float) sampleRate, true);
// System.out.printf("Open input stream fs = %3.1f\n", sampleRate);
}
@Override
public void sudStreamClosed() {
// System.out.printf("SUD input stream closed, %d DWV, %d bcl Detectins and %d BCL Noise, %d chunks processed\n",
// dwvCount, bclDetCount, bclNoiseCount, processedChunks);
}
@Override
public void progress(double arg0, int arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void chunkProcessed(int chunkID, Chunk sudChunk) {
if (sudAudioInputStream == null) {
return;
}
String chunkName = "Unknown";
int chunkSize = sudChunk.buffer.length;
if (sudAudioInputStream.getChunkIDString(chunkID).equals("wav")) {
long millis = sudChunk.getChunkHeader().getMillisTime();
stClickControl.updateDisplayScrollers(millis);
if (sudAudioInputStream.isChunkIDWav(chunkID)) {
// chunkName = "RECORDINGS";
// System.out.printf("Chunk ID %d, size %d, type %s\n", chunkID, chunkSize,
// chunkName);
// System.out.println("ID: " + chunkID + " This is raw data from detected
// CLICKS: " + sudAudioInputStream.getChunkIDString(chunkID));
} else {
chunkName = "CLICKS";
processClickChunk(chunkID, sudChunk);
}
}
if (sudAudioInputStream.getChunkIDString(chunkID).equals("csv")) {
// System.out.println("CSV data the bytes convert directly to comma delimted data");
}
if (sudAudioInputStream.getChunkIDString(chunkID).equals("txt")) {
processTextChunk(chunkID, sudChunk);
txtCount++;
}
}
/**
* Pairwise byte swap, i.e. change endianness of int16's. Won't work for
* anything else.
*
* @param data
*/
public void swapEndian(byte[] data) {
for (int i = 0; i < data.length; i += 2) {
byte b = data[i];
data[i] = data[i + 1];
data[i + 1] = b;
}
}
private void processTextChunk(int chunkID, Chunk sudChunk) {
SudDataInputStream dis = new SudDataInputStream(new ByteArrayInputStream(sudChunk.getBuffer()));
try {
while (dis.available() > 0) {
long rtime = (dis.readInt()) & 0xffffffffL;
long mticks = (dis.readInt()) & 0xffffffffL;
int n = dis.readUnsignedShort();
long javaMillis = (long) rtime * 1000 + mticks / 1000;
long javaMicros = (long) rtime * 1000000 + mticks;
byte[] b = new byte[(n % 2 == 1) ? n + 1 : n];
dis.read(b);
swapEndian(b);
String s = new String(b, "UTF-8");
String[] bits = s.split(",");
if (bits[0].equals("E")) {
// start or end record.
boolean isStart = bits[1].equals("1");
if (isStart) {
effortStart = javaMicros;
}
dwvEffort(javaMillis, isStart);
} else if (bits[0].equals("D")) {
boolean isDet = bits[1].equals("1");
if (isDet) {
bclDetCount++;
String bclText = String.format("%9d,%6d,%s has %d bits", rtime, mticks, s, bits.length);
BCLDetectionChunk bclChunk = new BCLDetectionChunk(javaMillis, javaMicros, isDet, bclText,
sudChunk);
bclChunks.add(bclChunk);
} else {
bclNoiseCount++;
}
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
convertChunks();
}
/**
* Convert bcl and dwv data to click detections.
*/
private void convertChunks() {
int nProc = 0;
while (bclChunks.size() > 0 && clickChunks.size() > 0) {
BCLDetectionChunk bclChunk = bclChunks.remove(0);
Chunk dwvChunk = clickChunks.remove(0);
makeClick(bclChunk, dwvChunk);
nProc++;
processedChunks++;
}
}
private void makeClick(BCLDetectionChunk bclChunk, Chunk dwvChunk) {
long elapsedSamples = (long) ((bclChunk.getJavaMicros() - fileStartMicros) * (sampleRate / 1e6));
long millis = bclChunk.getJavaMillis();
byte[] rawData = dwvChunk.getBuffer();
int nBytes = rawData.length;
int nSamples = nBytes / Short.BYTES;
double[][] wavData = new double[1][nSamples];
byteConverter.bytesToDouble(rawData, wavData, nBytes);
// channelGroupDetector = clickDetector.getChannelGroupDetector(0);
ClickDetection click = new ClickDetection(1, elapsedSamples, nSamples, clickDetector, channelGroupDetector, 1);
click.setTimeMilliseconds(millis);
click.setWaveData(wavData);
// if (groupDetector != null) {
// groupDetector.
// }
if (clickDetector.completeClick(click)) {
clickDetector.getClickDataBlock().addPamData(click);
}
}
private void dwvEffort(long javaMillis, boolean isStart) {
System.out.printf("DWV Effort %s at %s\n", isStart ? "Start" : "End", PamCalendar.formatDBDateTime(javaMillis));
}
private void processClickChunk(int chunkID, Chunk sudChunk) {
clickChunks.add(sudChunk);
dwvCount++;
}
public void pamStart() {
subscribeSUD();
}
public void pamStop() {
// TODO Auto-generated method stub
}
public boolean subscribeSUD() {
if (stClickControl.isViewer()) {
return false;
}
AcquisitionControl daq = (AcquisitionControl) PamController.getInstance()
.findControlledUnit(AcquisitionControl.unitType);
if (daq == null) {
return false;
}
SUDNotificationManager sudManager = daq.getSUDNotificationManager();
if (sudManager == null) {
return false;
}
sudManager.addNotificationHandler(this);
return true;
}
}

View File

@ -278,7 +278,7 @@ public class WhistleBinaryDataSource extends BinaryDataSource {
* If we're n network receive mode, we can't do this until
* channel numbers have been reassigned.
*/
if (runMode == PamController.RUN_PAMVIEW && delays != null) {
if ((runMode == PamController.RUN_PAMVIEW || runMode == PamController.RUN_NOTHING) && delays != null) {
ShapeConnector shapeConnector = wmDetector.findShapeConnector(channelMap);
if (shapeConnector != null) {
BearingLocaliser bl = shapeConnector.getBearingLocaliser();

View File

@ -183,11 +183,6 @@ public class WhistleMoanControl extends PamControlledUnit implements PamSettings
return true;
}
@Override
public String getModuleSummary() {
return whistleToneProcess.getModuleSummary();
}
@Override
public Object getShortUnitType() {
return "WMD";
@ -225,4 +220,9 @@ public class WhistleMoanControl extends PamControlledUnit implements PamSettings
}
return null;
}
@Override
public String getModuleSummary(boolean clear) {
return whistleToneProcess.getModuleSummary(clear);
}
}

View File

@ -968,17 +968,6 @@ public class WhistleToneConnectProcess extends PamProcess {
}
public String getModuleSummary() {
String sumText = String.format("%d", NSUMMARYPOINTS);
for (int i = 0; i < NSUMMARYPOINTS; i++) {
sumText += String.format(",%d",whistleSummaryCount[i]);
}
clearSummaryData();
return sumText;
}
/**
* When delay data are written to binary files, int16's are used, but these
* must be scaled up to allow for sub-sample timing. How much they can be
@ -1099,4 +1088,20 @@ public class WhistleToneConnectProcess extends PamProcess {
return fftUnitsOut;
}
/*
* replicate Decimus function to give counts of whistles in four evenly spaced frequency
* bins.
*/
public String getModuleSummary(boolean clear) {
String sumText = String.format("%d", NSUMMARYPOINTS);
for (int i = 0; i < NSUMMARYPOINTS; i++) {
sumText += String.format(",%d",whistleSummaryCount[i]);
}
if (clear) {
clearSummaryData();
}
return sumText;
}
}