require 'nyaplot' require 'bionya' path = File.expand_path("../data/operon.csv", __FILE__) df_operon = Nyaplot::DataFrame.from_csv(path) begin_arr = [0]; end_arr=[336]; size_arr=[337]; if_operon_arr=["no"]; name_arr = [SecureRandom.uuid ]; df_arr = [] df_operon.filter! {|row| !(row[:locbegin].is_a?(String) || row[:locend].is_a?(String))} df_operon.column(:operonname).to_a.uniq.each do |name| df_part = df_operon.filter{|row| row[:operonname].to_s == name.to_s} operon_begin = df_part.column(:locbegin).to_a.min operon_end = df_part.locend.to_a.max prev_end = end_arr.clone.pop if operon_begin - prev_end > 1 name_arr.push(SecureRandom.uuid) begin_arr.push(prev_end+1) end_arr.push(operon_begin-1) size_arr.push(operon_begin - prev_end -1) if_operon_arr.push("no") end name_arr.push(name) begin_arr.push(operon_begin) end_arr.push(operon_end) size_arr.push(operon_end - operon_begin + 1) if_operon_arr.push("yes") end df_operon_info = Nyaplot::DataFrame.new({name: name_arr, begin: begin_arr, end: end_arr, size: size_arr, if_operon: if_operon_arr}) df_operon_info df_arr = [] df_operon_info.each_row do |row| axis_arr=[] row[:begin].step(row[:end], 1000){|val| axis_arr.push(val)} val_arr=Array.new(axis_arr.length, -0) name_arr=Array.new(axis_arr.length, '') df_arr.push(Nyaplot::DataFrame.new({axis: axis_arr, val: val_arr, name: name_arr})) end df_operon_info.df = df_arr df_operon_info path = File.expand_path("../data/ttest.csv", __FILE__) df_ttest = Nyaplot::DataFrame.from_csv(path) df_operon df_operon.filter{|row| row[:probeset] == "aceA_b4015_st"}.column(:locbegin).to_a[0] df_ttest.each_row do |row1| name = row1[:name] locbegin = df_operon.filter{|row| row[:probeset] == name}.column(:locbegin).to_a[0] next if locbegin.nil? df_operon_info.each_row do |row| if locbegin > row[:begin] && locbegin < row[:end] row[:df].each_row do |nest_row| if locbegin < nest_row[:axis] + 1000 && locbegin > nest_row[:axis] nest_row[:val] = row1[:dm] nest_row[:name] = row1[:name] end end end end end df_operon_info df_operon_info.each_row do |row| unless row[:df].val.to_a.all?{|val| !val.nil?} print "hoge" end end "" plot = Nyaplot::CircularPlot.new(df_operon_info, :name, :df) plot.color(['#999999','#ef8a62']) plot.fill_by(:if_operon) arc = plot.add(1, :arc, :axis, :val) arc.color(["#a50026"]) labels = plot.add(2, :labels, :axis, :name) labels.text_size(0.5) plot.text_size("0") plot.padding(0.2) plot.show plot.group_by