#!/usr/bin/env ruby require 'bio' pathway = ARGV.shift || "path:bsu00010" expression = ARGV.shift || "ex00258.dat" keggapi = Bio::KEGG::API.new gene_ratio = Hash.new File.open(expression) do |file| file.each do |line| next if line[/^#/] data = line.chomp.split("\t") gene_id = data[0] c_sig = data[3].to_i - data[4].to_i t_sig = data[5].to_i - data[6].to_i ratio = t_sig.to_f / c_sig.to_f gene_ratio[gene_id] = ratio end end fg_list = Array.new bg_list = Array.new genes = keggapi.get_genes_by_pathway(pathway) genes.each do |gene| gene_id = gene.sub(/[a-z]{3}:/, '') ratio = gene_ratio[gene_id] if ratio < 0.5 fg_list << "#000000" bg_list << "#00ff00" elsif ratio < 2 fg_list << "#000000" bg_list << "#ffff00" else fg_list << "#000000" bg_list << "#ff0000" end end puts keggapi.color_pathway_by_objects(pathway, genes, fg_list, bg_list)