elynx-markov 0.5.0 → 0.5.0.1
raw patch · 5 files changed
+126/−138 lines, 5 filesdep ~asyncdep ~attoparsecdep ~bytestringPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: async, attoparsec, bytestring, containers, elynx-seq, elynx-tools, hmatrix, hspec, integration, math-functions, mwc-random, parallel, primitive, statistics, vector
API changes (from Hackage documentation)
Files
- ChangeLog.md +9/−2
- README.md +37/−54
- elynx-markov.cabal +75/−76
- src/ELynx/Simulate/MarkovProcess.hs +3/−5
- src/ELynx/Simulate/MarkovProcessAlongTree.hs +2/−1
ChangeLog.md view
@@ -1,11 +1,18 @@ -# Changelog for ELynx+# Revision history for ELynx ## Unreleased changes +- Improve rooting functions.+- Improve `Topology` data type (but still a lot to do).+- Various additions to the documentation.+- Rename `Measurable` to `HasLength`, `Supported` to `HasSupport`, and `Named`+ to `HasLength`.+- Cabal and stack file changes. -## Version 0.5.0++## Version 0.5.0.1 - `modLen`, `modSup`. - Newtype wrappers for branch length, branch support, and node name. Those data
README.md view
@@ -2,7 +2,7 @@ # The ELynx Suite -Version: 0.5.0.+Version: 0.5.0.1. Reproducible evolution made easy. <p align="center"><img src="https://travis-ci.org/dschrempf/elynx.svg?branch=master"/></p>@@ -19,18 +19,20 @@ The library packages are: -- **elynx-nexus:** Nexus file support.-- **elynx-markov:** Simulate multi sequence alignments along phylogenetic trees.-- **elynx-seq:** Handle evolutionary sequences and multi sequence alignments.-- **elynx-tools:** Tools for the provided executables.-- **elynx-tree:** Handle phylogenetic trees.+- **[elynx-nexus](https://hackage.haskell.org/package/elynx-nexus):** Nexus file support.+- **[elynx-markov](https://hackage.haskell.org/package/elynx-markov):** Simulate multi sequence alignments along phylogenetic trees.+- **[elynx-seq](https://hackage.haskell.org/package/elynx-seq):** Handle evolutionary sequences and multi sequence alignments.+- **[elynx-tools](https://hackage.haskell.org/package/elynx-tools):** Tools for the provided executables.+- **[elynx-tree](https://hackage.haskell.org/package/elynx-tree):** Handle phylogenetic trees. The executables are: -- **slynx:** Analyze, modify, and simulate evolutionary sequences.-- **tlynx:** Analyze, modify, and simulate phylogenetic trees.-- **elynx:** Validate and redo past analyses.+- **[slynx](https://hackage.haskell.org/package/slynx):** Analyze, modify, and simulate evolutionary sequences.+- **[tlynx](https://hackage.haskell.org/package/tlynx):** Analyze, modify, and simulate phylogenetic trees.+- **[elynx](https://hackage.haskell.org/package/elynx):** Validate and redo past analyses. +Documentation is available on [Hackage](https://hackage.haskell.org/) (use direct links above).+ **ELynx is actively developed. We happily receive comments, ideas, feature requests, and pull requests!** @@ -65,34 +67,15 @@ [PATH](https://en.wikipedia.org/wiki/PATH_(variable)) environment variable. Then, they can be used directly. -# Documentation--Documentation is available on [Hackage](https://hackage.haskell.org/).--Libraries:--- [elynx-nexus](https://hackage.haskell.org/package/elynx-nexus)-- [elynx-markov](https://hackage.haskell.org/package/elynx-markov)-- [elynx-seq](https://hackage.haskell.org/package/elynx-seq)-- [elynx-tools](https://hackage.haskell.org/package/elynx-tools)-- [elynx-tree](https://hackage.haskell.org/package/elynx-tree)--Executables:--- [elynx](https://hackage.haskell.org/package/elynx)-- [slynx](https://hackage.haskell.org/package/slynx)-- [tlynx](https://hackage.haskell.org/package/tlynx)-- # SLynx Handle evolutionary sequences. slynx --help | head -n -16 - ELynx Suite version 0.5.0.+ ELynx Suite version 0.5.0.1. Developed by Dominik Schrempf.- Compiled on November 10, 2020, at 14:29 pm, UTC.+ Compiled on December 18, 2020, at 10:14 am, UTC. Usage: slynx [-v|--verbosity VALUE] [-o|--output-file-basename NAME] [-f|--force] [--no-elynx-file] COMMAND@@ -137,9 +120,9 @@ slynx concatenate --help - ELynx Suite version 0.5.0.+ ELynx Suite version 0.5.0.1. Developed by Dominik Schrempf.- Compiled on November 10, 2020, at 14:29 pm, UTC.+ Compiled on December 18, 2020, at 10:14 am, UTC. Usage: slynx concatenate (-a|--alphabet NAME) INPUT-FILE Concatenate sequences found in input files.@@ -158,9 +141,9 @@ slynx examine --help - ELynx Suite version 0.5.0.+ ELynx Suite version 0.5.0.1. Developed by Dominik Schrempf.- Compiled on November 10, 2020, at 14:29 pm, UTC.+ Compiled on December 18, 2020, at 10:14 am, UTC. Usage: slynx examine (-a|--alphabet NAME) INPUT-FILE [--per-site] Examine sequences. If data is a multi sequence alignment, additionally analyze columns.@@ -180,9 +163,9 @@ slynx filter-rows --help - ELynx Suite version 0.5.0.+ ELynx Suite version 0.5.0.1. Developed by Dominik Schrempf.- Compiled on November 10, 2020, at 14:29 pm, UTC.+ Compiled on December 18, 2020, at 10:14 am, UTC. Usage: slynx filter-rows (-a|--alphabet NAME) INPUT-FILE [--longer-than LENGTH] [--shorter-than LENGTH] [--standard-characters]@@ -203,9 +186,9 @@ slynx filter-columns --help - ELynx Suite version 0.5.0.+ ELynx Suite version 0.5.0.1. Developed by Dominik Schrempf.- Compiled on November 10, 2020, at 14:29 pm, UTC.+ Compiled on December 18, 2020, at 10:14 am, UTC. Usage: slynx filter-columns (-a|--alphabet NAME) INPUT-FILE [--standard-chars DOUBLE]@@ -227,9 +210,9 @@ slynx simulate --help - ELynx Suite version 0.5.0.+ ELynx Suite version 0.5.0.1. Developed by Dominik Schrempf.- Compiled on November 10, 2020, at 14:29 pm, UTC.+ Compiled on December 18, 2020, at 10:14 am, UTC. Usage: slynx simulate (-t|--tree-file Name) [-s|--substitution-model MODEL] [-m|--mixture-model MODEL] [-e|--edm-file NAME] @@ -306,9 +289,9 @@ slynx sub-sample --help - ELynx Suite version 0.5.0.+ ELynx Suite version 0.5.0.1. Developed by Dominik Schrempf.- Compiled on November 10, 2020, at 14:29 pm, UTC.+ Compiled on December 18, 2020, at 10:14 am, UTC. Usage: slynx sub-sample (-a|--alphabet NAME) INPUT-FILE (-n|--number-of-sites INT)@@ -336,9 +319,9 @@ slynx translate --help - ELynx Suite version 0.5.0.+ ELynx Suite version 0.5.0.1. Developed by Dominik Schrempf.- Compiled on November 10, 2020, at 14:29 pm, UTC.+ Compiled on December 18, 2020, at 10:14 am, UTC. Usage: slynx translate (-a|--alphabet NAME) INPUT-FILE (-r|--reading-frame INT) (-u|--universal-code CODE)@@ -361,9 +344,9 @@ tlynx --help | head -n -16 - ELynx Suite version 0.5.0.+ ELynx Suite version 0.5.0.1. Developed by Dominik Schrempf.- Compiled on November 10, 2020, at 14:29 pm, UTC.+ Compiled on December 18, 2020, at 10:14 am, UTC. Usage: tlynx [-v|--verbosity VALUE] [-o|--output-file-basename NAME] [-f|--force] [--no-elynx-file] COMMAND@@ -401,9 +384,9 @@ tlynx compare --help - ELynx Suite version 0.5.0.+ ELynx Suite version 0.5.0.1. Developed by Dominik Schrempf.- Compiled on November 10, 2020, at 14:29 pm, UTC.+ Compiled on December 18, 2020, at 10:14 am, UTC. Usage: tlynx compare [-n|--normalize] [-b|--bipartitions] [-t|--intersect] [-f|--newick-format FORMAT] NAMES@@ -430,9 +413,9 @@ tlynx examine --help - ELynx Suite version 0.5.0.+ ELynx Suite version 0.5.0.1. Developed by Dominik Schrempf.- Compiled on November 10, 2020, at 14:29 pm, UTC.+ Compiled on December 18, 2020, at 10:14 am, UTC. Usage: tlynx examine INPUT-FILE [-f|--newick-format FORMAT] Compute summary statistics of phylogenetic trees.@@ -454,9 +437,9 @@ tlynx simulate --help - ELynx Suite version 0.5.0.+ ELynx Suite version 0.5.0.1. Developed by Dominik Schrempf.- Compiled on November 10, 2020, at 14:29 pm, UTC.+ Compiled on December 18, 2020, at 10:14 am, UTC. Usage: tlynx simulate (-t|--nTrees INT) (-n|--nLeaves INT) PROCESS [-u|--sub-sample DOUBLE] [-s|--summary-statistics] @@ -491,9 +474,9 @@ elynx --help | head -n -16 - ELynx Suite version 0.5.0.+ ELynx Suite version 0.5.0.1. Developed by Dominik Schrempf.- Compiled on November 10, 2020, at 14:29 pm, UTC.+ Compiled on December 18, 2020, at 10:14 am, UTC. Usage: elynx COMMAND Validate and redo past ELynx analyses
elynx-markov.cabal view
@@ -1,18 +1,19 @@-cabal-version: 2.2-name: elynx-markov-version: 0.5.0-synopsis: Simulate molecular sequences along trees-description: Examine, modify, and simulate molecular sequences in a reproducible way. 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 (2020)-license: GPL-3.0-or-later-license-file: LICENSE-build-type: Simple+cabal-version: 2.2+name: elynx-markov+version: 0.5.0.1+license: GPL-3.0-or-later+license-file: LICENSE+copyright: Dominik Schrempf (2020)+maintainer: dominik.schrempf@gmail.com+author: Dominik Schrempf+homepage: https://github.com/dschrempf/elynx#readme+bug-reports: https://github.com/dschrempf/elynx/issues+synopsis: Simulate molecular sequences along trees+description:+ Examine, modify, and simulate molecular sequences in a reproducible way. Please see the README on GitHub at <https://github.com/dschrempf/elynx>. +category: Bioinformatics+build-type: Simple extra-source-files: README.md ChangeLog.md@@ -22,69 +23,67 @@ data/HSSPSingle.siteprofiles source-repository head- type: git- location: https://github.com/dschrempf/elynx+ type: git+ location: https://github.com/dschrempf/elynx library- exposed-modules:- ELynx.Data.MarkovProcess.AminoAcid- ELynx.Data.MarkovProcess.CXXModels- ELynx.Data.MarkovProcess.CXXModelsData- ELynx.Data.MarkovProcess.GammaRateHeterogeneity- ELynx.Data.MarkovProcess.MixtureModel- ELynx.Data.MarkovProcess.Nucleotide- ELynx.Data.MarkovProcess.PhyloModel- ELynx.Data.MarkovProcess.RateMatrix- ELynx.Data.MarkovProcess.SubstitutionModel- ELynx.Import.MarkovProcess.EDMModelPhylobayes- ELynx.Import.MarkovProcess.SiteprofilesPhylobayes- ELynx.Simulate.MarkovProcess- ELynx.Simulate.MarkovProcessAlongTree- other-modules:- Paths_elynx_markov- autogen-modules:- Paths_elynx_markov- hs-source-dirs:- src- ghc-options: -Wall- build-depends:- async- , attoparsec- , base >=4.7 && <5- , bytestring- , containers- , elynx-seq- , hmatrix- , integration- , math-functions- , mwc-random- , parallel- , primitive- , statistics- , vector- default-language: Haskell2010+ exposed-modules:+ ELynx.Data.MarkovProcess.AminoAcid+ ELynx.Data.MarkovProcess.CXXModels+ ELynx.Data.MarkovProcess.CXXModelsData+ ELynx.Data.MarkovProcess.GammaRateHeterogeneity+ ELynx.Data.MarkovProcess.MixtureModel+ ELynx.Data.MarkovProcess.Nucleotide+ ELynx.Data.MarkovProcess.PhyloModel+ ELynx.Data.MarkovProcess.RateMatrix+ ELynx.Data.MarkovProcess.SubstitutionModel+ ELynx.Import.MarkovProcess.EDMModelPhylobayes+ ELynx.Import.MarkovProcess.SiteprofilesPhylobayes+ ELynx.Simulate.MarkovProcess+ ELynx.Simulate.MarkovProcessAlongTree + hs-source-dirs: src+ other-modules: Paths_elynx_markov+ autogen-modules: Paths_elynx_markov+ default-language: Haskell2010+ ghc-options: -Wall -Wunused-packages+ build-depends:+ async >=2.2.2 && <2.3,+ attoparsec >=0.13.2.4 && <0.14,+ base >=4.7 && <5,+ bytestring >=0.10.10.0 && <0.11,+ containers >=0.6.2.1 && <0.7,+ elynx-seq >=0.5.0.1 && <0.6,+ hmatrix >=0.20.0.0 && <0.21,+ integration >=0.2.1 && <0.3,+ math-functions >=0.3.4.1 && <0.4,+ mwc-random >=0.14.0.0 && <0.15,+ parallel >=3.2.2.0 && <3.3,+ primitive >=0.7.1.0 && <0.8,+ statistics >=0.15.2.0 && <0.16,+ vector >=0.12.1.2 && <0.13+ test-suite markov-test- type: exitcode-stdio-1.0- main-is: Spec.hs- other-modules:- ELynx.Data.MarkovProcess.AminoAcidSpec- ELynx.Data.MarkovProcess.NucleotideSpec- ELynx.Data.MarkovProcess.RateMatrixSpec- ELynx.Import.MarkovProcess.EDMModelPhylobayesSpec- ELynx.Import.MarkovProcess.SiteprofilesPhylobayesSpec- ELynx.Simulate.MarkovProcessAlongTreeSpec- Paths_elynx_markov- hs-source-dirs:- test- ghc-options: -Wall- build-depends:- base >=4.7 && <5- , containers- , elynx-markov- , elynx-tools- , hmatrix- , hspec- , mwc-random- , vector- default-language: Haskell2010+ type: exitcode-stdio-1.0+ main-is: Spec.hs+ hs-source-dirs: test+ other-modules:+ ELynx.Data.MarkovProcess.AminoAcidSpec+ ELynx.Data.MarkovProcess.NucleotideSpec+ ELynx.Data.MarkovProcess.RateMatrixSpec+ ELynx.Import.MarkovProcess.EDMModelPhylobayesSpec+ ELynx.Import.MarkovProcess.SiteprofilesPhylobayesSpec+ ELynx.Simulate.MarkovProcessAlongTreeSpec+ Paths_elynx_markov++ default-language: Haskell2010+ ghc-options: -Wall -Wunused-packages+ build-depends:+ base >=4.7 && <5,+ containers >=0.6.2.1 && <0.7,+ elynx-markov -any,+ elynx-tools >=0.5.0.1 && <0.6,+ hmatrix >=0.20.0.0 && <0.21,+ hspec >=2.7.4 && <2.8,+ mwc-random >=0.14.0.0 && <0.15,+ vector >=0.12.1.2 && <0.13
src/ELynx/Simulate/MarkovProcess.hs view
@@ -41,12 +41,10 @@ | otherwise = expm $ scale t q -- | Move from a given state to a new one according to a transition probability--- matrix (for performance reasons this probability matrix needs to be given as--- a list of generators, see--- https://hackage.haskell.org/package/distribution-1.1.0.0/docs/Data-Distribution-Sample.html).+-- matrix .+-- -- This function is the bottleneck of the simulator and takes up most of the--- computation time. However, I was not able to find a faster implementation--- than the one from Data.Distribution.+-- computation time. jump :: (PrimMonad m) => State -> ProbMatrix -> Gen (PrimState m) -> m State jump i p = categorical (p ! i)
src/ELynx/Simulate/MarkovProcessAlongTree.hs view
@@ -71,7 +71,8 @@ simulateAndFlatten' is pt g -- This is the heart of the simulation. Take a tree and a list of root states.--- Recursively jump down the branches to the leafs. Forget states at internal.+-- Recursively jump down the branches to the leafs. Forget states at internal+-- nodes. simulateAndFlatten' :: (PrimMonad m) => [State] ->