ayuda de un bioinformatico
Publicado por David (1 intervención) el 14/02/2008 19:02:11
que tal necesito la ayuda de un bioinformatico ya que encontre un pequeno programita en la red para imprimir secuencias de alta y baja calidad, el problema es que no me dice que tipo de archivo de entrada necesita y ps si me es muy util... si alguien sabe como utilizar este programita... y me puede apoyar... de verdad se los voy a agradecer.. ya que en verdad es un programa que para mi es de gran utilidad....
este es el programita:
#!/usr/local/bin/perl
open CONS,$ARGV[0] or die $!;
open OUT,">>output" or die $!;
$count = 0;
$read_50 = 0;
$read_100 = 0;
$read_150 = 0;
$read_200 = 0;
$read_250 = 0;
$read_300 = 0;
$read_350 = 0;
$read_400 = 0;
$read_450 = 0;
$read_500 = 0;
$read_550 = 0;
$read_600 = 0;
$read_650 = 0;
$read_700 = 0;
sub count_reads {
my($count) = @_;
if ( $count != 0 ) {
# print OUT "$name $count ";
if (( $count >=0 ) && ( $count < 50 )) {
$read_50 += 1;
} elsif (( $count >= 50 ) && ( $count < 100 )) {
$read_100 += 1;
} elsif (( $count >= 100 ) && ( $count < 150 )) {
$read_150 += 1;
} elsif (( $count >= 150 ) && ( $count < 200 )) {
$read_200 += 1;
} elsif (( $count >= 200 ) && ( $count < 250 )) {
$read_250 += 1;
} elsif (( $count >= 250 ) && ( $count < 300 )) {
$read_300 += 1;
} elsif (( $count >= 300 ) && ( $count < 350 )) {
$read_350 += 1;
} elsif (( $count >= 350 ) && ( $count < 400 )) {
$read_400 += 1;
} elsif (( $count >= 400 ) && ( $count < 450 )) {
$read_450 += 1;
} elsif (( $count >= 450 ) && ( $count < 500 )) {
$read_500 += 1;
} elsif (( $count >= 500 ) && ( $count < 550 )) {
$read_550 += 1;
} elsif (( $count >= 550 ) && ( $count < 600 )) {
$read_600 += 1;
} elsif (( $count >= 600 ) && ( $count < 650 )) {
$read_650 += 1;
} elsif ( $count >= 650 ) {
$read_700 += 1;
}
}
}
while (<CONS>) {
if ($_ =~ />/) {
chomp ($_);
@names = split(/s+/, $_);
$name = $names[0];
$name =~ s/>//;
if ( $count != 0 ) {
count_reads ($count);
}
$count = 0;
} else {
chomp ($_);
@quals = split(/s+/, $_);
foreach $qual (@quals) {
if (( $qual >= 20 ) && ( $qual != 98)) {
$count += 1;
}
}
}
}
#print OUT "$name $count ";
count_reads ($count);
#print OUT "0-49 100 150 200 250 300 350 400 450 500 550 600 650 700 ";
print OUT "$read_50 $read_100 $read_150 $read_200 $read_250 $read_300 $read_350 $read_400 $read_450 $read_500 $read_550 $read_600 $read_650 $read_700 ";
close OUT;
este es el programita:
#!/usr/local/bin/perl
open CONS,$ARGV[0] or die $!;
open OUT,">>output" or die $!;
$count = 0;
$read_50 = 0;
$read_100 = 0;
$read_150 = 0;
$read_200 = 0;
$read_250 = 0;
$read_300 = 0;
$read_350 = 0;
$read_400 = 0;
$read_450 = 0;
$read_500 = 0;
$read_550 = 0;
$read_600 = 0;
$read_650 = 0;
$read_700 = 0;
sub count_reads {
my($count) = @_;
if ( $count != 0 ) {
# print OUT "$name $count ";
if (( $count >=0 ) && ( $count < 50 )) {
$read_50 += 1;
} elsif (( $count >= 50 ) && ( $count < 100 )) {
$read_100 += 1;
} elsif (( $count >= 100 ) && ( $count < 150 )) {
$read_150 += 1;
} elsif (( $count >= 150 ) && ( $count < 200 )) {
$read_200 += 1;
} elsif (( $count >= 200 ) && ( $count < 250 )) {
$read_250 += 1;
} elsif (( $count >= 250 ) && ( $count < 300 )) {
$read_300 += 1;
} elsif (( $count >= 300 ) && ( $count < 350 )) {
$read_350 += 1;
} elsif (( $count >= 350 ) && ( $count < 400 )) {
$read_400 += 1;
} elsif (( $count >= 400 ) && ( $count < 450 )) {
$read_450 += 1;
} elsif (( $count >= 450 ) && ( $count < 500 )) {
$read_500 += 1;
} elsif (( $count >= 500 ) && ( $count < 550 )) {
$read_550 += 1;
} elsif (( $count >= 550 ) && ( $count < 600 )) {
$read_600 += 1;
} elsif (( $count >= 600 ) && ( $count < 650 )) {
$read_650 += 1;
} elsif ( $count >= 650 ) {
$read_700 += 1;
}
}
}
while (<CONS>) {
if ($_ =~ />/) {
chomp ($_);
@names = split(/s+/, $_);
$name = $names[0];
$name =~ s/>//;
if ( $count != 0 ) {
count_reads ($count);
}
$count = 0;
} else {
chomp ($_);
@quals = split(/s+/, $_);
foreach $qual (@quals) {
if (( $qual >= 20 ) && ( $qual != 98)) {
$count += 1;
}
}
}
}
#print OUT "$name $count ";
count_reads ($count);
#print OUT "0-49 100 150 200 250 300 350 400 450 500 550 600 650 700 ";
print OUT "$read_50 $read_100 $read_150 $read_200 $read_250 $read_300 $read_350 $read_400 $read_450 $read_500 $read_550 $read_600 $read_650 $read_700 ";
close OUT;
Valora esta pregunta


0