def evolve_genomes(rng, pop, params, recorder=None):
import warnings<EOL>with warnings.catch_warnings():<EOL><INDENT>warnings.simplefilter("<STR_LIT:ignore>")<EOL>params.validate()<EOL><DEDENT>from ._fwdpy11 import MutationRegions<EOL>from ._fwdpy11 import evolve_without_tree_sequences<EOL>from ._fwdpy11 import dispatch_create_GeneticMap<EOL>pneutral = params.mutrate_n/(params.mutrate_n+params.mutrate_s)<EOL>mm = MutationRegions.create(pneutral, params.nregions, params.sregions)<EOL>rm = dispatch_create_GeneticMap(params.recrate, params.recregions)<EOL>if recorder is None:<EOL><INDENT>from ._fwdpy11 import RecordNothing<EOL>recorder = RecordNothing()<EOL><DEDENT>evolve_without_tree_sequences(rng, pop, params.demography,<EOL>params.mutrate_n, params.mutrate_s,<EOL>params.recrate, mm, rm, params.gvalue,<EOL>recorder, params.pself, params.prune_selected)<EOL>
Evolve a population without tree sequence recordings.  In other words,
complete genomes must be simulated and tracked.

:param rng: random number generator
:type rng: :class:`fwdpy11.GSLrng`
:param pop: A population
:type pop: :class:`fwdpy11.DiploidPopulation`
:param params: simulation parameters
:type params: :class:`fwdpy11.ModelParams`
:param recorder: (None) A temporal sampler/data recorder.
:type recorder: callable

.. note::
    If recorder is None,
    then :class:`fwdpy11.RecordNothing` will be used.