From 16015e0f125a065fd05f61350fc3d9e720ebac56 Mon Sep 17 00:00:00 2001
From: jlizier
Date: Sat, 24 Nov 2018 21:16:36 +1100
Subject: [PATCH 01/41] Nearest neighbour searchers now return number of points
found for findPointsWithinR as well as marking them in input arrays. Also
added new method sumDistanceAboveThresholdForPointsWithinRs() for the
univariate searcher (to be used in spiking TE estimator under development)
---
java/source/infodynamics/utils/KdTree.java | 13 ++---
.../utils/NearestNeighbourSearcher.java | 3 +-
.../UnivariateNearestNeighbourSearcher.java | 49 ++++++++++++++++++-
3 files changed, 56 insertions(+), 9 deletions(-)
diff --git a/java/source/infodynamics/utils/KdTree.java b/java/source/infodynamics/utils/KdTree.java
index 1076af7..8e5b6f6 100755
--- a/java/source/infodynamics/utils/KdTree.java
+++ b/java/source/infodynamics/utils/KdTree.java
@@ -1384,19 +1384,19 @@ public class KdTree extends NearestNeighbourSearcher {
}
@Override
- public void findPointsWithinR(int sampleIndex,
+ public int findPointsWithinR(int sampleIndex,
double r, boolean allowEqualToR, boolean[] isWithinR,
int[] indicesWithinR) {
if (rootNode == null) {
indicesWithinR[0] = -1;
- return;
+ return 0;
}
int currentIndexInIndicesWithinR =
findPointsWithinR(sampleIndex,
rootNode, 0, r, allowEqualToR, isWithinR,
indicesWithinR, 0);
indicesWithinR[currentIndexInIndicesWithinR] = -1;
- return;
+ return currentIndexInIndicesWithinR;
}
/**
@@ -2510,20 +2510,21 @@ public class KdTree extends NearestNeighbourSearcher {
* @param allowEqualToR if true, then count points at radius r also, otherwise only those strictly within r
* @param isWithinR the array MUST be passed in with all points set to false initially, and is returned indicating whether each sample was found to be within r of that at sampleIndex.
* @param indicesWithinR a list of array indices for points marked as true in isWithinR, terminated with a -1 value.
+ * @return the number of points found to match
*/
- public void findPointsWithinRs(int sampleIndex,
+ public int findPointsWithinRs(int sampleIndex,
double[] rs, int dynCorrExclTime, boolean allowEqualToR,
boolean[] isWithinR, int[] indicesWithinR) {
if (rootNode == null) {
indicesWithinR[0] = -1;
- return;
+ return 0;
}
int currentIndexInIndicesWithinR =
findPointsWithinRs(sampleIndex,
rootNode, 0, rs, dynCorrExclTime, allowEqualToR, isWithinR,
indicesWithinR, 0);
indicesWithinR[currentIndexInIndicesWithinR] = -1;
- return;
+ return currentIndexInIndicesWithinR;
}
/**
diff --git a/java/source/infodynamics/utils/NearestNeighbourSearcher.java b/java/source/infodynamics/utils/NearestNeighbourSearcher.java
index 5f66dcb..3f2c90a 100755
--- a/java/source/infodynamics/utils/NearestNeighbourSearcher.java
+++ b/java/source/infodynamics/utils/NearestNeighbourSearcher.java
@@ -326,8 +326,9 @@ public abstract class NearestNeighbourSearcher {
* found to be within r of that at sampleIndex.
* @param indicesWithinR a list of array indices
* for points marked as true in isWithinR, terminated with a -1 value.
+ * @return the number of matching points found
*/
- public abstract void findPointsWithinR(
+ public abstract int findPointsWithinR(
int sampleIndex, double r,
boolean allowEqualToR, boolean[] isWithinR, int[] indicesWithinR);
diff --git a/java/source/infodynamics/utils/UnivariateNearestNeighbourSearcher.java b/java/source/infodynamics/utils/UnivariateNearestNeighbourSearcher.java
index 3c3d3db..a06c456 100755
--- a/java/source/infodynamics/utils/UnivariateNearestNeighbourSearcher.java
+++ b/java/source/infodynamics/utils/UnivariateNearestNeighbourSearcher.java
@@ -414,6 +414,50 @@ public class UnivariateNearestNeighbourSearcher extends NearestNeighbourSearcher
return count;
}
+ /**
+ * For the points within norms r_upper and r_lower for a given
+ * sample index in the data set, sum up the total amount that
+ * all of these points are above r_lower.
+ * The node itself is excluded from the search.
+ * Nearest neighbour function to compare to radii is the specified norm.
+ * (If {@link EuclideanUtils#NORM_EUCLIDEAN} was selected, then the supplied
+ * r should be the required Euclidean norm squared, since we switch it
+ * to {@link EuclideanUtils#NORM_EUCLIDEAN_SQUARED} internally).
+ */
+ public double sumDistanceAboveThresholdForPointsWithinRs(int sampleIndex, double r_upper,
+ double r_lower, boolean allowEqualToR) {
+ int sumDistance = 0;
+ // Find where this node sits in the sorted array:
+ int indexInSortedArray = indicesInSortedArray[sampleIndex];
+ // Check the points with smaller data values first:
+ for (int i = indexInSortedArray - 1; i >= 0; i--) {
+ double theNorm = norm(originalDataSet[sampleIndex],
+ originalDataSet[sortedArrayIndices[i]], normTypeToUse);
+ if ((allowEqualToR && (theNorm <= r_lower)) ||
+ (!allowEqualToR && (theNorm < r_lower))) {
+ // This point would be counted within the norms
+ sumDistance += r_lower - theNorm;
+ continue;
+ }
+ // Else no point checking further points
+ break;
+ }
+ // Next check the points with larger data values:
+ for (int i = indexInSortedArray + 1; i < numObservations; i++) {
+ double theNorm = norm(originalDataSet[sampleIndex],
+ originalDataSet[sortedArrayIndices[i]], normTypeToUse);
+ if ((allowEqualToR && (theNorm <= r_upper)) ||
+ (!allowEqualToR && (theNorm < r_upper))) {
+ // This point would be counted within the norms
+ sumDistance += r_lower + theNorm;
+ continue;
+ }
+ // Else no point checking further points
+ break;
+ }
+ return sumDistance;
+ }
+
/**
* Count the number of points within norm r for a given
* sample index in the data set. Nodes within dynCorrExclTime
@@ -641,7 +685,7 @@ public class UnivariateNearestNeighbourSearcher extends NearestNeighbourSearcher
*
*
*/
- public void findPointsWithinR(
+ public int findPointsWithinR(
int sampleIndex, double r, boolean allowEqualToR,
boolean[] isWithinR, int[] indicesWithinR) {
int indexInIndicesWithinR = 0;
@@ -674,7 +718,8 @@ public class UnivariateNearestNeighbourSearcher extends NearestNeighbourSearcher
break;
}
// Write the terminating integer into the indicesWithinR array:
- indicesWithinR[indexInIndicesWithinR++] = -1;
+ indicesWithinR[indexInIndicesWithinR] = -1;
+ return indexInIndicesWithinR;
}
/**
From 3c24debea5ef9525395d5fe2702c2550e64bdf7a Mon Sep 17 00:00:00 2001
From: jlizier
Date: Sun, 25 Nov 2018 21:47:41 +1100
Subject: [PATCH 02/41] Updating PDFs of wiki pages of all demos to make sure
they are up to date; includes adding the new wiki page for GPU
---
.../AutoAnalyser/README-AutoAnalyserDemo.pdf | Bin 242490 -> 311025 bytes
demos/README-Demos.pdf | Bin 86658 -> 152651 bytes
demos/gpu/README-GPU.pdf | Bin 0 -> 149569 bytes
demos/python/README-PythonDemos.pdf | Bin 155811 -> 212537 bytes
4 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 demos/gpu/README-GPU.pdf
diff --git a/demos/AutoAnalyser/README-AutoAnalyserDemo.pdf b/demos/AutoAnalyser/README-AutoAnalyserDemo.pdf
index bdde0332120c8fd286148e18677cc65470922398..f0288653af757a9902b5edc6c6774507720d3d8e 100644
GIT binary patch
literal 311025
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