def edlib_align
bend-edit-distance@0.2.2.0 · src/Myers.bend:708
import bend-edit-distance@0.2.2.0/src/Myers.bend as Myers
import Base
import bend-edit-distance@0.2.2.0/src/Sequence.bend as S
import bend-edit-distance@0.2.2.0/EdlibTypes.bend as E
import bend-edit-distance@0.2.2.0/src/Alignment.bend as A
708def edlib_align(query: String, target: String, config: E.AlignConfig) -> E.AlignResult:
709 match query target config:
710 case SNil{} _ _:
711 A.empty_result("", target, config)
712 case SCon{h, t} SNil{} _:
713 A.empty_result(SCon{h, t}, "", config)
714 case +q +t E.AlignConfig{E.NW{}, task, threshold, +pairs, format}:
715 +qn +tn = S.length(q) S.length(t)
716 nw_result(q, t, task, pairs, format, E.end_coordinate(tn),
717 search_distance(search_shorter(q, t, qn, tn, threshold, Nat.is_le(qn, tn), pairs)))
718 case +q +t E.AlignConfig{mode, task, threshold, pairs, format}:
719 semiglobal_align(q, t, mode, task, threshold, pairs, format)