TCS Alignment Toolbox Algebraic Dynamic Programming

This module contains a more general approach to construct AlignmentAlgorithms by relying on the theoretical concept of Algebraic Dynamic Programming (ADP) as developed by Giegerich et al. ADP defines four ingredients for an alignment algorithm: 1.) A signature that defines the permitted alignment operations. Operations are just function templates with an associated arity, meaning the number of arguments it takes from the left sequence and from the right sequence. In the TCSAlignmentToolbox we have a fixed signature with the following operations: REPLACEMENT(1, 1), DELETION(1, 0), INSERTION(0, 1), SKIPDELETION(1, 0) and SKIPINSERTION(0, 1) 2.) A regular tree grammar that produces alignments, that is: sequences of operations, in a restricted fashion. 3.) An algebra that can translate such trees to a cost. In the TCSAlignmentToolbox this is a Comparator. 4.) A choice function, in case of the TCSAlignmentToolbox: the strict minimum or the soft minimum. An alignment algorithm in the TCSAlignmentToolbox sense of the word then is the combination of choice function and grammar. While we provide hardcoded versions of these combinations in the main package, the adp package allows you to create your own grammars. You can combine them with a choice function by instantiating one of the Algorithm classes provided in this package with a grammar of your choice. For example: AlignmentAlgorithm algo = new SoftADPScoreAlgorithm(my_grammar, comparator); creates an alignment algorithm that implicitly produces all possible alignments your grammar can construct with the given input, translates them to a cost using the algebra/comparator you provided and applies the soft minimum to return the score. This all gets efficient by dynamic programming. Note that there is runtime overhead when using this method in comparison with the hardcoded algorithms. But for complicated grammars this is a much easier way to go. For more information on the theory, please refer to my master's thesis: "Adaptive Affine Sequence Alignment using Algebraic Dynamic Programming"

License

License

GroupId

GroupId

de.cit-ec.tcs.alignment
ArtifactId

ArtifactId

adp
Last Version

Last Version

3.1.1
Release Date

Release Date

Type

Type

jar
Description

Description

TCS Alignment Toolbox Algebraic Dynamic Programming
This module contains a more general approach to construct AlignmentAlgorithms by relying on the theoretical concept of Algebraic Dynamic Programming (ADP) as developed by Giegerich et al. ADP defines four ingredients for an alignment algorithm: 1.) A signature that defines the permitted alignment operations. Operations are just function templates with an associated arity, meaning the number of arguments it takes from the left sequence and from the right sequence. In the TCSAlignmentToolbox we have a fixed signature with the following operations: REPLACEMENT(1, 1), DELETION(1, 0), INSERTION(0, 1), SKIPDELETION(1, 0) and SKIPINSERTION(0, 1) 2.) A regular tree grammar that produces alignments, that is: sequences of operations, in a restricted fashion. 3.) An algebra that can translate such trees to a cost. In the TCSAlignmentToolbox this is a Comparator. 4.) A choice function, in case of the TCSAlignmentToolbox: the strict minimum or the soft minimum. An alignment algorithm in the TCSAlignmentToolbox sense of the word then is the combination of choice function and grammar. While we provide hardcoded versions of these combinations in the main package, the adp package allows you to create your own grammars. You can combine them with a choice function by instantiating one of the Algorithm classes provided in this package with a grammar of your choice. For example: AlignmentAlgorithm algo = new SoftADPScoreAlgorithm(my_grammar, comparator); creates an alignment algorithm that implicitly produces all possible alignments your grammar can construct with the given input, translates them to a cost using the algebra/comparator you provided and applies the soft minimum to return the score. This all gets efficient by dynamic programming. Note that there is runtime overhead when using this method in comparison with the hardcoded algorithms. But for complicated grammars this is a much easier way to go. For more information on the theory, please refer to my master's thesis: "Adaptive Affine Sequence Alignment using Algebraic Dynamic Programming"
Project URL

Project URL

http://openresearch.cit-ec.de/projects/tcs
Source Code Management

Source Code Management

http://openresearch.cit-ec.de/projects/tcs/repository

Download adp

How to add to project

<!-- https://jarcasting.com/artifacts/de.cit-ec.tcs.alignment/adp/ -->
<dependency>
    <groupId>de.cit-ec.tcs.alignment</groupId>
    <artifactId>adp</artifactId>
    <version>3.1.1</version>
</dependency>
// https://jarcasting.com/artifacts/de.cit-ec.tcs.alignment/adp/
implementation 'de.cit-ec.tcs.alignment:adp:3.1.1'
// https://jarcasting.com/artifacts/de.cit-ec.tcs.alignment/adp/
implementation ("de.cit-ec.tcs.alignment:adp:3.1.1")
'de.cit-ec.tcs.alignment:adp:jar:3.1.1'
<dependency org="de.cit-ec.tcs.alignment" name="adp" rev="3.1.1">
  <artifact name="adp" type="jar" />
</dependency>
@Grapes(
@Grab(group='de.cit-ec.tcs.alignment', module='adp', version='3.1.1')
)
libraryDependencies += "de.cit-ec.tcs.alignment" % "adp" % "3.1.1"
[de.cit-ec.tcs.alignment/adp "3.1.1"]

Dependencies

compile (1)

Group / Artifact Type Version
de.cit-ec.tcs.alignment : algorithms jar 3.1.1

test (4)

Group / Artifact Type Version
de.cit-ec.tcs.alignment : algorithms-lib jar 3.1.1
de.cit-ec.tcs.alignment : comparators-lib jar 3.1.1
de.cit-ec.tcs.alignment : primitives jar 3.1.1
junit : junit jar 4.10

Project Modules

There are no modules declared in this project.

Versions

Version
3.1.1
3.1.0
3.0.1
3.0.0
2.1.2
2.1.1
2.1.0
2.0.0