# Changelog for epi-sim

## 0.2.2.0

- Clean up for a release candidate.

## 0.2.1.0

- Update the stack resolver to `lts-16.17` and add bounds on the package
  versions to use.
- Remove dependency upon `epi-types` by moving its modules into this package and
  include the tests from that package.
- Remove unsed `Setup.hs` file.

## 0.2.0.1

- Improve documentation in `Epidemic.BDSCOD`.
- Upgrade to `epi-types-0.2.1.2` for the bug fix.

## 0.2.0.0

- Predicates such as `isSampling` and `isOccurrence` have been replaced with
  clearer named alternatives: `isNonReconTreeObservation` and `isReconTreeLeaf`
  to avoid uncertainty about whether scheduled events are included.
- Upgrade to `epi-types-0.2.1.0` which adds substantial amounts of Newick
  functionality meaning this can be removed.

## 0.1.9.0

- Upgrade to `epi-types-0.2.0.0` which makes a lot of functions redundant so
  they have been removed.

## 0.1.8.8

- Upgrade to `epi-types-0.1.1.1` and remove `joinTimed` since it is no longer
  needed.

## 0.1.8.7

- Upgrade to `epi-types-0.1.1.0` and start using the `Timed *` class.

## 0.1.8.6

- Use `-j2` to slightly improve compilation time.
- Include a `observedEvents` function which was missing from the
  `InhomogeneousBDS` module.

## 0.1.8.5

- Start using cabal directly without hpack.
- Move time dependent parameters into a `epi-sim` package so they are easier to
  share, and import them here.

## 0.1.8.4

- Improve documentation of construction of `inhomBDSRates` and include a test to
  check this conforms to expectations.
- Implement a birth-death-sampling model with time-dependent birth rates and
  include an example of what this returns in the README.

## 0.1.8.3

- Improve error handling in `birth-death-lines.R`.
- Refactor some of the plotting code in `birth-death-lines.R` to make it easier
  to maintain.
- Use the `future` and `furrr` packages in R to generate the visualisation of a
  simulation in parallel since the serial version is frustratingly slow. Both
  packages are on CRAN so it does not seem unreasonable.

## 0.1.8.2

- Include an additional parameter in the `simulation` and
  `simulationWithSystemRandom` to determine whether the simulation should be
  conditioned on having at least two sampled leaves in the reconstructed tree.
  It does this by repeatedly simulating until such a tree is acheved.

## 0.1.8.1

- Implement an example of the inhomogeneous birth-death process and include it
  in the `README`.
- Fix broken example using the BDSCOD model and organise examples in `examples/`
  rather than just the single one in `app/`.

## 0.1.8.0

- Define an inhomogeneous birth-death process in `InhomogeneousBD`.
- Define an inhomogeneous exponential random sampler using `Timed Rate`s.
- Extend the `ModelParameters` class to have a `birthProb` function.
- Include a `Timed` type for time varying values.
- Include a test that the final size of a birth-death simulation is
  approximately correct.
- Format the changelog to make it easier to read outside of a browser.
- Fix naming convention and exports in the `BirthDeath`, `BirthDeathSampling`
  and `BirthDeathSamplingOccurrence`modules to conform to the pattern used in
  the `BDSCOD` module and move `simulation` into the `Utility` module since it
  is common between all models
- Adjust the type of the `ModelParameters` interface to include potential time
  dependence.

## 0.1.7.2

- Make `Event` an instance of `FromRecord` to match with `ToRecord`.

## 0.1.7.1

- Provide `vis/birth-death-lines.R` which visualises a simulation.

## 0.1.7.0

- Provide `vis/ott.R` to visualise observations through time and make
  `vis/ltt.R` ignore disasters.
- Replace some Catastrophe specific functions with equivalents for handling
  scheduled events more generally
  + `noCatastrophe` becomes `noScheduledEvent`
  + `firstCatastrophe` becomes `firstScheduled`
- Change the naming of the BDSCO model to be consistent with the new BDSCOD
  model.
- Implement a birth-death-sampling-catastrophe-occurrence-disaster model in
  `Epidemic.BDSCOD`.

## 0.1.6.2

- Update the visualisation code in `vis/ltt.R` such that it parses the
  catastrophe events to draw the LTT.
- BUG FIX: In the observed events catastrophes are replicated when they should
  not be.

## 0.1.6.1

- Include a visualisation script for the LTT of reconstructed trees: `vis/ltt.R`
  which is described in the README.

## 0.1.6.0

- Move the `ToField` declarations into the `Epidemic` module to avoid orphaned
  instance and select a representation for multiple people in the CSV output.
- Implement a birth-death-sampling-catastrophe-occurrence model in
  `Epidemic.BirthDeathSamplingCatastropheOccurrence`; it's a shame about the
  length of the name.
- Include a contructor for catastrophe events in which multiple people can be
  sampled simultaneously.

## 0.1.5.1

- Include a `.gitignore`.
- Improved documentation with `haddock`.

## 0.1.5.0

- Include some testing with `hspec`.
- The `Epidemic.BirthDeathSamplingOccurrence` module now has a function to
  extract the observable events.
- Change the simulation functions to return events in the order they occurred.
- Change the configuration functions to take tuples of model parameters.

## 0.1.4.0

- Make `Event` an instance of the `Ord` typeclass.
- Implement types and conversion functions for a `TransmissionTree` and a
  `SampleTree`.
- Implement a parser and printer for Newick in `Epidemic.Utility`.

## 0.1.3.0

- Implement a birth-death-sampling-occurrence model in
  `Epidemic.BirthDeathSamplingOccurrence`.
- Implement a visualisation of the birth-death-sampling LTT in
  `vis/birthDeathSamplingVisualisation.R`.
- Implement a birth-death-sampling model in `Epidemic.BirthDeathSampling`.

## 0.1.2.0

- Implement a visualisation of the infection network in
  `vis/infection-tree.vg.json`.
- Implement `Epidemic.Utility.eventsAsJsonTree`.
- Move the `Epidemic.Simulation` module to `Epidemic.Utility`.

## 0.1.1.0

- Write the output to CSV using `cassava`

## 0.1.0.0

- Basic prototype to simulate a constant rate birth-death process.