On 12/16/2013 10:45 PM, Erik Erlandson wrote:
Come to think of it, now that the interface sits on top of boost::parameter, it ought to be possible to simply present the single 'edit_distance' function, and enable the path-output implementations iff an '_output = outputter_class' is provided.
Very good idea.
Tangentially, I considered 'edit_cost' instead of 'edit_distance' mostly because in the general case, the function may violate the definition of a distance metric, for example if the cost of insertion is different than the cost of deletion. In that case, edit_cost(seq1, seq2) != edit_cost(seq2, seq1).
Which reminds me... If you are running without substitution (_allow_sub set to false), then we may need to have a lower cost for deletions than for insertions, because for substitutions we want a script with delete(A) followed by insert(A), rather than insert(A) followed by delete(A). The latter may result in 'A' being removed rather than replaced.