Copyright | (c) Dominik Schrempf 2017 |
---|---|
License | GPLv3 |
Maintainer | dominik.schrempf@gmail.com |
Stability | unstable |
Portability | non-portable (not tested) |
Safe Haskell | None |
Language | Haskell2010 |
Calculate transition probability matrices, map rate matrices on trees, populate a tree with states according to a stationary distribution, etc.
The implementation of the Markov process is more than basic and can be improved in a lot of ways.
Synopsis
- simulate :: PrimMonad m => Int -> StationaryDistribution -> ExchangeabilityMatrix -> Tree Double -> Gen (PrimState m) -> m (Tree [State])
- simulateAndFlatten :: PrimMonad m => Int -> StationaryDistribution -> ExchangeabilityMatrix -> Tree Double -> Gen (PrimState m) -> m [[State]]
- simulateMixtureModel :: PrimMonad m => Int -> Vector R -> [StationaryDistribution] -> [ExchangeabilityMatrix] -> Tree Double -> Gen (PrimState m) -> m (Tree [State])
- simulateAndFlattenMixtureModel :: PrimMonad m => Int -> Vector R -> [StationaryDistribution] -> [ExchangeabilityMatrix] -> Tree Double -> Gen (PrimState m) -> m [[State]]
- simulateAndFlattenMixtureModelPar :: Int -> Vector R -> [StationaryDistribution] -> [ExchangeabilityMatrix] -> Tree Double -> GenIO -> IO [[[State]]]
Single rate matrix.
simulate :: PrimMonad m => Int -> StationaryDistribution -> ExchangeabilityMatrix -> Tree Double -> Gen (PrimState m) -> m (Tree [State]) Source #
Simulate a number of sites for a given substitution model. Keep states at internal nodes. The result is a tree with the list of simulated states as node labels.
simulateAndFlatten :: PrimMonad m => Int -> StationaryDistribution -> ExchangeabilityMatrix -> Tree Double -> Gen (PrimState m) -> m [[State]] Source #
Simulate a number of sites for a given substitution model. Only the states at the leafs are retained. The states at internal nodes are removed. This has a lower memory footprint.
XXX: Improve performance. Use vectors, not lists.
Mixture models.
simulateMixtureModel :: PrimMonad m => Int -> Vector R -> [StationaryDistribution] -> [ExchangeabilityMatrix] -> Tree Double -> Gen (PrimState m) -> m (Tree [State]) Source #
Simulate a number of sites for a given set of substitution models with
corresponding weights. Keep states at internal nodes. See also
simulate
.
simulateAndFlattenMixtureModel :: PrimMonad m => Int -> Vector R -> [StationaryDistribution] -> [ExchangeabilityMatrix] -> Tree Double -> Gen (PrimState m) -> m [[State]] Source #
Simulate a number of sites for a given set of substitution models with
corresponding weights. Forget states at internal nodes. See also
simulateAndFlatten
.
simulateAndFlattenMixtureModelPar :: Int -> Vector R -> [StationaryDistribution] -> [ExchangeabilityMatrix] -> Tree Double -> GenIO -> IO [[[State]]] Source #
See simulateAndFlattenMixtureModel
, parallel version.