class Genome

This class stands for the genome. It is a description of all the gene describing a specific population.

Constants

DEFAULT_CROSS_OVER_RATE

Attributes

cross_over_rate[R]
gene_positions[RW]

Public Class Methods

new(genome_description) click to toggle source
# File lib/genome.rb, line 10
def initialize(genome_description)
  unless genome_description.is_a? Array
    raise 'Genome description MUST be an Array'
  end
  initialize_genes_and_chromosomes_from! genome_description
  @cross_over_rate = DEFAULT_CROSS_OVER_RATE
end

Public Instance Methods

create_random_karyotype() click to toggle source
# File lib/genome.rb, line 27
def create_random_karyotype
  Karyotype.create_random_from(self, @chromosomes_description)
end
cross_over_rate=(rate) click to toggle source
# File lib/genome.rb, line 18
def cross_over_rate=(rate)
  raise 'cross_over_rate must be included in [0,1]' unless rate.between?(0, 1)
  @cross_over_rate = rate
end
get_gene_position(gene_name) click to toggle source
# File lib/genome.rb, line 23
def get_gene_position(gene_name)
  @gene_positions[gene_name]
end

Private Instance Methods

initialize_genes_and_chromosomes_from!(genome_description) click to toggle source
# File lib/genome.rb, line 33
def initialize_genes_and_chromosomes_from!(genome_description)
  @chromosomes_description = []
  @gene_positions = {}
  genome_description.each_with_index do |chomosome_hash, chromosome_position|
    gene_array = []
    chomosome_hash.keys.each_with_index do |gene_name, gene_position|
      @gene_positions[gene_name] = [chromosome_position, gene_position]
      gene_array << chomosome_hash[gene_name]
    end
    @chromosomes_description << gene_array
  end
end