packages feed

slynx-0.0.1: app/Main.hs

{- |
Module      :  Main
Description :  Work with molecular sequence data
Copyright   :  (c) Dominik Schrempf 2019
License     :  GPL-3

Maintainer  :  dominik.schrempf@gmail.com
Stability   :  unstable
Portability :  portable

Creation date: Thu Sep  5 21:53:07 2019.

-}

module Main where

import           Control.Monad.Trans.Reader

import           Options

import           Concatenate.Concatenate
import           Examine.Examine
import           Filter.Filter
import           Simulate.Simulate
import           SubSample.SubSample
import           Translate.Translate

import           ELynx.Tools.Logger
import           ELynx.Tools.Options

main :: IO ()
main = do
  Arguments g c <- parseArguments
  let fn  = outFileBaseName g
      lvl = verbosity g
      lf  = (++ ".log") <$> fn
  case c of
    Concatenate a -> runReaderT   (eLynxWrapper lvl lf concatenateHeader   $ concatenateCmd fn) a
    Examine a -> runReaderT       (eLynxWrapper lvl lf examineHeader       $ examineCmd fn) a
    FilterRows a -> runReaderT    (eLynxWrapper lvl lf filterRowsHeader    $ filterRowsCmd fn) a
    FilterColumns a -> runReaderT (eLynxWrapper lvl lf filterColumnsHeader $ filterColumnsCmd fn) a
    Simulate a -> runReaderT      (eLynxWrapper lvl lf simulateHeader      $ simulateCmd fn) a
    SubSample a -> runReaderT     (eLynxWrapper lvl lf subSampleHeader     $ subSampleCmd fn) a
    Translate a -> runReaderT     (eLynxWrapper lvl lf translateHeader     $ translateCmd fn) a