Hallo,
ich habe ein Skript geschrieben das mir für jedes motif (Reihenfolge von Nukleotiden) die exakten Positionen in der Sequenz ausgibt. Allerdings lande ich in einer Endlosschleife und bräuchte eine Abbruchbedingung für den Fall das das Motif in der Restsequenz nicht ehr gefunden wird. Hat da einer eine Idee?
#!/usr/bin/perl -w
use strict;
use Bio:erl;
This script will find the exact location of motifs in a DNA sequence
my $dnafilename;
my $varfilename;
my $refseq;
my $pos;
my $motif;
my $refseqtemp;
my @dna;
my $dna;
my @var;
my $var;
@var=();
@dna=();
print "Enter the filename of your input file with the sequence:= "; # File that contains your DNA sequence
chomp ($dnafilename=);
open(DNAINPUT,’);
open (VARINPUT,’; # stores the sequence in an array
print @dna;
while ()
{ # stores the variants in an array
chomp;
push @var, $_;
}
$refseq= $dna[0];
chomp $refseq;
$pos=0; # position of the first base
foreach my $thing (@var)
{
$motif=$thing;
$refseqtemp = $refseq; #für jedes Motiv wieder mit der ganzen Sequenz starten
print „$motif\n“;
$motif =~ s/^\w*\s//;
print „$motif\n“;
while(length($refseq)>0) # as long as there is a rest sequence (>0)
{
my $length = length($refseq);
print „length now $length\n“;
if ($refseq=~ /($motif)/ig) # search for the motif (variant)
{
print „found\n“;
$pos= $pos + length($’)-1;
print „pos $pos\n“;
$pos= $pos + length($&:wink:;
$refseq= $’;
$dna=$dna+1;
}
}
if ($dna==0)
{
print „Sorry, no match\n“;
}
}
}
}
LG,
Anja
MOD: prehtml-tags um den Code herum eingefügt