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