packages feed

elynx-tools 0.6.1.1 → 0.7.0.1

raw patch · 12 files changed

+108/−90 lines, 12 filesdep +randomdep −mwc-randomdep −vectorPVP ok

version bump matches the API change (PVP)

Dependencies added: random

Dependencies removed: mwc-random, vector

API changes (from Hackage documentation)

+ ELynx.Tools.Reproduction: fromSeedOpt :: SeedOpt -> Maybe Int
- ELynx.Tools.Reproduction: Fixed :: Vector Word32 -> SeedOpt
+ ELynx.Tools.Reproduction: Fixed :: Int -> SeedOpt
- ELynx.Tools.Reproduction: RandomSet :: Vector Word32 -> SeedOpt
+ ELynx.Tools.Reproduction: RandomSet :: Int -> SeedOpt

Files

ChangeLog.md view
@@ -5,9 +5,16 @@ ## Unreleased changes  +## Version 0.7.0.1++-   Random 1.2: Parallel functions now require an \`IOGenM\` random number+    generator.+-   Fix splitting of the random number generator.++ ## Version 0.6.1.1 --   Remove plotting functionality (gnuplot incompatible with ghc921).+-   Remove plotting functionality (gnuplot incompatible with ghc922). -   Read files strictly. -   Refactor; flatten model hierarchy. 
README.md view
@@ -2,7 +2,7 @@  # The ELynx Suite -Version: 0.6.1.1.+Version: 0.7.0.0. Reproducible evolution made easy.  <p align="center"><img src="https://travis-ci.org/dschrempf/elynx.svg?branch=master"/></p>@@ -74,9 +74,9 @@     # OR: slynx --help      Up to date-    ELynx Suite version 0.6.1.1.+    ELynx Suite version 0.7.0.0.     Developed by Dominik Schrempf.-    Compiled on February 22, 2022, at 15:10 pm, UTC.+    Compiled on July 10, 2022, at 08:48 am, UTC.          Usage: slynx [-v|--verbosity VALUE] [-o|--output-file-basename NAME]                  [-f|--force] [--no-elynx-file] COMMAND@@ -144,16 +144,16 @@     # OR: slynx simulate --help      Up to date-    ELynx Suite version 0.6.1.1.+    ELynx Suite version 0.7.0.0.     Developed by Dominik Schrempf.-    Compiled on February 22, 2022, at 15:10 pm, UTC.+    Compiled on July 10, 2022, at 08:48 am, UTC.          Usage: slynx simulate (-t|--tree-file Name) [-s|--substitution-model MODEL]                           [-m|--mixture-model MODEL] [-e|--edm-file NAME]                           [-p|--siteprofile-files NAMES]                           [-w|--mixture-model-weights "[DOUBLE,DOUBLE,...]"]                           [-g|--gamma-rate-heterogeneity "(NCAT,SHAPE)"]-                          (-l|--length NUMBER) [-S|--seed [INT]]+                          (-l|--length NUMBER) [-S|--seed INT]       Simulate multi sequence alignments.          Available options:@@ -175,8 +175,7 @@       -g,--gamma-rate-heterogeneity "(NCAT,SHAPE)"                                Number of gamma rate categories and shape parameter       -l,--length NUMBER       Set alignment length to NUMBER-      -S,--seed [INT]          Seed for random number generator; list of 32 bit-                               integers with up to 256 elements (default: random)+      -S,--seed INT            Seed for random number generator (default: random)       -h,--help                Show this help text          Substitution models:
elynx-tools.cabal view
@@ -1,57 +1,57 @@-cabal-version:  3.0-name:           elynx-tools-version:        0.6.1.1-synopsis:       Tools for ELynx-description:    Please see the README on GitHub at <https://github.com/dschrempf/elynx>.-category:       Bioinformatics-homepage:       https://github.com/dschrempf/elynx#readme-bug-reports:    https://github.com/dschrempf/elynx/issues-author:         Dominik Schrempf-maintainer:     dominik.schrempf@gmail.com-copyright:      Dominik Schrempf (2021)-license:        GPL-3.0-or-later-license-file:   LICENSE-build-type:     Simple+cabal-version:      3.0+name:               elynx-tools+version:            0.7.0.1+synopsis:           Tools for ELynx+description:+  Please see the README on GitHub at <https://github.com/dschrempf/elynx>. +category:           Bioinformatics+homepage:           https://github.com/dschrempf/elynx#readme+bug-reports:        https://github.com/dschrempf/elynx/issues+author:             Dominik Schrempf+maintainer:         dominik.schrempf@gmail.com+copyright:          2021 Dominik Schrempf+license:            GPL-3.0-or-later+license-file:       LICENSE+build-type:         Simple extra-source-files:-    README.md-    ChangeLog.md+  ChangeLog.md+  README.md  source-repository head-  type: git+  type:     git   location: https://github.com/dschrempf/elynx  library   exposed-modules:-      ELynx.Tools.ByteString-      ELynx.Tools.Definitions-      ELynx.Tools.ELynx-      ELynx.Tools.Environment-      ELynx.Tools.Equality-      ELynx.Tools.InputOutput-      ELynx.Tools.Logger-      ELynx.Tools.Options-      ELynx.Tools.Reproduction-  other-modules:-      Paths_elynx_tools-  autogen-modules:-      Paths_elynx_tools-  hs-source-dirs: src-  ghc-options: -Wall -Wunused-packages+    ELynx.Tools.ByteString+    ELynx.Tools.Definitions+    ELynx.Tools.ELynx+    ELynx.Tools.Environment+    ELynx.Tools.Equality+    ELynx.Tools.InputOutput+    ELynx.Tools.Logger+    ELynx.Tools.Options+    ELynx.Tools.Reproduction++  other-modules:    Paths_elynx_tools+  autogen-modules:  Paths_elynx_tools+  hs-source-dirs:   src+  ghc-options:      -Wall -Wunused-packages   build-depends:-      aeson+    , aeson     , attoparsec-    , base >=4.7 && <5+    , base                  >=4.7 && <5     , base16-bytestring     , bytestring     , cryptohash-sha256     , directory     , hmatrix-    , mwc-random     , optparse-applicative+    , random     , template-haskell     , time     , transformers-    , vector     , zlib+   default-language: Haskell2010
src/ELynx/Tools/ByteString.hs view
@@ -1,6 +1,6 @@ -- | -- Module      :  ELynx.Tools.ByteString--- Copyright   :  (c) Dominik Schrempf 2021+-- Copyright   :  2021 Dominik Schrempf -- License     :  GPL-3.0-or-later -- -- Maintainer  :  dominik.schrempf@gmail.com
src/ELynx/Tools/Definitions.hs view
@@ -1,7 +1,7 @@ -- | -- Module      :  ELynx.Tools.Definitions -- Description :  Some global definitions--- Copyright   :  (c) Dominik Schrempf 2021+-- Copyright   :  2021 Dominik Schrempf -- License     :  GPL-3.0-or-later -- -- Maintainer  :  dominik.schrempf@gmail.com
src/ELynx/Tools/ELynx.hs view
@@ -4,7 +4,7 @@ -- | -- Module      :  ELynx.Tools.ELynx -- Description :  The ELynx transformer--- Copyright   :  (c) 2021 Dominik Schrempf+-- Copyright   :  2021 Dominik Schrempf -- License     :  GPL-3.0-or-later -- -- Maintainer  :  dominik.schrempf@gmail.com@@ -30,7 +30,7 @@ import ELynx.Tools.Options import ELynx.Tools.Reproduction import System.IO-import System.Random.MWC+import System.Random.Stateful  -- | ELynx transformer to be used with all executables. type ELynx a = ReaderT (Environment a) IO@@ -38,8 +38,7 @@ fixSeed :: Reproducible a => a -> IO a fixSeed x = case getSeed x of   (Just RandomUnset) -> do-    g <- createSystemRandom-    s <- fromSeed <$> save g+    s <- uniformM globalStdGen :: IO Int     return $ setSeed x (RandomSet s)   _ -> return x @@ -126,6 +125,10 @@       logInfoS $ "Write " <> name <> " to file '" <> fp <> "'."       em <- executionMode . globalArguments <$> ask       liftIO $ writeGZFile em fp res++-- BUG: 'outHandle' is flawed. If '-o BASENAME' is not provided, the output+-- handle is stdout, but then, when closing the handle, stdout will be closed!+-- Big Bug.  -- | Get an output handle, does not support compression. The handle has to be -- closed after use!
src/ELynx/Tools/Environment.hs view
@@ -1,7 +1,7 @@ -- | -- Module      :  ELynx.Tools.Environment -- Description :  Runtime environment--- Copyright   :  (c) 2021 Dominik Schrempf+-- Copyright   :  2021 Dominik Schrempf -- License     :  GPL-3.0-or-later -- -- Maintainer  :  dominik.schrempf@gmail.com
src/ELynx/Tools/Equality.hs view
@@ -1,6 +1,6 @@ -- | -- Module      :  ELynx.Tools.Equality--- Copyright   :  (c) Dominik Schrempf 2021+-- Copyright   :  2021 Dominik Schrempf -- License     :  GPL-3.0-or-later -- -- Maintainer  :  dominik.schrempf@gmail.com
src/ELynx/Tools/InputOutput.hs view
@@ -7,7 +7,7 @@  -- | -- Module      :  ELynx.Tools.InputOutput--- Copyright   :  (c) Dominik Schrempf 2021+-- Copyright   :  2021 Dominik Schrempf -- License     :  GPL-3.0-or-later -- -- Maintainer  :  dominik.schrempf@gmail.com
src/ELynx/Tools/Logger.hs view
@@ -8,7 +8,7 @@ -- | -- Module      :  ELynx.Tools.Logger -- Description :  Monad logger utility functions--- Copyright   :  (c) Dominik Schrempf 2021+-- Copyright   :  2021 Dominik Schrempf -- License     :  GPL-3.0-or-later -- -- Maintainer  :  dominik.schrempf@gmail.com@@ -194,9 +194,9 @@   as <- liftIO getArgs   logInfoS $     intercalate "\n" $-      hline :-      ("Command name: " ++ cmdName) :-      cmdDsc+      hline+        : ("Command name: " ++ cmdName)+        : cmdDsc         ++ ["Starting time: " ++ t, "Command line: " ++ p ++ " " ++ unwords as]   logInfoS hline   where
src/ELynx/Tools/Options.hs view
@@ -5,7 +5,7 @@ -- | -- Module      :  ELynx.Tools.Options -- Description :  General ELynx options--- Copyright   :  (c) 2021 Dominik Schrempf+-- Copyright   :  2021 Dominik Schrempf -- License     :  GPL-3.0-or-later -- -- Maintainer  :  dominik.schrempf@gmail.com@@ -33,8 +33,6 @@  import Data.Aeson import Data.List-import qualified Data.Vector.Unboxed as VU-import Data.Word import ELynx.Tools.InputOutput import ELynx.Tools.Logger import ELynx.Tools.Reproduction@@ -42,23 +40,21 @@ import Options.Applicative hiding (empty) import Options.Applicative.Help.Pretty --- | Seed option for MWC. Defaults to Random.+-- | Seed option. Defaults to random. seedOpt :: Parser SeedOpt seedOpt = toSeedOpt <$> seedParser -seedParser :: Parser (Maybe (VU.Vector Word32))+seedParser :: Parser (Maybe Int) seedParser =-  optional $-    option+  optional+    $ option       auto-      ( long "seed" <> short 'S' <> metavar "[INT]"-          <> help-            ( "Seed for random number generator; "-                ++ "list of 32 bit integers with up to 256 elements (default: random)"-            )-      )+    $ long "seed"+      <> short 'S'+      <> metavar "INT"+      <> help ("Seed for random number generator (default: random)") -toSeedOpt :: Maybe (VU.Vector Word32) -> SeedOpt+toSeedOpt :: Maybe Int -> SeedOpt toSeedOpt Nothing = RandomUnset toSeedOpt (Just w) = Fixed w @@ -69,7 +65,8 @@     Fail     Overwrite     -- DO NOT CHANGE. This option is used by 'elynx redo'.-    ( long "force" <> short 'f'+    ( long "force"+        <> short 'f'         <> help           "Ignore previous analysis and overwrite existing output files."     )@@ -92,7 +89,10 @@ globalArguments :: Parser GlobalArguments globalArguments =   GlobalArguments-    <$> verbosityOpt <*> optional outFileBaseNameOpt <*> executionModeOpt <*> writeELynxOpt+    <$> verbosityOpt+    <*> optional outFileBaseNameOpt+    <*> executionModeOpt+    <*> writeELynxOpt  -- Boolean option; be verbose; default NO. verbosityOpt :: Parser Verbosity@@ -113,7 +113,9 @@ outFileBaseNameOpt :: Parser FilePath outFileBaseNameOpt =   strOption-    ( long "output-file-basename" <> short 'o' <> metavar "NAME"+    ( long "output-file-basename"+        <> short 'o'+        <> metavar "NAME"         <> help           "Specify base name of output file"     )
src/ELynx/Tools/Reproduction.hs view
@@ -8,7 +8,7 @@ -- | -- Module      :  ELynx.Tools.Reproduction -- Description :  Functions to ease reproduction of analyses--- Copyright   :  (c) Dominik Schrempf 2021+-- Copyright   :  2021 Dominik Schrempf -- License     :  GPL-3.0-or-later -- -- Maintainer  :  dominik.schrempf@gmail.com@@ -21,6 +21,7 @@ module ELynx.Tools.Reproduction   ( -- * Reproduction     SeedOpt (..),+    fromSeedOpt,     Reproducible (..),     getReproductionHash,     Reproduction (..),@@ -34,22 +35,28 @@ import Data.Aeson hiding (encode) import Data.ByteString.Base16 import qualified Data.ByteString.Char8 as BS-import qualified Data.Vector.Unboxed as VU import Data.Version-import Data.Word import GHC.Generics import Options.Applicative import Paths_elynx_tools import System.Environment +-- TODO: This should be an 'Int' (new interface).+ -- | Random or fixed seed.-data SeedOpt = RandomUnset | RandomSet (VU.Vector Word32) | Fixed (VU.Vector Word32)+data SeedOpt = RandomUnset | RandomSet Int | Fixed Int   deriving (Eq, Generic, Show)  instance FromJSON SeedOpt  instance ToJSON SeedOpt +-- | Get the seed, if set.+fromSeedOpt :: SeedOpt -> Maybe Int+fromSeedOpt RandomUnset = Nothing+fromSeedOpt (RandomSet v) = Just v+fromSeedOpt (Fixed v) = Just v+ -- | Reproducible commands have --   - a set of input files to be checked for consistency, --   - a set of output suffixes which define output files to be checked for consistency,@@ -77,17 +84,17 @@         BS.pack $           unlines $             -- Reproduction.-            progName r :-            argsStr r-              <> [showVersion (rVersion r)]-              <> files r-              <> checkSums r-              -- Reproducible.-              <> inFiles ri-              <> outSuffixes ri-              <> [cmdName @a]-              <> cmdDsc @a-              <> cmdFtr @a+            progName r+              : argsStr r+                <> [showVersion (rVersion r)]+                <> files r+                <> checkSums r+                -- Reproducible.+                <> inFiles ri+                <> outSuffixes ri+                <> [cmdName @a]+                <> cmdDsc @a+                <> cmdFtr @a   where     ri = reproducible r