NGLess-1.4.0: Tests-Src/Tests/Select.hs
{-# LANGUAGE TemplateHaskell, QuasiQuotes #-}
module Tests.Select
( tgroup_Select
) where
import Test.Tasty.TH
import Test.Tasty.HUnit
import qualified Data.ByteString.Lazy as BL
import qualified Data.ByteString.Builder as BB
import Interpretation.Select (fixCigar)
import Data.Sam
import Tests.Utils
import Utils.Here
tgroup_Select = $(testGroupGenerator)
samLineFlat = [here|IRIS:7:3:1046:1723#0 4 * 0 0 40M * 0 0 AAAAAAAAAAAAAAAAAAAATTTAAA aaaaaaaaaaaaaaaaaa`abbba`^ AS:i:0 XS:i:0 NM:i:1|]
samLine = SamLine
{ samQName = "IRIS:7:3:1046:1723#0"
, samFlag = 4
, samRName = "*"
, samPos = 0
, samMapq = 0
, samCigar = "40M"
, samRNext = "*"
, samPNext = 0
, samTLen = 0
, samSeq = "AAAAAAAAAAAAAAAAAAAATTTAAA"
, samQual = "aaaaaaaaaaaaaaaaaa`abbba`^"
, samExtra = "AS:i:0\tXS:i:0\tNM:i:1"
}
simple = [here|
simulated:1:1:38:663#0 0 Ref1 1018 3 69M16S = 1018 0 TTCGAGAAGATGGGTATCGTGGGAAATAACGGAACGGGGAAGTCTACCTTCATCAAGATGCTGCTGGGCTTGGTGAAACCCGACA IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII NM:i:5 MD:Z:17T5T14A2A2G24 AS:i:44 XS:i:40|]
complex = [here|
SRR070372.3 16 V 7198336 21 26M3D9M3D6M6D8M2D21M * 0 0 CCCTTATGCAGGTCTTAACACAATTCTTGTATGTTCCATCGTTCTCCAGAATGAATATCAATGATACCAA 014<<BBBBDDFFFDDDDFHHFFD?@??DBBBB5555::?=BBBBDDF@BBFHHHHHHHFFFFFD@@@@@ NM:i:14 MD:Z:26^TTT9^TTC6^TTTTTT8^AA21 AS:i:3 XS:i:0|]
refinsert = [here|
SRR6028238.2619770 417 X 1319005 0 5M1I40M54H = 2019245 700291 TTTTCCGCTGAATATGCCCAAAGTGCAACAACGACGACCGCCGCCA @DDDEDDDDBDDDEEECDDDDDCAACCCCBBDDDBBBBBB<@BBDB NM:i:1 MD:Z:45 MC:Z:51M50H AS:i:40|]
case_read_one_Sam_Line = readSamLine samLineFlat @?= Right samLine
case_encode = (BL.toStrict . BB.toLazyByteString . encodeSamLine $ samLine) @?= samLineFlat
case_isAligned_raw = isAligned (fromRight . readSamLine $ complex) @? "Should be aligned"
case_match_identity_soft = fromRight (matchIdentity True samLine) == 0.975 @? "Soft clipped read (low identity)"
case_matchSize1 = fromRight (matchSize True =<< readSamLine complex) @?= (26+ 9+ 6+ 8+ 21)
--26M3D9M3D6M6D8M2D21M
case_matchSize2 = fromRight (matchSize True =<< readSamLine simple) @?= 69
case_matchSize3 = fromRight (matchSize True =<< readSamLine refinsert) @?= 46
case_cigarOK = fixCigar "9M" 9 @?= Right "9M"
case_cigarH = fixCigar "4H5M" 9 @?= Right "4S5M"
case_cigarH2 = fixCigar "4H5M2H" 11 @?= Right "4S5M2S"
case_cigarH3 = fixCigar "5M1I40M54H" 46 @?= Right "5M1I40M54H"
case_cigarH4 = fixCigar "5M1I40M54H" 100 @?= Right "5M1I40M54S"