Question: homemade blat: insert query from keyboard to find an oligo in an hashtable
0
gravatar for nico_ce90
3.4 years ago by
nico_ce900
Italy
nico_ce900 wrote:

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 ican'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");
 }

 

ADD COMMENTlink modified 3.4 years ago • written 3.4 years ago by nico_ce900
2
gravatar for Jean-Karim Heriche
3.4 years ago by
EMBL Heidelberg, Germany
Jean-Karim Heriche18k wrote:

Use <STDIN> to read from STDIN. When @ARGV is not empty, <> reads from the files in @ARGV. If you still want to keep using <>, then empty @ARGV first e.g. $nomefile = shift @ARGV;

 

ADD COMMENTlink written 3.4 years ago by Jean-Karim Heriche18k
0
gravatar for nico_ce90
3.4 years ago by
nico_ce900
Italy
nico_ce900 wrote:
  • Thank you very much for your kind answer, it was very simple, i'm new in using Perl but i'm enjoying it very much!

    Can i ask a little enlightment please?

    How can i make it work with a query not the length used to create the index (for example a query >n or a multiple of n) ?Thanks!

  •  
ADD COMMENTlink written 3.4 years ago by nico_ce900
Please log in to add an answer.

Help
Access

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.
Powered by Biostar version 2.3.0
Traffic: 1117 users visited in the last hour