Hi Perlmonks
This is for a bioinformatics assignment that I have to complete. I'm aware there are forums for this and I have posted there but still have no reply.
I need help with getting the output to look the way I want it. I am comparing two strings (sequences) with one across the top and the other down the side with dots printed everywhere there's a match.
The problem is that the sequences are too long to fit on one line. Is there a way, whether it be in the code itself or in the UNIX terminal, to get it to display within the terminal space. The letters don't necessarily need to be legible. It's the pattern of dots that is important. I would appreciate it if you could take a look at my code and let me know what changes I could make to achieve this.
#!/usr/bin/perl
use strict;use warnings;
my $i;my $j;my $a;
open (FH1,'<', "./CAM3UCA.txt");
open (FH2,'<', "./TCH3A.txt");
my $seq1 = do { local $/; <FH1> };
my $seq2 = do { local $/; <FH2> };
my @s1=split('',$seq1);
my @s2=split('',$seq2);
my @matrix=();
for($i=0;$i<scalar(@s2);$i++)
{
for($j=0;$j<scalar(@s1);$j++)
{
if($s2[$i] eq $s1[$j])
{
$matrix[$i][$j]=".";
}
else
{
$matrix[$i][$j]=" ";
}
}
}
#Printing matrix of dot plot
open (FHOUT,">dotplot.txt") or die "cannot open outfile\n";
for($a=0;$a<scalar(@s1);$a++)
{
print FHOUT "$s1[$a]";
}
print FHOUT "\n";
#print"\n\n";
for($i=0;$i<scalar(@s2);$i++)
{
print FHOUT "$s2[$i]";
for($j=0;$j<scalar(@s1);$j++)
{
print FHOUT "$matrix[$i][$j]";
}
print FHOUT "\n";
#print"\n\n";
}
close FH1;
close FH2;
close FHOUT;