# TinySimulator

The **tinySimulator** is a small and (somewhat) memory efficient forward simulator. It simulates DNA sequences over time, allowing for the possibility of mutation, recombination, and negative selection.

## Contents

## How it Works

Each DNA sequence is represented by a sorted array of integers, where each integer represents a site where the sequence differs from the original ancestral sequence. Each sequence is derived from two immediate ancestors through a recombination and mutation process. Optionally, sequences can be selected against.

## Command Line Options

### General Simulator Options

- --seed
*123456* - Sets the random seed used for random number generation. The default value for this option is currently 123456.

- --runs
*100* - Sets the number of simulations to run. The default for this option is currently 100.

### Sequence Parameters

- --length
- Length of the sequence to be simulated, in base-pairs

- --mutationRate 1.0e-8
- Mutation rate, per base pair per generation. The default is 10
^{-8}.

- --recombRate 1.0e-8
- Recombination rate between consecutive base pairs, per generation. The default is 10
^{-8}. This rate is consistent with an approximation recombination rate of 1 cM per Mb.

### Demography

- --n
*100* - Number of chromosomes to sample at the end of simulation. The default is 100.

- --model
*filename* - Specifies the name of a text file containing demographic history of the population to be simulated. The file should be a text delimited file with two columns. The first column should specify an interval in generations. The second column should specify the population size at the end of the interval. For the first time interval, a constant size population is assumed. For subsequent intervals, the population grows in size exponential from its previous size. An example follows:

80000 20000 # Simulate 20,000 chromosomes to equilibrium 1 5000 # Instant bottleneck to 5,000 chromosomes 500 1000000 # Exponential growth to 1,000,000 chromosomes

### Selection Coefficients

- --Shet 1.00
- Selection coefficient for heterozygous individuals, relative to homozygotes for the ancestral allele. In the current, simple, implementation, this value must be <=1.00 and >0.00.

- --Shom 1.00
- Selection coefficient for individuals with two derived alleles, whether homozygotes or compound heterozygotes. The coefficient is relative to homozygotes for the ancestral allele. In the current, simple, implementation, this value must be <=1.00 and >0.00.

It is expected that future versions will allow more flexible models for selection, potentially including frequency dependent selection where the selection coefficient is a function of allele or genotype frequency.

## Source Code

To download program source code, follow this link.