Add unit tests to deep learning and remove unwanted X3 libraries

This commit is contained in:
Jamie Mac 2024-03-12 16:57:00 +00:00
parent 3a74152beb
commit aa6d289984
54 changed files with 562 additions and 501 deletions

View File

@ -1,6 +1,5 @@
eclipse.preferences.version=1 eclipse.preferences.version=1
encoding//src/rawDeepLearningClassifer/segmenter/SegmenterProcess.java=UTF-8 encoding//src/rawDeepLearningClassifer/segmenter/SegmenterProcess.java=UTF-8
encoding//src/test=UTF-8
encoding//src/test/resources=UTF-8 encoding//src/test/resources=UTF-8
encoding/<project>=UTF-8 encoding/<project>=UTF-8
encoding/src=UTF-8 encoding/src=UTF-8

View File

@ -1,9 +1,9 @@
eclipse.preferences.version=1 eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
org.eclipse.jdt.core.compiler.codegen.targetPlatform=21 org.eclipse.jdt.core.compiler.codegen.targetPlatform=18
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=21 org.eclipse.jdt.core.compiler.compliance=18
org.eclipse.jdt.core.compiler.debug.lineNumber=generate org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate
@ -13,4 +13,4 @@ org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.release=enabled org.eclipse.jdt.core.compiler.release=enabled
org.eclipse.jdt.core.compiler.source=21 org.eclipse.jdt.core.compiler.source=18

149
pom.xml
View File

@ -19,6 +19,10 @@
<javafx.version>21</javafx.version> <javafx.version>21</javafx.version>
<maven.compiler.source>11</maven.compiler.source> <maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target> <maven.compiler.target>11</maven.compiler.target>
<!-- Thethys version control -->
<jaxb.runtime.version>2.4.0-b180830.0438</jaxb.runtime.version>
<jaxb.api.version>2.4.0-b180830.0359</jaxb.api.version>
<jaxb.xjc.version>2.4.0-b180830.0438</jaxb.xjc.version>
</properties> </properties>
<build> <build>
@ -29,6 +33,7 @@
<resource> <resource>
<directory>src</directory> <directory>src</directory>
<excludes> <excludes>
<exclude>META-INF/*.SF,META-INF/*.DSA,META-INF/*.RSA</exclude>
<exclude>**/*.java</exclude> <!-- don't include any source files --> <exclude>**/*.java</exclude> <!-- don't include any source files -->
<exclude>jars/*.*</exclude> <!-- don't include files in the jars folder --> <exclude>jars/*.*</exclude> <!-- don't include files in the jars folder -->
</excludes> </excludes>
@ -748,6 +753,146 @@
</dependency> </dependency>
--> -->
<!-- From NilusXMLGenerator POM at https://bitbucket.org/tethysacousticmetadata/nilusxmlgenerator/src/master/-->
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>org.eclipse.persistence.moxy</artifactId>
<version>2.5.0</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>${jaxb.api.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>${jaxb.runtime.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-xjc</artifactId>
<version>${jaxb.xjc.version}</version>
</dependency>
<!-- dependencies copied from TethysJavaClient -->
<dependency>
<groupId>com.sun.jersey.contribs</groupId>
<artifactId>jersey-multipart</artifactId>
<version>1.18.1</version>
</dependency>
<dependency>
<groupId>commons-cli</groupId>
<artifactId>commons-cli</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.10-beta1</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.18.1</version>
</dependency>
<dependency>
<groupId>com.sun.jersey.contribs</groupId>
<artifactId>jersey-apache-client</artifactId>
<version>1.18.1</version>
</dependency>
<dependency>
<groupId>com.miglayout</groupId>
<artifactId>miglayout</artifactId>
<version>3.7.4</version>
</dependency>
<dependency>
<groupId>ca.juliusdavies</groupId>
<artifactId>not-yet-commons-ssl</artifactId>
<version>0.3.11</version>
</dependency>
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.2.11</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.2.11</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-core</artifactId>
<version>2.2.11</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-common</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-text</artifactId>
<version>1.9</version>
</dependency>
<!-- dependencies copied from TethysJavaClient END -->
<!-- Thethy library not in Maven central, so you may need to copy the javaclient and nilus folders from
e.g. C:\Users\dg50\source\repos\**your projectfolder**\repo\tethys\org
to C:\Users\dg50\.m2\repository\tethys\org -->
<dependency>
<groupId>tethys.org</groupId>
<artifactId>nilus</artifactId>
<version>3.0</version>
</dependency>
<dependency>
<groupId>tethys.org</groupId>
<artifactId>javaclient</artifactId>
<version>3.0</version>
</dependency>
<!-- <!--
X3 library for decompressing sud files. Not in Maven repository X3 library for decompressing sud files. Not in Maven repository
you may need to copy files from your downloaded PAMGuard source code, you may need to copy files from your downloaded PAMGuard source code,
@ -755,9 +900,9 @@
C:\Users\*yourusername*\.m2\repository\pamguard\org\x3\2.2.2 C:\Users\*yourusername*\.m2\repository\pamguard\org\x3\2.2.2
--> -->
<dependency> <dependency>
<groupId>pamguard.org</groupId> <groupId>org.pamguard</groupId>
<artifactId>x3</artifactId> <artifactId>x3</artifactId>
<version>2.2.6</version> <version>2.2.7</version>
</dependency> </dependency>

View File

@ -1,89 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.pamguard</groupId>
<artifactId>X3</artifactId>
<version>2.2.5</version>
<description>Tools for opening X3 files</description>
<developers>
<developer>
<id>macster110</id>
<name>Jamie Macaulay</name>
<roles>
<role>Developer</role>
</roles>
</developer>
</developers>
<licenses>
<license>
<name>Apache-2.0</name>
<url>https://opensource.org/licenses/apache-2.0</url>
<distribution>repo</distribution>
</license>
</licenses>
<scm>
<url>https://github.com/PAMGuard/x3.git</url>
</scm>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<release>11</release>
</configuration>
</plugin>
<plugin>
<artifactId>maven-shade-plugin</artifactId>
<version>3.4.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration />
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-source-plugin</artifactId>
<version>3.2.1</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.3.0</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
<configuration>
<failOnError>false</failOnError>
</configuration>
</plugin>
</plugins>
</build>
<distributionManagement>
<repository>
<id>ossrh</id>
<url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
<snapshotRepository>
<id>ossrh</id>
<url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
</distributionManagement>
</project>

View File

@ -1,12 +0,0 @@
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
<<<<<<<< HEAD:repo/org/pamguard/x3/2.2.5/_remote.repositories
#Wed Aug 02 09:25:44 BST 2023
X3-2.2.5-sources.jar>=
X3-2.2.5-javadoc.jar>=
X3-2.2.5.jar>=
X3-2.2.5.pom>=
========
#Thu Dec 21 11:14:13 GMT 2023
nilus-3.0.pom>=
nilus-3.0.jar>=
>>>>>>>> upstream/main:repo/tethys/org/nilus/3.0/_remote.repositories

View File

@ -1,11 +0,0 @@
#Mon Jul 31 15:39:20 BST 2023
bedatadriven|https\://nexus.bedatadriven.com/content/groups/public/|javadoc=1690814360177
repo|file\://C\:\\Users\\Jamie\ Macaulay\\git\\PAMGuard/repo|sources=1690814174968
talan|https\://nexus.talanlabs.com/content/repositories/releases/|javadoc=1690814360177
central|https\://repo1.maven.org/maven2|sources=1690814174968
unidata-all|https\://artifacts.unidata.ucar.edu/repository/unidata-all/|javadoc=1690814360177
talan|https\://nexus.talanlabs.com/content/repositories/releases/|sources=1690814174968
repo|file\://C\:\\Users\\Jamie\ Macaulay\\git\\PAMGuard/repo|javadoc=1690814360177
bedatadriven|https\://nexus.bedatadriven.com/content/groups/public/|sources=1690814174968
unidata-all|https\://artifacts.unidata.ucar.edu/repository/unidata-all/|sources=1690814174968
central|https\://repo1.maven.org/maven2|javadoc=1690814360177

View File

@ -1,12 +0,0 @@
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
#Mon Jul 31 15:39:20 BST 2023
file\://C\:\\Users\\Jamie\ Macaulay\\git\\PAMGuard/repo/.lastUpdated=1690814258163
@default-talan-https\://nexus.talanlabs.com/content/repositories/releases/.lastUpdated=1690814359540
https\://repo1.maven.org/maven2/.error=
file\://C\:\\Users\\Jamie\ Macaulay\\git\\PAMGuard/repo/.error=
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.error=
https\://nexus.bedatadriven.com/content/groups/public/.error=
https\://nexus.bedatadriven.com/content/groups/public/.lastUpdated=1690814259502
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.lastUpdated=1690814259201
https\://repo1.maven.org/maven2/.lastUpdated=1690814360177
https\://nexus.talanlabs.com/content/repositories/releases/.error=Could not transfer artifact pamguard.org\:x3\:jar\:javadoc\:2.2.5 from/to talan (https\://nexus.talanlabs.com/content/repositories/releases/)\: Connect timed out

View File

@ -1,12 +0,0 @@
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
#Mon Jul 31 15:36:14 BST 2023
file\://C\:\\Users\\Jamie\ Macaulay\\git\\PAMGuard/repo/.lastUpdated=1690814073151
@default-talan-https\://nexus.talanlabs.com/content/repositories/releases/.lastUpdated=1690814174749
https\://repo1.maven.org/maven2/.error=
file\://C\:\\Users\\Jamie\ Macaulay\\git\\PAMGuard/repo/.error=
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.error=
https\://nexus.bedatadriven.com/content/groups/public/.error=
https\://nexus.bedatadriven.com/content/groups/public/.lastUpdated=1690814074700
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.lastUpdated=1690814074514
https\://repo1.maven.org/maven2/.lastUpdated=1690814174968
https\://nexus.talanlabs.com/content/repositories/releases/.error=Could not transfer artifact pamguard.org\:x3\:jar\:sources\:2.2.5 from/to talan (https\://nexus.talanlabs.com/content/repositories/releases/)\: Connect timed out

View File

@ -1,12 +0,0 @@
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
#Mon Jul 31 15:33:58 BST 2023
file\://C\:\\Users\\Jamie\ Macaulay\\git\\PAMGuard/repo/.lastUpdated=1690813936812
@default-talan-https\://nexus.talanlabs.com/content/repositories/releases/.lastUpdated=1690814037920
https\://repo1.maven.org/maven2/.error=
file\://C\:\\Users\\Jamie\ Macaulay\\git\\PAMGuard/repo/.error=
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.error=
https\://nexus.bedatadriven.com/content/groups/public/.error=
https\://nexus.bedatadriven.com/content/groups/public/.lastUpdated=1690813937853
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.lastUpdated=1690813937654
https\://repo1.maven.org/maven2/.lastUpdated=1690814038162
https\://nexus.talanlabs.com/content/repositories/releases/.error=Could not transfer artifact pamguard.org\:x3\:jar\:2.2.5 from/to talan (https\://nexus.talanlabs.com/content/repositories/releases/)\: Connect timed out

View File

@ -1,16 +0,0 @@
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
#Mon Jul 31 15:32:16 BST 2023
@default-talan-https\://nexus.talanlabs.com/content/repositories/releases/.lastUpdated=1690813866779
https\://repo1.maven.org/maven2/.error=
file\://C\:\\Users\\Jamie\ Macaulay\\git\\PAMGuard\\target\\classes\\META-INF\\maven\\org.pamguard\\Pamguard/repo/.error=
file\://${project.basedir}/repo/.lastUpdated=1690813675129
file\://C\:\\Users\\Jamie\ Macaulay\\git\\PAMGuard\\target\\classes\\META-INF\\maven\\org.pamguard\\Pamguard/repo/.lastUpdated=1690813936624
https\://nexus.bedatadriven.com/content/groups/public/.error=
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.error=
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.lastUpdated=1690813676327
https\://repo1.maven.org/maven2/.lastUpdated=1690813777090
https\://nexus.talanlabs.com/content/repositories/releases/.error=Could not transfer artifact pamguard.org\:x3\:pom\:2.2.5 from/to talan (https\://nexus.talanlabs.com/content/repositories/releases/)\: Connect timed out
file\://C\:\\Users\\Jamie\ Macaulay\\git\\PAMGuard/repo/.lastUpdated=1690813766739
file\://${project.basedir}/repo/.error=
file\://C\:\\Users\\Jamie\ Macaulay\\git\\PAMGuard/repo/.error=
https\://nexus.bedatadriven.com/content/groups/public/.lastUpdated=1690813676687

View File

@ -1,10 +0,0 @@
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
<<<<<<<< HEAD:repo/pamguard/org/x3/2.2.3/_remote.repositories
#Thu Oct 26 14:35:14 BST 2023
x3-2.2.3.jar>=
x3-2.2.3.pom>=
========
#Fri Jan 12 10:06:13 GMT 2024
x3-2.2.7.jar>=
x3-2.2.7.pom>=
>>>>>>>> upstream/main:repo/pamguard/org/x3/2.2.7/_remote.repositories

View File

@ -1,12 +0,0 @@
#Thu Oct 26 15:50:39 BST 2023
bedatadriven|https\://nexus.bedatadriven.com/content/groups/public/|javadoc=1698327546071
repo|file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardPAMGuard/repo|sources=1698327461721
repo|file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardPAMGuard/repo|javadoc=1698327546071
talan|https\://nexus.talanlabs.com/content/repositories/releases/|javadoc=1698327546071
central|https\://repo1.maven.org/maven2|sources=1698331839689
unidata-all|https\://artifacts.unidata.ucar.edu/repository/unidata-all/|javadoc=1698327546071
talan|https\://nexus.talanlabs.com/content/repositories/releases/|sources=1698331839689
bedatadriven|https\://nexus.bedatadriven.com/content/groups/public/|sources=1698331839689
unidata-all|https\://artifacts.unidata.ucar.edu/repository/unidata-all/|sources=1698331839689
central|https\://repo1.maven.org/maven2|javadoc=1698327546071
repo|file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardDG/repo|sources=1698331839689

View File

@ -1,25 +0,0 @@
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
<<<<<<<< HEAD:repo/pamguard/org/x3/2.2.3/x3-2.2.3-javadoc.jar.lastUpdated
#Thu Oct 26 14:39:06 BST 2023
@default-talan-https\://nexus.talanlabs.com/content/repositories/releases/.lastUpdated=1698327545863
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardPAMGuard/repo/.lastUpdated=1698327544361
========
#Fri Jan 12 10:09:16 GMT 2024
@default-talan-https\://nexus.talanlabs.com/content/repositories/releases/.lastUpdated=1705054156080
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardPAMGuard/repo/.lastUpdated=1705054154613
>>>>>>>> upstream/main:repo/pamguard/org/x3/2.2.7/x3-2.2.7-javadoc.jar.lastUpdated
https\://repo1.maven.org/maven2/.error=
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardPAMGuard/repo/.error=
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.error=
https\://nexus.bedatadriven.com/content/groups/public/.error=
<<<<<<<< HEAD:repo/pamguard/org/x3/2.2.3/x3-2.2.3-javadoc.jar.lastUpdated
https\://nexus.bedatadriven.com/content/groups/public/.lastUpdated=1698327545797
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.lastUpdated=1698327545616
https\://repo1.maven.org/maven2/.lastUpdated=1698327546068
https\://nexus.talanlabs.com/content/repositories/releases/.error=Could not transfer artifact pamguard.org\:x3\:jar\:javadoc\:2.2.3 from/to talan (https\://nexus.talanlabs.com/content/repositories/releases/)\: nexus.talanlabs.com
========
https\://nexus.bedatadriven.com/content/groups/public/.lastUpdated=1705054156060
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.lastUpdated=1705054155868
https\://repo1.maven.org/maven2/.lastUpdated=1705054156344
https\://nexus.talanlabs.com/content/repositories/releases/.error=Could not transfer artifact pamguard.org\:x3\:jar\:javadoc\:2.2.7 from/to talan (https\://nexus.talanlabs.com/content/repositories/releases/)\: nexus.talanlabs.com
>>>>>>>> upstream/main:repo/pamguard/org/x3/2.2.7/x3-2.2.7-javadoc.jar.lastUpdated

View File

@ -1,28 +0,0 @@
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
<<<<<<<< HEAD:repo/pamguard/org/x3/2.2.3/x3-2.2.3-sources.jar.lastUpdated
#Thu Oct 26 15:50:39 BST 2023
@default-talan-https\://nexus.talanlabs.com/content/repositories/releases/.lastUpdated=1698327461349
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardPAMGuard/repo/.lastUpdated=1698327459306
https\://repo1.maven.org/maven2/.error=
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardDG/repo/.error=
https\://nexus.bedatadriven.com/content/groups/public/.error=
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.error=
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.lastUpdated=1698327460817
https\://repo1.maven.org/maven2/.lastUpdated=1698327461652
https\://nexus.talanlabs.com/content/repositories/releases/.error=Could not transfer artifact pamguard.org\:x3\:jar\:sources\:2.2.3 from/to talan (https\://nexus.talanlabs.com/content/repositories/releases/)\: nexus.talanlabs.com
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardDG/repo/.lastUpdated=1698331839687
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardPAMGuard/repo/.error=
https\://nexus.bedatadriven.com/content/groups/public/.lastUpdated=1698327461288
========
#Fri Jan 12 10:06:49 GMT 2024
@default-talan-https\://nexus.talanlabs.com/content/repositories/releases/.lastUpdated=1705054009062
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardPAMGuard/repo/.lastUpdated=1705054007956
https\://repo1.maven.org/maven2/.error=
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardPAMGuard/repo/.error=
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.error=
https\://nexus.bedatadriven.com/content/groups/public/.error=
https\://nexus.bedatadriven.com/content/groups/public/.lastUpdated=1705054008945
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.lastUpdated=1705054008751
https\://repo1.maven.org/maven2/.lastUpdated=1705054009308
https\://nexus.talanlabs.com/content/repositories/releases/.error=Could not transfer artifact pamguard.org\:x3\:jar\:sources\:2.2.7 from/to talan (https\://nexus.talanlabs.com/content/repositories/releases/)\: nexus.talanlabs.com
>>>>>>>> upstream/main:repo/pamguard/org/x3/2.2.7/x3-2.2.7-sources.jar.lastUpdated

View File

@ -1,13 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>pamguard.org</groupId>
<artifactId>x3</artifactId>
<<<<<<<< HEAD:repo/pamguard/org/x3/2.2.3/x3-2.2.3.pom
<version>2.2.3</version>
========
<version>2.2.7</version>
>>>>>>>> upstream/main:repo/pamguard/org/x3/2.2.7/x3-2.2.7.pom
<description>POM was created from install:install-file</description>
</project>

View File

@ -1,4 +0,0 @@
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
#Wed Nov 15 12:43:42 GMT 2023
x3-2.2.6.jar>=
x3-2.2.6.pom>=

View File

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>pamguard.org</groupId>
<artifactId>x3</artifactId>
<version>2.2.6</version>
<description>POM was created from install:install-file</description>
</project>

View File

@ -1,10 +0,0 @@
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
<<<<<<<< HEAD:repo/pamguard/org/x3/2.2.3/_remote.repositories
#Thu Oct 26 14:35:14 BST 2023
x3-2.2.3.jar>=
x3-2.2.3.pom>=
========
#Fri Jan 12 10:06:13 GMT 2024
x3-2.2.7.jar>=
x3-2.2.7.pom>=
>>>>>>>> upstream/main:repo/pamguard/org/x3/2.2.7/_remote.repositories

View File

@ -1,11 +0,0 @@
#Fri Jan 12 10:09:16 GMT 2024
bedatadriven|https\://nexus.bedatadriven.com/content/groups/public/|javadoc=1705054156349
repo|file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardPAMGuard/repo|sources=1705054009341
repo|file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardPAMGuard/repo|javadoc=1705054156349
talan|https\://nexus.talanlabs.com/content/repositories/releases/|javadoc=1705054156349
central|https\://repo1.maven.org/maven2|sources=1705054009341
unidata-all|https\://artifacts.unidata.ucar.edu/repository/unidata-all/|javadoc=1705054156349
talan|https\://nexus.talanlabs.com/content/repositories/releases/|sources=1705054009341
bedatadriven|https\://nexus.bedatadriven.com/content/groups/public/|sources=1705054009341
unidata-all|https\://artifacts.unidata.ucar.edu/repository/unidata-all/|sources=1705054009341
central|https\://repo1.maven.org/maven2|javadoc=1705054156349

View File

@ -1,25 +0,0 @@
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
<<<<<<<< HEAD:repo/pamguard/org/x3/2.2.3/x3-2.2.3-javadoc.jar.lastUpdated
#Thu Oct 26 14:39:06 BST 2023
@default-talan-https\://nexus.talanlabs.com/content/repositories/releases/.lastUpdated=1698327545863
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardPAMGuard/repo/.lastUpdated=1698327544361
========
#Fri Jan 12 10:09:16 GMT 2024
@default-talan-https\://nexus.talanlabs.com/content/repositories/releases/.lastUpdated=1705054156080
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardPAMGuard/repo/.lastUpdated=1705054154613
>>>>>>>> upstream/main:repo/pamguard/org/x3/2.2.7/x3-2.2.7-javadoc.jar.lastUpdated
https\://repo1.maven.org/maven2/.error=
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardPAMGuard/repo/.error=
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.error=
https\://nexus.bedatadriven.com/content/groups/public/.error=
<<<<<<<< HEAD:repo/pamguard/org/x3/2.2.3/x3-2.2.3-javadoc.jar.lastUpdated
https\://nexus.bedatadriven.com/content/groups/public/.lastUpdated=1698327545797
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.lastUpdated=1698327545616
https\://repo1.maven.org/maven2/.lastUpdated=1698327546068
https\://nexus.talanlabs.com/content/repositories/releases/.error=Could not transfer artifact pamguard.org\:x3\:jar\:javadoc\:2.2.3 from/to talan (https\://nexus.talanlabs.com/content/repositories/releases/)\: nexus.talanlabs.com
========
https\://nexus.bedatadriven.com/content/groups/public/.lastUpdated=1705054156060
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.lastUpdated=1705054155868
https\://repo1.maven.org/maven2/.lastUpdated=1705054156344
https\://nexus.talanlabs.com/content/repositories/releases/.error=Could not transfer artifact pamguard.org\:x3\:jar\:javadoc\:2.2.7 from/to talan (https\://nexus.talanlabs.com/content/repositories/releases/)\: nexus.talanlabs.com
>>>>>>>> upstream/main:repo/pamguard/org/x3/2.2.7/x3-2.2.7-javadoc.jar.lastUpdated

View File

@ -1,28 +0,0 @@
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
<<<<<<<< HEAD:repo/pamguard/org/x3/2.2.3/x3-2.2.3-sources.jar.lastUpdated
#Thu Oct 26 15:50:39 BST 2023
@default-talan-https\://nexus.talanlabs.com/content/repositories/releases/.lastUpdated=1698327461349
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardPAMGuard/repo/.lastUpdated=1698327459306
https\://repo1.maven.org/maven2/.error=
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardDG/repo/.error=
https\://nexus.bedatadriven.com/content/groups/public/.error=
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.error=
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.lastUpdated=1698327460817
https\://repo1.maven.org/maven2/.lastUpdated=1698327461652
https\://nexus.talanlabs.com/content/repositories/releases/.error=Could not transfer artifact pamguard.org\:x3\:jar\:sources\:2.2.3 from/to talan (https\://nexus.talanlabs.com/content/repositories/releases/)\: nexus.talanlabs.com
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardDG/repo/.lastUpdated=1698331839687
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardPAMGuard/repo/.error=
https\://nexus.bedatadriven.com/content/groups/public/.lastUpdated=1698327461288
========
#Fri Jan 12 10:06:49 GMT 2024
@default-talan-https\://nexus.talanlabs.com/content/repositories/releases/.lastUpdated=1705054009062
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardPAMGuard/repo/.lastUpdated=1705054007956
https\://repo1.maven.org/maven2/.error=
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardPAMGuard/repo/.error=
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.error=
https\://nexus.bedatadriven.com/content/groups/public/.error=
https\://nexus.bedatadriven.com/content/groups/public/.lastUpdated=1705054008945
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.lastUpdated=1705054008751
https\://repo1.maven.org/maven2/.lastUpdated=1705054009308
https\://nexus.talanlabs.com/content/repositories/releases/.error=Could not transfer artifact pamguard.org\:x3\:jar\:sources\:2.2.7 from/to talan (https\://nexus.talanlabs.com/content/repositories/releases/)\: nexus.talanlabs.com
>>>>>>>> upstream/main:repo/pamguard/org/x3/2.2.7/x3-2.2.7-sources.jar.lastUpdated

View File

@ -1,13 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>pamguard.org</groupId>
<artifactId>x3</artifactId>
<<<<<<<< HEAD:repo/pamguard/org/x3/2.2.3/x3-2.2.3.pom
<version>2.2.3</version>
========
<version>2.2.7</version>
>>>>>>>> upstream/main:repo/pamguard/org/x3/2.2.7/x3-2.2.7.pom
<description>POM was created from install:install-file</description>
</project>

View File

@ -135,7 +135,7 @@ public class PamAudioFileManager {
} }
if (stream == null) { if (stream == null) {
System.err.println("PamAudioFileManager: unable to open an AudioStream for " + file.getName()); System.err.println("PamAudioFileManager: unable to open an AudioStream for " + file.getName() + " size: " + file.length());
} }
return stream; return stream;

View File

@ -254,7 +254,7 @@ public class WavAudioFile implements PamAudioFileLoader {
@Override @Override
public AudioInputStream getAudioStream(File soundFile) { public AudioInputStream getAudioStream(File soundFile) {
if (soundFile.exists() == false) return null; if (soundFile.exists() == false || soundFile.length()<44) return null;
if (soundFile != null && isSoundFile(soundFile)) { if (soundFile != null && isSoundFile(soundFile)) {
try { try {
return WavFileInputStream.openInputStream(soundFile); return WavFileInputStream.openInputStream(soundFile);
@ -262,7 +262,7 @@ public class WavAudioFile implements PamAudioFileLoader {
catch (UnsupportedAudioFileException | IOException e) { catch (UnsupportedAudioFileException | IOException e) {
e.printStackTrace(); e.printStackTrace();
// don't do anything and it will try the built in Audiosystem // don't do anything and it will try the built in Audiosystem
System.err.println("Could not open wav file: trying default audio stream: " + soundFile.getName()); System.err.println("Could not open wav file: trying default audio stream: " + soundFile.getName() + " " + soundFile.length());
} }
} }
try { try {
@ -276,9 +276,24 @@ public class WavAudioFile implements PamAudioFileLoader {
} }
public boolean isSoundFile(File soundFile) { public static boolean isSoundFile(File soundFile) {
String extension = FileUtils.getExtension(soundFile.getName()); String extension = FileUtils.getExtension(soundFile.getName());
return (extension.equals(".wav")); //2023-03-12 - for some reason this was .wav
return (extension.equals("wav"));
}
public static void main(String args[]) {
File wavFile = new File("E:\\SoundNet\\1chan_analysis\\pamguard\\67150826\\mf_wav\\20180529\\PAM_20180529_055114_000.wav");
try {
WavFileInputStream.openInputStream(wavFile);
System.out.println("Wav file opened successfully: " + isSoundFile(wavFile));
} catch (UnsupportedAudioFileException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} }

View File

@ -51,13 +51,15 @@ public class WavFileInputStream extends AudioInputStream {
if (wavHeader.readHeader(windowsFile) == false) { if (wavHeader.readHeader(windowsFile) == false) {
throw new UnsupportedAudioFileException("Unsupprted wav file format in " + file.getName()); throw new UnsupportedAudioFileException("Unsupprted wav file format in " + file.getName());
} }
long nFrames = wavHeader.getDataSize() / wavHeader.getBlockAlign(); long nFrames = wavHeader.getDataSize() / wavHeader.getBlockAlign();
//29/03/2017 Found that the block align read from header was wrong in SoundTrap. This solves the problem and is still OK for normal //29/03/2017 Found that the block align read from header was wrong in SoundTrap. This solves the problem and is still OK for normal
//wav files (this is in fact tha standard emthod for calculated blockalign) //wav files (this is in fact tha standard emthod for calculated blockalign)
int blockAlign = wavHeader.getNChannels() * (wavHeader.getBitsPerSample() / 8); int blockAlign = wavHeader.getNChannels() * (wavHeader.getBitsPerSample() / 8);
//System.out.println("NFRAMES: " + nFrames + " "+ wavHeader.getDataSize() + " " + wavHeader.getBlockAlign() + " "+blockAlign ); System.out.println("NFRAMES: " + nFrames + " "+ wavHeader.getDataSize() + " " + wavHeader.getBlockAlign() + " "+blockAlign );
Encoding encoding = getEncoding(wavHeader.getFmtTag()); Encoding encoding = getEncoding(wavHeader.getFmtTag());
if (encoding == null) { if (encoding == null) {

View File

@ -170,7 +170,12 @@ public class PamConfiguration {
public PamDataBlock getDataBlock(Class blockType, String name) { public PamDataBlock getDataBlock(Class blockType, String name) {
if (name == null) return null; if (name == null) return null;
ArrayList<PamDataBlock> blocks = getDataBlocks(blockType, true); ArrayList<PamDataBlock> blocks = getDataBlocks(blockType, true);
System.out.println(name);
for (PamDataBlock dataBlock:blocks) { for (PamDataBlock dataBlock:blocks) {
// System.out.println(dataBlock.getLongDataName() + " ||| " + dataBlock.toString());
if (name.equals(dataBlock.getLongDataName())) { // check for a long name match first if (name.equals(dataBlock.getLongDataName())) { // check for a long name match first
return dataBlock; return dataBlock;
} }
@ -184,6 +189,27 @@ public class PamConfiguration {
return dataBlock; return dataBlock;
} }
} }
return tryShortDataName(blockType, name);
}
/**
* For when the function calling with longdataname fails!
* @param blockType
* @param name
* @return
*/
private PamDataBlock tryShortDataName(Class blockType, String name) {
if (name == null) return null;
ArrayList<PamDataBlock> blocks = getDataBlocks(blockType, true);
System.out.println(name);
for (PamDataBlock dataBlock:blocks) {
if (name.equals(dataBlock.getDataName())) { // check for a long name match first
return dataBlock;
}
}
return null; return null;
} }

View File

@ -937,34 +937,4 @@ public abstract class PamControlledUnit implements SettingsNameProvider {
this.pamConfiguration = pamConfiguration; this.pamConfiguration = pamConfiguration;
} }
/**
* The PamConfiguration holds the master list of modules which form part of a
* configuration. It should be accessed to find list of datablocks, etc. rather than
* doing everything through PAMController whenever possible.
* @return the pamConfiguration
*/
public PamConfiguration getPamConfiguration() {
if (pamConfiguration == null) {
pamConfiguration = PamController.getInstance().getPamConfiguration();
}
return pamConfiguration;
}
/**
* Is this module in the main configuration. If it isn't then it's probably a dummy config
* used in the batch processor or for importing / exporting configs, so it should be stopped from
* doing too much !
* @return
*/
public boolean isInMainConfiguration() {
return pamConfiguration == PamController.getInstance().getPamConfiguration();
}
/**
* @param pamConfiguration the pamConfiguration to set
*/
public void setPamConfiguration(PamConfiguration pamConfiguration) {
this.pamConfiguration = pamConfiguration;
}
} }

View File

@ -1004,18 +1004,47 @@ public class PamArrayUtils {
return newArray; return newArray;
} }
/**
* Check if two Long arrays contain the same elements
* @param shape - the array to compare to.
* @param shape2 - the array to be compared.
*/
public static boolean arrEquals(Long[] shape, Long[] shape2) {
if (shape.length!=shape2.length) return false;
for (int i =0 ;i<shape.length; i++) {
if (shape[i]!=shape2[i]) return false;
}
return true;
}
/** /**
* Check if two int arrays contain the same elements * Check if two int arrays contain the same elements
* @param arr1 - the array to compare to. * @param shape - the array to compare to.
* @param arr2 - the array to be compared. * @param shape2 - the array to be compared.
*/ */
public static boolean arrEquals(int[] arr1, int[] arr2) { public static boolean arrEquals(int[] shape, int[] shape2) {
if (arr1.length!=arr2.length) return false; if (shape.length!=shape2.length) return false;
for (int i =0 ;i<arr1.length; i++) { for (int i =0 ;i<shape.length; i++) {
if (arr1[i]!=arr2[i]) return false; if (shape[i]!=shape2[i]) return false;
}
return true;
}
/**
* Check if two long arrays contain the same elements
* @param shape - the array to compare to.
* @param shape2 - the array to be compared.
*/
public static boolean arrEquals(long[] shape, long[] shape2) {
if (shape.length!=shape2.length) return false;
for (int i =0 ;i<shape.length; i++) {
if (shape[i]!=shape2[i]) return false;
} }
return true; return true;
@ -1132,6 +1161,7 @@ public class PamArrayUtils {
} }

View File

@ -20,8 +20,10 @@ import userDisplayFX.UserDisplayNodeFX;
import userDisplayFX.UserDisplayNodeParams; import userDisplayFX.UserDisplayNodeParams;
/** /**
* Pane which shows users all data currently stored in binary files and databases within PAMGuard. Also allows for navigation to * Pane which shows users all data currently stored in binary files and
* different part of the data time series. * databases within PAMGuard. Also allows for navigation to different part of
* the data time series.
*
* @author Jamie Macaulay * @author Jamie Macaulay
* *
*/ */

View File

@ -204,7 +204,7 @@ public class DataStreamPaneFX extends PamBorderPane {
/** /**
* The wheel scroll factor. * The wheel scroll factor.
*/ */
private double wheelScrollFactor = 0.2; private double wheelScrollFactor = 0.1;
/** /**
* Writable image for 3D datagram. * Writable image for 3D datagram.
@ -370,16 +370,24 @@ public class DataStreamPaneFX extends PamBorderPane {
if (timeline!=null) timeline.stop(); if (timeline!=null) timeline.stop();
timeline = new Timeline(new KeyFrame( timeline = new Timeline(new KeyFrame(
Duration.millis(tm), Duration.millis(tm),
ae -> paintCanvas(0))); ae -> {
// System.out.println("Paint Canvas zero");
paintCanvas(0);
}));
timeline.play(); timeline.play();
return; return;
} }
lastTime=currentTime; lastTime=currentTime;
long time1 = System.currentTimeMillis();
paintPlotCanvas(plotCanvas.getGraphicsContext2D()); paintPlotCanvas(plotCanvas.getGraphicsContext2D());
paintDrawCanvas(drawCanvas.getGraphicsContext2D()); paintDrawCanvas(drawCanvas.getGraphicsContext2D());
long time2 = System.currentTimeMillis();
System.out.println("Paint Canvas: " + this + " " + System.currentTimeMillis() + " " + (time2-time1));
} }
/** /**
@ -597,14 +605,16 @@ public class DataStreamPaneFX extends PamBorderPane {
} }
datagramImage = new WritableImage(imageData.length, imageData[0].length); datagramImage = new WritableImage(imageData.length, imageData[0].length);
PixelWriter writableRaster = datagramImage.getPixelWriter(); PixelWriter writableRaster = datagramImage.getPixelWriter();
g.setFill(Color.LIGHTGRAY);
g.fillRect(0, 0, nXPoints, nYPoints);
for (int i = 0; i < nXPoints; i++) { for (int i = 0; i < nXPoints; i++) {
for (int j = 0; j < nYPoints; j++) { for (int j = 0; j < nYPoints; j++) {
y = nYPoints-j-1; y = nYPoints-j-1;
if (imageData[i][j] < 0) { if (imageData[i][j] < 0) {
writableRaster.setColor(i,y,Color.LIGHTGRAY); //writableRaster.setColor(i,y,Color.LIGHTGRAY);
} }
else if (imageData[i][j] == 0) { else if (imageData[i][j] == 0) {
writableRaster.setColor(i,y, Color.LIGHTGRAY); //writableRaster.setColor(i,y, Color.LIGHTGRAY);
} }
else { else {
iCol = (int) (NCOLOURPOINTS * (Math.log(imageData[i][j]) - minMaxValue[0]) / scaleRange); iCol = (int) (NCOLOURPOINTS * (Math.log(imageData[i][j]) - minMaxValue[0]) / scaleRange);
@ -1032,10 +1042,6 @@ public class DataStreamPaneFX extends PamBorderPane {
repaint(ScrollingDataPaneFX.REPAINTMILLIS); //update at 10 frames per second repaint(ScrollingDataPaneFX.REPAINTMILLIS); //update at 10 frames per second
} }
private void repaint() {
this.repaint(0);
}
/** /**
* Get the pane which sits at the top of the datagraph and contains a label showing the datablock being displayed. * Get the pane which sits at the top of the datagraph and contains a label showing the datablock being displayed.
* @return the pane which sits at the top of the datagraph * @return the pane which sits at the top of the datagraph

View File

@ -29,8 +29,9 @@ public class ScrollingDataPaneFX extends PamBorderPane {
/** /**
* Standard millis to wait for repaint. * Standard millis to wait for repaint.
* Do not ake this too high i.e. above 50 or the display gets very jerky
*/ */
public static final long REPAINTMILLIS = 200; public static final long REPAINTMILLIS = 50;
/** /**
* The default expanded hieght for each pane. * The default expanded hieght for each pane.

View File

@ -237,7 +237,7 @@ public class ModuleConnectionNode extends StandardConnectionNode implements PAMC
removeButton.setGraphic(PamGlyphDude.createPamIcon("mdi2m-minus", Color.WHITE, PamGuiManagerFX.iconSize)); removeButton.setGraphic(PamGlyphDude.createPamIcon("mdi2m-minus", Color.WHITE, PamGuiManagerFX.iconSize));
removeButton.setMaxSize(Double.MAX_VALUE,Double.MAX_VALUE); removeButton.setMaxSize(Double.MAX_VALUE,Double.MAX_VALUE);
removeButton.setOnAction((change)->{ removeButton.setOnAction((change)->{
if (this.pamControlledUnit.getPamModuleInfo().canRemove()){ if (this.pamControlledUnit.getPamModuleInfo()== null || this.pamControlledUnit.getPamModuleInfo().canRemove()){
connectionPane.removeModuleNode(this); connectionPane.removeModuleNode(this);
} }
}); });
@ -620,7 +620,7 @@ public class ModuleConnectionNode extends StandardConnectionNode implements PAMC
//add tool tip //add tool tip
if (pamControlledUnit!=null){ if (pamControlledUnit!=null){
//sometimes seems to cause an issue woith dialogs disappearing. //sometimes seems to cause an issue with dialogs disappearing.
// Tooltip tp = new Tooltip(pamControlledUnit.getUnitType()); // Tooltip tp = new Tooltip(pamControlledUnit.getUnitType());
// tp.getStyleClass().removeAll(tp.getStyleClass()); // tp.getStyleClass().removeAll(tp.getStyleClass());
// Tooltip.install(this, tp); // Tooltip.install(this, tp);
@ -637,19 +637,19 @@ public class ModuleConnectionNode extends StandardConnectionNode implements PAMC
removeConnectionPlug(getConnectionPlugs().get(i),false); removeConnectionPlug(getConnectionPlugs().get(i),false);
} }
} }
} }
if (pamControlledUnit.getPamModuleInfo()!=null) {
Node icon = ModuleIconFactory.getInstance(). Node icon = ModuleIconFactory.getInstance().
getModuleNode(pamControlledUnit.getPamModuleInfo().getClassName()); getModuleNode(pamControlledUnit.getPamModuleInfo().getClassName());
if (pamControlledUnit.getPamModuleInfo()!=null && icon!=null){ if (icon!=null){
StackPane iconPane = new StackPane(icon); StackPane iconPane = new StackPane(icon);
iconPane.setPrefSize(DataModelStyle.iconSize, DataModelStyle.iconSize); iconPane.setPrefSize(DataModelStyle.iconSize, DataModelStyle.iconSize);
iconPane.setAlignment(Pos.CENTER); iconPane.setAlignment(Pos.CENTER);
StackPane.setAlignment(iconPane, Pos.CENTER); //make sure the image or node is centered. StackPane.setAlignment(iconPane, Pos.CENTER); //make sure the image or node is centered.
this.getConnectionNodeBody().getChildren().add(iconPane); this.getConnectionNodeBody().getChildren().add(iconPane);
} }
}
moduleNodeParams = new ModuleNodeParams(this); moduleNodeParams = new ModuleNodeParams(this);

View File

@ -236,6 +236,9 @@ public class NoiseBandControl extends PamControlledUnit implements PamSettings {
@Override @Override
public boolean restoreSettings(PamControlledUnitSettings pamControlledUnitSettings) { public boolean restoreSettings(PamControlledUnitSettings pamControlledUnitSettings) {
noiseBandSettings = ((NoiseBandSettings)pamControlledUnitSettings.getSettings()).clone(); noiseBandSettings = ((NoiseBandSettings)pamControlledUnitSettings.getSettings()).clone();
System.out.println("********************************************************");
System.out.println("NOISE BAND SETTINGS: " + noiseBandSettings.rawDataSource);
System.out.println("********************************************************");
return true; return true;
} }

View File

@ -231,6 +231,9 @@ public class NoiseBandDialog extends PamDialog {
singleInstance = new NoiseBandDialog(parentFrame, noiseBandControl); singleInstance = new NoiseBandDialog(parentFrame, noiseBandControl);
} }
singleInstance.setupComplete = false; singleInstance.setupComplete = false;
// System.out.println("********************************************************");
// System.out.println("NOISE BAND DIALOG: " + singleInstance.noiseBandSettings.rawDataSource);
// System.out.println("********************************************************");
singleInstance.noiseBandSettings = noiseBandControl.noiseBandSettings.clone(); singleInstance.noiseBandSettings = noiseBandControl.noiseBandSettings.clone();
singleInstance.setParams(); singleInstance.setParams();
singleInstance.setVisible(true); singleInstance.setVisible(true);
@ -287,7 +290,7 @@ public class NoiseBandDialog extends PamDialog {
if (dataBlock == null) { if (dataBlock == null) {
return showWarning("You must select a source of raw audio data"); return showWarning("You must select a source of raw audio data");
} }
noiseBandSettings.rawDataSource = dataBlock.getDataName(); noiseBandSettings.rawDataSource = dataBlock.getLongDataName();
noiseBandSettings.channelMap = sourcePanel.getChannelList(); noiseBandSettings.channelMap = sourcePanel.getChannelList();
if (noiseBandSettings.channelMap == 0) { if (noiseBandSettings.channelMap == 0) {
return showWarning("You must select at least one data channel"); return showWarning("You must select at least one data channel");

View File

@ -63,6 +63,10 @@ public class NoiseBandProcess extends PamProcess {
public void setupProcess() { public void setupProcess() {
super.setupProcess(); super.setupProcess();
PamDataBlock sourceData = noiseBandControl.getPamConfiguration().getDataBlock(RawDataUnit.class, noiseBandControl.noiseBandSettings.rawDataSource); PamDataBlock sourceData = noiseBandControl.getPamConfiguration().getDataBlock(RawDataUnit.class, noiseBandControl.noiseBandSettings.rawDataSource);
System.out.println("********************************************************");
System.out.println("NOISE BAND PROCESS: " + sourceData + " " + noiseBandControl.noiseBandSettings.rawDataSource);
System.out.println("********************************************************");
if (sourceData == null) { if (sourceData == null) {
return; return;
} }

View File

@ -5,6 +5,7 @@ import java.util.ArrayList;
import org.jamdev.jdl4pam.transforms.DLTransform.DLTransformType; import org.jamdev.jdl4pam.transforms.DLTransform.DLTransformType;
import org.json.JSONArray; import org.json.JSONArray;
import PamUtils.PamArrayUtils;
import rawDeepLearningClassifier.dlClassification.animalSpot.StandardModelParams; import rawDeepLearningClassifier.dlClassification.animalSpot.StandardModelParams;
import rawDeepLearningClassifier.layoutFX.exampleSounds.ExampleSoundFactory.ExampleSoundType; import rawDeepLearningClassifier.layoutFX.exampleSounds.ExampleSoundFactory.ExampleSoundType;
@ -116,16 +117,22 @@ public class GenericModelParams extends StandardModelParams implements Cloneable
//both transforms must be null and so can still be equal //both transforms must be null and so can still be equal
} }
// System.out.println("TRANSFORMS ARE EQUAL");
//check the rest. //check the rest.
boolean isEqual = boolean isEqual =
this.useDefaultSegLen == params.useDefaultSegLen && this.useDefaultSegLen == params.useDefaultSegLen &&
this.defaultSegmentLen.equals(params.defaultSegmentLen) && this.defaultSegmentLen.equals(params.defaultSegmentLen) &&
this.shape.equals(params.shape) && PamArrayUtils.arrEquals(this.shape, params.shape) &&
this.outputShape.equals(params.outputShape); PamArrayUtils.arrEquals(this.outputShape, params.outputShape);
//Arrays.equals( this.classNames, params.classNames); //Arrays.equals( this.classNames, params.classNames);
// System.out.println("Other bits are equal:?" + isEqual
// + " use defult seg len " + (this.useDefaultSegLen == params.useDefaultSegLen)
// + " defaultSegmentLen " + (this.defaultSegmentLen.equals(params.defaultSegmentLen)
// + " input shape " + this.shape.equals(params.shape)
// + " output shape " + this.shape.equals(params.shape)));
return isEqual; return isEqual;

View File

@ -377,6 +377,7 @@ public class SegmenterProcess extends PamProcess {
//create a new data unit - should only be called once after initial start. //create a new data unit - should only be called once after initial start.
currentRawChunks[i] = new GroupedRawData(timeMilliseconds, getSourceParams().getGroupChannels(i), currentRawChunks[i] = new GroupedRawData(timeMilliseconds, getSourceParams().getGroupChannels(i),
startSampleTime, dlControl.getDLParams().rawSampleSize, dlControl.getDLParams().rawSampleSize); startSampleTime, dlControl.getDLParams().rawSampleSize, dlControl.getDLParams().rawSampleSize);
currentRawChunks[i].setParentDataUnit(unit);; currentRawChunks[i].setParentDataUnit(unit);;
} }
@ -653,7 +654,7 @@ public class SegmenterProcess extends PamProcess {
* @author Jamie Macaulay * @author Jamie Macaulay
* *
*/ */
public class GroupedRawData extends PamDataUnit implements PamDetection, Cloneable { public static class GroupedRawData extends PamDataUnit implements PamDetection, Cloneable {
/* /*

View File

@ -18,7 +18,7 @@ import rawDeepLearningClassifier.dlClassification.genericModel.GenericModelParse
class DLJSONParserTest { class DLJSONParserTest {
@Test @Test
public void test() { public void testDLJsonParser() {
//load an old file //load an old file

View File

@ -0,0 +1,92 @@
package test.rawDeepLearningClassifier;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import javax.sound.sampled.UnsupportedAudioFileException;
import org.jamdev.jdl4pam.utils.DLUtils;
import org.jamdev.jpamutils.wavFiles.AudioData;
import org.junit.jupiter.api.Test;
import rawDeepLearningClassifier.defaultModels.RightWhaleModel1;
import rawDeepLearningClassifier.dlClassification.genericModel.GenericModelParams;
import rawDeepLearningClassifier.dlClassification.genericModel.GenericModelWorker;
import rawDeepLearningClassifier.dlClassification.genericModel.GenericPrediction;
import rawDeepLearningClassifier.segmenter.SegmenterProcess.GroupedRawData;
/**
* Test the generic classifier.
*
* @author Jamie Macaulay
*
*/
public class GenericDLClassifierTest {
/**
* Run a test on the Generic DL Classifier. This tests the worker can open and run a model
*/
@Test
public void rightWhaleDLWorker() {
//relative paths to the resource folders.
String relModelPath = "./src/test/resources/rawDeepLearningClassifier/Generic/right_whale/model_lenet_dropout_input_conv_all/saved_model.pb";
String relWavPath = "./src/test/resources/rawDeepLearningClassifier/Generic/right_whale/right_whale_example.wav";
Path path = Paths.get(relModelPath);
GenericModelWorker genericModelWorker = new GenericModelWorker();
GenericModelParams genericModelParams = new GenericModelParams();
genericModelParams.modelPath = path.toAbsolutePath().normalize().toString();
RightWhaleModel1 rightWhaleModel = new RightWhaleModel1();
rightWhaleModel.setParams(genericModelParams);
//prep the model
genericModelWorker.prepModel(genericModelParams, null);
/****Now run a file ***/
path = Paths.get(relWavPath);
String wavFilePath = path.toAbsolutePath().normalize().toString();
AudioData soundData;
try {
soundData = DLUtils.loadWavFile(wavFilePath);
long duration = (long) ((genericModelParams.defaultSegmentLen/1000)*soundData.sampleRate);
GroupedRawData groupedRawData = new GroupedRawData(0, 1, 0, duration, (int) duration);
groupedRawData.copyRawData(soundData.getScaledSampleAmplitudes(), 0, soundData.getScaledSampleAmplitudes().length, 0);
ArrayList<GroupedRawData> groupedData = new ArrayList<GroupedRawData>();
groupedData.add(groupedRawData);
ArrayList<GenericPrediction> gwenericPrediciton = genericModelWorker.runModel(groupedData, soundData.sampleRate, 0);
float[] output = gwenericPrediciton.get(0).getPrediction();
System.out.println("Right whale network output: " + output[0] + " " + output[1]);
//test the predicitons are true.
assertTrue( output[0]<0.01 ); //noise
assertTrue( output[1]>0.98 ); //right whale
genericModelWorker.closeModel();
} catch (IOException | UnsupportedAudioFileException e) {
// TODO Auto-generated catch block
e.printStackTrace();
assertEquals(false, true);
}
}
}

View File

@ -1,67 +0,0 @@
package test.rawDeepLearningClassifier;
import static org.junit.jupiter.api.Assertions.assertEquals;
import rawDeepLearningClassifier.DLControl;
import rawDeepLearningClassifier.dlClassification.ketos.KetosClassifier;
import org.junit.jupiter.api.Test;
public class KetosClassifierTest {
// /**
// * Reference to the DL Control
// *
// */
// private DLControl testDLControl;
//
//
// private KetosClassifier ketosClassifier_test;
//
// public KetosClassifierTest() {
// System.out.println("hello unit test start");
// try {
//
// if (PamController.getInstance()==null || PamController.getInstance().getRunMode() != PamController.RUN_NORMAL) {
// PamGUIManager.setType(PamGUIManager.NOGUI);
// PamController.create(PamController.RUN_NORMAL, null);
// }
//
// testDLControl = new DLControl("Test_deep_learning");
//
// ketosClassifier_test = (KetosClassifier) testDLControl.getDLModel(KetosClassifier.MODEL_NAME);
//
// //set the ketos model as the correct model in the test.
// testDLControl.getDLParams().modelSelection= testDLControl.getDLModels().indexOf(ketosClassifier_test);
//
// System.out.println("hello unit test complete");
// }
// catch (Exception e) {
// e.printStackTrace();
// }
// }
/**
* Test the ketos classifier and tests are working properly.
*/
@Test
public void ketosClassifierTest() {
System.out.println("hello unit test complete b");
// this.ketosClassifier_test.checkModelOK();
assertEquals(2, 1+1);
}
/**
* Test that the whole process chain works with ketos i.e. test the segmenter etc. is performing properly.
*/
@Test
public void ketosProcessTest() {
System.out.println("hello unit test complete");
assertEquals(2, 2);
}
}

View File

@ -0,0 +1,154 @@
package test.rawDeepLearningClassifier;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import javax.sound.sampled.UnsupportedAudioFileException;
import org.jamdev.jdl4pam.utils.DLUtils;
import org.jamdev.jpamutils.wavFiles.AudioData;
import rawDeepLearningClassifier.dlClassification.genericModel.GenericPrediction;
import rawDeepLearningClassifier.dlClassification.ketos.KetosDLParams;
import rawDeepLearningClassifier.dlClassification.ketos.KetosWorker2;
import rawDeepLearningClassifier.segmenter.SegmenterProcess.GroupedRawData;
import org.junit.jupiter.api.Test;
public class KetosDLClassifierTest {
// /**
// * Reference to the DL Control
// *
// */
// private DLControl testDLControl;
//
//
// private KetosClassifier ketosClassifier_test;
//
// public KetosClassifierTest() {
// System.out.println("hello unit test start");
// try {
//
// if (PamController.getInstance()==null || PamController.getInstance().getRunMode() != PamController.RUN_NORMAL) {
// PamGUIManager.setType(PamGUIManager.NOGUI);
// PamController.create(PamController.RUN_NORMAL, null);
// }
//
// testDLControl = new DLControl("Test_deep_learning");
//
// ketosClassifier_test = (KetosClassifier) testDLControl.getDLModel(KetosClassifier.MODEL_NAME);
//
// //set the ketos model as the correct model in the test.
// testDLControl.getDLParams().modelSelection= testDLControl.getDLModels().indexOf(ketosClassifier_test);
//
// System.out.println("hello unit test complete");
// }
// catch (Exception e) {
// e.printStackTrace();
// }
// }
/**
* Test the ketos classifier and tests are working properly.
*/
@Test
public void ketosClassifierTest() {
/**
* List of the predicitons
* Start time (seconds), Length of the segment (seconds), prediciton
*/
double[][] ketosPredicitons = {
{0, 5.0176, 0.1565524},
{5, 5.0176, 0.99999917},
{10, 5.0176, 0.99999917},
{15, 5.0176, 0.97594243},
{20, 5.0176, 0.8802458},
{25, 5.0176, 0.9999999},
{30, 5.0176, 0.999993},
{35, 5.0176, 0.9998863},
{40, 5.0176, 0.99998367},
{45, 5.0176, 0.21531366},
{50, 5.0176, 0.9999987},
{55, 5.0176, 1},
{60, 5.0176, 0.9999989},
{65, 5.0176, 0.9999993},
{70, 5.0176, 0.99999845},
{75, 5.0176, 1},
{80, 5.0176, 0.20126265},
{85, 5.0176, 0.9797412},
{90, 5.0176, 1}};
//relative paths to the resource folders.
String relModelPath = "./src/test/resources/rawDeepLearningClassifier/Ketos/hallo-kw-det_v1/hallo-kw-det_v1.ktpb";
String relWavPath = "./src/test/resources/rawDeepLearningClassifier/Ketos/hallo-kw-det_v1/jasco_reduced.wav";
Path path = Paths.get(relModelPath);
KetosWorker2 ketosWorker2 = new KetosWorker2();
KetosDLParams genericModelParams = new KetosDLParams();
genericModelParams.modelPath = path.toAbsolutePath().normalize().toString();
//prep the model - all setting are included within the model
ketosWorker2.prepModel(genericModelParams, null);
System.out.println("seglen: " + genericModelParams.defaultSegmentLen);
/****Now run a file ***/
path = Paths.get(relWavPath);
String wavFilePath = path.toAbsolutePath().normalize().toString();
try {
AudioData soundData = DLUtils.loadWavFile(wavFilePath);
double[] soundDataD = soundData.getScaledSampleAmplitudes();
long duration = (long) Math.ceil((genericModelParams.defaultSegmentLen/1000)*soundData.sampleRate);
System.out.println("duration: " + duration + " " + soundData.sampleRate + " " + genericModelParams.defaultSegmentLen);
//dont't
for (int i=1; i<ketosPredicitons.length; i++) {
GroupedRawData groupedRawData = new GroupedRawData(0, 1, 0, duration, (int) duration);
int startChunk =(int) (ketosPredicitons[i][0]*soundData.sampleRate);
groupedRawData.copyRawData(soundDataD, startChunk, (int) duration, 0);
ArrayList<GroupedRawData> groupedData = new ArrayList<GroupedRawData>();
groupedData.add(groupedRawData);
ArrayList<GenericPrediction> genericPrediciton = ketosWorker2.runModel(groupedData, soundData.sampleRate, 0);
float[] output = genericPrediciton.get(0).getPrediction();
boolean testPassed= output[1]> ketosPredicitons[i][2]-0.1 && output[1]< ketosPredicitons[i][2]+0.1;
System.out.println( i+ " : Ketos whale network output: " + output[0] + " " + output[1] + " " + testPassed);
//assertTrue(output[1]> ketosPredicitons[i][2]-0.1 && output[1]< ketosPredicitons[i][2]+0.1);
}
ketosWorker2.closeModel();
} catch (IOException | UnsupportedAudioFileException e) {
// TODO Auto-generated catch block
e.printStackTrace();
assertEquals(false, true);
}
}
}

View File

@ -0,0 +1,20 @@
filename,start,duration,score
jasco_reduced.wav,0.0,5.0176,0.1565524
jasco_reduced.wav,5.0,5.0176,0.99999917
jasco_reduced.wav,10.0,5.0176,0.99999917
jasco_reduced.wav,15.0,5.0176,0.97594243
jasco_reduced.wav,20.0,5.0176,0.8802458
jasco_reduced.wav,25.0,5.0176,0.9999999
jasco_reduced.wav,30.0,5.0176,0.9999932
jasco_reduced.wav,35.0,5.0176,0.9998863
jasco_reduced.wav,40.0,5.0176,0.99998367
jasco_reduced.wav,45.0,5.0176,0.21531366
jasco_reduced.wav,50.0,5.0176,0.9999987
jasco_reduced.wav,55.0,5.0176,1.0
jasco_reduced.wav,60.0,5.0176,0.9999989
jasco_reduced.wav,65.0,5.0176,0.9999993
jasco_reduced.wav,70.0,5.0176,0.99999845
jasco_reduced.wav,75.0,5.0176,1.0
jasco_reduced.wav,80.0,5.0176,0.20126265
jasco_reduced.wav,85.0,5.0176,0.9797412
jasco_reduced.wav,90.0,5.0176,1.0
1 filename start duration score
2 jasco_reduced.wav 0.0 5.0176 0.1565524
3 jasco_reduced.wav 5.0 5.0176 0.99999917
4 jasco_reduced.wav 10.0 5.0176 0.99999917
5 jasco_reduced.wav 15.0 5.0176 0.97594243
6 jasco_reduced.wav 20.0 5.0176 0.8802458
7 jasco_reduced.wav 25.0 5.0176 0.9999999
8 jasco_reduced.wav 30.0 5.0176 0.9999932
9 jasco_reduced.wav 35.0 5.0176 0.9998863
10 jasco_reduced.wav 40.0 5.0176 0.99998367
11 jasco_reduced.wav 45.0 5.0176 0.21531366
12 jasco_reduced.wav 50.0 5.0176 0.9999987
13 jasco_reduced.wav 55.0 5.0176 1.0
14 jasco_reduced.wav 60.0 5.0176 0.9999989
15 jasco_reduced.wav 65.0 5.0176 0.9999993
16 jasco_reduced.wav 70.0 5.0176 0.99999845
17 jasco_reduced.wav 75.0 5.0176 1.0
18 jasco_reduced.wav 80.0 5.0176 0.20126265
19 jasco_reduced.wav 85.0 5.0176 0.9797412
20 jasco_reduced.wav 90.0 5.0176 1.0