Introduction

Dinf is discriminator-based inference for population genetics. It uses a neural network to discriminate between a target dataset and a simulated dataset. Inference is done by finding simulation parameters that produce data closely matching the target dataset. Dinf provides a Python API for creating simulation models, and a CLI for discriminator training, inference, and plotting.

Standing on the shoulders of giants

Dinf uses and takes inspiration from the following projects.

  • JAX, flax, and optax for training neural networks.

  • msprime and the tskit ecosystem for simulations.

  • cyvcf2 for reading VCF and BCF files (which itself uses htslib).

  • matplotlib for creating plots.

  • pg-gan does discriminator-based inference using simulated annealing in a GAN (generative adversarial network). Dinf implements and extends many ideas from pg-gan.