{-# 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
(Int -> AminoAcidI -> ShowS)
-> (AminoAcidI -> String)
-> ([AminoAcidI] -> ShowS)
-> Show AminoAcidI
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> AminoAcidI -> ShowS
showsPrec :: Int -> AminoAcidI -> ShowS
$cshow :: AminoAcidI -> String
show :: AminoAcidI -> String
$cshowList :: [AminoAcidI] -> ShowS
showList :: [AminoAcidI] -> ShowS
Show, ReadPrec [AminoAcidI]
ReadPrec AminoAcidI
Int -> ReadS AminoAcidI
ReadS [AminoAcidI]
(Int -> ReadS AminoAcidI)
-> ReadS [AminoAcidI]
-> ReadPrec AminoAcidI
-> ReadPrec [AminoAcidI]
-> Read AminoAcidI
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: Int -> ReadS AminoAcidI
readsPrec :: Int -> ReadS AminoAcidI
$creadList :: ReadS [AminoAcidI]
readList :: ReadS [AminoAcidI]
$creadPrec :: ReadPrec AminoAcidI
readPrec :: ReadPrec AminoAcidI
$creadListPrec :: ReadPrec [AminoAcidI]
readListPrec :: ReadPrec [AminoAcidI]
Read, AminoAcidI -> AminoAcidI -> Bool
(AminoAcidI -> AminoAcidI -> Bool)
-> (AminoAcidI -> AminoAcidI -> Bool) -> Eq AminoAcidI
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: AminoAcidI -> AminoAcidI -> Bool
== :: AminoAcidI -> AminoAcidI -> Bool
$c/= :: AminoAcidI -> AminoAcidI -> Bool
/= :: AminoAcidI -> AminoAcidI -> Bool
Eq, Eq AminoAcidI
Eq AminoAcidI =>
(AminoAcidI -> AminoAcidI -> Ordering)
-> (AminoAcidI -> AminoAcidI -> Bool)
-> (AminoAcidI -> AminoAcidI -> Bool)
-> (AminoAcidI -> AminoAcidI -> Bool)
-> (AminoAcidI -> AminoAcidI -> Bool)
-> (AminoAcidI -> AminoAcidI -> AminoAcidI)
-> (AminoAcidI -> AminoAcidI -> AminoAcidI)
-> Ord 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
$ccompare :: AminoAcidI -> AminoAcidI -> Ordering
compare :: AminoAcidI -> AminoAcidI -> Ordering
$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
>= :: AminoAcidI -> AminoAcidI -> Bool
$cmax :: AminoAcidI -> AminoAcidI -> AminoAcidI
max :: AminoAcidI -> AminoAcidI -> AminoAcidI
$cmin :: AminoAcidI -> AminoAcidI -> AminoAcidI
min :: AminoAcidI -> AminoAcidI -> AminoAcidI
Ord, Int -> AminoAcidI
AminoAcidI -> Int
AminoAcidI -> [AminoAcidI]
AminoAcidI -> AminoAcidI
AminoAcidI -> AminoAcidI -> [AminoAcidI]
AminoAcidI -> AminoAcidI -> AminoAcidI -> [AminoAcidI]
(AminoAcidI -> AminoAcidI)
-> (AminoAcidI -> AminoAcidI)
-> (Int -> AminoAcidI)
-> (AminoAcidI -> Int)
-> (AminoAcidI -> [AminoAcidI])
-> (AminoAcidI -> AminoAcidI -> [AminoAcidI])
-> (AminoAcidI -> AminoAcidI -> [AminoAcidI])
-> (AminoAcidI -> AminoAcidI -> AminoAcidI -> [AminoAcidI])
-> Enum 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
$csucc :: AminoAcidI -> AminoAcidI
succ :: AminoAcidI -> AminoAcidI
$cpred :: AminoAcidI -> AminoAcidI
pred :: AminoAcidI -> AminoAcidI
$ctoEnum :: Int -> AminoAcidI
toEnum :: Int -> AminoAcidI
$cfromEnum :: AminoAcidI -> Int
fromEnum :: AminoAcidI -> Int
$cenumFrom :: AminoAcidI -> [AminoAcidI]
enumFrom :: AminoAcidI -> [AminoAcidI]
$cenumFromThen :: AminoAcidI -> AminoAcidI -> [AminoAcidI]
enumFromThen :: AminoAcidI -> AminoAcidI -> [AminoAcidI]
$cenumFromTo :: AminoAcidI -> AminoAcidI -> [AminoAcidI]
enumFromTo :: AminoAcidI -> AminoAcidI -> [AminoAcidI]
$cenumFromThenTo :: AminoAcidI -> AminoAcidI -> AminoAcidI -> [AminoAcidI]
enumFromThenTo :: AminoAcidI -> AminoAcidI -> AminoAcidI -> [AminoAcidI]
Enum, AminoAcidI
AminoAcidI -> AminoAcidI -> Bounded AminoAcidI
forall a. a -> a -> Bounded a
$cminBound :: AminoAcidI
minBound :: AminoAcidI
$cmaxBound :: AminoAcidI
maxBound :: 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
_ -> String -> AminoAcidI
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