Perl - ayuda de un bioinformatico

 
Vista:

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;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:ayuda de un bioinformatico

Publicado por Joaquín (13 intervenciones) el 21/02/2008 17:47:21
Lo que hace es leer ficheros de texto, por líneas.

Trata a la línea de forma distinta si empieza con '>' o no.

Si empieza por '>', se queda con el nombre que esté más a la izquierda y manda imprimir los datos, para luego poner el contador a 0.

Si no empieza, lee los campos de la línea, separados por espacios. Para todos los campos, si el valor del campo es superior a 19 y distinto de 98, incrementa en uno un contador.

Al final de la lectura de los datos, escribe una línea con las estadísticas del contador. Las estadísticas muestran el número de datos que cumplen la condición >= 20 y != 98 dentro del rango del fichero (entre partes que comienzan por '>').
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar