Plotting model

Example of demographic model plot that GADMA draws during run:


GADMA always draws final best models during genetic algorithms search for best solutions.

However, models can be drawn during the pipeline every N``th iteration of each genetic algorithm. ``N is equal to the value of Draw models every N iteration option in the parameter file. So to enable drawing one should set this option in file.


Don’t draw models very often: changes are usually not very significant and drawing takes some time, so optimization will be slower.


One can disable drawing by setting Draw models every N iteration : 0 in the parameter file. This is also the default behaviour. Final models will be drawn anyway to the base output directory.

Models are drawn with the moments or demes (+ demesdraw) library, so one of them should be installed if one wants to have pictures. In the top left corner there is a size of ancestry population. Other parameters one can find in string representation of the model in the log files.

Choose engine for plotting

GADMA allows to draw model plots with one of the following packages:

  • demes + demesdraw (default)
  • moments
  • momi

The picture above is example of moments plotting. The demes library plots are vertically oriented and looks a little different. The example of demes drawing is below:


or with momi engine (note that momi does not draw linear size change and migrations):


One could choose the engine for model plotting by setting:

# param_file
model_plot_engine: demes

Time units on model plot

Time on the demographic model plot can be drawn in units of years, thousand years or in genetic units. By default, the choice depends on the Time for generation option in the parameter file: if it is set to some value (in years) then time will be shown in years, otherwise it will be in genetic units.


If Time for generation is specified, it should be consistent with another option: Theta0, which is described the corresponding section.

But, of course, it is possible to tell GADMA which units are preferable. For example, if one wants time to be in thousands of years on the pictures, as it is a big value in years:

# param_file
Time for generation: 25  # years
Units of time in drawing : thousand years

Plotting after GADMA finished

Example of model’s plot that was drawn with generated python script:


Sometimes final pictures aren’t satisfying or one didn’t draw for some reasons (didn’t want to install moments, wanted a fast launch) it is possible to plot demographic model (and only it) again.

To do it one should run the corresponding generated Python script for the model. For example, the final model can be drawn again in the following way:

$ python


It is possible only if one has moments installed.


One can change code inside the file and draw again if the picture is not satisfying.