Class: GenomeMixTables

Inherits:
Object
  • Object
show all
Defined in:
lib/copycats/genome.rb

Instance Method Summary collapse

Constructor Details

#initialize(matron, sire) ⇒ GenomeMixTables

Returns a new instance of GenomeMixTables.



142
143
144
145
# File 'lib/copycats/genome.rb', line 142

def initialize( matron, sire )
  @matron = matron
  @sire   = sire
end

Instance Method Details

#buildObject



147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
# File 'lib/copycats/genome.rb', line 147

def build
  pos = 0
  buf = ""

  mgenes = @matron.genes
  sgenes = @sire.genes

  TRAITS.each do |key, trait|
    mgene  = mgenes[key]
    sgene  = sgenes[key]
    next  if mgene.nil?   ## skip future_1, future_2, etc.

    buf << "#{trait[:name]} (Genes #{trait[:genes]})\n\n"

    buf << "|Gene  |Kai  |Trait (Matron)|Kai|Trait (Sire)|   |\n"
    buf << "|------|-----|---------|-----|---------|---|\n"
    buf << "| #{pos} | #{mgene.d} | **#{fmt_trait(trait[:kai][mgene.d])}** | #{sgene.d} | **#{fmt_trait(trait[:kai][sgene.d])}** | d |\n"; pos+=1
    buf << "| #{pos} | #{mgene.r1} | #{fmt_trait(trait[:kai][mgene.r1])} | #{sgene.r1} | #{fmt_trait(trait[:kai][sgene.r1])} | r1 |\n"; pos+=1
    buf << "| #{pos} | #{mgene.r2} | #{fmt_trait(trait[:kai][mgene.r2])} | #{sgene.r2} | #{fmt_trait(trait[:kai][sgene.r2])} | r2 |\n"; pos+=1
    buf << "| #{pos} | #{mgene.r3} | #{fmt_trait(trait[:kai][mgene.r3])} | #{sgene.r3} | #{fmt_trait(trait[:kai][sgene.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) ⇒ Object

helpers



180
181
182
# File 'lib/copycats/genome.rb', line 180

def fmt_trait( trait )
  (trait.nil? || trait.empty?) ? '?' : trait
end