loganb-kder 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/kder/kde.rb +46 -1
- data/lib/kder/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e5b8c12f1724491f1d7e1030dca865ca131aff67
|
4
|
+
data.tar.gz: dd269d0ef838ebe5d6c45a62288f2b688971a1fe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1964cd8f5e3446644fc5f26e623c953a94e56dd2f0efac20b2ec42164d458f71038eba37c521034166909b983875e82d6ca66b74f3a71dd625b2168d2d9bdc01
|
7
|
+
data.tar.gz: '07429b569c86eeef572489945412a478ef4329162fb0325b520ed6ac15bb8cabca511d10ee2fd994f72330cf804e1d3b443813bfcea28a0a425f8d003ba629fe'
|
data/lib/kder/kde.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'matrix'
|
2
2
|
|
3
3
|
class Kder
|
4
4
|
require_relative 'bandwidth'
|
@@ -83,5 +83,50 @@ class Kder
|
|
83
83
|
output << [max,0]
|
84
84
|
output.compact.transpose
|
85
85
|
end
|
86
|
+
|
87
|
+
#
|
88
|
+
# Smooths multiple data sets with a shared x-axis at the same time.
|
89
|
+
#
|
90
|
+
# values in the form of:
|
91
|
+
#
|
92
|
+
# [
|
93
|
+
# [x1, y1, z1, k1],
|
94
|
+
# [x2, y2, 0, z3], # "Hole" where there is no data for z
|
95
|
+
# ...
|
96
|
+
# ]
|
97
|
+
#
|
98
|
+
#
|
99
|
+
def kdemultivec(values, bw, opts = {}.freeze)
|
100
|
+
opts = {sigmas: Sigmas, sampling_density: MeshCount, threshold: MinimumThresholdValue, minimum_delta: DifferenceThreshold}.merge(opts)
|
101
|
+
|
102
|
+
# Initialization steps
|
103
|
+
range = bw*opts[:sigmas]
|
104
|
+
min = values.first[0] - range
|
105
|
+
max = values.last[0] + range
|
106
|
+
step_size = (max-min)/(opts[:sampling_density].to_f)
|
107
|
+
step_size = step_size < MinimumStepSize ? MinimumStepSize : step_size
|
108
|
+
|
109
|
+
# initialize the range variables
|
110
|
+
ranges = (min..max).step(step_size).to_a
|
111
|
+
output = [Array.new(values.first.length-1, 0).unshift(min)]
|
112
|
+
old_intensities = Vector::elements(Array.new(values.first.length-1, 0))
|
113
|
+
# Step through the range
|
114
|
+
ranges[1..-1].map do |mid|
|
115
|
+
high_end = mid + range
|
116
|
+
lower_end = mid - range
|
117
|
+
selection_range = (lower_end..high_end)
|
118
|
+
included = values.select {|v| selection_range.include?(v[0])}
|
119
|
+
|
120
|
+
intensities = included.collect { |vec| Vector::elements(vec[1..-1],false) * Kder::Statistics.custom_pdf(vec[0] - mid, bw) }.
|
121
|
+
inject(&:+) || old_intensities
|
122
|
+
|
123
|
+
unless intensities.all? { |v| v < opts[:threshold] } or (intensities - old_intensities).all? { |v| v.abs < opts[:minimum_delta] }
|
124
|
+
output << intensities.to_a.unshift(mid)
|
125
|
+
old_intensities = intensities
|
126
|
+
end
|
127
|
+
end
|
128
|
+
output << Array.new(values.first.length - 1, 0).unshift(max)
|
129
|
+
output.compact.transpose
|
130
|
+
end
|
86
131
|
end
|
87
132
|
end
|
data/lib/kder/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: loganb-kder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Taylor
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-11-
|
12
|
+
date: 2017-11-18 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: A KDE implementation in Ruby.
|
15
15
|
email:
|
@@ -44,7 +44,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
44
44
|
version: '0'
|
45
45
|
requirements: []
|
46
46
|
rubyforge_project:
|
47
|
-
rubygems_version: 2.5.2
|
47
|
+
rubygems_version: 2.5.2.1
|
48
48
|
signing_key:
|
49
49
|
specification_version: 4
|
50
50
|
summary: Kernel Density Estimation, and an associated bandwidth estimator, rudimentary
|