elynx-seq 0.6.1.1 → 0.7.0.1
raw patch · 29 files changed
+215/−144 lines, 29 filesdep +randomdep −mwc-randomPVP ok
version bump matches the API change (PVP)
Dependencies added: random
Dependencies removed: mwc-random
API changes (from Hackage documentation)
+ ELynx.Sequence.Divergence: divergence :: Sequence -> Sequence -> Either String (Matrix Int)
- ELynx.Sequence.Alignment: randomSubSample :: PrimMonad m => Int -> Alignment -> Gen (PrimState m) -> m Alignment
+ ELynx.Sequence.Alignment: randomSubSample :: StatefulGen g m => Int -> Alignment -> g -> m Alignment
Files
- ChangeLog.md +8/−1
- README.md +7/−8
- elynx-seq.cabal +70/−67
- src/ELynx/Alphabet/Alphabet.hs +1/−1
- src/ELynx/Alphabet/Character.hs +1/−1
- src/ELynx/Alphabet/DistributionDiversity.hs +1/−1
- src/ELynx/Character/AminoAcid.hs +1/−1
- src/ELynx/Character/AminoAcidI.hs +1/−1
- src/ELynx/Character/AminoAcidS.hs +1/−1
- src/ELynx/Character/AminoAcidX.hs +1/−1
- src/ELynx/Character/Character.hs +1/−1
- src/ELynx/Character/Codon.hs +1/−1
- src/ELynx/Character/Nucleotide.hs +1/−1
- src/ELynx/Character/NucleotideI.hs +1/−1
- src/ELynx/Character/NucleotideX.hs +1/−1
- src/ELynx/Sequence/Alignment.hs +16/−18
- src/ELynx/Sequence/Defaults.hs +1/−1
- src/ELynx/Sequence/Distance.hs +1/−1
- src/ELynx/Sequence/Divergence.hs +64/−0
- src/ELynx/Sequence/Export/Fasta.hs +1/−1
- src/ELynx/Sequence/Import/Fasta.hs +1/−1
- src/ELynx/Sequence/Sequence.hs +20/−20
- src/ELynx/Sequence/Translate.hs +1/−1
- test/ELynx/Alphabet/DistributionDiversitySpec.hs +1/−1
- test/ELynx/Sequence/AlignmentSpec.hs +1/−1
- test/ELynx/Sequence/Export/FastaSpec.hs +8/−8
- test/ELynx/Sequence/Import/FastaSpec.hs +1/−1
- test/ELynx/Sequence/SequenceSpec.hs +1/−1
- test/ELynx/Sequence/TranslateSpec.hs +1/−1
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-seq.cabal view
@@ -1,97 +1,100 @@-cabal-version: 3.0-name: elynx-seq-version: 0.6.1.1-synopsis: Handle molecular sequences-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 (2021)-license: GPL-3.0-or-later-license-file: LICENSE-build-type: Simple+cabal-version: 3.0+name: elynx-seq+version: 0.7.0.1+synopsis: Handle molecular sequences+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: 2021 Dominik Schrempf+license: GPL-3.0-or-later+license-file: LICENSE+build-type: Simple extra-source-files:- README.md- ChangeLog.md- data/AminoAcid.fasta- data/Erroneous.fasta- data/NucleotideDifferentLength.fasta- data/NucleotideDifferentLengthTrimmed.fasta- data/Nucleotide.fasta- data/NucleotideIUPAC.fasta- data/TranslateMitochondrialVertebrateDNA.fasta- data/TranslateMitochondrialVertebrateProtein.fasta+ ChangeLog.md+ data/AminoAcid.fasta+ data/Erroneous.fasta+ data/Nucleotide.fasta+ data/NucleotideDifferentLength.fasta+ data/NucleotideDifferentLengthTrimmed.fasta+ data/NucleotideIUPAC.fasta+ data/TranslateMitochondrialVertebrateDNA.fasta+ data/TranslateMitochondrialVertebrateProtein.fasta+ README.md source-repository head- type: git+ type: git location: https://github.com/dschrempf/elynx library exposed-modules:- ELynx.Alphabet.Alphabet- ELynx.Alphabet.Character- ELynx.Alphabet.DistributionDiversity- ELynx.Character.AminoAcid- ELynx.Character.AminoAcidI- ELynx.Character.AminoAcidS- ELynx.Character.AminoAcidX- ELynx.Character.Character- ELynx.Character.Codon- ELynx.Character.Nucleotide- ELynx.Character.NucleotideI- ELynx.Character.NucleotideX- ELynx.Sequence.Alignment- ELynx.Sequence.Defaults- ELynx.Sequence.Distance- ELynx.Sequence.Sequence- ELynx.Sequence.Translate- ELynx.Sequence.Export.Fasta- ELynx.Sequence.Import.Fasta- other-modules:- Paths_elynx_seq- autogen-modules:- Paths_elynx_seq- hs-source-dirs: src- ghc-options: -Wall -Wunused-packages+ ELynx.Alphabet.Alphabet+ ELynx.Alphabet.Character+ ELynx.Alphabet.DistributionDiversity+ ELynx.Character.AminoAcid+ ELynx.Character.AminoAcidI+ ELynx.Character.AminoAcidS+ ELynx.Character.AminoAcidX+ ELynx.Character.Character+ ELynx.Character.Codon+ ELynx.Character.Nucleotide+ ELynx.Character.NucleotideI+ ELynx.Character.NucleotideX+ ELynx.Sequence.Alignment+ ELynx.Sequence.Defaults+ ELynx.Sequence.Distance+ ELynx.Sequence.Divergence+ ELynx.Sequence.Export.Fasta+ ELynx.Sequence.Import.Fasta+ ELynx.Sequence.Sequence+ ELynx.Sequence.Translate++ other-modules: Paths_elynx_seq+ autogen-modules: Paths_elynx_seq+ hs-source-dirs: src+ ghc-options: -Wall -Wunused-packages build-depends:- aeson+ , aeson , attoparsec- , base >=4.7 && <5+ , base >=4.7 && <5 , bytestring , containers , matrices- , mwc-random , parallel , primitive+ , random , vector , vector-th-unbox , word8+ default-language: Haskell2010 test-suite seq-test- type: exitcode-stdio-1.0- main-is: Spec.hs+ type: exitcode-stdio-1.0+ main-is: Spec.hs other-modules:- ELynx.Alphabet.DistributionDiversitySpec- ELynx.Sequence.AlignmentSpec- ELynx.Sequence.SequenceSpec- ELynx.Sequence.TranslateSpec- ELynx.Sequence.Export.FastaSpec- ELynx.Sequence.Import.FastaSpec- Paths_elynx_seq- autogen-modules:- Paths_elynx_seq- hs-source-dirs: test- ghc-options: -Wall -Wunused-packages+ ELynx.Alphabet.DistributionDiversitySpec+ ELynx.Sequence.AlignmentSpec+ ELynx.Sequence.Export.FastaSpec+ ELynx.Sequence.Import.FastaSpec+ ELynx.Sequence.SequenceSpec+ ELynx.Sequence.TranslateSpec+ Paths_elynx_seq++ autogen-modules: Paths_elynx_seq+ hs-source-dirs: test+ ghc-options: -Wall -Wunused-packages build-depends:- base >=4.7 && <5+ , base >=4.7 && <5 , bytestring , elynx-seq , elynx-tools , hspec , matrices , vector+ default-language: Haskell2010
src/ELynx/Alphabet/Alphabet.hs view
@@ -3,7 +3,7 @@ -- | -- Module : ELynx.Alphabet.Alphabet -- Description : Alphabets store hereditary information--- Copyright : (c) Dominik Schrempf 2021+-- Copyright : 2021 Dominik Schrempf -- License : GPL-3.0-or-later -- -- Maintainer : dominik.schrempf@gmail.com
src/ELynx/Alphabet/Character.hs view
@@ -5,7 +5,7 @@ -- | -- Module : ELynx.Alphabet.Character -- Description : Alphabet characters--- Copyright : (c) Dominik Schrempf 2021+-- Copyright : 2021 Dominik Schrempf -- License : GPL-3.0-or-later -- -- Maintainer : dominik.schrempf@gmail.com
src/ELynx/Alphabet/DistributionDiversity.hs view
@@ -3,7 +3,7 @@ -- | -- Module : ELynx.Alphabet.DistributionDiversity -- Description : Summarize statistics for alphabets--- Copyright : (c) Dominik Schrempf 2021+-- Copyright : 2021 Dominik Schrempf -- License : GPL-3.0-or-later -- -- Maintainer : dominik.schrempf@gmail.com
src/ELynx/Character/AminoAcid.hs view
@@ -5,7 +5,7 @@ -- | -- Module : ELynx.AminoAcid -- Description : Amino acid related types and functions--- Copyright : (c) Dominik Schrempf 2021+-- Copyright : 2021 Dominik Schrempf -- License : GPL-3.0-or-later -- -- Maintainer : dominik.schrempf@gmail.com
src/ELynx/Character/AminoAcidI.hs view
@@ -5,7 +5,7 @@ -- | -- Module : ELynx.AminoAcid -- Description : Amino acid related types and functions--- Copyright : (c) Dominik Schrempf 2021+-- Copyright : 2021 Dominik Schrempf -- License : GPL-3.0-or-later -- -- Maintainer : dominik.schrempf@gmail.com
src/ELynx/Character/AminoAcidS.hs view
@@ -5,7 +5,7 @@ -- | -- Module : ELynx.AminoAcid -- Description : Amino acid related types and functions--- Copyright : (c) Dominik Schrempf 2021+-- Copyright : 2021 Dominik Schrempf -- License : GPL-3.0-or-later -- -- Maintainer : dominik.schrempf@gmail.com
src/ELynx/Character/AminoAcidX.hs view
@@ -5,7 +5,7 @@ -- | -- Module : ELynx.AminoAcid -- Description : Amino acid related types and functions--- Copyright : (c) Dominik Schrempf 2021+-- Copyright : 2021 Dominik Schrempf -- License : GPL-3.0-or-later -- -- Maintainer : dominik.schrempf@gmail.com
src/ELynx/Character/Character.hs view
@@ -1,7 +1,7 @@ -- | -- Module : Character -- Description : Character interface--- Copyright : (c) Dominik Schrempf 2021+-- Copyright : 2021 Dominik Schrempf -- License : GPL-3.0-or-later -- -- Maintainer : dominik.schrempf@gmail.com
src/ELynx/Character/Codon.hs view
@@ -3,7 +3,7 @@ -- | -- Module : ELynx.Character.Codon -- Description : Codons are triplets of nucleotides--- Copyright : (c) Dominik Schrempf 2021+-- Copyright : 2021 Dominik Schrempf -- License : GPL-3.0-or-later -- -- Maintainer : dominik.schrempf@gmail.com
src/ELynx/Character/Nucleotide.hs view
@@ -5,7 +5,7 @@ -- | -- Module : ELynx.Nucleotide -- Description : Nucleotides--- Copyright : (c) Dominik Schrempf 2021+-- Copyright : 2021 Dominik Schrempf -- License : GPL-3.0-or-later -- -- Maintainer : dominik.schrempf@gmail.com
src/ELynx/Character/NucleotideI.hs view
@@ -5,7 +5,7 @@ -- | -- Module : ELynx.NucleotideI -- Description : Nucleotides with IUPAC characters--- Copyright : (c) Dominik Schrempf 2021+-- Copyright : 2021 Dominik Schrempf -- License : GPL-3.0-or-later -- -- Maintainer : dominik.schrempf@gmail.com
src/ELynx/Character/NucleotideX.hs view
@@ -5,7 +5,7 @@ -- | -- Module : ELynx.NucleotideX -- Description : Extended nucleotides including gaps and unknowns--- Copyright : (c) Dominik Schrempf 2021+-- Copyright : 2021 Dominik Schrempf -- -- License : GPL-3.0-or-later --
src/ELynx/Sequence/Alignment.hs view
@@ -1,7 +1,7 @@ -- | -- Module : ELynx.Sequence.Alignment -- Description : Multi sequence alignment related types and functions--- Copyright : (c) Dominik Schrempf 2021+-- Copyright : 2021 Dominik Schrempf -- License : GPL-3.0-or-later -- -- Maintainer : dominik.schrempf@gmail.com@@ -45,7 +45,6 @@ where import Control.Monad hiding (join)-import Control.Monad.Primitive import Control.Parallel.Strategies import qualified Data.ByteString.Lazy.Char8 as BL import Data.List hiding@@ -59,7 +58,7 @@ import qualified ELynx.Alphabet.DistributionDiversity as D import ELynx.Sequence.Defaults import qualified ELynx.Sequence.Sequence as S-import System.Random.MWC+import System.Random.Stateful import Prelude hiding ( concat, length,@@ -86,8 +85,8 @@ fromSequences :: [S.Sequence] -> Either String Alignment fromSequences ss | S.equalLength ss && allEqual (map S.alphabet ss) =- Right $- Alignment ns ds a d+ Right $+ Alignment ns ds a d | S.equalLength ss = Left "Sequences do not have equal codes." | otherwise = Left "Sequences do not have equal lengths." where@@ -160,11 +159,11 @@ -- top bottom. join t b | length t /= length b =- error- "join: Multi sequence alignments do not have equal lengths."+ error+ "join: Multi sequence alignments do not have equal lengths." | alphabet t /= alphabet b =- error- "join: Multi sequence alignments do not have equal alphabets."+ error+ "join: Multi sequence alignments do not have equal alphabets." | otherwise = Alignment ns ds al (tD === bD) where ns = names t ++ names b@@ -179,16 +178,16 @@ -- left right. concat l r | nSequences l /= nSequences r =- error- "concat: Multi sequence alignments do not have an equal number of sequences."+ error+ "concat: Multi sequence alignments do not have an equal number of sequences." | alphabet l /= alphabet r =- error "concat: Multi sequence alignments do not have an equal alphabets."+ error "concat: Multi sequence alignments do not have an equal alphabets." | names l /= names r =- error "concat: Multi sequence alignments do not have an equal names."+ error "concat: Multi sequence alignments do not have an equal names." | descriptions l /= descriptions r =- error "concat: Multi sequence alignments do not have an equal descriptions."+ error "concat: Multi sequence alignments do not have an equal descriptions." | otherwise =- Alignment (names l) (descriptions l) (alphabet l) (lD ||| rD)+ Alignment (names l) (descriptions l) (alphabet l) (lD ||| rD) where lD = matrix l rD = matrix r@@ -315,9 +314,8 @@ subSample is a = a {matrix = m'} where m' = subSampleMatrix is $ matrix a -- | Randomly sample a given number of sites of the multi sequence alignment.-randomSubSample ::- PrimMonad m => Int -> Alignment -> Gen (PrimState m) -> m Alignment+randomSubSample :: StatefulGen g m => Int -> Alignment -> g -> m Alignment randomSubSample n a g = do let l = length a- is <- replicateM n $ uniformR (0, l - 1) g+ is <- replicateM n $ uniformRM (0, l - 1) g return $ subSample is a
src/ELynx/Sequence/Defaults.hs view
@@ -1,7 +1,7 @@ -- | -- Module : ELynx.Defaults -- Description : Various default values--- Copyright : (c) Dominik Schrempf 2021+-- Copyright : 2021 Dominik Schrempf -- License : GPL-3.0-or-later -- -- Maintainer : dominik.schrempf@gmail.com
src/ELynx/Sequence/Distance.hs view
@@ -1,7 +1,7 @@ -- | -- Module : ELynx.Sequence.Distance -- Description : Distance functions between sequences--- Copyright : (c) Dominik Schrempf, 2021+-- Copyright : 2021 Dominik Schrempf -- License : GPL-3.0-or-later -- -- Maintainer : dominik.schrempf@gmail.com
+ src/ELynx/Sequence/Divergence.hs view
@@ -0,0 +1,64 @@+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE KindSignatures #-}++-- |+-- Module : ELynx.Sequence.Divergence+-- Description : Compute divergence matrix between sequences+-- Copyright : 2022 Dominik Schrempf+-- License : GPL-3.0-or-later+--+-- Maintainer : dominik.schrempf@gmail.com+-- Stability : experimental+-- Portability : portable+--+-- Creation date: Thu Jul 7 17:55:23 2022.+module ELynx.Sequence.Divergence+ ( divergence,+ )+where++import Control.Monad.Primitive+import qualified Data.Matrix.Unboxed as MU+import qualified Data.Matrix.Unboxed.Mutable as MU+import Data.Maybe+import qualified Data.Set as S+import qualified Data.Vector.Unboxed as VU+import qualified Data.Vector.Unboxed.Mutable as VUM+import ELynx.Alphabet.Alphabet+import ELynx.Sequence.Sequence+import GHC.Exts (Constraint)++type Context x = (VUM.Unbox x :: Constraint)++modify :: (Context a, PrimMonad s) => MU.MMatrix (PrimState s) a -> (Int, Int) -> (a -> a) -> s ()+modify m ij f = do+ x <- MU.read m ij+ MU.write m ij (f x)++divergence :: Sequence -> Sequence -> Either String (MU.Matrix Int)+divergence s1 s2+ | not (alphabet s1 == alphabet s2) = err "sequences have different alphabets"+ | not (equalLength [s1, s2]) = err "sequences have different lengths"+ | otherwise = Right $ MU.create $ do+ m <- MU.new (n, n)+ -- Initialize matrix.+ sequence_ [MU.write m (i, j) 0 | i <- [0 .. (n - 1)], j <- [0 .. (n - 1)]]+ -- Fill matrix.+ sequence_ $+ catMaybes+ [ do+ -- Only treat sites where both characters are standard.+ i <- mi+ j <- mj+ Just $ modify m (i, j) (+ 1)+ | (x, y) <- zip (VU.toList cs1) (VU.toList cs2),+ let mi = S.lookupIndex x a,+ let mj = S.lookupIndex y a+ ]+ return m+ where+ err m = Left $ "divergence: " <> m+ a = std $ alphabetSpec $ alphabet s1+ n = S.size a+ cs1 = characters s1+ cs2 = characters s2
src/ELynx/Sequence/Export/Fasta.hs view
@@ -1,7 +1,7 @@ -- | -- Module : ELynx.Sequence.Export.Fasta -- Description : Export Fasta sequences--- Copyright : (c) Dominik Schrempf 2021+-- Copyright : 2021 Dominik Schrempf -- License : GPL-3.0-or-later -- --
src/ELynx/Sequence/Import/Fasta.hs view
@@ -3,7 +3,7 @@ -- | -- Module : ELynx.Sequence.Import.Fasta -- Description : Import Fasta sequences--- Copyright : (c) Dominik Schrempf 2021+-- Copyright : 2021 Dominik Schrempf -- License : GPL-3.0-or-later -- --
src/ELynx/Sequence/Sequence.hs view
@@ -3,7 +3,7 @@ -- | -- Module : ELynx.Sequence -- Description : Hereditary sequences--- Copyright : (c) Dominik Schrempf 2021+-- Copyright : 2021 Dominik Schrempf -- License : GPL-3.0-or-later -- -- Maintainer : dominik.schrempf@gmail.com@@ -198,28 +198,28 @@ concat :: Sequence -> Sequence -> Sequence concat (Sequence i d c cs) (Sequence j f k ks) | i /= j =- error $- "concatenate: Sequences do not have equal names: "- ++ BL.unpack i- ++ ", "- ++ BL.unpack j- ++ "."+ error $+ "concatenate: Sequences do not have equal names: "+ ++ BL.unpack i+ ++ ", "+ ++ BL.unpack j+ ++ "." | d /= f =- error $- "concatenate: Sequences do not have equal descriptions: "- ++ BL.unpack d- ++ ", "- ++ BL.unpack f- ++ "."+ error $+ "concatenate: Sequences do not have equal descriptions: "+ ++ BL.unpack d+ ++ ", "+ ++ BL.unpack f+ ++ "." | c /= k =- error $- "concatenate: Sequences do not have equal alphabets: "- ++ show c- ++ ", "- ++ show k- ++ "."+ error $+ "concatenate: Sequences do not have equal alphabets: "+ ++ show c+ ++ ", "+ ++ show k+ ++ "." | otherwise =- Sequence i d c (cs <> ks)+ Sequence i d c (cs <> ks) -- | Concatenate a list of sequences, see 'concat'. concatSequences :: [[Sequence]] -> [Sequence]
src/ELynx/Sequence/Translate.hs view
@@ -1,7 +1,7 @@ -- | -- Module : ELynx.Sequence.Translate -- Description : Translate sequences--- Copyright : (c) Dominik Schrempf 2021+-- Copyright : 2021 Dominik Schrempf -- License : GPL-3.0-or-later -- -- Maintainer : dominik.schrempf@gmail.com
test/ELynx/Alphabet/DistributionDiversitySpec.hs view
@@ -1,6 +1,6 @@ -- | -- Module : ELynx.Alphabet.DistributionDiversitySpec--- Copyright : (c) Dominik Schrempf 2021+-- Copyright : 2021 Dominik Schrempf -- License : GPL-3.0-or-later -- -- Maintainer : dominik.schrempf@gmail.com
test/ELynx/Sequence/AlignmentSpec.hs view
@@ -1,6 +1,6 @@ -- | -- Module : ELynx.Sequence.AlignmentSpec--- Copyright : (c) Dominik Schrempf 2021+-- Copyright : 2021 Dominik Schrempf -- License : GPL-3.0-or-later -- -- Maintainer : dominik.schrempf@gmail.com
test/ELynx/Sequence/Export/FastaSpec.hs view
@@ -1,6 +1,6 @@ -- | -- Module : ELynx.Sequence.Export.FastaSpec--- Copyright : (c) Dominik Schrempf 2021+-- Copyright : 2021 Dominik Schrempf -- License : GPL-3.0-or-later -- -- Maintainer : dominik.schrempf@gmail.com@@ -24,11 +24,11 @@ spec :: Spec spec =- describe "sequencesToFasta" $- it+ describe "sequencesToFasta"+ $ it "should create a fasta bytestring that, when parsed again, is the original sequence"- $ do- ss <- parseFileWith (fasta DNAI) fastaNucleotideIUPACFN- let f = sequencesToFasta ss- ss' = parseByteStringWith (fasta DNAI) f- ss `shouldBe` ss'+ $ do+ ss <- parseFileWith (fasta DNAI) fastaNucleotideIUPACFN+ let f = sequencesToFasta ss+ ss' = parseByteStringWith (fasta DNAI) f+ ss `shouldBe` ss'
test/ELynx/Sequence/Import/FastaSpec.hs view
@@ -1,6 +1,6 @@ -- | -- Module : ELynx.Sequence.Import.FastaSpec--- Copyright : (c) Dominik Schrempf 2021+-- Copyright : 2021 Dominik Schrempf -- License : GPL-3.0-or-later -- -- Maintainer : dominik.schrempf@gmail.com
test/ELynx/Sequence/SequenceSpec.hs view
@@ -1,6 +1,6 @@ -- | -- Module : ELynx.Sequence.SequenceSpec--- Copyright : (c) Dominik Schrempf 2021+-- Copyright : 2021 Dominik Schrempf -- License : GPL-3.0-or-later -- -- Maintainer : dominik.schrempf@gmail.com
test/ELynx/Sequence/TranslateSpec.hs view
@@ -1,6 +1,6 @@ -- | -- Module : ELynx.Sequence.TranslateSpec--- Copyright : (c) Dominik Schrempf 2021+-- Copyright : 2021 Dominik Schrempf -- License : GPL-3.0-or-later -- -- Maintainer : dominik.schrempf@gmail.com