packages feed

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 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