elynx-markov-0.3.0: src/ELynx/Data/MarkovProcess/PhyloModel.hs
-- |
-- Module : ELynx.Data.MarkovProcess.PhyloModel
-- Description : Phylogenetic model
-- Copyright : (c) Dominik Schrempf 2020
-- License : GPL-3.0-or-later
--
-- Maintainer : dominik.schrempf@gmail.com
-- Stability : unstable
-- Portability : portable
--
-- Creation date: Fri Feb 1 12:43:06 2019.
--
-- A phylogenetic model is a complete description of the evolutionary process. At
-- the moment, it is either a mixture model or a plain substitution model, but more
-- complicated models may be added in the future.
--
-- To be imported qualified.
module ELynx.Data.MarkovProcess.PhyloModel
( PhyloModel (..),
getAlphabet,
summarize,
)
where
import qualified Data.ByteString.Lazy.Char8 as L
import ELynx.Data.Alphabet.Alphabet
import qualified ELynx.Data.MarkovProcess.MixtureModel as M
import qualified ELynx.Data.MarkovProcess.SubstitutionModel as S
-- | A phylogenetic model is a mixture model or a substitution model. More
-- complicated models may be added.
data PhyloModel = MixtureModel M.MixtureModel | SubstitutionModel S.SubstitutionModel
deriving (Show, Read)
-- | Extract code from phylogenetic model.
getAlphabet :: PhyloModel -> Alphabet
getAlphabet (MixtureModel mm) = M.getAlphabet mm
getAlphabet (SubstitutionModel sm) = S.alphabet sm
-- | Summarize a phylogenetic model; lines to be printed to screen or log.
summarize :: PhyloModel -> [L.ByteString]
summarize (MixtureModel mm) = M.summarize mm
summarize (SubstitutionModel sm) = S.summarize sm