I wrote a script that given a sequence extracts a 'n' dimension hashtable of oligos, and tells how many times and where a certain oligo is located.
I want to insert from keyboard an oligo and extract the positions, but I can't write it down. Any suggestions?
Thank you very much!
That's my script, that when asked to insert query returns the name of the file I opened first.
use strict;
my $f;
my $nomefile;
my $line;
my %oligo = ();
my %pos = ();
my $piece;
my $query;
my $sequenza;
my $i;
$nomefile = $ARGV[0];
open $f, "< $nomefile" or die "cannot open $nomefile: $!";
$sequenza = <$f>;
while($line = <$f>)
{
chomp($line);
if(substr($line, 0, 1) ne ">")
{
$sequenza = $sequenza.$line;
}
}
$sequenza = uc $sequenza;
for($i = 0; $i < length($sequenza) - 4; $i++)
{
$piece = substr($sequenza, $i, 4);
if(exists $oligo{$piece})
{
$oligo{$piece} = $oligo{$piece} + 1;
push(@{$pos{$piece}} , $i + 1);
}
else
{
$oligo{$piece} = 1;
push(@{$pos{$piece}} , $i + 1);
}
}
foreach $piece (sort keys %oligo)
{
print("$piece\t$oligo{$piece}\t@{$pos{$piece}}\n");
}
print("Insert query:\n");
$query = <>;
chomp($query);
$query = uc $query;
if(exists $oligo{$query})
{
print("$query\t compare $oligo{$query} volte\t in posizione @{$pos{$query}}\n");
}
else
{
print("$query does not appear in the sequence");
}
script
perl
hashtable
query
software-error