Introduction
Introduction Statistics Contact Development Disclaimer Help
Remove useless db class, add comments for min match - warvox - VoIP based wardi…
Log
Files
Refs
README
---
commit 9dfe21e123c2398a1c21f3b27e7ea30a9aa2a225
parent 4c5d46d2470eff1c43a8a7d088975c191330f06f
Author: HD Moore <[email protected]>
Date: Fri, 28 Dec 2012 20:10:32 -0600
Remove useless db class, add comments for min match
Diffstat:
M app/models/dial_result.rb | 2 ++
D lib/warvox/db.rb | 157 -----------------------------…
2 files changed, 2 insertions(+), 157 deletions(-)
---
diff --git a/app/models/dial_result.rb b/app/models/dial_result.rb
@@ -10,6 +10,7 @@ class DialResult < ActiveRecord::Base
'WHERE icount(dial_results.fprint) > 0 AND ' +
"dial_results.dial_job_id = \'#{dial_job_id}\' AND " +
"dial_results.id != \'#{id}\' " +
+# "AND (( icount(\'{#{fprint.map{|x| x.to_s}.join(",")}}\'::int…
'ORDER BY matchscore DESC'
}
@@ -19,6 +20,7 @@ class DialResult < ActiveRecord::Base
'FROM dial_results ' +
'WHERE icount(dial_results.fprint) > 0 AND ' +
"dial_results.id != \'#{id}\' " +
+# "AND (( icount(\'{#{fprint.map{|x| x.to_s}.join(",")}}\'::int…
'ORDER BY matchscore DESC'
}
diff --git a/lib/warvox/db.rb b/lib/warvox/db.rb
@@ -1,157 +0,0 @@
-module WarVOX
-class DB < ::Hash
-
- VERSION = '1.0'
-
- class Error < ::RuntimeError
- end
-
- attr_accessor :path, :threshold, :version
-
- def initialize(path, threshold=800)
- self.path = path
- self.threshold = threshold
- self.version = VERSION
- import(path) if path
- end
-
- def import(path)
- File.open(path, "r") do |fd|
- fd.each_line do |line|
- line.strip!
- next if line.empty?
- bits = line.split(/\s+/)
- name = bits.shift
-
- # Remove leading silence
- bits.shift if bits[0][0,1] == "L"
-
- next if bits.empty?
-
- self[name] = []
- bits.each do |d|
- s,l,a = d.split(',')
- next if l.to_i < self.threshold
- self[name] << [s, l.to_i, a.to_i]
- end
- end
- end
- end
-
- #
- # Utility methods
- #
-
- # Find a signature within a sample
- def find_match(pat, sam, opts={})
-
- fuzz = opts[:fuzz] || 100
- min_sig = opts[:min_sig] || 2
-
- idx = 0
- fnd = nil
- mat = nil
- r = 0
-
- while(idx < pat.length-min_sig)
- sig = pat[idx,pat.length]
- idx2 = 0
-
- while (idx2 < sam.length)
- c = 0
- 0.upto(sig.length-1) do |si|
- break if not sam[idx2+si]
- break if not (
- sig[si][0] == sam[idx2+si][0] …
- sam[idx2 + si][1] > sig[si][1]…
- sam[idx2 + si][1] < sig[si][1]…
- )
- c += 1
- end
-
- if (c > r)
- r = c
- fnd = sig[0, r]
- mat = sam[idx2, r]
- end
- idx2 += 1
- end
- idx += 1
- end
-
- # Return the results
- [fnd, mat, r]
- end
-
- # Find the largest pattern shared between two samples
- def find_sig(num1, num2, opts={})
-
- fuzz = opts[:fuzz] || 100
- info1 = self[num1]
- info2 = self[num2]
-
- # Make sure both samples exist in the database
- if ( not (info1 and info2 and not (info1.empty? or info2.empty…
- raise Error, "The database must contain both numbers"
- end
-
- # Remove the silence prefix from both samples
- info1.shift if info1[0][0] == "L"
- info2.shift if info2[0][0] == "L"
-
- fnd,mat,r = find_match(info1, info2, { :fuzz => fuzz })
-
- return nil if not fnd
-
- sig = []
- fnd.each_index do |i|
- sig <<
- [
- (fnd[i][0]),
- (fnd[i][1] + mat[i][1] / 2.0).to_i,
- (fnd[i][2] + mat[i][2] / 2.0).to_i
- ]
- end
-
- {
- :version => self.version,
- :fuzz => fuzz,
- :threshold => self.threshold,
- :num1 => num1,
- :num2 => num2,
- :len => r,
- :sig => sig
- }
- end
-
- def is_carrier?(num)
- data = self[num]
- raise Error, "The specified number does not exist: #{num}" if …
- tone = []
-
- min_len = 10000
-
- data.each do |rec|
- next if rec[0] != "H"
- next if rec[1] < min_len
- tone << rec
- end
-
- (tone.empty? or (data.length > 5 and tone.length == 1)) ? fals…
- end
-
- def find_carriers
- carriers = {}
- self.keys.sort.each do |num|
- begin
- res = is_carrier?(num)
- next if not res
- carriers[num] = res
- rescue Error
- end
- end
- carriers
- end
-
-end
-end
You are viewing proxied material from jay.scot. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.