packages feed

elynx-seq-0.2.1: test/ELynx/Data/Sequence/AlignmentSpec.hs

{- |
Module      :  ELynx.Data.Sequence.AlignmentSpec
Copyright   :  (c) Dominik Schrempf 2018
License     :  GPL-3.0-or-later

Maintainer  :  dominik.schrempf@gmail.com
Stability   :  unstable
Portability :  portable

Creation date: Fri Oct  5 14:25:42 2018.

-}

module ELynx.Data.Sequence.AlignmentSpec
  ( spec
  )
where

import qualified Data.ByteString.Lazy.Char8    as L
import qualified Data.Matrix.Unboxed           as M
import           Test.Hspec

import           ELynx.Data.Alphabet.Alphabet
import           ELynx.Data.Alphabet.Character
import           ELynx.Data.Sequence.Alignment
import           ELynx.Import.Sequence.Fasta
import           ELynx.Tools

fastaNucleotideIUPACFN :: FilePath
fastaNucleotideIUPACFN = "data/NucleotideIUPAC.fasta"

ssData :: M.Matrix Character
ssData = M.fromLists $ map (reverse . map fromChar) ["AAA", "GAA", "TAA"]

ssA :: Alignment
ssA = Alignment (map L.pack ["SEQUENCE_1", "SEQUENCE_2", "SEQUENCE_3"])
                (replicate 3 L.empty)
                DNAI
                ssData

spec :: Spec
spec = describe "subSample" $ it "correctly sub sample an Alignment" $ do
  a <-
    either error id
    .   fromSequences
    <$> parseFileWith (fasta DNAI) fastaNucleotideIUPACFN
  let ss = subSample [0, 3, 5] a
  ss `shouldBe` ssA