-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Collection of alignment algorithms
--
-- generalized Algebraic Dynamic Programming
--
-- A selection of (sequence) alignment algorithms. Both terminal, and
-- syntactic variables, as well as the index type is not fixed here. This
-- makes it possible to select the correct structure of the grammar here,
-- but bind the required data type for alignment in user code.
--
-- That being said, these algorithms are mostly aimed towards sequence
-- alignment problems.
--
-- List of grammars:
--
--
-- - global alignment (Needleman-Wunsch style)
--
@package AlignmentAlgorithms
@version 0.0.2.1
-- | Very simple pairwise global alignment. The terminal tapes may contain
-- the atomic types u and l which means that one may
-- align sequences of different types.
--
-- In case you want to align nucleotides to amino acids, this version
-- should only be used if the nucleotides are already in triplet form and
-- have no frameshift within the sequence. Alternatively, specify a
-- derived grammar of higher complexity.
module DP.Alignment.Global.Tapes2
-- | Define signature and grammar
data SigGlobal m_adl2 s_adl3 r_adl4 t_l_adl5 t_u_adl6
SigGlobal :: (s_adl3 -> (:.) ((:.) Z t_l_adl5) t_u_adl6 -> s_adl3) -> (s_adl3 -> (:.) ((:.) Z t_l_adl5) () -> s_adl3) -> ((:.) ((:.) Z ()) () -> s_adl3) -> (s_adl3 -> (:.) ((:.) Z ()) t_u_adl6 -> s_adl3) -> (Stream m_adl2 s_adl3 -> m_adl2 r_adl4) -> SigGlobal m_adl2 s_adl3 r_adl4 t_l_adl5 t_u_adl6
[align] :: SigGlobal m_adl2 s_adl3 r_adl4 t_l_adl5 t_u_adl6 -> s_adl3 -> (:.) ((:.) Z t_l_adl5) t_u_adl6 -> s_adl3
[delin] :: SigGlobal m_adl2 s_adl3 r_adl4 t_l_adl5 t_u_adl6 -> s_adl3 -> (:.) ((:.) Z t_l_adl5) () -> s_adl3
[done] :: SigGlobal m_adl2 s_adl3 r_adl4 t_l_adl5 t_u_adl6 -> (:.) ((:.) Z ()) () -> s_adl3
[indel] :: SigGlobal m_adl2 s_adl3 r_adl4 t_l_adl5 t_u_adl6 -> s_adl3 -> (:.) ((:.) Z ()) t_u_adl6 -> s_adl3
[h] :: SigGlobal m_adl2 s_adl3 r_adl4 t_l_adl5 t_u_adl6 -> Stream m_adl2 s_adl3 -> m_adl2 r_adl4
gGlobal :: (TermStream t (TermSymbol (TermSymbol M b) b1) r r, TermStream t (TermSymbol (TermSymbol M b) Deletion) r r, TermStream t (TermSymbol (TermSymbol M Epsilon) Epsilon) r r, TermStream t (TermSymbol (TermSymbol M Deletion) b1) r r, TermStaticVar (TermSymbol (TermSymbol M b) b1) r, TermStaticVar (TermSymbol (TermSymbol M b) Deletion) r, TermStaticVar (TermSymbol (TermSymbol M Epsilon) Epsilon) r, TermStaticVar (TermSymbol (TermSymbol M Deletion) b1) r, RuleContext r, MkStream t (Stack b2) r, MkStream t S r, Element (Stack b2) r, Build b2, Apply ((:.) (Arg (Stack b2)) ((:.) ((:.) Z (TermArg b)) (TermArg b1)) -> t1), Apply ((:.) (Arg (Stack b2)) ((:.) ((:.) Z (TermArg b)) ()) -> t1), Apply ((:.) (Arg (Stack b2)) ((:.) ((:.) Z ()) (TermArg b1)) -> t1), (~) * (Fun ((:.) (Arg (Stack b2)) ((:.) ((:.) Z (TermArg b)) (TermArg b1)) -> t1)) (t1 -> (:.) ((:.) Z t3) t4 -> t1), (~) * (Fun ((:.) (Arg (Stack b2)) ((:.) ((:.) Z (TermArg b)) ()) -> t1)) (t1 -> (:.) ((:.) Z t3) () -> t1), (~) * (Fun ((:.) (Arg (Stack b2)) ((:.) ((:.) Z ()) (TermArg b1)) -> t1)) (t1 -> (:.) ((:.) Z ()) t4 -> t1)) => SigGlobal t t1 t2 t3 t4 -> ((r -> r -> t t2) -> b2) -> b -> b1 -> (:.) Z b2
-- | Generic backtracking scheme via FMLists.
backtrack :: Monad m => u -> l -> SigGlobal m (FMList (l, u)) [FMList (l, u)] l u
-- | Backtracking with more options
backtrackFun :: Monad m => (l -> u -> r) -> (l -> u -> r) -> u -> l -> SigGlobal m (FMList r) [FMList r] l u
-- | Turn a single FMList backtracking result into the
-- corresponding list.
runBacktrack :: FMList r -> [r]
instance (GHC.Base.Monad mL0, GHC.Base.Monad mR0, GHC.Classes.Eq xL0, mL0 ~ mR0, xL0 ~ rL0) => ADP.Fusion.TH.Backtrack.ProductBacktracking (DP.Alignment.Global.Tapes2.SigGlobal mL0 xL0 rL0 t_l0 t_u0) (DP.Alignment.Global.Tapes2.SigGlobal mR0 xR0 rR0 t_l0 t_u0)