-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Collection of alignment algorithms -- -- 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. -- -- -- https://github.com/choener/AlignmentAlgorithms/blob/master/README.md -- -- That being said, these algorithms are mostly aimed towards sequence -- alignment problems. -- -- -- --
--   Christian Hoener zu Siederdissen
--   Sneaking Around ConcatMap: Efficient Combinators for Dynamic Programming
--   2012. Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
--   http://doi.acm.org/10.1145/2364527.2364559 preprint: http://www.tbi.univie.ac.at/newpapers/pdfs/TBI-p-2012-2.pdf
--   
-- --
--   Andrew Farmer, Christian Höner zu Siederdissen, and Andy Gill.
--   The HERMIT in the stream: fusing stream fusion’s concatMap.
--   2014. Proceedings of the ACM SIGPLAN 2014 workshop on Partial evaluation and program manipulation.
--   http://dl.acm.org/citation.cfm?doid=2543728.2543736
--   
-- --
--   Christian Höner zu Siederdissen, Ivo L. Hofacker, and Peter F. Stadler.
--   Product Grammars for Alignment and Folding.
--   2014. IEEE/ACM Transactions on Computational Biology and Bioinformatics. 99.
--   http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=6819790
--   
-- --
--   Christian Höner zu Siederdissen, Sonja J. Prohaska, and Peter F. Stadler.
--   Algebraic Dynamic Programming over General Data Structures.
--   2015. submitted.
--   
@package AlignmentAlgorithms @version 0.0.1.0 -- | 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_acjb s_acjc r_acjd t_l_acje t_u_acjf SigGlobal :: (s_acjc -> (:.) ((:.) Z t_l_acje) t_u_acjf -> s_acjc) -> (s_acjc -> (:.) ((:.) Z t_l_acje) () -> s_acjc) -> ((:.) ((:.) Z ()) () -> s_acjc) -> (s_acjc -> (:.) ((:.) Z ()) t_u_acjf -> s_acjc) -> (Stream m_acjb s_acjc -> m_acjb r_acjd) -> SigGlobal m_acjb s_acjc r_acjd t_l_acje t_u_acjf [align] :: SigGlobal m_acjb s_acjc r_acjd t_l_acje t_u_acjf -> s_acjc -> (:.) ((:.) Z t_l_acje) t_u_acjf -> s_acjc [delin] :: SigGlobal m_acjb s_acjc r_acjd t_l_acje t_u_acjf -> s_acjc -> (:.) ((:.) Z t_l_acje) () -> s_acjc [done] :: SigGlobal m_acjb s_acjc r_acjd t_l_acje t_u_acjf -> (:.) ((:.) Z ()) () -> s_acjc [indel] :: SigGlobal m_acjb s_acjc r_acjd t_l_acje t_u_acjf -> s_acjc -> (:.) ((:.) Z ()) t_u_acjf -> s_acjc [h] :: SigGlobal m_acjb s_acjc r_acjd t_l_acje t_u_acjf -> Stream m_acjb s_acjc -> m_acjb r_acjd gGlobal :: (Apply ((:.) (Arg (Stack b2)) (TermArg (TermSymbol (TermSymbol M b) b1)) -> t1), Apply ((:.) (Arg (Stack b2)) (TermArg (TermSymbol (TermSymbol M Deletion) b1)) -> t1), Apply ((:.) (Arg (Stack b2)) ((:.) (TermArg (TermSymbol M b)) ()) -> t1), TerminalStream t (TermSymbol (TermSymbol M b) b1) r, TerminalStream t (TermSymbol (TermSymbol M b) Deletion) r, TerminalStream t (TermSymbol (TermSymbol M Deletion) b1) r, TerminalStream t (TermSymbol (TermSymbol M Epsilon) Epsilon) r, TermStaticVar (TermSymbol (TermSymbol M b) b1) r, TermStaticVar (TermSymbol (TermSymbol M b) Deletion) r, TermStaticVar (TermSymbol (TermSymbol M Deletion) b1) r, TermStaticVar (TermSymbol (TermSymbol M Epsilon) Epsilon) r, RuleContext r, Element (Stack b2) r, MkStream t (Stack b2) r, MkStream t S r, Build b2, (~) * (Fun ((:.) (Arg (Stack b2)) (TermArg (TermSymbol (TermSymbol M b) b1)) -> t1)) (t1 -> (:.) ((:.) Z t3) t4 -> t1), (~) * (Fun ((:.) (Arg (Stack b2)) ((:.) (TermArg (TermSymbol M b)) ()) -> t1)) (t1 -> (:.) ((:.) Z t3) () -> t1), (~) * (Fun ((:.) (Arg (Stack b2)) (TermArg (TermSymbol (TermSymbol M Deletion) 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 -- | Turn a single FMList backtracking result into the -- corresponding list. runBacktrack :: FMList (u, l) -> [(u, l)] instance (GHC.Base.Monad mL0, GHC.Base.Monad mR0, GHC.Classes.Eq xL0, mL0 ~ mR0) => ADP.Fusion.TH.Backtrack.BacktrackingProduct (DP.Alignment.Global.Tapes2.SigGlobal mL0 xL0 xL0 t_l0 t_u0) (DP.Alignment.Global.Tapes2.SigGlobal mR0 xR0 rR0 t_l0 t_u0)