diff options
Diffstat (limited to 'avg_weights')
-rwxr-xr-x | avg_weights | 44 |
1 files changed, 16 insertions, 28 deletions
diff --git a/avg_weights b/avg_weights index 2b72747..71ffdd9 100755 --- a/avg_weights +++ b/avg_weights @@ -1,46 +1,34 @@ #!/usr/bin/env ruby +require 'nlp_ruby' require 'trollop' require 'zlib' -STDIN.set_encoding 'utf-8' -STDOUT.set_encoding 'utf-8' - -opts = Trollop::options do +cfg = Trollop::options do + opt :weights_files, "a number of weights files: name value", :required => true opt :filter, "Filter if key does not appear in every file.", :type => :bool, :default => false end -def usage - puts "avg_weights_filter [--filter] <filename>+" - exit 1 -end -usage if ARGV.size==0 - - h = {} ARGV.each { |fn| -if File.extname(fn)=='.gz' - f = Zlib::GzipReader.new(File.new(fn, 'rb')) -else - f = File.new fn, 'r' -end -while line = f.gets - k, v = line.split - v = v.to_f - if h.has_key? k - h[k] << v - else - h[k] = [v] + f = ReadFile.new fn + while line = f.gets + k, v = line.split + v = v.to_f + if h.has_key? k + h[k] << v + else + h[k] = [v] + end end -end -f.close + f.close } n = ARGV.size.to_f -h.each_pair { |k,a| - next if opts[:filter] and a.size < n - puts "#{k} #{a.inject(:+)/n}" +h.each_pair { |k,w| + next if cfg[:filter] and w.size < n + puts "#{k} #{w.inject(:+)/n}" } |