in reply to Re^3: Converting Arrays into Matrix
in thread Converting Arrays into Matrix
Dear community
Well, you are right, it was a typo. However, the problem I faced is still persistant (though I was not able to describe it due to my typo). It is also hard to reproduce. This is why I would like to show you a sample of my data. Please execute the script and look at the output:
You will see that there is the letter "V" in row number 19 AND 25 ... That is not correct, is it?
They should all be in 25 or even 28, depending on the situation with the 3 and the U...
I am really sorry for the amount of data, but I cannot really reproduce this behavior. With many smaller data sets (those i showed you), it worked ...
Greetings,
Jan
#!/usr/bin/perl -w use strict; use warnings; use Algorithm::Diff qw( ); my @seqs = ( [ qw ( A B C D E Z F G H I J K L M N O V W X Y ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T W 2 4 ) ], [ qw ( A B C D E Z F G H I J K L M N O P Q V W Y ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T W 2 4 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T W 2 4 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T W 2 4 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T W 2 4 ) ], [ qw ( A B C D E Z F G H I J K L M N O P V W Y ) ], [ qw ( A B C D E Z F G H I J K L M N O P V Y ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T W 2 4 ) ], [ qw ( A B C D E Z F G H I J K L M N O P Q R S T V W Y ) ], [ qw ( 3 W 2 4 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T W Y ) ], [ qw ( A B C D E Z F G H I J K L M N O V W 4 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T W 2 4 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T W 2 4 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S W 2 4 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P V W Y ) ], [ qw ( A B C D E Z F G H I J K L M N Y ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P V W Y ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T V W 2 4 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S W 2 4 ) ], [ qw ( N O V Y ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T W 2 4 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T W 2 4 ) ], [ qw ( N O P Q R S V W Y ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T W 2 4 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T W 2 4 ) ], [ qw ( 7 2 4 ) ], [ qw ( A B C D E 1 F G H I J K L M N O P V 5 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T V W 2 4 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T W 2 4 ) ], [ qw ( A B C D E Z F G H I J K L M N O V W 4 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T U W 2 Y ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O V 5 ) ], [ qw ( A B C D E Z F 6 G I J K V W Y ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S W X 4 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T W 2 4 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T V W Y ) ], [ qw ( A O P Q R V W Y ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T V 5 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T W 2 4 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T V W 2 4 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T W Y ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T W 4 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T W 2 4 ) ], [ qw ( A B C D E Z F G H I J K L M N O V W 4 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T W 2 4 ) ], [ qw ( A B C D E Z F G H I J K L M N O P Q V W 4 ) ], [ qw ( A B C D E 1 F G H I J K L M 5 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S W 2 4 ) ], [ qw ( A B C D E Z F G H I J K L M N Y ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T W 2 4 ) ], [ qw ( A B C D E 1 Z F 6 G H I J K L M N O P Q R V W 2 4 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T V W 2 4 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S W 2 4 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S V W Y ) ], [ qw ( A B C D E Z F G H I J K L M N O P V W Y ) ], [ qw ( A B C D E 1 F G H I J K L M N O P V 5 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T W 2 4 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T U V W Y ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T V W 2 4 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T V W Y ) ], [ qw ( 3 W 2 4 ) ], [ qw ( 3 W 2 4 ) ], [ qw ( A B C D E 1 F G H I J K L M N O P V 5 ) ], [ qw ( A O P Q V W Y ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T W 2 4 ) ], [ qw ( A B C D E Z F 6 G I J K L M N P V W Y ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T W 2 4 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T W 2 4 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T V W 2 4 ) ], [ qw ( A B C D E Z F G H I J K L M N O P V X Y ) ], [ qw ( A B C D E 1 F G H I J K L M N O P V 5 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T W 2 4 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T W 2 4 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T W 2 4 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T V W Y ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T V W 2 4 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T W 2 4 ) ], [ qw ( N O P V W Y ) ], [ qw ( A B C D E 1 F G H I J K L M N O P V 5 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T W 2 4 ) ], [ qw ( A B C D E Z F G H I J K L M N O V W Y ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T W 2 4 ) ], [ qw ( A B C D E Z F 6 G I J K L M N O P Q R V W Y ) ], [ qw ( A O P Q V W Y ) ], [ qw ( 3 W Y ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P V W Y ) ], [ qw ( A O P Q R V W Y ) ], [ qw ( A B C D E Z F G H I J K L M N O P V X Y ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T U V W Y ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T V W 2 4 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O 5 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S W Y ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T U V W Y ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T W 2 4 ) ], [ qw ( N O P V W Y ) ], [ qw ( A B C D E Z F G H I J K L M N O P V W Y ) ], [ qw ( A B C D E Z F G H I J K L M N O V W Y ) ], [ qw ( A B C D E Z F 6 G I J K L M N P V W Y ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P V W Y ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T V W Y ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T V W 2 4 ) ], [ qw ( A B C D E Z F G H I J K L M N O P Q R S T U V W Y ) ], [ qw ( A B C D E Z F G H I J K L M N O P V X Y ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S W 4 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T W 2 4 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T W 2 4 ) ], [ qw ( A O P Q R V W Y ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T V W 2 4 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P V W Y ) ], [ qw ( N O P V W Y ) ], [ qw ( A B C D E Z F G H I J K L M N O V W 4 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T V W 2 4 ) ], [ qw ( A B C D E Z F 6 G I J K L M N O P Q R V W Y ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T W 2 4 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T V W 2 4 ) ], [ qw ( A B C D E Z F G H I J K L M N O V W Y ) ], [ qw ( A B C D E 1 F G H I J K L M N O P V 5 ) ], [ qw ( A B C D E Z F G H I J K L M N O P Q R S T V W Y ) ], [ qw ( N O P V Y ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S W X 4 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T W 2 4 ) ], [ qw ( A B C D E Z F G H I J K L M N O P Q R S T U V W Y ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T W 2 4 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T V W 2 4 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T W 2 4 ) ], [ qw ( A B C D E Z F G H I J K L M N O P V Y ) ], [ qw ( A B C D E Z F G H I J K L M N O P V W Y ) ], [ qw ( A B C D E Z F G H I J K L M N O V W 4 ) ], [ qw ( A B C D E Z F G H I J K L M N O P V Y ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T V W 2 4 ) ], [ qw ( A B C D E 1 Z F G H I J K L M N O P Q R S T W 2 4 ) ], [ qw ( A B C D E Z F G H I J K L M N O P Q V W 2 4 ) ], [ qw ( A B C D E Z F G H I J K L M N O V W Y ) ], ); my @combined; my @grid; for my $col_idx (0..$#seqs) { my $seq = $seqs[$col_idx]; my $diff = Algorithm::Diff->new(\@combined, $seq); my @new_combined; my @new_grid; while ($diff->Next()) { if ($diff->Same()) { for ($diff->Range(1)) { push @new_combined, $combined[$_]; push @new_grid, $grid[$_]; $new_grid[-1][$col_idx] = 1; } } else { for ($diff->Range(1)) { push @new_combined, $combined[$_]; push @new_grid, $grid[$_]; } for ($diff->Range(2)) { push @new_combined, $seq->[$_]; push @new_grid, []; $new_grid[-1][$col_idx] = 1; } } } @combined = @new_combined; @grid = @new_grid; } for my $row_idx (0..$#combined) { my $ch = $combined[$row_idx]; for my $col_idx (0..$#seqs) { print($grid[$row_idx][$col_idx] ? $ch : " ", " "); } print("\n"); }
|
|---|