Updates to localiser and sud repo

This commit is contained in:
Jamie Mac 2023-08-04 16:48:53 +01:00
parent 1a6da45413
commit c3ffb84545
67 changed files with 715 additions and 468 deletions

View File

@ -819,9 +819,9 @@ you may need to copy files from your downloaded PAMGuard source code, e.g. C:\Us
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.2</version> <version>2.2.5</version>
</dependency> </dependency>
<!-- https://mvnrepository.com/artifact/it.sauronsoftware/jave --> <!-- https://mvnrepository.com/artifact/it.sauronsoftware/jave -->

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,89 @@
<?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,4 +1,6 @@
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice. #NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
#Fri Aug 14 15:49:24 CEST 2020 #Wed Aug 02 09:25:44 BST 2023
x3-1.0.0.pom>= X3-2.2.5-sources.jar>=
x3-1.0.0.jar>= X3-2.2.5-javadoc.jar>=
X3-2.2.5.jar>=
X3-2.2.5.pom>=

View File

@ -0,0 +1,11 @@
#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

@ -0,0 +1,12 @@
#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

@ -0,0 +1,12 @@
#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 +1,12 @@
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice. #NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
#Thu May 04 11:43:09 BST 2023 #Mon Jul 31 15:33:58 BST 2023
@default-talan-https\://nexus.talanlabs.com/content/repositories/releases/.lastUpdated=1683196988926 file\://C\:\\Users\\Jamie\ Macaulay\\git\\PAMGuard/repo/.lastUpdated=1690813936812
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardDG/repo/.error= @default-talan-https\://nexus.talanlabs.com/content/repositories/releases/.lastUpdated=1690814037920
https\://repo1.maven.org/maven2/.error= https\://repo1.maven.org/maven2/.error=
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardDG/repo/.lastUpdated=1683196987083 file\://C\:\\Users\\Jamie\ Macaulay\\git\\PAMGuard/repo/.error=
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.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/.error=
https\://nexus.bedatadriven.com/content/groups/public/.lastUpdated=1683196988663 https\://nexus.bedatadriven.com/content/groups/public/.lastUpdated=1690813937853
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.lastUpdated=1683196988452 https\://artifacts.unidata.ucar.edu/repository/unidata-all/.lastUpdated=1690813937654
https\://repo1.maven.org/maven2/.lastUpdated=1683196989198 https\://repo1.maven.org/maven2/.lastUpdated=1690814038162
https\://nexus.talanlabs.com/content/repositories/releases/.error=Could not transfer artifact pamguard.org\:x3\:pom\:2.2.2 from/to talan (https\://nexus.talanlabs.com/content/repositories/releases/)\: Access denied to https\://nexus.talanlabs.com/content/repositories/releases/pamguard/org/x3/2.2.2/x3-2.2.2.pom. Error code 401, Unauthorized 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

@ -0,0 +1,16 @@
#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,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>1.0.0</version>
<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.
#Fri Sep 25 10:46:11 CEST 2020
x3-2.0.0.pom>=
x3-2.0.0.jar>=

View File

@ -1,39 +0,0 @@
#Fri Jan 14 08:14:25 GMT 2022
repo|file\:///Users/au671271/pamguard/PAMGuard/repo|sources=1632311094649
central|https\://jmachund.jfrog.io/artifactory/jpam2|javadoc=1641807924466
repo|file\:///Users/au671271/git/PAMGuard/repo|javadoc=1642148065400
github|https\://maven.pkg.github.com/macster110/jpam|sources=1642147913185
repo|file\:///Users/au671271/pamguard/PAMGuard_16_mvn/repo|sources=1625576160247
icm|http\://maven.icm.edu.pl/artifactory/repo|javadoc=1600971368390
talan|https\://nexus.talanlabs.com/content/repositories/releases/|sources=1642147913185
geomajas|http\://maven.geomajas.org/|javadoc=1642148065400
central|https\://repo.maven.apache.org/maven2|javadoc=1642065819015
bedatadriven|https\://nexus.bedatadriven.com/content/groups/public/|sources=1642147913185
repo|file\:///Users/au671271/pamguard/PAMGuard_12_mvn/repo|sources=1602589977893
jpamutils|https\://raw.github.com/macster110/jpam/mvn-repo/|javadoc=1642065819015
icm|http\://maven.icm.edu.pl/artifactory/repo|sources=1600971300139
geomajas|http\://maven.geomajas.org/|sources=1642147913185
central|https\://repo1.maven.org/maven2|sources=1642147913185
central|https\://repo.maven.apache.org/maven2|sources=1642065813019
github|https\://maven.pkg.github.com/macster110/jpam|javadoc=1642148065400
bintray-jerady-maven|https\://dl.bintray.com/jerady/maven|sources=1602589977893
bedatadriven|https\://nexus.bedatadriven.com/content/groups/public/|javadoc=1642148065400
jpamutils|https\://raw.github.com/macster110/jpam/mvn-repo/|sources=1642065813019
my-local-repo|file\:///Users/au671271/pamguard/PAMGuard_12_mvn/src/jars|sources=1600949483388
repo|file\:///Users/au671271/git/PAMGuard/repo|sources=1642147913185
bintray-macster110-jtorch4pam|macster110|https\://dl.bintray.com/macster110/jtorch4pam|javadoc=1642148065400
jdl4pam|https\://raw.github.com/macster110/jpam/mvn-repo/|javadoc=1642065819015
unidata-all|https\://artifacts.unidata.ucar.edu/repository/unidata-all/|sources=1642147913185
icm|https\://maven.averbis.com/m2/|sources=1601026887474
bintray-jerady-maven|https\://dl.bintray.com/jerady/maven|javadoc=1602590126606
talan|https\://nexus.talanlabs.com/content/repositories/releases/|javadoc=1642148065400
central|https\://jmachund.jfrog.io/artifactory/jpam2|sources=1641807658592
my-local-repo|file\:///Users/au671271/pamguard/PAMGuard_12_mvn/src/jars|javadoc=1600949605299
unidata-all|https\://artifacts.unidata.ucar.edu/repository/unidata-all/|javadoc=1642148065400
icm|https\://maven.averbis.com/m2/|javadoc=1601027283465
repo|file\:///Users/au671271/pamguard/PAMGuard_12_mvn/repo|javadoc=1602590126606
jdl4pam|https\://raw.github.com/macster110/jpam/mvn-repo/|sources=1642065813019
bintray-macster110-jtorch4pam|macster110|https\://dl.bintray.com/macster110/jtorch4pam|sources=1642147913185
repo|file\:///Users/au671271/pamguard/PAMGuard_16_mvn/repo|javadoc=1625576167973
repo|file\:///Users/au671271/pamguard/PAMGuard/repo|javadoc=1632313121603
central|https\://repo1.maven.org/maven2|javadoc=1642148065400

View File

@ -1,38 +0,0 @@
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
#Fri Jan 14 08:14:25 GMT 2022
https\://dl.bintray.com/macster110/jtorch4pam/.error=
file\:///Users/au671271/pamguard/PAMGuard_12_mvn/src/jars/.error=
https\://jmachund.jfrog.io/artifactory/jpam2/.lastUpdated=1625576167971
file\:///Users/au671271/pamguard/PAMGuard/repo/.error=
file\:///Users/au671271/pamguard/PAMGuard_16_mvn/repo/.lastUpdated=1622023729745
https\://dl.bintray.com/macster110/jtorch4pam/.lastUpdated=1600949601867
file\:///Users/au671271/git/PAMGuard/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=1600949603273
https\://maven.averbis.com/m2/.lastUpdated=1601027283464
file\:///Users/au671271/git/PAMGuard/repo/.lastUpdated=1641807924465
https\://raw.github.com/macster110/jpam/mvn-repo/.lastUpdated=1642065819012
file\:///Users/au671271/pamguard/PAMGuard_16_mvn/repo/.error=
http\://maven.icm.edu.pl/artifactory/repo/.lastUpdated=1600971368389
https\://nexus.bedatadriven.com/content/groups/public/.lastUpdated=1600949604396
http\://maven.icm.edu.pl/artifactory/repo/.error=
https\://repo1.maven.org/maven2/.error=
@default-github-https\://maven.pkg.github.com/macster110/jpam/.lastUpdated=1642148065399
file\:///Users/au671271/pamguard/PAMGuard/repo/.lastUpdated=1632313121601
https\://repo1.maven.org/maven2/.lastUpdated=1642148065192
https\://dl.bintray.com/jerady/maven/.lastUpdated=1600949602327
http\://maven.geomajas.org/.lastUpdated=1600949604068
https\://nexus.talanlabs.com/content/repositories/releases/.error=
file\:///Users/au671271/pamguard/PAMGuard_12_mvn/repo/.error=
file\:///Users/au671271/pamguard/PAMGuard_12_mvn/src/jars/.lastUpdated=1600949601869
https\://repo.maven.apache.org/maven2/.lastUpdated=1600949605299
http\://maven.geomajas.org/.error=
https\://jmachund.jfrog.io/artifactory/jpam2/.error=
https\://nexus.talanlabs.com/content/repositories/releases/.lastUpdated=1600949604877
https\://maven.averbis.com/m2/.error=
https\://repo.maven.apache.org/maven2/.error=
file\:///Users/au671271/pamguard/PAMGuard_12_mvn/repo/.lastUpdated=1602590126603
https\://maven.pkg.github.com/macster110/jpam/.error=Could not transfer artifact pamguard.org\:x3\:jar\:javadoc\:2.0.0 from/to github (https\://maven.pkg.github.com/macster110/jpam)\: Access denied to https\://maven.pkg.github.com/macster110/jpam/pamguard/org/x3/2.0.0/x3-2.0.0-javadoc.jar. Error code 401,
https\://dl.bintray.com/jerady/maven/.error=
https\://raw.github.com/macster110/jpam/mvn-repo/.error=

View File

@ -1,38 +0,0 @@
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
#Fri Jan 14 08:11:53 GMT 2022
https\://dl.bintray.com/macster110/jtorch4pam/.error=
file\:///Users/au671271/pamguard/PAMGuard_12_mvn/src/jars/.error=
https\://jmachund.jfrog.io/artifactory/jpam2/.lastUpdated=1625576160246
file\:///Users/au671271/pamguard/PAMGuard/repo/.error=
file\:///Users/au671271/pamguard/PAMGuard_16_mvn/repo/.lastUpdated=1622023729649
https\://dl.bintray.com/macster110/jtorch4pam/.lastUpdated=1600949479758
file\:///Users/au671271/git/PAMGuard/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=1600949481209
https\://maven.averbis.com/m2/.lastUpdated=1601026887474
file\:///Users/au671271/git/PAMGuard/repo/.lastUpdated=1641807658590
https\://raw.github.com/macster110/jpam/mvn-repo/.lastUpdated=1642065813017
file\:///Users/au671271/pamguard/PAMGuard_16_mvn/repo/.error=
http\://maven.icm.edu.pl/artifactory/repo/.lastUpdated=1600971300137
https\://nexus.bedatadriven.com/content/groups/public/.lastUpdated=1600949482388
http\://maven.icm.edu.pl/artifactory/repo/.error=
https\://repo1.maven.org/maven2/.error=
@default-github-https\://maven.pkg.github.com/macster110/jpam/.lastUpdated=1642147913184
file\:///Users/au671271/pamguard/PAMGuard/repo/.lastUpdated=1632311094646
https\://repo1.maven.org/maven2/.lastUpdated=1642147912977
https\://dl.bintray.com/jerady/maven/.lastUpdated=1600949480238
http\://maven.geomajas.org/.lastUpdated=1600949482017
https\://nexus.talanlabs.com/content/repositories/releases/.error=
file\:///Users/au671271/pamguard/PAMGuard_12_mvn/repo/.error=
file\:///Users/au671271/pamguard/PAMGuard_12_mvn/src/jars/.lastUpdated=1600949479759
https\://repo.maven.apache.org/maven2/.lastUpdated=1600949483387
http\://maven.geomajas.org/.error=
https\://jmachund.jfrog.io/artifactory/jpam2/.error=
https\://nexus.talanlabs.com/content/repositories/releases/.lastUpdated=1600949482866
https\://maven.averbis.com/m2/.error=
https\://repo.maven.apache.org/maven2/.error=
file\:///Users/au671271/pamguard/PAMGuard_12_mvn/repo/.lastUpdated=1602589977891
https\://maven.pkg.github.com/macster110/jpam/.error=Could not transfer artifact pamguard.org\:x3\:jar\:sources\:2.0.0 from/to github (https\://maven.pkg.github.com/macster110/jpam)\: Access denied to https\://maven.pkg.github.com/macster110/jpam/pamguard/org/x3/2.0.0/x3-2.0.0-sources.jar. Error code 401,
https\://dl.bintray.com/jerady/maven/.error=
https\://raw.github.com/macster110/jpam/mvn-repo/.error=

View File

@ -1,18 +0,0 @@
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
#Thu Sep 24 13:58:55 CEST 2020
https\://dl.bintray.com/macster110/jtorch4pam/.error=
file\:///Users/au671271/pamguard/PAMGuard_12_mvn/src/jars/.error=
https\://dl.bintray.com/macster110/jtorch4pam/.lastUpdated=1600948677455
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.error=
https\://nexus.bedatadriven.com/content/groups/public/.error=
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.lastUpdated=1600948714963
https\://dl.bintray.com/jerady/maven/.lastUpdated=1600948680041
http\://maven.geomajas.org/.lastUpdated=1600948729479
https\://nexus.talanlabs.com/content/repositories/releases/.error=
file\:///Users/au671271/pamguard/PAMGuard_12_mvn/src/jars/.lastUpdated=1600948677498
https\://repo.maven.apache.org/maven2/.lastUpdated=1600948686447
http\://maven.geomajas.org/.error=
https\://nexus.talanlabs.com/content/repositories/releases/.lastUpdated=1600948735430
https\://repo.maven.apache.org/maven2/.error=
https\://dl.bintray.com/jerady/maven/.error=
https\://nexus.bedatadriven.com/content/groups/public/.lastUpdated=1600948734692

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.0.0</version>
<description>POM was created from install:install-file</description>
</project>

View File

@ -1,18 +0,0 @@
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
#Thu Sep 24 13:57:29 CEST 2020
https\://dl.bintray.com/macster110/jtorch4pam/.error=
file\:///Users/au671271/pamguard/PAMGuard_12_mvn/src/jars/.error=
https\://dl.bintray.com/macster110/jtorch4pam/.lastUpdated=1600948647604
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.error=
https\://nexus.bedatadriven.com/content/groups/public/.error=
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.lastUpdated=1600948648002
https\://dl.bintray.com/jerady/maven/.lastUpdated=1600948647670
http\://maven.geomajas.org/.lastUpdated=1600948648672
https\://nexus.talanlabs.com/content/repositories/releases/.error=
file\:///Users/au671271/pamguard/PAMGuard_12_mvn/src/jars/.lastUpdated=1600948647606
https\://repo.maven.apache.org/maven2/.lastUpdated=1600948649503
http\://maven.geomajas.org/.error=
https\://nexus.talanlabs.com/content/repositories/releases/.lastUpdated=1600948649324
https\://repo.maven.apache.org/maven2/.error=
https\://dl.bintray.com/jerady/maven/.error=
https\://nexus.bedatadriven.com/content/groups/public/.lastUpdated=1600948648816

View File

@ -1,4 +0,0 @@
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
#Tue Oct 11 15:59:57 BST 2022
x3-2.1.0.jar>=
x3-2.1.0.pom>=

View File

@ -1,13 +0,0 @@
#Thu Oct 06 15:38:43 BST 2022
bedatadriven|https\://nexus.bedatadriven.com/content/groups/public/|javadoc=1665067123455
repo|file\:///Users/au671271/git/PAMGuard/repo|javadoc=1665067123455
repo|file\:///Users/au671271/git/PAMGuard/repo|sources=1665067040129
talan|https\://nexus.talanlabs.com/content/repositories/releases/|sources=1665067040129
bintray-macster110-jtorch4pam|macster110|https\://dl.bintray.com/macster110/jtorch4pam|javadoc=1665067123455
bedatadriven|https\://nexus.bedatadriven.com/content/groups/public/|sources=1665067040129
unidata-all|https\://artifacts.unidata.ucar.edu/repository/unidata-all/|sources=1665067040129
talan|https\://nexus.talanlabs.com/content/repositories/releases/|javadoc=1665067123455
central|https\://repo1.maven.org/maven2|sources=1665067040129
unidata-all|https\://artifacts.unidata.ucar.edu/repository/unidata-all/|javadoc=1665067123455
bintray-macster110-jtorch4pam|macster110|https\://dl.bintray.com/macster110/jtorch4pam|sources=1665067040129
central|https\://repo1.maven.org/maven2|javadoc=1665067123455

View File

@ -1,14 +0,0 @@
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
#Thu Oct 06 15:38:43 BST 2022
@default-talan-https\://nexus.talanlabs.com/content/repositories/releases/.lastUpdated=1665067122194
https\://dl.bintray.com/macster110/jtorch4pam/.error=Could not transfer artifact pamguard.org\:x3\:jar\:javadoc\:2.1.0 from/to bintray-macster110-jtorch4pam (https\://dl.bintray.com/macster110/jtorch4pam)\: Remote host terminated the handshake
https\://repo1.maven.org/maven2/.error=
file\:///Users/au671271/git/PAMGuard/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=1665067121806
https\://repo1.maven.org/maven2/.lastUpdated=1665067123455
https\://nexus.talanlabs.com/content/repositories/releases/.error=Could not transfer artifact pamguard.org\:x3\:jar\:javadoc\:2.1.0 from/to talan (https\://nexus.talanlabs.com/content/repositories/releases/)\: Access denied to https\://nexus.talanlabs.com/content/repositories/releases/pamguard/org/x3/2.1.0/x3-2.1.0-javadoc.jar. Error code 401, Unauthorized
file\:///Users/au671271/git/PAMGuard/repo/.lastUpdated=1665067120886
4d1f727a0c17e3b21ef2f6654eed0b3113a4db97@default-bintray-macster110-jtorch4pam-https\://dl.bintray.com/macster110/jtorch4pam/.lastUpdated=1665067120883
https\://nexus.bedatadriven.com/content/groups/public/.lastUpdated=1665067122025

View File

@ -1,14 +0,0 @@
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
#Thu Oct 06 15:37:20 BST 2022
@default-talan-https\://nexus.talanlabs.com/content/repositories/releases/.lastUpdated=1665067039941
https\://dl.bintray.com/macster110/jtorch4pam/.error=Could not transfer artifact pamguard.org\:x3\:jar\:sources\:2.1.0 from/to bintray-macster110-jtorch4pam (https\://dl.bintray.com/macster110/jtorch4pam)\: Remote host terminated the handshake
https\://repo1.maven.org/maven2/.error=
file\:///Users/au671271/git/PAMGuard/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=1665067039627
https\://repo1.maven.org/maven2/.lastUpdated=1665067040128
https\://nexus.talanlabs.com/content/repositories/releases/.error=Could not transfer artifact pamguard.org\:x3\:jar\:sources\:2.1.0 from/to talan (https\://nexus.talanlabs.com/content/repositories/releases/)\: Access denied to https\://nexus.talanlabs.com/content/repositories/releases/pamguard/org/x3/2.1.0/x3-2.1.0-sources.jar. Error code 401, Unauthorized
file\:///Users/au671271/git/PAMGuard/repo/.lastUpdated=1665067038933
4d1f727a0c17e3b21ef2f6654eed0b3113a4db97@default-bintray-macster110-jtorch4pam-https\://dl.bintray.com/macster110/jtorch4pam/.lastUpdated=1665067038929
https\://nexus.bedatadriven.com/content/groups/public/.lastUpdated=1665067039782

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.1.0</version>
<description>POM was created from install:install-file</description>
</project>

View File

@ -1,16 +0,0 @@
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
#Thu Oct 06 15:51:34 BST 2022
@default-talan-https\://nexus.talanlabs.com/content/repositories/releases/.lastUpdated=1665067894494
https\://dl.bintray.com/macster110/jtorch4pam/.error=Could not transfer artifact pamguard.org\:x3\:pom\:2.1.0 from/to bintray-macster110-jtorch4pam (https\://dl.bintray.com/macster110/jtorch4pam)\: Remote host terminated the handshake
@default-repo-file\://${project.basedir}/repo/.lastUpdated=1665067029837
https\://repo1.maven.org/maven2/.error=
file\:///Users/au671271/git/PAMGuard/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=1665067032579
https\://repo1.maven.org/maven2/.lastUpdated=1665067036872
https\://nexus.talanlabs.com/content/repositories/releases/.error=Could not transfer artifact pamguard.org\:x3\:pom\:2.1.0 from/to talan (https\://nexus.talanlabs.com/content/repositories/releases/)\: Access denied to https\://nexus.talanlabs.com/content/repositories/releases/pamguard/org/x3/2.1.0/x3-2.1.0.pom. Error code 401, Unauthorized
file\://${project.basedir}/repo/.error=Could not transfer artifact pamguard.org\:x3\:pom\:2.1.0 from/to repo (file\://${project.basedir}/repo)\: Repository path /repo does not exist, and cannot be created.
file\:///Users/au671271/git/PAMGuard/repo/.lastUpdated=1665067033714
4d1f727a0c17e3b21ef2f6654eed0b3113a4db97@default-bintray-macster110-jtorch4pam-https\://dl.bintray.com/macster110/jtorch4pam/.lastUpdated=1665067894257
https\://nexus.bedatadriven.com/content/groups/public/.lastUpdated=1665067034011

View File

@ -1,4 +0,0 @@
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
#Mon Nov 14 09:57:39 GMT 2022
x3-2.2.0.jar>=
x3-2.2.0.pom>=

View File

@ -1,7 +0,0 @@
#Fri Nov 11 13:38:50 GMT 2022
central|https\://repo1.maven.org/maven2|sources=1668173930657
repo|file\:///Users/au671271/git/PAMGuard/repo|sources=1668173930657
talan|https\://nexus.talanlabs.com/content/repositories/releases/|sources=1668173930657
bintray-macster110-jtorch4pam|macster110|https\://dl.bintray.com/macster110/jtorch4pam|sources=1668173930657
bedatadriven|https\://nexus.bedatadriven.com/content/groups/public/|sources=1668173930657
unidata-all|https\://artifacts.unidata.ucar.edu/repository/unidata-all/|sources=1668173930657

View File

@ -1,14 +0,0 @@
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
#Fri Nov 11 13:38:50 GMT 2022
@default-talan-https\://nexus.talanlabs.com/content/repositories/releases/.lastUpdated=1668173930381
https\://dl.bintray.com/macster110/jtorch4pam/.error=Could not transfer artifact pamguard.org\:x3\:jar\:sources\:2.2.0 from/to bintray-macster110-jtorch4pam (https\://dl.bintray.com/macster110/jtorch4pam)\: Remote host terminated the handshake
https\://repo1.maven.org/maven2/.error=
file\:///Users/au671271/git/PAMGuard/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=1668173930064
https\://repo1.maven.org/maven2/.lastUpdated=1668173930657
https\://nexus.talanlabs.com/content/repositories/releases/.error=Could not transfer artifact pamguard.org\:x3\:jar\:sources\:2.2.0 from/to talan (https\://nexus.talanlabs.com/content/repositories/releases/)\: Access denied to https\://nexus.talanlabs.com/content/repositories/releases/pamguard/org/x3/2.2.0/x3-2.2.0-sources.jar. Error code 401, Unauthorized
file\:///Users/au671271/git/PAMGuard/repo/.lastUpdated=1668173929099
4d1f727a0c17e3b21ef2f6654eed0b3113a4db97@default-bintray-macster110-jtorch4pam-https\://dl.bintray.com/macster110/jtorch4pam/.lastUpdated=1668173929096
https\://nexus.bedatadriven.com/content/groups/public/.lastUpdated=1668173930217

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.0</version>
<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.
#Mon Apr 24 10:32:52 BST 2023
x3-2.2.1.jar>=
x3-2.2.1.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.1</version>
<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.
#Mon May 08 15:05:07 BST 2023
x3-2.2.2.jar>=
x3-2.2.2.pom>=

View File

@ -1,15 +0,0 @@
#Sat May 06 19:10:45 BST 2023
bedatadriven|https\://nexus.bedatadriven.com/content/groups/public/|javadoc=1683396645122
repo|file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardPAMGuard/repo|javadoc=1683137958887
repo|file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardDG/repo|javadoc=1683137015763
talan|https\://nexus.talanlabs.com/content/repositories/releases/|sources=1683368185314
bedatadriven|https\://nexus.bedatadriven.com/content/groups/public/|sources=1683368185314
unidata-all|https\://artifacts.unidata.ucar.edu/repository/unidata-all/|sources=1683368185314
repo|file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardTethys/repo|sources=1683368185314
repo|file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardDG/repo|sources=1683136978098
repo|file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardPAMGuard/repo|sources=1683137602295
talan|https\://nexus.talanlabs.com/content/repositories/releases/|javadoc=1683396645122
central|https\://repo1.maven.org/maven2|sources=1683368185314
unidata-all|https\://artifacts.unidata.ucar.edu/repository/unidata-all/|javadoc=1683396645122
repo|file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardTethys/repo|javadoc=1683396645122
central|https\://repo1.maven.org/maven2|javadoc=1683396645122

View File

@ -1,16 +0,0 @@
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
#Sat May 06 19:10:45 BST 2023
@default-talan-https\://nexus.talanlabs.com/content/repositories/releases/.lastUpdated=1683137015553
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardDG/repo/.error=
https\://repo1.maven.org/maven2/.error=
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardPAMGuard/repo/.lastUpdated=1683137958884
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardTethys/repo/.lastUpdated=1683396645119
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.error=
https\://nexus.bedatadriven.com/content/groups/public/.error=
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardTethys/repo/.error=
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.lastUpdated=1683137015146
https\://repo1.maven.org/maven2/.lastUpdated=1683137015762
https\://nexus.talanlabs.com/content/repositories/releases/.error=Could not transfer artifact pamguard.org\:x3\:jar\:javadoc\:2.2.2 from/to talan (https\://nexus.talanlabs.com/content/repositories/releases/)\: Access denied to https\://nexus.talanlabs.com/content/repositories/releases/pamguard/org/x3/2.2.2/x3-2.2.2-javadoc.jar. Error code 401, Unauthorized
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardDG/repo/.lastUpdated=1683137014154
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardPAMGuard/repo/.error=
https\://nexus.bedatadriven.com/content/groups/public/.lastUpdated=1683137015343

View File

@ -1,16 +0,0 @@
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
#Sat May 06 11:16:25 BST 2023
@default-talan-https\://nexus.talanlabs.com/content/repositories/releases/.lastUpdated=1683136977699
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardDG/repo/.error=
https\://repo1.maven.org/maven2/.error=
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardPAMGuard/repo/.lastUpdated=1683137602291
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardTethys/repo/.lastUpdated=1683368185312
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.error=
https\://nexus.bedatadriven.com/content/groups/public/.error=
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardTethys/repo/.error=
https\://artifacts.unidata.ucar.edu/repository/unidata-all/.lastUpdated=1683136976818
https\://repo1.maven.org/maven2/.lastUpdated=1683136978096
https\://nexus.talanlabs.com/content/repositories/releases/.error=Could not transfer artifact pamguard.org\:x3\:jar\:sources\:2.2.2 from/to talan (https\://nexus.talanlabs.com/content/repositories/releases/)\: Access denied to https\://nexus.talanlabs.com/content/repositories/releases/pamguard/org/x3/2.2.2/x3-2.2.2-sources.jar. Error code 401, Unauthorized
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardDG/repo/.lastUpdated=1683136975590
file\://C\:\\Users\\dg50\\source\\repos\\PAMGuardPAMGuard/repo/.error=
https\://nexus.bedatadriven.com/content/groups/public/.lastUpdated=1683136977227

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.2</version>
<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.
#Mon Jun 19 16:55:00 BST 2023
x3-2.2.4.jar>=
x3-2.2.4.pom>=

View File

@ -1,3 +0,0 @@
#Mon Jun 19 16:37:23 BST 2023
central|https\://repo.maven.apache.org/maven2|sources=1687189039093
central|https\://repo.maven.apache.org/maven2|javadoc=1687189043557

View File

@ -1,4 +0,0 @@
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
#Mon Jun 19 16:37:23 BST 2023
https\://repo.maven.apache.org/maven2/.lastUpdated=1687189043557
https\://repo.maven.apache.org/maven2/.error=

View File

@ -1,4 +0,0 @@
#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
#Mon Jun 19 16:37:19 BST 2023
https\://repo.maven.apache.org/maven2/.lastUpdated=1687189039093
https\://repo.maven.apache.org/maven2/.error=

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.4</version>
<description>POM was created from install:install-file</description>
</project>

View File

@ -429,6 +429,8 @@ public class FileInputSystem extends DaqSystem implements ActionListener, PamSe
// acquisitionDialog.NotifyChange(); // acquisitionDialog.NotifyChange();
if (file.isFile() && !file.isHidden() && acquisitionDialog != null) { if (file.isFile() && !file.isHidden() && acquisitionDialog != null) {
try { try {
System.out.println("FileInputSystem - interpretNewFile");
AudioInputStream audioStream = PamAudioFileManager.getInstance().getAudioInputStream(file); AudioInputStream audioStream = PamAudioFileManager.getInstance().getAudioInputStream(file);
// // Get additional information from the header if it's a wav file. // // Get additional information from the header if it's a wav file.
@ -600,6 +602,8 @@ public class FileInputSystem extends DaqSystem implements ActionListener, PamSe
audioStream.close(); audioStream.close();
} }
System.out.println("FileInputSystem - prepareInputFile");
audioStream = PamAudioFileManager.getInstance().getAudioInputStream(currentFile); audioStream = PamAudioFileManager.getInstance().getAudioInputStream(currentFile);
if (audioStream instanceof SudAudioInputStream) { if (audioStream instanceof SudAudioInputStream) {

View File

@ -515,8 +515,8 @@ public class FolderInputSystem extends FileInputSystem implements PamSettings, D
*/ */
public void newFileList(FileListData<WavFileType> fileListData) { public void newFileList(FileListData<WavFileType> fileListData) {
// System.out.printf("Wav list recieved with %d files after %d millis\n", System.out.printf("Wav list recieved with %d files after %d millis\n",
// fileListData.getFileCount(), System.currentTimeMillis() - wavListStart); fileListData.getFileCount(), System.currentTimeMillis() - wavListStart);
allFiles = fileListData.getListCopy(); allFiles = fileListData.getListCopy();
List<WavFileType> asList = allFiles; List<WavFileType> asList = allFiles;
@ -535,6 +535,8 @@ public class FolderInputSystem extends FileInputSystem implements PamSettings, D
if (file.isFile() && !file.isHidden() && acquisitionDialog != null) { if (file.isFile() && !file.isHidden() && acquisitionDialog != null) {
//Hidden files should not be used in analysis... //Hidden files should not be used in analysis...
try { try {
System.out.println("FolderInputSystem - newFileList");
audioStream = PamAudioFileManager.getInstance().getAudioInputStream(file); audioStream = PamAudioFileManager.getInstance().getAudioInputStream(file);
AudioFormat audioFormat = audioStream.getFormat(); AudioFormat audioFormat = audioStream.getFormat();
fileSamples = audioStream.getFrameLength(); fileSamples = audioStream.getFrameLength();
@ -917,6 +919,7 @@ public class FolderInputSystem extends FileInputSystem implements PamSettings, D
return true; return true;
} }
for (int i = 0; i < allFiles.size(); i++) { for (int i = 0; i < allFiles.size(); i++) {
System.out.println("Get file start time");
long fileStart = getFileStartTime(allFiles.get(i).getAbsoluteFile()); long fileStart = getFileStartTime(allFiles.get(i).getAbsoluteFile());
if (fileStart >= startTime) { if (fileStart >= startTime) {
currentFile = i; currentFile = i;

View File

@ -135,6 +135,8 @@ public class StandardFileDate implements FileDate, PamSettings {
@Override @Override
public long getTimeFromFile(File file) { public long getTimeFromFile(File file) {
// System.out.println("Get time from file: getTimeFromFile" );
// if the user wants to force the local PC time, return immediately // if the user wants to force the local PC time, return immediately
if (settings.isForcePCTime()) return 0; if (settings.isForcePCTime()) return 0;

View File

@ -153,7 +153,7 @@ public class PamAudioFileManager {
} }
/** /**
* Get the audio file filter * Get the audio file filter.
* *
* @return the audio file filter. * @return the audio file filter.
*/ */
@ -164,7 +164,7 @@ public class PamAudioFileManager {
/** /**
* Get the current audio file * Get the current audio file
* *
* @return a list oif the current audio loaders. * @return a list of the current audio loaders.
*/ */
public ArrayList<PamAudioFileLoader> getAudioFileLoaders() { public ArrayList<PamAudioFileLoader> getAudioFileLoaders() {
return this.pamAudioFileTypes; return this.pamAudioFileTypes;

View File

@ -7,6 +7,15 @@ import java.util.Arrays;
import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.UnsupportedAudioFileException; import javax.sound.sampled.UnsupportedAudioFileException;
import javax.swing.SwingUtilities;
import org.pamguard.x3.sud.ChunkHeader;
import org.pamguard.x3.sud.SudMapListener;
import PamController.PamController;
import PamUtils.worker.PamWorkProgressMessage;
import PamUtils.worker.PamWorkWrapper;
import PamUtils.worker.PamWorker;
/** /**
* Opens a .sud audio file. * Opens a .sud audio file.
@ -24,6 +33,12 @@ import javax.sound.sampled.UnsupportedAudioFileException;
*/ */
public class SudAudioFile extends WavAudioFile { public class SudAudioFile extends WavAudioFile {
private Object conditionSync = new Object();
private volatile PamWorker<AudioInputStream> worker;
private volatile SudMapWorker sudMapWorker;
public SudAudioFile() { public SudAudioFile() {
super(); super();
@ -38,26 +53,175 @@ public class SudAudioFile extends WavAudioFile {
@Override @Override
public AudioInputStream getAudioStream(File soundFile) { public AudioInputStream getAudioStream(File soundFile) {
synchronized(conditionSync) {
//System.out.println("Get SUD getAudioStream : " + soundFile.getName());
if (soundFile.exists() == false) { if (soundFile.exists() == false) {
System.err.println("The sud file does not exist: " + soundFile); System.err.println("The sud file does not exist: " + soundFile);
return null; return null;
} }
if (soundFile != null) { if (soundFile != null) {
if (new File(soundFile.getAbsolutePath()+"x").exists()) {
System.out.println("----NO NEED TO MAP SUD FILE-----" + soundFile);
try { try {
return new SudAudioFileReader().getAudioInputStream(soundFile); return new SudAudioFileReader().getAudioInputStream(soundFile);
} catch (UnsupportedAudioFileException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
else {
System.out.println("----MAP SUD FILE ON OTHER THREAD-----" + soundFile);
/**
* We need to map the sud file. But we don't want this o just freeze the current GUI thread. Therefore
* add a listener to the mapping process and show a blocking dialog to indicate that something is happening.
* The mapping is put on a separate thread and blocks stuff from happening until the mapping process has completed.
*/
if (sudMapWorker==null || !sudMapWorker.getSudFile().equals(soundFile)) {
sudMapWorker = new SudMapWorker(soundFile);
worker = new PamWorker<AudioInputStream>(sudMapWorker, PamController.getInstance().getMainFrame(),1, "Mapping sud file: " + soundFile.getName());
// System.out.println("Sud Audio Stream STARTED: " + soundFile.getName());
SwingUtilities.invokeLater(()->{
worker.start();
});
//this should block AWT thread but won't block if called on another thread..
}
//this is only ever called if this function is called on another thread other than the event dispatch thread.
while (sudMapWorker==null || !sudMapWorker.isDone()) {
//do nothing
System.out.println("Waiting for the SUD file map: " + soundFile.getName() + " worker: " + worker);
try {
// Thread.sleep(100);
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
AudioInputStream stream = sudMapWorker.getSudAudioStream();
// sudMapWorker= null;
// worker = null;
System.out.println("----RETURN SUD FILE ON OTHER THREAD-----" + stream);
return stream;
}
}
}
return null;
}
public class SudMapProgress implements SudMapListener {
PamWorker<AudioInputStream> sudMapWorker;
public SudMapProgress(PamWorker<AudioInputStream> sudMapWorker) {
this.sudMapWorker=sudMapWorker;
}
@Override
public void chunkProcessed(ChunkHeader chunkHeader, int count) {
//System.out.println("Sud Map Progress: " + count);
if (count%500 == 0) {
//don't update too often or everything just freezes
sudMapWorker.update(new PamWorkProgressMessage(-1, ("Mapped " +count + " sud file chunks")));
}
if (count == -1) {
sudMapWorker.update(new PamWorkProgressMessage(-1, ("Mapping sud file finished")));
}
}
}
/**
* Opens an sud file on a different thread and adds a listener for a mapping. This allows
* a callback to show map progress.
* @author Jamie Macaulay
*
*/
public class SudMapWorker implements PamWorkWrapper<AudioInputStream>{
private File soundFile;
private SudMapProgress sudMapListener;
private volatile boolean done = false;
private AudioInputStream result;
public SudMapWorker(File soundFile) {
this.soundFile = soundFile;
}
public File getSudFile() {
return soundFile;
}
public AudioInputStream getSudAudioStream() {
return result;
}
@Override
public AudioInputStream runBackgroundTask(PamWorker<AudioInputStream> pamWorker) {
AudioInputStream stream;
try {
System.out.println("START OPEN SUD FILE:");
this.sudMapListener = new SudMapProgress(pamWorker);
stream = new SudAudioFileReader().getAudioInputStream(soundFile, sudMapListener);
System.out.println("END SUD FILE:");
//for some reason - task finished may not be called on other
//thread so put this here.
this.result = stream;
this.done = true;
return stream;
} }
// don't do anything and it will try the built in Audiosystem
catch (UnsupportedAudioFileException e) { catch (UnsupportedAudioFileException e) {
System.err.println("UnsupportedAudioFileException: Could not open sud file: not a supported file " + soundFile.getName()); System.err.println("UnsupportedAudioFileException: Could not open sud file: not a supported file " + soundFile.getName());
System.err.println(e.getMessage()); System.err.println(e.getMessage());
// e.printStackTrace(); // e.printStackTrace();
} catch (IOException e) { } catch (IOException e) {
System.err.println("Could not open sud file: IO Exception: " + soundFile.getName()); System.err.println("Could not open sud file: IO Exception: " + soundFile.getName());
e.printStackTrace(); e.printStackTrace();
} }
}
return null; return null;
} }
@Override
public void taskFinished(AudioInputStream result) {
System.out.println("TASK FINSIHED:");
this.result = result;
this.done = true;
}
public boolean isDone() {
return done;
}
}
} }

View File

@ -30,21 +30,37 @@ public class SudAudioFileReader {
sudParams = new SudParams(); sudParams = new SudParams();
//set up the sud params for default. i.e. just read files and //set up the sud params for default. i.e. just read files and
//don't save any decompressed or meta data. //don't save any decompressed or meta data.
sudParams.saveWav = false; // sudParams.saveWav = false;
sudParams.saveMeta = false; // sudParams.saveMeta = false;
sudParams.setFileSave(false, false, false, false);
sudParams.zeroPad = true; sudParams.zeroPad = true;
} }
/** /**
* Get the audio input streamn. * Get the audio input stream for a sud file.
* @param file - the .sud file to open. * @param file - the .sud file to open.
* @return the sud AudioStream. * @return the sud AudioStream.
* @throws UnsupportedAudioFileException * @throws UnsupportedAudioFileException
* @throws IOException * @throws IOException
*/ */
public AudioInputStream getAudioInputStream(File file) throws UnsupportedAudioFileException, IOException { public AudioInputStream getAudioInputStream(File file) throws UnsupportedAudioFileException, IOException {
return getAudioInputStream( file, null);
}
/**
* Get the audio input stream for a sud file.
* @param file - the .sud file to open.
* @param mapListener- a listener for the sud file maps - can be null.
* @return the sud AudioStream.
* @throws UnsupportedAudioFileException
* @throws IOException
*/
public AudioInputStream getAudioInputStream(File file, SudMapListener mapListener) throws UnsupportedAudioFileException, IOException {
// System.out.println("Get SUD getAudioInputStream");
try { try {
sudAudioInputStream = SudAudioInputStream.openInputStream(file, sudParams, false); sudAudioInputStream = SudAudioInputStream.openInputStream(file, sudParams, mapListener, false);
} catch (Exception e) { } catch (Exception e) {
String msg = String.format("Corrupt sud file %s: %s", file.getName(), e.getMessage()); String msg = String.format("Corrupt sud file %s: %s", file.getName(), e.getMessage());
throw new UnsupportedAudioFileException(msg); throw new UnsupportedAudioFileException(msg);
@ -52,4 +68,7 @@ public class SudAudioFileReader {
return sudAudioInputStream; return sudAudioInputStream;
} }
} }

View File

@ -3,10 +3,6 @@ package Acquisition.sud;
import java.io.File; import java.io.File;
import org.pamguard.x3.sud.SudAudioInputStream; import org.pamguard.x3.sud.SudAudioInputStream;
import org.pamguard.x3.sud.SudFileMap;
import org.pamguard.x3.sud.SudParams;
import PamUtils.PamCalendar;
public class SUDFileTime { public class SUDFileTime {
@ -19,6 +15,9 @@ public class SUDFileTime {
* @return * @return
*/ */
public static long getSUDFileTime(File file) { public static long getSUDFileTime(File file) {
//System.out.println("Get sud file time: " + file.getName());
if (file == null || file.exists() == false) { if (file == null || file.exists() == false) {
return Long.MIN_VALUE; return Long.MIN_VALUE;
} }
@ -35,22 +34,28 @@ public class SUDFileTime {
*/ */
// long t1 = System.currentTimeMillis(); // long t1 = System.currentTimeMillis();
sudTime = Long.MIN_VALUE; sudTime = Long.MIN_VALUE;
SudParams sudParams = new SudParams(); // SudParams sudParams = new SudParams();
sudParams.saveMeta = false; // sudParams.saveMeta = false;
sudParams.saveWav = false; // sudParams.saveWav = false;
try { try {
SudAudioInputStream sudAudioInputStream = SudAudioInputStream.openInputStream(file, sudParams, false); //
if (sudAudioInputStream == null) { // SudAudioInputStream sudAudioInputStream = SudAudioInputStream.openInputStream(file, sudParams, false);
return Long.MIN_VALUE; // if (sudAudioInputStream == null) {
} // return Long.MIN_VALUE;
SudFileMap sudMap = sudAudioInputStream.getSudMap(); // }
if (sudMap == null) { // SudFileMap sudMap = sudAudioInputStream.getSudMap();
return Long.MIN_VALUE; // if (sudMap == null) {
} // return Long.MIN_VALUE;
long t = sudMap.getFirstChunkTimeMillis(); // }
// long t = sudMap.getFirstChunkTimeMillis();
long t = SudAudioInputStream.quickFileTime(file);
t=t/1000; //turn to milliseconds.
if (t != 0) { if (t != 0) {
sudTime = t; sudTime = t;
} }
// sudAudioInputStream.addSudFileListener((chunkID, sudChunk)->{ // sudAudioInputStream.addSudFileListener((chunkID, sudChunk)->{
// ChunkHeader chunkHead = sudChunk.chunkHeader; // ChunkHeader chunkHead = sudChunk.chunkHeader;
// if (chunkHead == null || sudTime != Long.MIN_VALUE) { // if (chunkHead == null || sudTime != Long.MIN_VALUE) {
@ -69,7 +74,7 @@ public class SUDFileTime {
// sudAudioInputStream.read(); // sudAudioInputStream.read();
// } // }
// //
sudAudioInputStream.close(); // sudAudioInputStream.close();
// long t2 = System.currentTimeMillis(); // long t2 = System.currentTimeMillis();
// System.out.printf("SUD file time %s extracted in %d milliseconds\n", PamCalendar.formatDBDateTime(sudTime), t2-t1); // System.out.printf("SUD file time %s extracted in %d milliseconds\n", PamCalendar.formatDBDateTime(sudTime), t2-t1);

View File

@ -24,13 +24,13 @@ import org.apache.commons.math3.ml.clustering.KMeansPlusPlusClusterer;
* Markov chain Monte Carlo (MCMC) is a minimisation technique used widely in a variety of field, from finding exo planets, * Markov chain Monte Carlo (MCMC) is a minimisation technique used widely in a variety of field, from finding exo planets,
* to solving complex intergals. * to solving complex intergals.
* <p> * <p>
* This is an advanced and highly computationally intensive localisation algorithm based on MCMC methods. For a good description see; * This is a highly computationally intensive localisation algorithm based on MCMC methods. For a good description see;
* The Transit Light Curve (TLC) Project.I. Four Consecutive Transits of the Exoplanet XO-1b Matthew J. Holman1 * The Transit Light Curve (TLC) Project.I. Four Consecutive Transits of the Exoplanet XO-1b Matthew J. Holman1
* <p> * <p>
* This is an abstract class and requires a chi2 function to operate. * A chi2 function is required to define the minimisation problem.
* <p> * <p>
* Multiple MCMC chains can and should be run. These are executed on different threads to take advantage of multi-core processing as much as possible. * Multiple MCMC chains can and should be run. These are executed on different threads to take advantage of multi-core processing if possible.
* Even so a large number of chains or large observation set can result in significant processing times. * Even so, a large number of chains or large observation set can result in significant processing times.
* <p> * <p>
* Results are analysed for convergence and final locations packed into an MCMCTDResults class. * Results are analysed for convergence and final locations packed into an MCMCTDResults class.
* *
@ -119,7 +119,7 @@ public class MCMC implements MinimisationAlgorithm {
double newChi; double newChi;
ArrayList<Double> successChi=new ArrayList<Double>(settings.numberOfJumps/5); ArrayList<Double> successChi=new ArrayList<Double>(settings.numberOfJumps/5);
ArrayList<double[]> successJump=new ArrayList<double[]>(settings.numberOfJumps/5); ArrayList<float[]> successJump=new ArrayList<float[]>(settings.numberOfJumps/5);
// System.out.println("Start MCMC milliseconds: "+ System.currentTimeMillis()); // System.out.println("Start MCMC milliseconds: "+ System.currentTimeMillis());
@ -145,7 +145,7 @@ public class MCMC implements MinimisationAlgorithm {
chainPos=potentialNewJump; chainPos=potentialNewJump;
currentChi=newChi; currentChi=newChi;
successChi.add(newChi); successChi.add(newChi);
successJump.add(chainPos); successJump.add(PamArrayUtils.double2Float(chainPos));
//System.out.println(ChainPos); //System.out.println(ChainPos);
//System.out.println(NewChi); //System.out.println(NewChi);
//System.out.println(ObservedTimeDelays); //System.out.println(ObservedTimeDelays);
@ -155,7 +155,7 @@ public class MCMC implements MinimisationAlgorithm {
chainPos=potentialNewJump; chainPos=potentialNewJump;
currentChi=newChi; currentChi=newChi;
successChi.add(newChi); successChi.add(newChi);
successJump.add(chainPos); successJump.add(PamArrayUtils.double2Float(chainPos));
//System.out.println(ChainPos); //System.out.println(ChainPos);
//System.out.println(NewChi); //System.out.println(NewChi);
//System.out.println(ObservedTimeDelays); //System.out.println(ObservedTimeDelays);
@ -186,7 +186,7 @@ public class MCMC implements MinimisationAlgorithm {
* @param successJump - list of successful jumps * @param successJump - list of successful jumps
* @param successChi - list of successful chi2 values. * @param successChi - list of successful chi2 values.
*/ */
public ChainResult(ArrayList<double[]> successJump, ArrayList<Double> successChi) { public ChainResult(ArrayList<float[]> successJump, ArrayList<Double> successChi) {
this.successJump=successJump; this.successJump=successJump;
this.successChi=successChi; this.successChi=successChi;
} }
@ -199,7 +199,7 @@ public class MCMC implements MinimisationAlgorithm {
/** /**
* A list of points of the successful jumps. * A list of points of the successful jumps.
*/ */
public ArrayList<double[]> successJump; public ArrayList<float[]> successJump;
/** /**
* The number of dimensions. * The number of dimensions.
@ -586,7 +586,7 @@ public class MCMC implements MinimisationAlgorithm {
//find min value //find min value
int minIndex = chainResult.successChi.indexOf(Collections.min(chainResult.successChi)); int minIndex = chainResult.successChi.indexOf(Collections.min(chainResult.successChi));
minChi2=chainResult.successChi.get(minIndex); minChi2=chainResult.successChi.get(minIndex);
minChi2Pos=chainResult.successJump.get(minIndex); minChi2Pos=PamArrayUtils.float2Double(chainResult.successJump.get(minIndex));
break; break;
} }
@ -730,19 +730,19 @@ public class MCMC implements MinimisationAlgorithm {
*/ */
private EllipticalError getLocError(ArrayList<ChainResult> data) { private EllipticalError getLocError(ArrayList<ChainResult> data) {
ArrayList<double[]> successJumpAll = new ArrayList<double[]>(); ArrayList<float[]> successJumpAll = new ArrayList<float[]>();
List<double[]> successJump; List<float[]> successJump;
for (int i=0; i<data.size(); i++) { for (int i=0; i<data.size(); i++) {
successJump = data.get(i).successJump.subList((int) this.settings.percentageToIgnore*data.get(i).successJump.size(), successJump = data.get(i).successJump.subList((int) this.settings.percentageToIgnore*data.get(i).successJump.size(),
data.get(i).successJump.size()-1); data.get(i).successJump.size()-1);
successJumpAll.addAll(successJump); successJumpAll.addAll(successJump);
} }
double[][] results= new double[successJumpAll.size()][3]; float[][] results= new float[successJumpAll.size()][3];
results=successJumpAll.toArray(results); results=successJumpAll.toArray(results);
//Elliptical error //Elliptical error
EllipticalError ellError= new EllipticalError(results); EllipticalError ellError= new EllipticalError(PamArrayUtils.float2Double(results));
return ellError; return ellError;
} }

View File

@ -6,6 +6,7 @@ import javax.vecmath.Point3f;
import Localiser.algorithms.genericLocaliser.MCMC.MCMC.ChainResult; import Localiser.algorithms.genericLocaliser.MCMC.MCMC.ChainResult;
import Localiser.algorithms.locErrors.EllipticalError; import Localiser.algorithms.locErrors.EllipticalError;
import PamUtils.PamArrayUtils;
public class MCMCResult { public class MCMCResult {
@ -122,12 +123,12 @@ public class MCMCResult {
public ArrayList<ArrayList<Point3f>> getJumps() { public ArrayList<ArrayList<Point3f>> getJumps() {
ArrayList<ArrayList<Point3f>> jumps=new ArrayList<ArrayList<Point3f>>(); ArrayList<ArrayList<Point3f>> jumps=new ArrayList<ArrayList<Point3f>>();
ArrayList<Point3f> chainJumps; ArrayList<Point3f> chainJumps;
double[] ajump; float[] ajump;
for (int i=0; i<this.data.size(); i++) { for (int i=0; i<this.data.size(); i++) {
chainJumps= new ArrayList<Point3f>(); chainJumps= new ArrayList<Point3f>();
for (int j=0; j<this.data.get(i).successJump.size(); j++) { for (int j=0; j<this.data.get(i).successJump.size(); j++) {
ajump= this.data.get(i).successJump.get(j); ajump= this.data.get(i).successJump.get(j);
chainJumps.add(new Point3f((float) ajump[0], (float) ajump[1], (float) ajump[2])); chainJumps.add(new Point3f(ajump[0], ajump[1], ajump[2]));
} }
jumps.add(chainJumps); jumps.add(chainJumps);
} }
@ -139,6 +140,10 @@ public class MCMCResult {
return getJumpsd(1); return getJumpsd(1);
} }
public double[][] getJumpsf() {
return getJumpsd(1);
}
/** /**
* Get the jumps for the MCMC algorithm in double[][] format. This is for legacy code. * Get the jumps for the MCMC algorithm in double[][] format. This is for legacy code.
@ -149,16 +154,50 @@ public class MCMCResult {
if (div<1) div =1; if (div<1) div =1;
// int nJumps = 0;
// for (int i=0; i<this.data.size(); i++) {
// nJumps = (int) (nJumps + Math.floor(this.data.get(i).successJump.size()/div)+1);
// }
//
int nJumps = 0;
for (int i=0; i<this.data.size(); i++) {
for (int j=0; j<this.data.get(i).successJump.size(); j=j+div) {
nJumps++;
}
}
double[][] jumps = new double[nJumps][];
double[] ajump;
int n=0;
for (int i=0; i<this.data.size(); i++) {
for (int j=0; j<this.data.get(i).successJump.size(); j=j+div) {
ajump= PamArrayUtils.float2Double(this.data.get(i).successJump.get(j));
jumps[n] = ajump;
n++;
}
}
return jumps;
}
/**
* Get the jumps for the MCMC algorithm in double[][] format. This is for legacy code.
* @param div - reduce the data by div times (e.g. for plotting).
* @return the MCMC jumps from all chains.
*/
public float[][] getJumpsf(int div) {
if (div<1) div =1;
int nJumps = 0; int nJumps = 0;
for (int i=0; i<this.data.size(); i++) { for (int i=0; i<this.data.size(); i++) {
nJumps = nJumps + this.data.get(i).successJump.size(); nJumps = nJumps + this.data.get(i).successJump.size();
} }
double[][] jumps = new double[(int) Math.floor(nJumps/div)][]; float[][] jumps = new float[(int) Math.floor(nJumps/div)][];
double[] ajump; float[] ajump;
int n=0; int n=0;
for (int i=0; i<this.data.size(); i=i+div) { for (int i=0; i<this.data.size(); i=i++) {
for (int j=0; j<this.data.get(i).successJump.size(); j++) { for (int j=0; j<this.data.get(i).successJump.size(); j=j+div) {
ajump= this.data.get(i).successJump.get(j); ajump= this.data.get(i).successJump.get(j);
jumps[n] = ajump; jumps[n] = ajump;
n++; n++;
@ -167,6 +206,7 @@ public class MCMCResult {
return jumps; return jumps;
} }
} }

View File

@ -29,15 +29,20 @@ public class EllipseLocErrorDraw implements LocErrorGraphics {
*/ */
private EllipticalError ellipticalError; private EllipticalError ellipticalError;
public EllipticalError getEllipticalError() {
return ellipticalError;
}
public static final int DRAW_LINES = 1; public static final int DRAW_LINES = 1;
public static final int DRAW_OVALS = 2; public static final int DRAW_OVALS = 2;
private int drawType = DRAW_OVALS; private int drawType = DRAW_OVALS;
/** /**
* Constructor for drawing an ellipsoid. * Constructor for drawing an ellipsoid.
* @param ellipticalError * @param ellipticalError
*/ */
EllipseLocErrorDraw(EllipticalError ellipticalError){ protected EllipseLocErrorDraw(EllipticalError ellipticalError){
this.ellipticalError=ellipticalError; this.ellipticalError=ellipticalError;
} }
@ -56,6 +61,8 @@ public class EllipseLocErrorDraw implements LocErrorGraphics {
} }
return null; return null;
} }
public TransformShape drawLinesOnMap(Graphics g, PamDataUnit pamDetection, LatLong errorOrigin, public TransformShape drawLinesOnMap(Graphics g, PamDataUnit pamDetection, LatLong errorOrigin,
GeneralProjector generalProjector, Color ellipseColor) { GeneralProjector generalProjector, Color ellipseColor) {
Graphics2D g2d = (Graphics2D) g; Graphics2D g2d = (Graphics2D) g;
@ -103,6 +110,7 @@ public class EllipseLocErrorDraw implements LocErrorGraphics {
return null; return null;
} }
public TransformShape drawOvalsOnMap(Graphics g, PamDataUnit pamDetection, LatLong errorOrigin, public TransformShape drawOvalsOnMap(Graphics g, PamDataUnit pamDetection, LatLong errorOrigin,
GeneralProjector generalProjector, Color ellipseColor) { GeneralProjector generalProjector, Color ellipseColor) {
@ -162,4 +170,8 @@ public class EllipseLocErrorDraw implements LocErrorGraphics {
} }
public int getDrawType() {
return drawType;
}
} }

View File

@ -24,7 +24,7 @@ public enum ReprocessStoreChoice {
case DONTSSTART: case DONTSSTART:
return "Don't start processing"; return "Don't start processing";
case OVERWRITEALL: case OVERWRITEALL:
return "Overwrite existing output data"; return "Overwrite all existing output data";
default: default:
break; break;
} }
@ -42,7 +42,7 @@ public enum ReprocessStoreChoice {
case DONTSSTART: case DONTSSTART:
return "Processing will not start. Select alternative storage locations / databases and try again"; return "Processing will not start. Select alternative storage locations / databases and try again";
case OVERWRITEALL: case OVERWRITEALL:
return "Overwrite existing output data. Existing data will be deleted"; return "Overwrite existing output data. All existing data will be deleted";
default: default:
break; break;
} }

View File

@ -27,7 +27,7 @@ public class PamArrayUtils {
* @param dim - the dimension of the point to calculate the average for * @param dim - the dimension of the point to calculate the average for
* @return the mean of one dimension of the list of the points. * @return the mean of one dimension of the list of the points.
*/ */
public static double mean(ArrayList<double[]> array, double InitialtoIgnorePercentage, int dim){ public static double mean(ArrayList<float[]> array, double InitialtoIgnorePercentage, int dim){
double meanTotal=0; double meanTotal=0;
int n=0; int n=0;
@ -43,13 +43,14 @@ public class PamArrayUtils {
return mean; return mean;
} }
/** /**
* Calculate the standard deviation of an array of doubles, ignoring an 'initialtoIgnorePercentage' percentage of jumps * Calculate the standard deviation of an array of doubles, ignoring an 'initialtoIgnorePercentage' percentage of jumps
* @param array * @param array
* @param initialtoIgnorePercentage- percentage of initial values to ignore. * @param initialtoIgnorePercentage- percentage of initial values to ignore.
* @return standard deviation of array. * @return standard deviation of array.
*/ */
public static double std(ArrayList<double[]> array, double initialtoIgnorePercentage, int dim){ public static double std(ArrayList<float[]> array, double initialtoIgnorePercentage, int dim){
double std=0.0; double std=0.0;
int n=0; int n=0;
@ -855,6 +856,48 @@ public class PamArrayUtils {
return arr; return arr;
} }
/**
* Convert a 2D float array to a 2D double array.
* @param arrf - the float array
* @return a double array containing the same numbers as arrf.
*/
public static double[][] float2Double(float[][] arrf) {
double[][] newArray = new double[arrf.length][];
for (int i=0; i<arrf.length; i++) {
newArray[i] = float2Double(arrf[i]);
}
return newArray;
}
/**
* Convert a float array to a double array.
* @param arrd - the double array
* @return a double array containing the same numbers as arrf.
*/
public static float[] double2Float(double[] arrd) {
float[] arr = new float[arrd.length];
for (int i=0; i<arr.length; i++) {
arr[i] = (float) arrd[i];
}
return arr;
}
/**
* Convert a 2D float array to a 2D double array.
* @param arrd - the double array
* @return a double array containing the same numbers as arrf.
*/
public static float[][] double2Float(double[][] arrd) {
float[][] newArray = new float[arrd.length][];
for (int i=0; i<arrd.length; i++) {
newArray[i] = double2Float(arrd[i]);
}
return newArray;
}
/** /**
* Check if two int arrays contain the same elements * Check if two int arrays contain the same elements
@ -887,5 +930,12 @@ public class PamArrayUtils {
} }
} }

View File

@ -33,6 +33,7 @@ public class PamWorker<T> {
private BackgroundWorker backgroundWorker; private BackgroundWorker backgroundWorker;
private volatile boolean running = false; private volatile boolean running = false;
/** /**
@ -86,7 +87,7 @@ public class PamWorker<T> {
return true; return true;
} }
protected class BackgroundWorker extends SwingWorker<T, PamWorkProgressMessage> { public class BackgroundWorker extends SwingWorker<T, PamWorkProgressMessage> {
@Override @Override
protected T doInBackground() throws Exception { protected T doInBackground() throws Exception {
@ -141,6 +142,12 @@ public class PamWorker<T> {
} }
public BackgroundWorker getBackgroundWorker() {
return backgroundWorker;
}
public void update(PamWorkProgressMessage progressMessage) { public void update(PamWorkProgressMessage progressMessage) {
backgroundWorker.ppublish(progressMessage); backgroundWorker.ppublish(progressMessage);

View File

@ -0,0 +1,59 @@
package group3dlocaliser.algorithm.toadmcmc;
import Array.SnapshotGeometry;
import Localiser.algorithms.locErrors.EllipseLocErrorDraw;
import Localiser.algorithms.locErrors.EllipticalError;
import Localiser.algorithms.locErrors.LocErrorGraphics;
import PamUtils.PamArrayUtils;
/**
* Elliptical error for MCMC.
*
* @author Jamie Macaulay
*
*/
public class MCMCEllipticalError extends EllipticalError {
/**
* Class for drawing the error.
*/
private EllipseLocErrorDraw ellipseLocErrorDraw = new MCMCErrorDraw(this);
private float[][] points;
private double[] meanLoc;
public double[] getMeanLoc() {
return meanLoc;
}
public MCMCEllipticalError(double[][] points, double[] meanLoc) {
super(points);
this.points = PamArrayUtils.double2Float(points);
this.meanLoc = meanLoc;
}
public float[][] getPoints() {
return points;
}
public void setPoints(float[][] points) {
this.points = points;
}
@Override
public LocErrorGraphics getErrorDraw() {
return ellipseLocErrorDraw;
}
}

View File

@ -0,0 +1,107 @@
package group3dlocaliser.algorithm.toadmcmc;
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Point2D;
import Localiser.algorithms.locErrors.EllipseLocErrorDraw;
import Localiser.algorithms.locErrors.EllipticalError;
import Localiser.algorithms.locErrors.ErrorEllipse;
import PamUtils.LatLong;
import PamUtils.PamArrayUtils;
import PamView.GeneralProjector;
import PamView.TransformShape;
import PamguardMVC.PamDataUnit;
import pamMaths.PamVector;
/**
* Plots some point son the map
* @author Jamie Macaulay
*
*/
public class MCMCErrorDraw extends EllipseLocErrorDraw {
private MCMCEllipticalError ellipticalErr;
MCMCErrorDraw(MCMCEllipticalError ellipticalError) {
super(ellipticalError);
this.ellipticalErr = ellipticalError;
}
@Override
public TransformShape drawOnMap(Graphics g, PamDataUnit pamDetection, LatLong errorOrigin,
GeneralProjector generalProjector, Color ellipseColor) {
if (getEllipticalError() == null) {
return null;
}
if (ellipticalErr.getPoints()!=null) {
drawMCMCCloudOnMap(g, pamDetection, errorOrigin, generalProjector, ellipseColor);
}
switch(getDrawType()) {
case DRAW_LINES:
return drawLinesOnMap(g, pamDetection, errorOrigin, generalProjector, ellipseColor);
case DRAW_OVALS:
return drawOvalsOnMap(g, pamDetection, errorOrigin, generalProjector, ellipseColor);
}
return null;
}
public TransformShape drawMCMCCloudOnMap(Graphics g, PamDataUnit pamDetection, LatLong errorOrigin,
GeneralProjector generalProjector, Color ellipseColor) {
//System.out.println("Plot errors: perp: "+ perpError+ " horz: "+horzError+ " " + errorDirection);
Graphics2D g2d = (Graphics2D)g;
ellipticalErr.getPoints();
LatLong point1 = null;
LatLong point2 = null;
Point point1xy = null;
Point point2xy = null;
for (int i=0; i<ellipticalErr.getPoints().length-1; i++) {
/**
* Need to do all the error dimension calculation in true latlong coorinates, or it simply won't
* work with a rotated map.
*/
Point errorOriginXY=generalProjector.getCoord3d(errorOrigin).getXYPoint();
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.1f));
g2d.setPaint(ellipseColor.brighter().brighter());
PamVector meanLoc = new PamVector(ellipticalErr.getMeanLoc());
if (point1==null) {
point1 = errorOrigin.addDistanceMeters(new PamVector(PamArrayUtils.float2Double(ellipticalErr.getPoints()[i])).sub(meanLoc));
point1xy=generalProjector.getCoord3d(point1).getXYPoint();
}
point2 = errorOrigin.addDistanceMeters(new PamVector(PamArrayUtils.float2Double(ellipticalErr.getPoints()[i+1])).sub(meanLoc));
point2xy=generalProjector.getCoord3d(point2).getXYPoint();
//pixel points
g2d.drawLine((int) point2xy.getX(), (int) point2xy.getY(), (int) point1xy.getX(), (int) point1xy.getY());
point1=point2; //no need to recalculate that.
point1xy=point2xy; //no need to recalculate that.
}
return null;
}
}

View File

@ -1,7 +1,8 @@
package group3dlocaliser.algorithm.toadmcmc; package group3dlocaliser.algorithm.toadmcmc;
import Localiser.LocaliserPane; import Localiser.LocaliserPane;
import Localiser.algorithms.genericLocaliser.MCMC.MCMCParams2;
public class MCMCLoclaiserPane implements LocaliserPane { public class MCMCLoclaiserPane implements LocaliserPane<MCMCParams2> {
} }

View File

@ -17,6 +17,7 @@ import PamDetection.AbstractLocalisation;
import PamDetection.LocContents; import PamDetection.LocContents;
import PamUtils.CPUMonitor; import PamUtils.CPUMonitor;
import PamUtils.LatLong; import PamUtils.LatLong;
import PamUtils.PamArrayUtils;
import PamguardMVC.PamDataUnit; import PamguardMVC.PamDataUnit;
import generalDatabase.SQLLoggingAddon; import generalDatabase.SQLLoggingAddon;
import group3dlocaliser.Group3DLocaliserControl; import group3dlocaliser.Group3DLocaliserControl;
@ -67,8 +68,7 @@ public class ToadMCMCLocaliser extends TOADBaseAlgorithm {
@Override @Override
public boolean hasParams() { public boolean hasParams() {
// TODO Auto-generated method stub return true;
return false;
} }
@Override @Override
@ -81,6 +81,10 @@ public class ToadMCMCLocaliser extends TOADBaseAlgorithm {
public AbstractLocalisation processTOADs(PamDataUnit groupDataUnit, SnapshotGeometry geometry, public AbstractLocalisation processTOADs(PamDataUnit groupDataUnit, SnapshotGeometry geometry,
TOADInformation toadInformation) { TOADInformation toadInformation) {
// System.out.println("Run MCMC: ------ " + groupDataUnit.getUID());
// PamArrayUtils.printArray(toadInformation.getToadSeconds());
cpuMCMC.start(); cpuMCMC.start();
PamVector centre = geometry.getGeometricCentre(); PamVector centre = geometry.getGeometricCentre();
@ -95,9 +99,9 @@ public class ToadMCMCLocaliser extends TOADBaseAlgorithm {
GroupLocalisation groupLocalisation = null; GroupLocalisation groupLocalisation = null;
for (int i=0; i<mcmcResult.size(); i++) { for (int i=0; i<mcmcResult.size(); i++) {
double[][] jumps = mcmcResult.get(i).getJumpsd(); double[][] jumps = mcmcResult.get(i).getJumpsd(10); //we don't need all the jumps to calculate an error.
EllipticalError ellipErr = new EllipticalError(jumps); EllipticalError ellipErr = new MCMCEllipticalError(jumps, mcmcResult.get(i).getMeanLoc());
LatLong pos = geometry.getReferenceGPS().addDistanceMeters(new PamVector(mcmcResult.get(i).getMeanLoc()).add(centre)); LatLong pos = geometry.getReferenceGPS().addDistanceMeters(new PamVector(mcmcResult.get(i).getMeanLoc()).add(centre));

View File

@ -82,6 +82,8 @@ public class ToadSimplexLocaliser extends TOADBaseAlgorithm {
// get the channel geometry. // get the channel geometry.
nCalls++; nCalls++;
boolean usell = false;
// ///////////////////////////// // /////////////////////////////
// System.out.println("TOADInformation: " + toadInformation); // System.out.println("TOADInformation: " + toadInformation);
@ -125,8 +127,6 @@ public class ToadSimplexLocaliser extends TOADBaseAlgorithm {
// deal with 2D case // deal with 2D case
start = Arrays.copyOf(start, nDimensions); start = Arrays.copyOf(start, nDimensions);
} }
boolean usell = false;
//MultivariateRealFunction chiFunc; //MultivariateRealFunction chiFunc;
GoalType goal; GoalType goal;
if (usell) { if (usell) {
@ -223,19 +223,21 @@ public class ToadSimplexLocaliser extends TOADBaseAlgorithm {
// SimpleError cartErr = estimateCartesianError(geometry, toadInformation, posVec); // SimpleError cartErr = estimateCartesianError(geometry, toadInformation, posVec);
//FIXME - this return super weird results //FIXME - this return super weird results
//EllipticalError ellipErr = estimateEllipticalError(geometry, toadInformation, posVec); EllipticalError ellipErr;
if (usell) {
ellipErr = estimateEllipticalError(geometry, toadInformation, posVec);
}
else {
//FIXME - this elliptical error seems to work far better //FIXME - this elliptical error seems to work far better
SimpleMinimisation simpleMin = new SimpleMinimisation(chiFunc, nDimensions, start, firstStep); SimpleMinimisation simpleMin = new SimpleMinimisation(chiFunc, nDimensions, start, firstStep);
LikilihoodError lError = new LikilihoodError(simpleMin, posVec); ellipErr = new LikilihoodError(simpleMin, posVec);
}
EllipticalError ellipErr = lError;
// System.out.printf(", Chi2 = %3.1f, p=%3.1f, ndf = %d, Err=%s\n", // System.out.printf(", Chi2 = %3.1f, p=%3.1f, ndf = %d, Err=%s\n",
// chiData.getChi2(), cumProb, chiData.getNdf(), cartErr.getJsonErrorString()); // chiData.getChi2(), cumProb, chiData.getNdf(), cartErr.getJsonErrorString());
System.out.println(ellipErr.getJsonErrorString()); // System.out.println(ellipErr.getJsonErrorString());
/** /**
* Calculated position was relative to array centre, so now need to add the array * Calculated position was relative to array centre, so now need to add the array
@ -246,8 +248,8 @@ public class ToadSimplexLocaliser extends TOADBaseAlgorithm {
// TargetMotionResult tmResult = new TargetMotionResult(geometry.getTimeMilliseconds(), null, pos, 0, 0); // TargetMotionResult tmResult = new TargetMotionResult(geometry.getTimeMilliseconds(), null, pos, 0, 0);
System.out.println("New group localisation: height: " + pos.getHeight() + " ref height: " + // System.out.println("New group localisation: height: " + pos.getHeight() + " ref height: " +
geometry.getReferenceGPS().getHeight() + " posVec: " + posVec[2]); // geometry.getReferenceGPS().getHeight() + " posVec: " + posVec[2]);
GroupLocResult glr = new GroupLocResult(pos, 0, chiData.getChi2()); GroupLocResult glr = new GroupLocResult(pos, 0, chiData.getChi2());
glr.setError(ellipErr); glr.setError(ellipErr);