module SubSample.Options
( SubSampleArguments (..)
, SubSample
, subSampleArguments
) where
import Control.Applicative
import Control.Monad.Logger
import Control.Monad.Trans.Reader
import Data.Word
import Options.Applicative
import Tools
import ELynx.Data.Alphabet.Alphabet
import ELynx.Tools.Options
data SubSampleArguments = SubSampleArguments
{ ssAlphabet :: Alphabet
, ssInFile :: Maybe FilePath
, ssNSites :: Int
, ssNAlignments :: Int
, ssMbSeed :: Maybe [Word32] }
type SubSample = LoggingT (ReaderT SubSampleArguments IO)
subSampleArguments :: Parser SubSampleArguments
subSampleArguments = SubSampleArguments
<$> alphabetOpt
<*> optional filePathArg
<*> subSampleNSitesOpt
<*> subSampleNAlignmentsOpt
<*> seedOpt
subSampleNSitesOpt :: Parser Int
subSampleNSitesOpt = option auto $
long "number-of-sites" <>
short 'n' <>
metavar "INT" <>
help "Number of sites randomly drawn with replacement"
subSampleNAlignmentsOpt :: Parser Int
subSampleNAlignmentsOpt = option auto $
long "number-of-alignments" <>
short 'm' <>
metavar "INT" <>
help "Number of multi sequence alignments to be created"
filePathArg :: Parser FilePath
filePathArg = strArgument $
metavar "INPUT-FILE" <>
help "Read sequences from INPUT-FILE"