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 +8/−1
- README.md +7/−8
- elynx-tools.cabal +36/−36
- src/ELynx/Tools/ByteString.hs +1/−1
- src/ELynx/Tools/Definitions.hs +1/−1
- src/ELynx/Tools/ELynx.hs +7/−4
- src/ELynx/Tools/Environment.hs +1/−1
- src/ELynx/Tools/Equality.hs +1/−1
- src/ELynx/Tools/InputOutput.hs +1/−1
- src/ELynx/Tools/Logger.hs +4/−4
- src/ELynx/Tools/Options.hs +19/−17
- src/ELynx/Tools/Reproduction.hs +22/−15
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