packages feed

elynx-tools 0.6.0.0 → 0.6.1.0

raw patch · 15 files changed

+40/−295 lines, 15 filesdep −primitivePVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependencies removed: primitive

API changes (from Hackage documentation)

- ELynx.Tools: (=~=) :: Double -> Double -> Bool
- ELynx.Tools: Arguments :: GlobalArguments -> a -> Arguments a
- ELynx.Tools: Debug :: Verbosity
- ELynx.Tools: Environment :: GlobalArguments -> a -> [Handle] -> MVar () -> UTCTime -> Environment a
- ELynx.Tools: Fail :: ExecutionMode
- ELynx.Tools: Fixed :: Vector Word32 -> SeedOpt
- ELynx.Tools: GlobalArguments :: Verbosity -> Maybe FilePath -> ExecutionMode -> Bool -> GlobalArguments
- ELynx.Tools: Info :: Verbosity
- ELynx.Tools: Overwrite :: ExecutionMode
- ELynx.Tools: Quiet :: Verbosity
- ELynx.Tools: RandomSet :: Vector Word32 -> SeedOpt
- ELynx.Tools: RandomUnset :: SeedOpt
- ELynx.Tools: Reproduction :: String -> [String] -> Version -> Maybe String -> [FilePath] -> [String] -> a -> Reproduction a
- ELynx.Tools: Warn :: Verbosity
- ELynx.Tools: [argsStr] :: Reproduction a -> [String]
- ELynx.Tools: [checkSums] :: Reproduction a -> [String]
- ELynx.Tools: [executionMode] :: GlobalArguments -> ExecutionMode
- ELynx.Tools: [files] :: Reproduction a -> [FilePath]
- ELynx.Tools: [globalArguments] :: Environment a -> GlobalArguments
- ELynx.Tools: [global] :: Arguments a -> GlobalArguments
- ELynx.Tools: [localArguments] :: Environment a -> a
- ELynx.Tools: [local] :: Arguments a -> a
- ELynx.Tools: [logHandles] :: Environment a -> [Handle]
- ELynx.Tools: [outFileBaseName] :: GlobalArguments -> Maybe FilePath
- ELynx.Tools: [outLock] :: Environment a -> MVar ()
- ELynx.Tools: [progName] :: Reproduction a -> String
- ELynx.Tools: [rHash] :: Reproduction a -> Maybe String
- ELynx.Tools: [rVersion] :: Reproduction a -> Version
- ELynx.Tools: [reproducible] :: Reproduction a -> a
- ELynx.Tools: [startingTime] :: Environment a -> UTCTime
- ELynx.Tools: [verbosity] :: GlobalArguments -> Verbosity
- ELynx.Tools: [writeElynxFile] :: GlobalArguments -> Bool
- ELynx.Tools: alignLeft :: Int -> ByteString -> ByteString
- ELynx.Tools: alignLeftWith :: Char -> Int -> ByteString -> ByteString
- ELynx.Tools: alignRight :: Int -> ByteString -> ByteString
- ELynx.Tools: alignRightWith :: Char -> Int -> ByteString -> ByteString
- ELynx.Tools: allEqual :: Eq a => [a] -> Bool
- ELynx.Tools: allNearlyEqual :: [Double] -> Bool
- ELynx.Tools: allNearlyEqualWith :: Double -> [Double] -> Bool
- ELynx.Tools: allValues :: (Bounded a, Enum a) => [a]
- ELynx.Tools: class FromJSON a
- ELynx.Tools: class Generic a
- ELynx.Tools: class HasLock e
- ELynx.Tools: class HasLogHandles e
- ELynx.Tools: class HasStartingTime s
- ELynx.Tools: class HasVerbosity s
- ELynx.Tools: class Reproducible a
- ELynx.Tools: class ToJSON a
- ELynx.Tools: closeEnvironment :: Environment s -> IO ()
- ELynx.Tools: cmdDsc :: Reproducible a => [String]
- ELynx.Tools: cmdFtr :: Reproducible a => [String]
- ELynx.Tools: cmdName :: Reproducible a => String
- ELynx.Tools: compose :: [a -> a] -> a -> a
- ELynx.Tools: createCommand :: String -> [String] -> [String] -> Parser a -> (a -> b) -> Mod CommandFields b
- ELynx.Tools: createCommandReproducible :: forall a b. Reproducible a => (a -> b) -> Mod CommandFields b
- ELynx.Tools: data Arguments a
- ELynx.Tools: data Environment a
- ELynx.Tools: data ExecutionMode
- ELynx.Tools: data GlobalArguments
- ELynx.Tools: data Reproduction a
- ELynx.Tools: data SeedOpt
- ELynx.Tools: data Verbosity
- ELynx.Tools: dispm :: Int -> Matrix R -> String
- ELynx.Tools: dispmi :: Int -> Int -> Matrix R -> String
- ELynx.Tools: dispv :: Int -> Vector R -> String
- ELynx.Tools: eLynxWrapper :: (Eq a, Show a, Reproducible a, Reproducible b, ToJSON a) => GlobalArguments -> b -> (b -> a) -> ELynx b () -> IO ()
- ELynx.Tools: elynxFooter :: [Doc]
- ELynx.Tools: elynxParserInfo :: [String] -> [String] -> Parser a -> ParserInfo a
- ELynx.Tools: eps :: Double
- ELynx.Tools: executionModeOpt :: Parser ExecutionMode
- ELynx.Tools: getChunks :: Int -> Int -> [Int]
- ELynx.Tools: getLock :: HasLock e => e -> MVar ()
- ELynx.Tools: getLogHandles :: HasLogHandles e => e -> [Handle]
- ELynx.Tools: getReproductionHash :: forall a. Reproducible a => Reproduction a -> String
- ELynx.Tools: getSeed :: Reproducible a => a -> Maybe SeedOpt
- ELynx.Tools: getStartingTime :: HasStartingTime s => s -> UTCTime
- ELynx.Tools: getVerbosity :: HasVerbosity s => s -> Verbosity
- ELynx.Tools: grabble :: PrimMonad m => [a] -> Int -> Int -> Gen (PrimState m) -> m [[a]]
- ELynx.Tools: harmonic :: Int -> Double
- ELynx.Tools: hashFile :: FilePath -> IO ByteString
- ELynx.Tools: inFiles :: Reproducible a => a -> [FilePath]
- ELynx.Tools: initializeEnvironment :: GlobalArguments -> a -> IO (Environment a)
- ELynx.Tools: logDebugB :: (HasLock e, HasLogHandles e, HasVerbosity e) => ByteString -> Logger e ()
- ELynx.Tools: logDebugS :: (HasLock e, HasLogHandles e, HasVerbosity e) => String -> Logger e ()
- ELynx.Tools: logHeader :: [String]
- ELynx.Tools: logInfoB :: (HasLock e, HasLogHandles e, HasVerbosity e) => ByteString -> Logger e ()
- ELynx.Tools: logInfoFooter :: (HasLock e, HasLogHandles e, HasStartingTime e, HasVerbosity e) => Logger e ()
- ELynx.Tools: logInfoHeader :: (HasLock e, HasLogHandles e, HasStartingTime e, HasVerbosity e) => String -> [String] -> Logger e ()
- ELynx.Tools: logInfoNewSection :: (HasLock e, HasLogHandles e, HasVerbosity e) => String -> Logger e ()
- ELynx.Tools: logInfoS :: (HasLock e, HasLogHandles e, HasVerbosity e) => String -> Logger e ()
- ELynx.Tools: logOutB :: (HasLogHandles e, HasLock e) => ByteString -> ByteString -> Logger e ()
- ELynx.Tools: logWarnB :: (HasLock e, HasLogHandles e, HasVerbosity e) => ByteString -> Logger e ()
- ELynx.Tools: logWarnS :: (HasLock e, HasLogHandles e, HasVerbosity e) => String -> Logger e ()
- ELynx.Tools: matrixSeparateSymSkew :: Matrix R -> (Matrix R, Matrix R)
- ELynx.Tools: matrixSetDiagToZero :: Matrix R -> Matrix R
- ELynx.Tools: nearlyEq :: Double -> Double -> Bool
- ELynx.Tools: nearlyEqList :: [Double] -> [Double] -> Bool
- ELynx.Tools: nearlyEqListWith :: Double -> [Double] -> [Double] -> Bool
- ELynx.Tools: nearlyEqMat :: Matrix R -> Matrix R -> Bool
- ELynx.Tools: nearlyEqMatWith :: Double -> Matrix R -> Matrix R -> Bool
- ELynx.Tools: nearlyEqVec :: Vector R -> Vector R -> Bool
- ELynx.Tools: nearlyEqVecWith :: Double -> Vector R -> Vector R -> Bool
- ELynx.Tools: nearlyEqWith :: Double -> Double -> Double -> Bool
- ELynx.Tools: openFileWithExecutionMode :: ExecutionMode -> FilePath -> IO Handle
- ELynx.Tools: out :: Reproducible a => String -> ByteString -> String -> ELynx a ()
- ELynx.Tools: outHandle :: Reproducible a => String -> String -> ELynx a Handle
- ELynx.Tools: outSuffixes :: Reproducible a => a -> [String]
- ELynx.Tools: parseArguments :: forall a. Reproducible a => IO (Arguments a)
- ELynx.Tools: parseByteStringWith :: Parser a -> ByteString -> a
- ELynx.Tools: parseFileOrIOWith :: Parser a -> Maybe FilePath -> IO a
- ELynx.Tools: parseFileWith :: Parser a -> FilePath -> IO a
- ELynx.Tools: parseIOWith :: Parser a -> IO a
- ELynx.Tools: parseStringWith :: Parser a -> String -> a
- ELynx.Tools: parser :: Reproducible a => Parser a
- ELynx.Tools: precision :: Int
- ELynx.Tools: randomInsertList :: PrimMonad m => a -> [a] -> Gen (PrimState m) -> m [a]
- ELynx.Tools: readGZFile :: FilePath -> IO ByteString
- ELynx.Tools: roundN :: Int -> Double -> Double
- ELynx.Tools: runParserOnFile :: Parser a -> FilePath -> IO (Either String a)
- ELynx.Tools: seedOpt :: Parser SeedOpt
- ELynx.Tools: setSeed :: Reproducible a => a -> SeedOpt -> a
- ELynx.Tools: shuffle :: PrimMonad m => [a] -> Gen (PrimState m) -> m [a]
- ELynx.Tools: shuffleN :: [a] -> Int -> GenIO -> IO [[a]]
- ELynx.Tools: sortListWithIndices :: Ord a => [a] -> [(a, Int)]
- ELynx.Tools: splitGen :: PrimMonad m => Int -> Gen (PrimState m) -> m [Gen (PrimState m)]
- ELynx.Tools: type ELynx a = ReaderT (Environment a) IO
- ELynx.Tools: type Logger e a = ReaderT e IO a
- ELynx.Tools: writeGZFile :: ExecutionMode -> FilePath -> ByteString -> IO ()
- ELynx.Tools: writeReproduction :: forall a. (Eq a, Show a, Reproducible a, ToJSON a) => String -> a -> IO ()
+ ELynx.Tools.ByteString: alignLeft :: Int -> ByteString -> ByteString
+ ELynx.Tools.ByteString: alignLeftWith :: Char -> Int -> ByteString -> ByteString
+ ELynx.Tools.ByteString: alignRight :: Int -> ByteString -> ByteString
+ ELynx.Tools.ByteString: alignRightWith :: Char -> Int -> ByteString -> ByteString
+ ELynx.Tools.Definitions: eps :: Double
+ ELynx.Tools.Definitions: precision :: Int
+ ELynx.Tools.ELynx: eLynxWrapper :: (Eq a, Show a, Reproducible a, Reproducible b, ToJSON a) => GlobalArguments -> b -> (b -> a) -> ELynx b () -> IO ()
+ ELynx.Tools.ELynx: out :: Reproducible a => String -> ByteString -> String -> ELynx a ()
+ ELynx.Tools.ELynx: outHandle :: Reproducible a => String -> String -> ELynx a Handle
+ ELynx.Tools.ELynx: type ELynx a = ReaderT (Environment a) IO
+ ELynx.Tools.Environment: Environment :: GlobalArguments -> a -> [Handle] -> MVar () -> UTCTime -> Environment a
+ ELynx.Tools.Environment: [globalArguments] :: Environment a -> GlobalArguments
+ ELynx.Tools.Environment: [localArguments] :: Environment a -> a
+ ELynx.Tools.Environment: [logHandles] :: Environment a -> [Handle]
+ ELynx.Tools.Environment: [outLock] :: Environment a -> MVar ()
+ ELynx.Tools.Environment: [startingTime] :: Environment a -> UTCTime
+ ELynx.Tools.Environment: closeEnvironment :: Environment s -> IO ()
+ ELynx.Tools.Environment: data Environment a
+ ELynx.Tools.Environment: initializeEnvironment :: GlobalArguments -> a -> IO (Environment a)
+ ELynx.Tools.Environment: instance ELynx.Tools.Logger.HasLock (ELynx.Tools.Environment.Environment a)
+ ELynx.Tools.Environment: instance ELynx.Tools.Logger.HasLogHandles (ELynx.Tools.Environment.Environment a)
+ ELynx.Tools.Environment: instance ELynx.Tools.Logger.HasStartingTime (ELynx.Tools.Environment.Environment a)
+ ELynx.Tools.Environment: instance ELynx.Tools.Logger.HasVerbosity (ELynx.Tools.Environment.Environment a)
+ ELynx.Tools.Environment: instance GHC.Classes.Eq a => GHC.Classes.Eq (ELynx.Tools.Environment.Environment a)
+ ELynx.Tools.Equality: (=~=) :: Double -> Double -> Bool
+ ELynx.Tools.Equality: allEqual :: Eq a => [a] -> Bool
+ ELynx.Tools.Equality: allNearlyEqual :: [Double] -> Bool
+ ELynx.Tools.Equality: allNearlyEqualWith :: Double -> [Double] -> Bool
+ ELynx.Tools.Equality: eps :: Double
+ ELynx.Tools.Equality: nearlyEq :: Double -> Double -> Bool
+ ELynx.Tools.Equality: nearlyEqList :: [Double] -> [Double] -> Bool
+ ELynx.Tools.Equality: nearlyEqListWith :: Double -> [Double] -> [Double] -> Bool
+ ELynx.Tools.Equality: nearlyEqMat :: Matrix R -> Matrix R -> Bool
+ ELynx.Tools.Equality: nearlyEqMatWith :: Double -> Matrix R -> Matrix R -> Bool
+ ELynx.Tools.Equality: nearlyEqVec :: Vector R -> Vector R -> Bool
+ ELynx.Tools.Equality: nearlyEqVecWith :: Double -> Vector R -> Vector R -> Bool
+ ELynx.Tools.Equality: nearlyEqWith :: Double -> Double -> Double -> Bool
+ ELynx.Tools.InputOutput: Fail :: ExecutionMode
+ ELynx.Tools.InputOutput: Overwrite :: ExecutionMode
+ ELynx.Tools.InputOutput: data ExecutionMode
+ ELynx.Tools.InputOutput: instance Data.Aeson.Types.FromJSON.FromJSON ELynx.Tools.InputOutput.ExecutionMode
+ ELynx.Tools.InputOutput: instance Data.Aeson.Types.ToJSON.ToJSON ELynx.Tools.InputOutput.ExecutionMode
+ ELynx.Tools.InputOutput: instance GHC.Classes.Eq ELynx.Tools.InputOutput.ExecutionMode
+ ELynx.Tools.InputOutput: instance GHC.Generics.Generic ELynx.Tools.InputOutput.ExecutionMode
+ ELynx.Tools.InputOutput: instance GHC.Show.Show ELynx.Tools.InputOutput.ExecutionMode
+ ELynx.Tools.InputOutput: openFileWithExecutionMode :: ExecutionMode -> FilePath -> IO Handle
+ ELynx.Tools.InputOutput: parseByteStringWith :: Parser a -> ByteString -> a
+ ELynx.Tools.InputOutput: parseFileOrIOWith :: Parser a -> Maybe FilePath -> IO a
+ ELynx.Tools.InputOutput: parseFileWith :: Parser a -> FilePath -> IO a
+ ELynx.Tools.InputOutput: parseIOWith :: Parser a -> IO a
+ ELynx.Tools.InputOutput: parseStringWith :: Parser a -> String -> a
+ ELynx.Tools.InputOutput: readGZFile :: FilePath -> IO ByteString
+ ELynx.Tools.InputOutput: runParserOnFile :: Parser a -> FilePath -> IO (Either String a)
+ ELynx.Tools.InputOutput: writeGZFile :: ExecutionMode -> FilePath -> ByteString -> IO ()
+ ELynx.Tools.Logger: Debug :: Verbosity
+ ELynx.Tools.Logger: Info :: Verbosity
+ ELynx.Tools.Logger: Quiet :: Verbosity
+ ELynx.Tools.Logger: Warn :: Verbosity
+ ELynx.Tools.Logger: class HasLock e
+ ELynx.Tools.Logger: class HasLogHandles e
+ ELynx.Tools.Logger: class HasStartingTime s
+ ELynx.Tools.Logger: class HasVerbosity s
+ ELynx.Tools.Logger: data Verbosity
+ ELynx.Tools.Logger: getLock :: HasLock e => e -> MVar ()
+ ELynx.Tools.Logger: getLogHandles :: HasLogHandles e => e -> [Handle]
+ ELynx.Tools.Logger: getStartingTime :: HasStartingTime s => s -> UTCTime
+ ELynx.Tools.Logger: getVerbosity :: HasVerbosity s => s -> Verbosity
+ ELynx.Tools.Logger: instance Data.Aeson.Types.FromJSON.FromJSON ELynx.Tools.Logger.Verbosity
+ ELynx.Tools.Logger: instance Data.Aeson.Types.ToJSON.ToJSON ELynx.Tools.Logger.Verbosity
+ ELynx.Tools.Logger: instance GHC.Classes.Eq ELynx.Tools.Logger.Verbosity
+ ELynx.Tools.Logger: instance GHC.Classes.Ord ELynx.Tools.Logger.Verbosity
+ ELynx.Tools.Logger: instance GHC.Enum.Bounded ELynx.Tools.Logger.Verbosity
+ ELynx.Tools.Logger: instance GHC.Enum.Enum ELynx.Tools.Logger.Verbosity
+ ELynx.Tools.Logger: instance GHC.Generics.Generic ELynx.Tools.Logger.Verbosity
+ ELynx.Tools.Logger: instance GHC.Read.Read ELynx.Tools.Logger.Verbosity
+ ELynx.Tools.Logger: instance GHC.Show.Show ELynx.Tools.Logger.Verbosity
+ ELynx.Tools.Logger: logDebugB :: (HasLock e, HasLogHandles e, HasVerbosity e) => ByteString -> Logger e ()
+ ELynx.Tools.Logger: logDebugS :: (HasLock e, HasLogHandles e, HasVerbosity e) => String -> Logger e ()
+ ELynx.Tools.Logger: logHeader :: [String]
+ ELynx.Tools.Logger: logInfoB :: (HasLock e, HasLogHandles e, HasVerbosity e) => ByteString -> Logger e ()
+ ELynx.Tools.Logger: logInfoFooter :: (HasLock e, HasLogHandles e, HasStartingTime e, HasVerbosity e) => Logger e ()
+ ELynx.Tools.Logger: logInfoHeader :: (HasLock e, HasLogHandles e, HasStartingTime e, HasVerbosity e) => String -> [String] -> Logger e ()
+ ELynx.Tools.Logger: logInfoNewSection :: (HasLock e, HasLogHandles e, HasVerbosity e) => String -> Logger e ()
+ ELynx.Tools.Logger: logInfoS :: (HasLock e, HasLogHandles e, HasVerbosity e) => String -> Logger e ()
+ ELynx.Tools.Logger: logOutB :: (HasLogHandles e, HasLock e) => ByteString -> ByteString -> Logger e ()
+ ELynx.Tools.Logger: logWarnB :: (HasLock e, HasLogHandles e, HasVerbosity e) => ByteString -> Logger e ()
+ ELynx.Tools.Logger: logWarnS :: (HasLock e, HasLogHandles e, HasVerbosity e) => String -> Logger e ()
+ ELynx.Tools.Logger: type Logger e a = ReaderT e IO a
+ ELynx.Tools.Options: Arguments :: GlobalArguments -> a -> Arguments a
+ ELynx.Tools.Options: GlobalArguments :: Verbosity -> Maybe FilePath -> ExecutionMode -> Bool -> GlobalArguments
+ ELynx.Tools.Options: [executionMode] :: GlobalArguments -> ExecutionMode
+ ELynx.Tools.Options: [global] :: Arguments a -> GlobalArguments
+ ELynx.Tools.Options: [local] :: Arguments a -> a
+ ELynx.Tools.Options: [outFileBaseName] :: GlobalArguments -> Maybe FilePath
+ ELynx.Tools.Options: [verbosity] :: GlobalArguments -> Verbosity
+ ELynx.Tools.Options: [writeElynxFile] :: GlobalArguments -> Bool
+ ELynx.Tools.Options: createCommand :: String -> [String] -> [String] -> Parser a -> (a -> b) -> Mod CommandFields b
+ ELynx.Tools.Options: createCommandReproducible :: forall a b. Reproducible a => (a -> b) -> Mod CommandFields b
+ ELynx.Tools.Options: data Arguments a
+ ELynx.Tools.Options: data GlobalArguments
+ ELynx.Tools.Options: elynxFooter :: [Doc]
+ ELynx.Tools.Options: elynxParserInfo :: [String] -> [String] -> Parser a -> ParserInfo a
+ ELynx.Tools.Options: executionModeOpt :: Parser ExecutionMode
+ ELynx.Tools.Options: instance Data.Aeson.Types.FromJSON.FromJSON ELynx.Tools.Options.GlobalArguments
+ ELynx.Tools.Options: instance Data.Aeson.Types.FromJSON.FromJSON a => Data.Aeson.Types.FromJSON.FromJSON (ELynx.Tools.Options.Arguments a)
+ ELynx.Tools.Options: instance Data.Aeson.Types.ToJSON.ToJSON ELynx.Tools.Options.GlobalArguments
+ ELynx.Tools.Options: instance Data.Aeson.Types.ToJSON.ToJSON a => Data.Aeson.Types.ToJSON.ToJSON (ELynx.Tools.Options.Arguments a)
+ ELynx.Tools.Options: instance ELynx.Tools.Reproduction.Reproducible a => ELynx.Tools.Reproduction.Reproducible (ELynx.Tools.Options.Arguments a)
+ ELynx.Tools.Options: instance GHC.Classes.Eq ELynx.Tools.Options.GlobalArguments
+ ELynx.Tools.Options: instance GHC.Classes.Eq a => GHC.Classes.Eq (ELynx.Tools.Options.Arguments a)
+ ELynx.Tools.Options: instance GHC.Generics.Generic (ELynx.Tools.Options.Arguments a)
+ ELynx.Tools.Options: instance GHC.Generics.Generic ELynx.Tools.Options.GlobalArguments
+ ELynx.Tools.Options: instance GHC.Show.Show ELynx.Tools.Options.GlobalArguments
+ ELynx.Tools.Options: instance GHC.Show.Show a => GHC.Show.Show (ELynx.Tools.Options.Arguments a)
+ ELynx.Tools.Options: parseArguments :: forall a. Reproducible a => IO (Arguments a)
+ ELynx.Tools.Options: seedOpt :: Parser SeedOpt
+ ELynx.Tools.Reproduction: Fixed :: Vector Word32 -> SeedOpt
+ ELynx.Tools.Reproduction: RandomSet :: Vector Word32 -> SeedOpt
+ ELynx.Tools.Reproduction: RandomUnset :: SeedOpt
+ ELynx.Tools.Reproduction: Reproduction :: String -> [String] -> Version -> Maybe String -> [FilePath] -> [String] -> a -> Reproduction a
+ ELynx.Tools.Reproduction: [argsStr] :: Reproduction a -> [String]
+ ELynx.Tools.Reproduction: [checkSums] :: Reproduction a -> [String]
+ ELynx.Tools.Reproduction: [files] :: Reproduction a -> [FilePath]
+ ELynx.Tools.Reproduction: [progName] :: Reproduction a -> String
+ ELynx.Tools.Reproduction: [rHash] :: Reproduction a -> Maybe String
+ ELynx.Tools.Reproduction: [rVersion] :: Reproduction a -> Version
+ ELynx.Tools.Reproduction: [reproducible] :: Reproduction a -> a
+ ELynx.Tools.Reproduction: class Reproducible a
+ ELynx.Tools.Reproduction: cmdDsc :: Reproducible a => [String]
+ ELynx.Tools.Reproduction: cmdFtr :: Reproducible a => [String]
+ ELynx.Tools.Reproduction: cmdName :: Reproducible a => String
+ ELynx.Tools.Reproduction: data Reproduction a
+ ELynx.Tools.Reproduction: data SeedOpt
+ ELynx.Tools.Reproduction: getReproductionHash :: forall a. Reproducible a => Reproduction a -> String
+ ELynx.Tools.Reproduction: getSeed :: Reproducible a => a -> Maybe SeedOpt
+ ELynx.Tools.Reproduction: hashFile :: FilePath -> IO ByteString
+ ELynx.Tools.Reproduction: inFiles :: Reproducible a => a -> [FilePath]
+ ELynx.Tools.Reproduction: instance Data.Aeson.Types.FromJSON.FromJSON ELynx.Tools.Reproduction.SeedOpt
+ ELynx.Tools.Reproduction: instance Data.Aeson.Types.FromJSON.FromJSON a => Data.Aeson.Types.FromJSON.FromJSON (ELynx.Tools.Reproduction.Reproduction a)
+ ELynx.Tools.Reproduction: instance Data.Aeson.Types.ToJSON.ToJSON ELynx.Tools.Reproduction.SeedOpt
+ ELynx.Tools.Reproduction: instance Data.Aeson.Types.ToJSON.ToJSON a => Data.Aeson.Types.ToJSON.ToJSON (ELynx.Tools.Reproduction.Reproduction a)
+ ELynx.Tools.Reproduction: instance GHC.Classes.Eq ELynx.Tools.Reproduction.SeedOpt
+ ELynx.Tools.Reproduction: instance GHC.Generics.Generic (ELynx.Tools.Reproduction.Reproduction a)
+ ELynx.Tools.Reproduction: instance GHC.Generics.Generic ELynx.Tools.Reproduction.SeedOpt
+ ELynx.Tools.Reproduction: instance GHC.Show.Show ELynx.Tools.Reproduction.SeedOpt
+ ELynx.Tools.Reproduction: outSuffixes :: Reproducible a => a -> [String]
+ ELynx.Tools.Reproduction: parser :: Reproducible a => Parser a
+ ELynx.Tools.Reproduction: setSeed :: Reproducible a => a -> SeedOpt -> a
+ ELynx.Tools.Reproduction: writeReproduction :: forall a. (Eq a, Show a, Reproducible a, ToJSON a) => String -> a -> IO ()

Files

ChangeLog.md view
@@ -5,6 +5,13 @@ ## Unreleased changes  +## Version 0.6.1.0++-   Split `ELynx.Tools` into separate modules because the package will be reduced.+-   Remove the following modules from `ELynx.Tools`: `Concurrent`,+    `LinearAlgebra`, `List`, `Misc`, and `Numeric`.++ ## Version 0.6.0.0  -   **elynx-tree:** remove parallel folds with layers (`parBranchFoldMapWithLayer`
README.md view
@@ -69,13 +69,13 @@  # Get help -For example:--    slynx --help+    cabal exec slynx -- --help+    # OR: stack exec slynx -- --help+    # OR: slynx --help      ELynx Suite version 0.6.0.0.     Developed by Dominik Schrempf.-    Compiled on September 3, 2021, at 20:56 pm, UTC.+    Compiled on September 4, 2021, at 12:58 pm, UTC.          Usage: slynx [-v|--verbosity VALUE] [-o|--output-file-basename NAME]                   [-f|--force] [--no-elynx-file] COMMAND@@ -113,6 +113,7 @@       - ProteinX (amino acids; including gaps)       - ProteinS (amino acids; including gaps, and translation stops)       - ProteinI (amino acids; including gaps, translation stops, and IUPAC codes)+         ELynx     -----     A Haskell library and tool set for computational biology. The goal of ELynx is@@ -126,6 +127,9 @@     tlynx     Analyze, modify, and simulate phylogenetic trees.     elynx     Validate and redo past analyses.     +    Get help for commands:+      slynx --help+         Get help for sub commands:       slynx examine --help @@ -134,11 +138,13 @@  The documentation of sub commands can be accessed separately: -    slynx simulate --help+    cabal exec slynx -- simulate --help+    # OR: stack exec slynx -- simulate --help+    # OR: slynx simulate --help      ELynx Suite version 0.6.0.0.     Developed by Dominik Schrempf.-    Compiled on September 3, 2021, at 20:56 pm, UTC.+    Compiled on September 4, 2021, at 12:58 pm, UTC.          Usage: slynx simulate (-t|--tree-file Name) [-s|--substitution-model MODEL]                            [-m|--mixture-model MODEL] [-e|--edm-file NAME] 
elynx-tools.cabal view
@@ -1,6 +1,6 @@ cabal-version:  2.2 name:           elynx-tools-version:        0.6.0.0+version:        0.6.1.0 synopsis:       Tools for ELynx description:    Please see the README on GitHub at <https://github.com/dschrempf/elynx>. category:       Bioinformatics@@ -23,22 +23,16 @@  library   exposed-modules:-      ELynx.Tools-  other-modules:       ELynx.Tools.ByteString-      ELynx.Tools.Concurrent       ELynx.Tools.Definitions       ELynx.Tools.ELynx       ELynx.Tools.Environment       ELynx.Tools.Equality       ELynx.Tools.InputOutput-      ELynx.Tools.LinearAlgebra-      ELynx.Tools.List       ELynx.Tools.Logger-      ELynx.Tools.Misc-      ELynx.Tools.Numeric       ELynx.Tools.Options       ELynx.Tools.Reproduction+  other-modules:       Paths_elynx_tools   autogen-modules:       Paths_elynx_tools@@ -55,7 +49,6 @@     , hmatrix     , mwc-random     , optparse-applicative-    , primitive     , template-haskell     , text     , time
− src/ELynx/Tools.hs
@@ -1,45 +0,0 @@--- |--- Module      :  ELynx.Tools--- Description :  Tools and other niceties--- Copyright   :  (c) Dominik Schrempf 2021--- License     :  GPL-3.0-or-later------ Maintainer  :  dominik.schrempf@gmail.com--- Stability   :  unstable--- Portability :  portable------ Creation date: Sat Mar 21 13:56:03 2020.------ A large collection of tools.-module ELynx.Tools-  ( module ELynx.Tools.ByteString,-    module ELynx.Tools.Concurrent,-    module ELynx.Tools.Definitions,-    module ELynx.Tools.ELynx,-    module ELynx.Tools.Environment,-    module ELynx.Tools.Equality,-    module ELynx.Tools.InputOutput,-    module ELynx.Tools.LinearAlgebra,-    module ELynx.Tools.List,-    module ELynx.Tools.Logger,-    module ELynx.Tools.Misc,-    module ELynx.Tools.Numeric,-    module ELynx.Tools.Options,-    module ELynx.Tools.Reproduction,-  )-where--import ELynx.Tools.ByteString-import ELynx.Tools.Concurrent-import ELynx.Tools.Definitions-import ELynx.Tools.ELynx-import ELynx.Tools.Environment-import ELynx.Tools.Equality-import ELynx.Tools.InputOutput-import ELynx.Tools.LinearAlgebra-import ELynx.Tools.List-import ELynx.Tools.Logger-import ELynx.Tools.Misc-import ELynx.Tools.Numeric-import ELynx.Tools.Options-import ELynx.Tools.Reproduction
− src/ELynx/Tools/Concurrent.hs
@@ -1,45 +0,0 @@-{-# LANGUAGE ScopedTypeVariables #-}---- |--- Module      :  ELynx.Tools.Concurrent--- Description :  Tools for concurrent random calculations--- Copyright   :  (c) Dominik Schrempf 2021--- License     :  GPL-3.0-or-later------ Maintainer  :  dominik.schrempf@gmail.com--- Stability   :  unstable--- Portability :  portable------ Creation date: Tue May  7 10:33:24 2019.-module ELynx.Tools.Concurrent-  ( -- * MWC-    splitGen,--    -- * Concurrent calculations-    getChunks,-  )-where--import Control.Monad-import Control.Monad.Primitive-import qualified Data.Vector as V-import Data.Word-import System.Random.MWC---- | Split a generator.-splitGen :: PrimMonad m => Int -> Gen (PrimState m) -> m [Gen (PrimState m)]-splitGen n gen-  | n <= 0 = return []-  | otherwise = do-    seeds :: [V.Vector Word32] <- replicateM (n -1) $ uniformVector gen 256-    fmap (gen :) (mapM initialize seeds)---- | For a given number of capabilities and number of calculations, get chunk--- sizes. The chunk sizes will be as evenly distributed as possible and sum up--- to the number of calculations.-getChunks :: Int -> Int -> [Int]-getChunks c n = ns-  where-    n' = n `div` c-    r = n `mod` c-    ns = replicate r (n' + 1) ++ replicate (c - r) n'
src/ELynx/Tools/ELynx.hs view
@@ -75,9 +75,9 @@   -- Footer.   logInfoFooter --- | The 'ReaderT' and 'LoggingT' wrapper for ELynx. Prints a header and a--- footer, logs to 'stderr' if no file is provided. Initializes the seed if none--- is provided. If a log file is provided, log to the file and to 'stderr'.+-- | The 'ReaderT' wrapper for ELynx. Prints a header and a footer, logs to+-- 'stdout' and possibly a log file, if provided. Initializes the seed if none+-- is provided. eLynxWrapper ::   (Eq a, Show a, Reproducible a, Reproducible b, ToJSON a) =>   GlobalArguments ->
src/ELynx/Tools/Environment.hs view
@@ -30,9 +30,9 @@     globalArguments :: GlobalArguments,     -- | Local arguments of command.     localArguments :: a,-    -- | List will be empty if using 'Quiet'. If 'LogStdOutAndFile' is used-    -- 'logHandles' contains two handles to the standard output and the log-    -- file.+    -- | List will be empty if using 'Quiet'. If an output base name is+    -- available, 'logHandles' will contain two handles: (1) the standard output+    -- and (2) the log file.     logHandles :: [Handle],     -- | MVar blocking output.     outLock :: MVar (),
src/ELynx/Tools/InputOutput.hs view
@@ -37,7 +37,7 @@ where  import Codec.Compression.GZip-import Data.Aeson+import Data.Aeson hiding (String) import Data.Attoparsec.ByteString.Lazy hiding (Fail) import qualified Data.ByteString.Lazy.Char8 as BL import Data.List (isSuffixOf)@@ -66,7 +66,7 @@           <> "Please use --force to overwrite results of a previous analysis."     False -> return () --- | Open existing files only if 'Force' is true.+-- | Open existing files only if 'ExecutionMode' is 'Overwrite'. openFileWithExecutionMode :: ExecutionMode -> FilePath -> IO Handle openFileWithExecutionMode em fp = checkFile em fp >> openFile fp WriteMode 
− src/ELynx/Tools/LinearAlgebra.hs
@@ -1,50 +0,0 @@--- |--- Module      :  ELynx.Tools.LinearAlgebra--- Copyright   :  (c) Dominik Schrempf 2021--- License     :  GPL-3.0-or-later------ Maintainer  :  dominik.schrempf@gmail.com--- Stability   :  unstable--- Portability :  portable------ Creation date: Thu Feb 14 13:33:13 2019.------ Tools for matrices from 'Numeric.LinearAlgebra'.-module ELynx.Tools.LinearAlgebra-  ( -- * Linear Algebra-    matrixSeparateSymSkew,-    matrixSetDiagToZero,-    dispv,-    dispm,-    dispmi,-  )-where--import Data.List-import Numeric.LinearAlgebra---- | Separate a square matrix into a symmetric and a skew-symmetric matrix.-matrixSeparateSymSkew :: Matrix R -> (Matrix R, Matrix R)-matrixSeparateSymSkew m = (mSym, mSkew)-  where-    trM = tr m-    mSym = scale 0.5 $ m + trM-    mSkew = scale 0.5 $ m - trM---- | Set the diagonal entries of a matrix to zero.-matrixSetDiagToZero :: Matrix R -> Matrix R-matrixSetDiagToZero m = m - diag (takeDiag m)-{-# INLINE matrixSetDiagToZero #-}---- | Display a vector with given precision.-dispv :: Int -> Vector R -> String-dispv p v = head $ tail $ lines $ dispf p (asRow v)---- | Display a matrix with given precision.-dispm :: Int -> Matrix R -> String-dispm p m = intercalate "\n" $ init $ lines $ dispf p m---- | Display a matrix with given precision and indent.-dispmi :: Int -> Int -> Matrix R -> String-dispmi p i m =-  intercalate "\n" $ map (replicate i ' ' ++) $ tail $ lines $ dispf p m
− src/ELynx/Tools/List.hs
@@ -1,67 +0,0 @@--- |--- Module      :  ELynx.Tools.List--- Description :  Additional tools for lists--- Copyright   :  (c) Dominik Schrempf 2021--- License     :  GPL-3.0-or-later------ Maintainer  :  dominik.schrempf@gmail.com--- Stability   :  unstable--- Portability :  portable------ Creation date: Thu May  2 18:57:39 2019.-module ELynx.Tools.List-  ( -- * Lists-    sortListWithIndices,-    randomInsertList,-    shuffle,-    shuffleN,-    grabble,-  )-where--import Control.Monad-import Control.Monad.Primitive-import Control.Monad.ST-import Data.Function-import Data.List-import Data.Vector (Vector)-import qualified Data.Vector as V-import qualified Data.Vector.Mutable as M-import System.Random.MWC---- | Sort a list and also return original indices.-sortListWithIndices :: Ord a => [a] -> [(a, Int)]-sortListWithIndices xs = sortBy (compare `on` fst) $ zip xs ([0 ..] :: [Int])---- | Insert element into random position of list.-randomInsertList :: PrimMonad m => a -> [a] -> Gen (PrimState m) -> m [a]-randomInsertList e v g = do-  let l = length v-  i <- uniformR (0, l) g-  return $ take i v ++ [e] ++ drop i v---- | Shuffle a list.-shuffle :: PrimMonad m => [a] -> Gen (PrimState m) -> m [a]-shuffle xs g = head <$> grabble xs 1 (length xs) g---- | Shuffle a list @n@ times.-shuffleN :: [a] -> Int -> GenIO -> IO [[a]]-shuffleN xs n = grabble xs n (length xs)---- | @grabble xs m n@ is /O(m*n')/, where @n' = min n (length xs)@. Choose @n'@--- elements from @xs@, without replacement, and that @m@ times.-grabble :: PrimMonad m => [a] -> Int -> Int -> Gen (PrimState m) -> m [[a]]-grabble xs m n gen = do-  swapss <- replicateM m $-    forM [0 .. min (l - 1) n] $ \i -> do-      j <- uniformR (i, l) gen-      return (i, j)-  return $ map (V.toList . V.take n . swapElems (V.fromList xs)) swapss-  where-    l = length xs - 1--swapElems :: Vector a -> [(Int, Int)] -> Vector a-swapElems xs swaps = runST $ do-  mxs <- V.unsafeThaw xs-  mapM_ (uncurry $ M.unsafeSwap mxs) swaps-  V.unsafeFreeze mxs
src/ELynx/Tools/Logger.hs view
@@ -154,8 +154,8 @@               )         ) --- A short header to be used in executables. 'unlines' doesn't work here because--- it adds an additional newline at the end.+-- | A short header to be used in executables. 'unlines' doesn't work here+-- because it adds an additional newline at the end. logHeader :: [String] logHeader = [versionString, copyrightString, compilationString] 
− src/ELynx/Tools/Misc.hs
@@ -1,26 +0,0 @@--- |--- Module      :  ELynx.Tools.Misc--- Copyright   :  (c) Dominik Schrempf 2021--- License     :  GPL-3.0-or-later------ Maintainer  :  dominik.schrempf@gmail.com--- Stability   :  unstable--- Portability :  portable------ Creation date: Thu Feb 14 13:32:19 2019.------ Miscellaneous tools that do not have their own category (yet).-module ELynx.Tools.Misc-  ( -- * Weird stuff-    compose,-    allValues,-  )-where---- | Chain a list of functions together. See https://wiki.haskell.org/Compose.-compose :: [a -> a] -> a -> a-compose = foldl (flip (.)) id---- | Get all values of a bounded enumerated type.-allValues :: (Bounded a, Enum a) => [a]-allValues = [minBound ..]
− src/ELynx/Tools/Numeric.hs
@@ -1,27 +0,0 @@--- |--- Module      :  ELynx.Tools.Numeric--- Copyright   :  (c) Dominik Schrempf 2021--- License     :  GPL-3.0-or-later------ Maintainer  :  dominik.schrempf@gmail.com--- Stability   :  unstable--- Portability :  portable------ Creation date: Thu Feb 14 13:28:37 2019.------ Numerical functions.-module ELynx.Tools.Numeric-  ( -- * Numeric-    harmonic,-    roundN,-  )-where---- | Calculate the nth harmonic number.-harmonic :: Int -> Double-harmonic 1 = 1.0-harmonic n = 1.0 / fromIntegral n + harmonic (n - 1)---- | Round double to a given precision.-roundN :: Int -> Double -> Double-roundN n v = fromInteger (round $ v * (10 ^ n)) / (10.0 ^^ n)
src/ELynx/Tools/Options.hs view
@@ -15,7 +15,6 @@ -- Creation date: Thu Sep  2 19:17:07 2021. module ELynx.Tools.Options   ( -- * Command options-    SeedOpt (..),     seedOpt,     executionModeOpt, @@ -38,8 +37,8 @@ import Data.Word import ELynx.Tools.InputOutput import ELynx.Tools.Logger-import ELynx.Tools.Misc import ELynx.Tools.Reproduction+import GHC.Generics import Options.Applicative hiding (empty) import Options.Applicative.Help.Pretty @@ -63,7 +62,7 @@ toSeedOpt Nothing = RandomUnset toSeedOpt (Just w) = Fixed w --- Execution mode option parser.+-- | Execution mode option parser. executionModeOpt :: Parser ExecutionMode executionModeOpt =   flag@@ -108,7 +107,7 @@         <> help ("Be verbose; one of: " ++ unwords (map show vs))     )   where-    vs = allValues :: [Verbosity]+    vs = [minBound ..] :: [Verbosity]  -- Output filename. outFileBaseNameOpt :: Parser FilePath@@ -225,9 +224,11 @@ fillParagraph :: String -> Doc fillParagraph = fillSep . map text . words +-- | Global ELynx footer. elynxFooter :: [Doc] elynxFooter =-  [ text "ELynx",+  [ empty,+    text "ELynx",     text "-----",     fillParagraph       "A Haskell library and tool set for computational biology. The goal of ELynx is reproducible research. Evolutionary sequences and phylogenetic trees can be read, viewed, modified and simulated. The command line with all arguments is logged consistently, and automatically. Data integrity is verified using SHA256 sums so that validation of past analyses is possible without the need to recompute the result.",@@ -237,6 +238,9 @@     fill 9 (text "tlynx")       <+> text "Analyze, modify, and simulate phylogenetic trees.",     fill 9 (text "elynx") <+> text "Validate and redo past analyses.",+    empty,+    text "Get help for commands:",+    text "  slynx --help",     empty,     text "Get help for sub commands:",     text "  slynx examine --help"
src/ELynx/Tools/Reproduction.hs view
@@ -26,11 +26,6 @@     Reproduction (..),     writeReproduction,     hashFile,--    -- * Re-exports-    Generic,-    FromJSON,-    ToJSON,   ) where