packages feed

elynx-seq-0.0.1: test/ELynx/Data/Sequence/MultiSequenceAlignmentSpec.hs

{- |
Module      :  ELynx.Data.Sequence.MultiSequenceAlignmentSpec
Copyright   :  (c) Dominik Schrempf 2018
License     :  GPL-3

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

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

-}

module ELynx.Data.Sequence.MultiSequenceAlignmentSpec
  (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.MultiSequenceAlignment
import           ELynx.Import.Sequence.Fasta
import           ELynx.Tools.InputOutput
import           Files

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

ssMSA :: MultiSequenceAlignment
ssMSA = MultiSequenceAlignment (map L.pack ["SEQUENCE_1", "SEQUENCE_2", "SEQUENCE_3"]) DNAI ssData

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