module Bio.Sequence.Alignment.Internal.Type where
import Data.Array (Array)
import Data.ByteString.Char8 (ByteString)
type Matrix = Array (Int, Int) Int
type Substitution a = a -> a -> Int
type Gap = Int
type Condition = Matrix -> ByteString -> ByteString -> Int -> Int -> Bool
data Conditions = Conditions { isStop :: Condition
, isDiag :: Condition
, isVert :: Condition
, isHoriz :: Condition
}
type StartSelector = Matrix -> (Bool, (Int, Int))
class Alignment a where
gap :: a -> Gap
substitution :: a -> Substitution Char
conditions :: a -> Conditions
inits :: a -> Int -> Int
selector :: a -> StartSelector
additional :: a -> Int