#include "utils/commons.h"
#include "wavefront/wavefront_align.h"
int main(int argc,char* argv[]) {
char* pattern = "TCTTTACTCGCGCGTTGGAGAAATACAATAGT";
char* text = "TCTATACTGCGCGTTTGGAGAAATAAAATAGT";
wavefront_aligner_attr_t attributes = wavefront_aligner_attr_default;
attributes.distance_metric = gap_affine;
attributes.affine_penalties.match = 0;
attributes.affine_penalties.mismatch = 4;
attributes.affine_penalties.gap_opening = 6;
attributes.affine_penalties.gap_extension = 2;
attributes.heuristic.strategy = wf_heuristic_wfadaptive;
attributes.heuristic.min_wavefront_length = 10;
attributes.heuristic.max_distance_threshold = 50;
attributes.heuristic.steps_between_cutoffs = 1;
wavefront_aligner_t* const wf_aligner = wavefront_aligner_new(&attributes);
wavefront_align(wf_aligner,pattern,strlen(pattern),text,strlen(text));
fprintf(stderr,"WFA-Alignment returns score %d\n",wf_aligner->cigar->score);
int i, misms=0, ins=0, del=0;
cigar_t* const cigar = wf_aligner->cigar;
for (i=cigar->begin_offset;i<cigar->end_offset;++i) {
switch (cigar->operations[i]) {
case 'M': break;
case 'X': ++misms; break;
case 'D': ++del; break;
case 'I': ++ins; break;
}
}
fprintf(stderr,"Alignment contains %d mismatches, "
"%d insertions, and %d deletions\n",misms,ins,del);
wavefront_aligner_delete(wf_aligner);
}