Forestry-0.0.0.1: Comparison of trees and forests.

Safe HaskellNone
LanguageHaskell2010

Data.Forest.Static.Align.Linear

Description

A simple linear alignment module for forest-like structures. Currently all comparisons are on Newick-like forests.

Synopsis

Documentation

data SigGlobal m s r t_n_0_ t_n_1_ Source #

Constructors

SigGlobal 

Fields

Instances

(Monad mL0, Monad mR0, Eq xL0, (~) (* -> *) mL0 mR0, (~) * xL0 rL0) => ProductBacktracking (SigGlobal mL0 xL0 rL0 t_n_0_0 t_n_1_0) (SigGlobal mR0 xR0 rR0 t_n_0_0 t_n_1_0) Source # 

Associated Types

type SigBacktracking (SigGlobal mL0 xL0 rL0 t_n_0_0 t_n_1_0) (SigGlobal mR0 xR0 rR0 t_n_0_0 t_n_1_0) :: * #

Methods

(<||) :: SigGlobal mL0 xL0 rL0 t_n_0_0 t_n_1_0 -> SigGlobal mR0 xR0 rR0 t_n_0_0 t_n_1_0 -> SigBacktracking (SigGlobal mL0 xL0 rL0 t_n_0_0 t_n_1_0) (SigGlobal mR0 xR0 rR0 t_n_0_0 t_n_1_0) #

(Monad mL0, Monad mR0, Eq xL0, Ord xL0, Ord xR0, (~) (* -> *) mL0 mR0) => ProductCombining (SigGlobal mL0 xL0 rL0 t_n_0_0 t_n_1_0) (SigGlobal mR0 xR0 rR0 t_n_0_0 t_n_1_0) Source # 

Associated Types

type SigCombining (SigGlobal mL0 xL0 rL0 t_n_0_0 t_n_1_0) (SigGlobal mR0 xR0 rR0 t_n_0_0 t_n_1_0) :: * #

Methods

(**>) :: SigGlobal mL0 xL0 rL0 t_n_0_0 t_n_1_0 -> SigGlobal mR0 xR0 rR0 t_n_0_0 t_n_1_0 -> SigCombining (SigGlobal mL0 xL0 rL0 t_n_0_0 t_n_1_0) (SigGlobal mR0 xR0 rR0 t_n_0_0 t_n_1_0) #

type SigBacktracking (SigGlobal mL0 xL0 rL0 t_n_0_0 t_n_1_0) (SigGlobal mR0 xR0 rR0 t_n_0_0 t_n_1_0) Source # 
type SigBacktracking (SigGlobal mL0 xL0 rL0 t_n_0_0 t_n_1_0) (SigGlobal mR0 xR0 rR0 t_n_0_0 t_n_1_0) = SigGlobal mR0 (xL0, [xR0]) rR0 t_n_0_0 t_n_1_0
type SigCombining (SigGlobal mL0 xL0 rL0 t_n_0_0 t_n_1_0) (SigGlobal mR0 xR0 rR0 t_n_0_0 t_n_1_0) Source # 
type SigCombining (SigGlobal mL0 xL0 rL0 t_n_0_0 t_n_1_0) (SigGlobal mR0 xR0 rR0 t_n_0_0 t_n_1_0) = SigGlobal mR0 (xL0, [xR0]) (Vector (rL0, rR0)) t_n_0_0 t_n_1_0

data SigLabolg m s r t_n_0_ t_n_1_ Source #

Constructors

SigLabolg 

Fields

gLabolg :: ((~#) * * (Fun (Arg ((:!:) (Stack (TW t2 (i1 -> i1 -> t7 t5))) b2) -> t6)) (t6 -> t6 -> t6), (~#) * * (Fun (Arg ((:!:) (Stack a) (TW t2 (i1 -> i1 -> t7 t5))) -> t6)) (t6 -> t6 -> t6), (~#) * * (Fun (Arg ((:!:) (Stack a1) (TW t2 (i1 -> i1 -> t7 t5))) -> t6)) (t6 -> t6 -> t6), (~#) * * (Fun (Arg ((:!:) ((:!:) S (TermSymbol (TermSymbol M Deletion) b)) (TW t (i2 -> i2 -> t7 t5))) -> t6)) ((:.) ((:.) Z ()) t3 -> t6 -> t6), (~#) * * (Fun (Arg ((:!:) ((:!:) S (TermSymbol (TermSymbol M b1) Deletion)) (TW t (i2 -> i2 -> t7 t5))) -> t6)) ((:.) ((:.) Z t4) () -> t6 -> t6), (~#) * * (Fun (Arg ((:!:) ((:!:) S (TermSymbol (TermSymbol M b1) b)) (TW t1 (i -> i -> t7 t5))) -> t6)) ((:.) ((:.) Z t4) t3 -> t6 -> t6), Element ((:!:) ((:!:) S (TermSymbol (TermSymbol M Deletion) b)) (TW t (i2 -> i2 -> t7 t5))) i1, Element ((:!:) ((:!:) S (TermSymbol (TermSymbol M b1) Deletion)) (TW t (i2 -> i2 -> t7 t5))) i1, Element ((:!:) ((:!:) S (TermSymbol (TermSymbol M b1) b)) (TW t1 (i -> i -> t7 t5))) i1, Element ((:!:) (Stack (TW t2 (i1 -> i1 -> t7 t5))) b2) i2, Element ((:!:) (Stack (TW t2 (i1 -> i1 -> t7 t5))) b2) i, Element ((:!:) (Stack a) (TW t2 (i1 -> i1 -> t7 t5))) i1, Element ((:!:) (Stack a1) (TW t2 (i1 -> i1 -> t7 t5))) i1, MkStream t7 S i1, MkStream t7 ((:!:) ((:!:) S (TermSymbol (TermSymbol M Deletion) b)) (TW t (i2 -> i2 -> t7 t5))) i1, MkStream t7 ((:!:) ((:!:) S (TermSymbol (TermSymbol M b1) Deletion)) (TW t (i2 -> i2 -> t7 t5))) i1, MkStream t7 ((:!:) ((:!:) S (TermSymbol (TermSymbol M b1) b)) (TW t1 (i -> i -> t7 t5))) i1, MkStream t7 ((:!:) (Stack (TW t2 (i1 -> i1 -> t7 t5))) b2) i2, MkStream t7 ((:!:) (Stack (TW t2 (i1 -> i1 -> t7 t5))) b2) i, MkStream t7 ((:!:) (Stack a) (TW t2 (i1 -> i1 -> t7 t5))) i1, MkStream t7 ((:!:) (Stack a1) (TW t2 (i1 -> i1 -> t7 t5))) i1, RuleContext i2, RuleContext i, RuleContext i1, Apply (Arg ((:!:) (Stack (TW t2 (i1 -> i1 -> t7 t5))) b2) -> t6), Apply (Arg ((:!:) (Stack a) (TW t2 (i1 -> i1 -> t7 t5))) -> t6), Apply (Arg ((:!:) (Stack a1) (TW t2 (i1 -> i1 -> t7 t5))) -> t6), Apply (Arg ((:!:) ((:!:) S (TermSymbol (TermSymbol M Deletion) b)) (TW t (i2 -> i2 -> t7 t5))) -> t6), Apply (Arg ((:!:) ((:!:) S (TermSymbol (TermSymbol M b1) Deletion)) (TW t (i2 -> i2 -> t7 t5))) -> t6), Apply (Arg ((:!:) ((:!:) S (TermSymbol (TermSymbol M b1) b)) (TW t1 (i -> i -> t7 t5))) -> t6), Build (TW t2 (i1 -> i1 -> t7 t5)), Build a, Build a1, TermStream t7 (TermSymbol (TermSymbol M Epsilon) Epsilon) (Elm S i1) i1, TermStaticVar (TermSymbol (TermSymbol M Epsilon) Epsilon) i1) => SigLabolg t7 t6 t5 t4 t3 -> t2 -> t1 -> t -> b2 -> a1 -> a -> b1 -> b -> (:.) ((:.) ((:.) Z (TW t2 (i1 -> i1 -> t7 t5))) (TW t1 (i -> i -> t7 t5))) (TW t (i2 -> i2 -> t7 t5)) Source #

gGlobal :: ((~#) * * (Fun (Arg ((:!:) ((:!:) S (TermSymbol (TermSymbol M Deletion) b)) (TW t2 (i1 -> i1 -> t7 t5))) -> t6)) ((:.) ((:.) Z ()) t3 -> t6 -> t6), (~#) * * (Fun (Arg ((:!:) ((:!:) S (TermSymbol (TermSymbol M b1) Deletion)) (TW t2 (i1 -> i1 -> t7 t5))) -> t6)) ((:.) ((:.) Z t4) () -> t6 -> t6), (~#) * * (Fun (Arg ((:!:) ((:!:) S (TermSymbol (TermSymbol M b1) b)) (TW t2 (i1 -> i1 -> t7 t5))) -> t6)) ((:.) ((:.) Z t4) t3 -> t6 -> t6), (~#) * * (Fun (Arg ((:!:) (Stack (TW t (i2 -> i2 -> t7 t5))) (TW t2 (i1 -> i1 -> t7 t5))) -> t6)) (t6 -> t6 -> t6), (~#) * * (Fun (Arg ((:!:) (Stack (TW t1 (i -> i -> t7 t5))) (TW t2 (i1 -> i1 -> t7 t5))) -> t6)) (t6 -> t6 -> t6), Apply (Arg ((:!:) ((:!:) S (TermSymbol (TermSymbol M Deletion) b)) (TW t2 (i1 -> i1 -> t7 t5))) -> t6), Apply (Arg ((:!:) ((:!:) S (TermSymbol (TermSymbol M b1) Deletion)) (TW t2 (i1 -> i1 -> t7 t5))) -> t6), Apply (Arg ((:!:) ((:!:) S (TermSymbol (TermSymbol M b1) b)) (TW t2 (i1 -> i1 -> t7 t5))) -> t6), Apply (Arg ((:!:) (Stack (TW t (i2 -> i2 -> t7 t5))) (TW t2 (i1 -> i1 -> t7 t5))) -> t6), Apply (Arg ((:!:) (Stack (TW t1 (i -> i -> t7 t5))) (TW t2 (i1 -> i1 -> t7 t5))) -> t6), Element ((:!:) ((:!:) S (TermSymbol (TermSymbol M Deletion) b)) (TW t2 (i1 -> i1 -> t7 t5))) i2, Element ((:!:) ((:!:) S (TermSymbol (TermSymbol M b1) Deletion)) (TW t2 (i1 -> i1 -> t7 t5))) i2, Element ((:!:) ((:!:) S (TermSymbol (TermSymbol M b1) b)) (TW t2 (i1 -> i1 -> t7 t5))) i, Element ((:!:) (Stack (TW t (i2 -> i2 -> t7 t5))) (TW t2 (i1 -> i1 -> t7 t5))) i1, Element ((:!:) (Stack (TW t1 (i -> i -> t7 t5))) (TW t2 (i1 -> i1 -> t7 t5))) i1, MkStream t7 S i1, MkStream t7 ((:!:) ((:!:) S (TermSymbol (TermSymbol M Deletion) b)) (TW t2 (i1 -> i1 -> t7 t5))) i2, MkStream t7 ((:!:) ((:!:) S (TermSymbol (TermSymbol M b1) Deletion)) (TW t2 (i1 -> i1 -> t7 t5))) i2, MkStream t7 ((:!:) ((:!:) S (TermSymbol (TermSymbol M b1) b)) (TW t2 (i1 -> i1 -> t7 t5))) i, MkStream t7 ((:!:) (Stack (TW t (i2 -> i2 -> t7 t5))) (TW t2 (i1 -> i1 -> t7 t5))) i1, MkStream t7 ((:!:) (Stack (TW t1 (i -> i -> t7 t5))) (TW t2 (i1 -> i1 -> t7 t5))) i1, RuleContext i2, RuleContext i, RuleContext i1, Build (TW t (i2 -> i2 -> t7 t5)), Build (TW t1 (i -> i -> t7 t5)), TermStream t7 (TermSymbol (TermSymbol M Epsilon) Epsilon) (Elm S i1) i1, TermStaticVar (TermSymbol (TermSymbol M Epsilon) Epsilon) i1) => SigGlobal t7 t6 t5 t4 t3 -> t2 -> t1 -> t -> b1 -> b -> (:.) ((:.) ((:.) Z (TW t2 (i1 -> i1 -> t7 t5))) (TW t1 (i -> i -> t7 t5))) (TW t (i2 -> i2 -> t7 t5)) Source #

resig :: Monad m => SigGlobal m a b c d -> SigLabolg m a b c d Source #

type Pretty = [[Tree (Info, Info)]] Source #

type Trix = TreeIxR Pre Vector Info I Source #

type B = Tree (Info, Info) Source #

type Trox = TreeIxR Pre Vector Info O Source #

runS :: Frst -> Frst -> Int -> Int -> Int -> (((Z :. Tbl Int) :. Tbl Int) :. Tbl Int, Int, [[Tree (Info, Info)]]) Source #

runAlignScoreTrees Source #

Arguments

:: Frst

Forest A to compare

-> Frst

Forest B to compare

-> Int

score for matching nodes between A and B.

-> Int

if nodes between A/B are matched up but have unequal labels, this score is chosen.

-> Int

Score for an in/del operation.

-> IO () 

This is the main entry for "main-like" calls that already provide trees. A match is defined as equality on the labels.

TODO this should be turned into the more ususual streaming-compatible behaviour.

runAlignS :: String -> String -> Int -> Int -> Int -> IO () Source #