Sha256: 66f5ea7acae2199f506eb80104882be64d891183b7922fd05e8676332892d8f8
Contents?: true
Size: 1.91 KB
Versions: 4
Compression:
Stored size: 1.91 KB
Contents
require 'rbbt/util/R' class RbbtMatrix def barcode(outfile, factor = 2) FileUtils.mkdir_p File.dirname(outfile) unless outfile.nil? or File.exist? File.dirname(outfile) cmd =<<-EOF source('#{Rbbt.share.R['barcode.R'].find}') rbbt.GE.barcode.mode(#{ R.ruby2R self.data_file }, #{ R.ruby2R outfile }, #{ R.ruby2R factor }) EOF R.run(cmd, :monitor => true) end def barcode_ruby(outfile, factor = 2) parser = TSV::Parser.new self.data_file dumper = TSV::Dumper.new parser.options.merge(:type => :list, :cast => :to_i) dumper.init TSV.traverse parser, :into => dumper, :bar => "Barcoding #{self.data_file}" do |key,values| clean_values = values.flatten.compact.collect{|v| v.to_f} modes = R.eval("rbbt.get.modes(#{R.ruby2R clean_values})$modes") mode = Array === modes ? modes.first : modes mode_values = clean_values.select{|v| v.to_f <= mode} mode_values.concat mode_values.collect{|v| v+mode} sd = Misc.sd mode_values if sd.nil? [key, [nil] * values.length] else threshold = mode + sd bars = if Array === values.compact.first values.collect do |v| Misc.mean(v.compact.collect{|v| v.to_f}) > threshold ? 1 : 0 end else values.collect do |v| v.to_f > threshold ? 1 : 0 end end key = key.first if Array === key [key, bars] end end Misc.sensiblewrite(outfile, dumper.stream) end def activity_cluster(outfile, clusters = 2) clusters = Array === clusters ? clusters : (2..clusters).to_a FileUtils.mkdir_p File.dirname(outfile) unless outfile.nil? or File.exist? File.dirname(outfile) cmd =<<-EOF source('#{Rbbt.share.R['barcode.R'].find}') rbbt.GE.activity_cluster(#{ R.ruby2R self.data_file }, #{ R.ruby2R outfile }, #{R.ruby2R key_field}, #{R.ruby2R clusters}) EOF R.run(cmd, :monitor => true) end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
rbbt-dm-1.3.2 | lib/rbbt/matrix/barcode.rb |
rbbt-dm-1.3.0 | lib/rbbt/matrix/barcode.rb |
rbbt-dm-1.2.10 | lib/rbbt/matrix/barcode.rb |
rbbt-dm-1.2.9 | lib/rbbt/matrix/barcode.rb |