CIGAR format
[text-levenshtein-edlib.git] / lib / Text / Levenshtein / Edlib.pm
index 9274517a6efbdc153c5102f8485c1285a3a33e96..2948818c84d5708f7be0b20ebd67cd689461d97f 100644 (file)
@@ -24,7 +24,7 @@ my @constants =
                EDLIB_TASK_PATH/;
 
 our %EXPORT_TAGS =
-  (all => [ @constants, qw/align distance/ ], constants => \@constants);
+  (all => [ @constants, qw/align distance to_cigar/ ], constants => \@constants);
 our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
 our @EXPORT = ( @{ $EXPORT_TAGS{'constants'} } );
 our $VERSION = '0.001';
@@ -71,6 +71,13 @@ sub distance {
        align($q, $t, $k)->{editDistance}
 }
 
+sub to_cigar {
+       my ($align, $format) = @_;
+       $align = pack 'C*', @$align;
+       $format //= EDLIB_CIGAR_STANDARD();
+       edlibAlignmentToCigar($align, $format);
+}
+
 1;
 __END__
 
@@ -95,7 +102,9 @@ Text::Levenshtein::Edlib - XS edit distance and optimal alignment path calculati
   say "Start locations are: @{$align->{startLocations}}";
   say "End locations are: @{$align->{endLocations}}";
   say "Alignment path is: @{$align->{alignment}}";
-
+  say "Alignment path (in CIGAR format): ", to_cigar $align->{alignment};
+  say "Alignment path (in extended CIGAR format): ",
+      to_cigar $align->{alignment}, EDLIB_CIGAR_EXTENDED;
 
 =head1 DESCRIPTION
 
This page took 0.01029 seconds and 4 git commands to generate.