{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
module ELynx.Character.AminoAcidI
( AminoAcidI (..),
)
where
import Data.ByteString.Internal (c2w, w2c)
import Data.Vector.Unboxed.Deriving
import Data.Word8
import qualified ELynx.Character.Character as C
data AminoAcidI
= A
| C
| D
| E
| F
| G
| H
| I
| K
| L
| M
| N
| P
| Q
| R
| S
| T
| V
| W
| Y
| J
| B
| Z
| X
| Stop
| Gap
deriving (Int -> AminoAcidI -> ShowS
[AminoAcidI] -> ShowS
AminoAcidI -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AminoAcidI] -> ShowS
$cshowList :: [AminoAcidI] -> ShowS
show :: AminoAcidI -> String
$cshow :: AminoAcidI -> String
showsPrec :: Int -> AminoAcidI -> ShowS
$cshowsPrec :: Int -> AminoAcidI -> ShowS
Show, ReadPrec [AminoAcidI]
ReadPrec AminoAcidI
Int -> ReadS AminoAcidI
ReadS [AminoAcidI]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [AminoAcidI]
$creadListPrec :: ReadPrec [AminoAcidI]
readPrec :: ReadPrec AminoAcidI
$creadPrec :: ReadPrec AminoAcidI
readList :: ReadS [AminoAcidI]
$creadList :: ReadS [AminoAcidI]
readsPrec :: Int -> ReadS AminoAcidI
$creadsPrec :: Int -> ReadS AminoAcidI
Read, AminoAcidI -> AminoAcidI -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AminoAcidI -> AminoAcidI -> Bool
$c/= :: AminoAcidI -> AminoAcidI -> Bool
== :: AminoAcidI -> AminoAcidI -> Bool
$c== :: AminoAcidI -> AminoAcidI -> Bool
Eq, Eq AminoAcidI
AminoAcidI -> AminoAcidI -> Bool
AminoAcidI -> AminoAcidI -> Ordering
AminoAcidI -> AminoAcidI -> AminoAcidI
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: AminoAcidI -> AminoAcidI -> AminoAcidI
$cmin :: AminoAcidI -> AminoAcidI -> AminoAcidI
max :: AminoAcidI -> AminoAcidI -> AminoAcidI
$cmax :: AminoAcidI -> AminoAcidI -> AminoAcidI
>= :: AminoAcidI -> AminoAcidI -> Bool
$c>= :: AminoAcidI -> AminoAcidI -> Bool
> :: AminoAcidI -> AminoAcidI -> Bool
$c> :: AminoAcidI -> AminoAcidI -> Bool
<= :: AminoAcidI -> AminoAcidI -> Bool
$c<= :: AminoAcidI -> AminoAcidI -> Bool
< :: AminoAcidI -> AminoAcidI -> Bool
$c< :: AminoAcidI -> AminoAcidI -> Bool
compare :: AminoAcidI -> AminoAcidI -> Ordering
$ccompare :: AminoAcidI -> AminoAcidI -> Ordering
Ord, Int -> AminoAcidI
AminoAcidI -> Int
AminoAcidI -> [AminoAcidI]
AminoAcidI -> AminoAcidI
AminoAcidI -> AminoAcidI -> [AminoAcidI]
AminoAcidI -> AminoAcidI -> AminoAcidI -> [AminoAcidI]
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: AminoAcidI -> AminoAcidI -> AminoAcidI -> [AminoAcidI]
$cenumFromThenTo :: AminoAcidI -> AminoAcidI -> AminoAcidI -> [AminoAcidI]
enumFromTo :: AminoAcidI -> AminoAcidI -> [AminoAcidI]
$cenumFromTo :: AminoAcidI -> AminoAcidI -> [AminoAcidI]
enumFromThen :: AminoAcidI -> AminoAcidI -> [AminoAcidI]
$cenumFromThen :: AminoAcidI -> AminoAcidI -> [AminoAcidI]
enumFrom :: AminoAcidI -> [AminoAcidI]
$cenumFrom :: AminoAcidI -> [AminoAcidI]
fromEnum :: AminoAcidI -> Int
$cfromEnum :: AminoAcidI -> Int
toEnum :: Int -> AminoAcidI
$ctoEnum :: Int -> AminoAcidI
pred :: AminoAcidI -> AminoAcidI
$cpred :: AminoAcidI -> AminoAcidI
succ :: AminoAcidI -> AminoAcidI
$csucc :: AminoAcidI -> AminoAcidI
Enum, AminoAcidI
forall a. a -> a -> Bounded a
maxBound :: AminoAcidI
$cmaxBound :: AminoAcidI
minBound :: AminoAcidI
$cminBound :: AminoAcidI
Bounded)
toWord :: AminoAcidI -> Word8
toWord :: AminoAcidI -> Word8
toWord AminoAcidI
A = Char -> Word8
c2w Char
'A'
toWord AminoAcidI
C = Char -> Word8
c2w Char
'C'
toWord AminoAcidI
D = Char -> Word8
c2w Char
'D'
toWord AminoAcidI
E = Char -> Word8
c2w Char
'E'
toWord AminoAcidI
F = Char -> Word8
c2w Char
'F'
toWord AminoAcidI
G = Char -> Word8
c2w Char
'G'
toWord AminoAcidI
H = Char -> Word8
c2w Char
'H'
toWord AminoAcidI
I = Char -> Word8
c2w Char
'I'
toWord AminoAcidI
K = Char -> Word8
c2w Char
'K'
toWord AminoAcidI
L = Char -> Word8
c2w Char
'L'
toWord AminoAcidI
M = Char -> Word8
c2w Char
'M'
toWord AminoAcidI
N = Char -> Word8
c2w Char
'N'
toWord AminoAcidI
P = Char -> Word8
c2w Char
'P'
toWord AminoAcidI
Q = Char -> Word8
c2w Char
'Q'
toWord AminoAcidI
R = Char -> Word8
c2w Char
'R'
toWord AminoAcidI
S = Char -> Word8
c2w Char
'S'
toWord AminoAcidI
T = Char -> Word8
c2w Char
'T'
toWord AminoAcidI
V = Char -> Word8
c2w Char
'V'
toWord AminoAcidI
W = Char -> Word8
c2w Char
'W'
toWord AminoAcidI
Y = Char -> Word8
c2w Char
'Y'
toWord AminoAcidI
J = Char -> Word8
c2w Char
'J'
toWord AminoAcidI
B = Char -> Word8
c2w Char
'B'
toWord AminoAcidI
Z = Char -> Word8
c2w Char
'Z'
toWord AminoAcidI
X = Char -> Word8
c2w Char
'X'
toWord AminoAcidI
Stop = Char -> Word8
c2w Char
'*'
toWord AminoAcidI
Gap = Char -> Word8
c2w Char
'-'
fromWord :: Word8 -> AminoAcidI
fromWord :: Word8 -> AminoAcidI
fromWord Word8
w = case Word8 -> Char
w2c Word8
w of
Char
'A' -> AminoAcidI
A
Char
'C' -> AminoAcidI
C
Char
'D' -> AminoAcidI
D
Char
'E' -> AminoAcidI
E
Char
'F' -> AminoAcidI
F
Char
'G' -> AminoAcidI
G
Char
'H' -> AminoAcidI
H
Char
'I' -> AminoAcidI
I
Char
'K' -> AminoAcidI
K
Char
'L' -> AminoAcidI
L
Char
'M' -> AminoAcidI
M
Char
'N' -> AminoAcidI
N
Char
'P' -> AminoAcidI
P
Char
'Q' -> AminoAcidI
Q
Char
'R' -> AminoAcidI
R
Char
'S' -> AminoAcidI
S
Char
'T' -> AminoAcidI
T
Char
'V' -> AminoAcidI
V
Char
'W' -> AminoAcidI
W
Char
'Y' -> AminoAcidI
Y
Char
'J' -> AminoAcidI
J
Char
'B' -> AminoAcidI
B
Char
'Z' -> AminoAcidI
Z
Char
'X' -> AminoAcidI
X
Char
'?' -> AminoAcidI
X
Char
'*' -> AminoAcidI
Stop
Char
'-' -> AminoAcidI
Gap
Char
'.' -> AminoAcidI
Gap
Char
_ -> forall a. HasCallStack => String -> a
error String
"fromWord: Cannot convert Word8 to AminoAcidI"
derivingUnbox
"AminoAcidI"
[t|AminoAcidI -> Word8|]
[|toWord|]
[|fromWord|]
instance C.Character AminoAcidI where
toWord :: AminoAcidI -> Word8
toWord = AminoAcidI -> Word8
toWord
fromWord :: Word8 -> AminoAcidI
fromWord = Word8 -> AminoAcidI
fromWord
instance C.CharacterX AminoAcidI where
gap :: AminoAcidI
gap = AminoAcidI
Gap
toStandard :: AminoAcidI -> [AminoAcidI]
toStandard :: AminoAcidI -> [AminoAcidI]
toStandard AminoAcidI
A = [AminoAcidI
A]
toStandard AminoAcidI
C = [AminoAcidI
C]
toStandard AminoAcidI
D = [AminoAcidI
D]
toStandard AminoAcidI
E = [AminoAcidI
E]
toStandard AminoAcidI
F = [AminoAcidI
F]
toStandard AminoAcidI
G = [AminoAcidI
G]
toStandard AminoAcidI
H = [AminoAcidI
H]
toStandard AminoAcidI
I = [AminoAcidI
I]
toStandard AminoAcidI
K = [AminoAcidI
K]
toStandard AminoAcidI
L = [AminoAcidI
L]
toStandard AminoAcidI
M = [AminoAcidI
M]
toStandard AminoAcidI
N = [AminoAcidI
N]
toStandard AminoAcidI
P = [AminoAcidI
P]
toStandard AminoAcidI
Q = [AminoAcidI
Q]
toStandard AminoAcidI
R = [AminoAcidI
R]
toStandard AminoAcidI
S = [AminoAcidI
S]
toStandard AminoAcidI
T = [AminoAcidI
T]
toStandard AminoAcidI
V = [AminoAcidI
V]
toStandard AminoAcidI
W = [AminoAcidI
W]
toStandard AminoAcidI
Y = [AminoAcidI
Y]
toStandard AminoAcidI
J = [AminoAcidI
L, AminoAcidI
I]
toStandard AminoAcidI
B = [AminoAcidI
D, AminoAcidI
N]
toStandard AminoAcidI
Z = [AminoAcidI
E, AminoAcidI
Q]
toStandard AminoAcidI
X = [AminoAcidI
A, AminoAcidI
C, AminoAcidI
D, AminoAcidI
E, AminoAcidI
F, AminoAcidI
G, AminoAcidI
H, AminoAcidI
I, AminoAcidI
K, AminoAcidI
L, AminoAcidI
M, AminoAcidI
N, AminoAcidI
P, AminoAcidI
Q, AminoAcidI
R, AminoAcidI
S, AminoAcidI
T, AminoAcidI
V, AminoAcidI
W, AminoAcidI
Y]
toStandard AminoAcidI
Stop = []
toStandard AminoAcidI
Gap = []
instance C.CharacterI AminoAcidI where
unknown :: AminoAcidI
unknown = AminoAcidI
X
iupac :: [AminoAcidI]
iupac = [AminoAcidI
J, AminoAcidI
B, AminoAcidI
Z, AminoAcidI
X]
toStandard :: AminoAcidI -> [AminoAcidI]
toStandard = AminoAcidI -> [AminoAcidI]
toStandard