gpmap.simulate

gpmap.simulate.base module

class gpmap.simulate.base.BaseSimulation(wildtype, mutations, *args, **kwargs)

Bases: gpmap.gpm.GenotypePhenotypeMap

Build a simulated GenotypePhenotypeMap. Generates random phenotypes.

build()
classmethod from_length(length, alphabet_size=2, *args, **kwargs)

Create a simulate genotype-phenotype map from a given genotype length.

Parameters:
  • length (int) – length of genotypes
  • alphabet_size (int (optional)) – alphabet size
Returns:

self

Return type:

GenotypePhenotypeSimulation

set_stdeviations(sigma)

Add standard deviations to the simulated phenotypes, which can then be used for sampling error in the genotype-phenotype map.

Parameters:sigma (float or array-like) – Adds standard deviations to the phenotypes. If float, all phenotypes are given the same stdeviations. Else, array must be same length as phenotypes and will be assigned to each phenotype.
gpmap.simulate.base.random_mutation_set(length, alphabet_size=2, type='AA')

Generate a random mutations dictionary for simulations.

Parameters:
  • length (length of genotypes) –
  • alphabet_size (int or list) – alphabet size at each site. if list is given, will make site i have size alphab_size[i].
  • type ('AA' or "DNA') – Use amino acid alphabet or DNA alphabet

gpmap.simulate.fuji module

class gpmap.simulate.fuji.MountFujiSimulation(wildtype, mutations, field_strength=1, roughness_width=None, roughness_dist='normal', *args, **kwargs)

Bases: gpmap.simulate.base.BaseSimulation

Constructs a genotype-phenotype map from a Mount Fuji model. [1]_

A Mount Fuji sets a “global” fitness peak (max) on a single genotype in the space. The fitness goes down as a function of hamming distance away from this genotype, called a “fitness field”. The strength (or scale) of this field is linear and depends on the parameters field_strength. Roughness can be added to the Mount Fuji model using a random roughness parameter. This assigns a random

\[f(g) = \nu (g) + c \cdot d(g_0, g)\]

where $nu$ is the roughness parameter, $c$ is the field strength, and $d$ is the hamming distance between genotype $g$ and the reference genotype.

Parameters:
  • wildtype (str) – reference genotype to put the
  • mutations (dict) – mutations alphabet for each site
  • field_strength (float) – field strength
  • roughness_width (float) – Width of roughness distribution
  • roughness_dist (str, 'normal') – Distribution used to create noise around phenotypes.

References

_ [1] Szendro, Ivan G., et al. “Quantitative analyses of empirical fitness
landscapes.” Journal of Statistical Mechanics: Theory and Experiment 2013.01 (2013): P01005.
build()

Construct phenotypes using a rough Mount Fuji model.

field_strength
classmethod from_length(length, field_strength=1, roughness_width=None, roughness_dist='normal', *args, **kwargs)

Constructs a genotype-phenotype map from a Mount Fuji model. [1]_

A Mount Fuji sets a “global” fitness peak (max) on a single genotype in the space. The fitness goes down as a function of hamming distance away from this genotype, called a “fitness field”. The strength (or scale) of this field is linear and depends on the parameters field_strength. Roughness can be added to the Mount Fuji model using a random roughness parameter. This assigns a random

\[f(g) = \nu (g) + c \cdot d(g_0, g)\]

where $nu$ is the roughness parameter, $c$ is the field strength, and $d$ is the hamming distance between genotype $g$ and the reference genotype.

Parameters:
  • length (int) – length of the genotypes.
  • field_strength (float) – field strength
  • roughness_width (float) – Width of roughness distribution
  • roughness_dist (str, 'normal') – Distribution used to create noise around phenotypes.
hamming

Hamming distance from reference

roughess_dist

Roughness distribution.

roughness

Array of roughness values for all genotypes

roughness_dist

Roughness distribution.

roughness_width
scale

Mt. Fuji phenotypes without noise.

gpmap.simulate.hoc module

class gpmap.simulate.hoc.HouseOfCardsSimulation(wildtype, mutations, k_range=(0, 1), *args, **kwargs)

Bases: gpmap.simulate.nk.NKSimulation

Construct a ‘House of Cards’ fitness landscape.

gpmap.simulate.nk module

class gpmap.simulate.nk.NKSimulation(wildtype, mutations, K, k_range=(0, 1), *args, **kwargs)

Bases: gpmap.simulate.base.BaseSimulation

Generate genotype-phenotype map from NK fitness model. Creates a table with binary sub-sequences that determine the order of epistasis in the model.

The NK fitness landscape is created using a table with binary, length-K, sub-sequences mapped to random values. All genotypes are binary with length N. The fitness of a genotype is constructed by summing the values of all sub-sequences that make up the genotype using a sliding window across the full genotype.

For example, imagine an NK simulation with N=5 and K=2. To construct the fitness for the 01011 genotype, select the following sub-sequences from an NK table “01”, “10”, “01”, “11”, “10”. Sum their values together.

nk_table

table with binary sub-sequences as keys which are used to construct phenotypes following an NK routine

Type:dict
keys

array of keys in NK table.

Type:array
values

array of values in the NK table.

Type:array
build()

Build phenotypes from NK table.

keys

NK table keys.

nk_table

NK table mapping binary sequence to value.

set_order(K)

Set the order (K) of the NK model.

set_random_values(k_range=(0, 1))

Set the values of the NK table by drawing from a uniform distribution between the given k_range.

set_table_values(values)

Set the values of the NK table from a list/array of values.

values

NK table values

Module contents