packages feed

BiobaseInfernal-0.8.1.0: Biobase/SElab/Model/Types.hs

-- | Generic model wrapper.

module Biobase.SElab.Model.Types where

import           Control.Lens
import           Data.Text (Text)
import           GHC.Generics (Generic)

import           Biobase.Types.Accession

import           Biobase.SElab.CM.Types (CM)
import           Biobase.SElab.HMM.Types (HMM)
import qualified Biobase.SElab.CM.Types as CM
import qualified Biobase.SElab.HMM.Types as HMM



-- | Generic model wrapper.

type Model = Either (HMM ()) CM

-- | A getter for the name of the model. Be it CM or HMM.

modelName :: Getter Model Text
modelName = to f
  where f m = case m of
                Left hmm -> HMM._name hmm
                Right cm -> CM._name cm

modelAccession :: Getter Model (Accession ())
modelAccession = to f
  where f m = case m of
                Left hmm -> retagAccession $ HMM._accession hmm
                Right cm -> retagAccession $ CM._accession  cm