class GenomeTables
Public Class Methods
new( genome )
click to toggle source
# File lib/copycats/genome.rb, line 92 def initialize( genome ) @genome = genome end
Public Instance Methods
build()
click to toggle source
# File lib/copycats/genome.rb, line 96 def build pos = 0 buf = "" genes = @genome.genes TRAITS.each do |key, trait| gene = genes[key] next if gene.nil? ## skip future_1, future_2, etc. buf << "#{trait[:name]} (Genes #{trait[:genes]})\n\n" ### ## fix/todo: add stars for purity? ## **** - all traits the same ## *** - two same pairs of traits ## ** - one pair of same traits buf << "|Gene |Binary |Kai |Trait | |\n" buf << "|------|---------|-----|---------|---|\n" buf << "| #{pos} | #{Kai::BINARY[gene.d]} | #{gene.d} | **#{fmt_trait(trait[:kai][gene.d])}** | d |\n"; pos+=1 buf << "| #{pos} | #{Kai::BINARY[gene.r1]} | #{gene.r1} | #{fmt_trait(trait[:kai][gene.r1])} | r1 |\n"; pos+=1 buf << "| #{pos} | #{Kai::BINARY[gene.r2]} | #{gene.r2} | #{fmt_trait(trait[:kai][gene.r2])} | r2 |\n"; pos+=1 buf << "| #{pos} | #{Kai::BINARY[gene.r3]} | #{gene.r3} | #{fmt_trait(trait[:kai][gene.r3])} | r3 |\n"; pos+=1 buf << "\n" if key == :body ## add legend for first entry buf << "d = dominant, r1 = 1st order recessive, r2 = 2nd order recessive, r3 = 3rd order recessive\n\n" end end buf end
fmt_trait( trait )
click to toggle source
helpers
# File lib/copycats/genome.rb, line 133 def fmt_trait( trait ) (trait.nil? || trait.empty?) ? '?' : trait end