Underc0de

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: Marne en Enero 11, 2014, 09:38:12 AM

Título: Duda sobre matching de secuencias
Publicado por: Marne en Enero 11, 2014, 09:38:12 AM
Buenos días, soy biólogo y la verdad es que estoy empezando con PERL y me encuentro totalmente perdido
a ver si alguno pudiera ayudarme, tengo mil dudas pero empezaré por la primera xDD.

A ver, esto debería ser muy sencillo pero yo soy un negado para estas cosas.

Necesito que de 8 cadenas dadas por ejemplo, me las meta en una matriz y compare por posición,
en que posicion se repite la misma letra en todas las cadenas y me imprima al final las posiciones
donde han coincidido todas las cadenas y el número de coincidencias, en las que no coincide puede haber un Gap o un espacio en blanco,
me da igual. No se si será demasiad complicado pero viendo las cosas que he visto en vuestro foro,
supongo que será relativamente fácil, aunque para mi suponga una pesadilla xDD

Muchas gracias de antemano, saludos
Marne

Ejemplo de cadenas

$cad1= "ATTACCATTAGG"
$cad2= "AGTAGGCTTAGC"
$cad3= "AGTCCCATTACG"
$cad4= "ACTACCATTAGC"
$cad5= "ATTTGAATTATC"
$cad6= "ATTCCCATTACC"
$cad7= "AGTCTCATTACG"
$cad8= "AGTCACATTATT"
Título: Re:Duda sobre matching de secuencias
Publicado por: Juan en Enero 14, 2014, 03:29:13 AM
Hola, no es muy dificil de hacer, que es lo que no te sale?

Título: Re:Duda sobre matching de secuencias
Publicado por: deni_celine en Enero 14, 2014, 11:20:20 AM
MMM no estoy seguro si entendí lo que necesitabas, si es que lo entendí sería algo asi, no?

use warnings;
use strict;
print "\n";

my $cad1= "ATTACCATTAGG";
my $cad2= "AGTAGGCTTAGC";
my $cad3= "AGTCCCATTACG";
my $cad4= "ACTACCATTAGC";
my $cad5= "ATTTGAATTATC";
my $cad6= "ATTCCCATTACC";
my $cad7= "AGTCTCATTACG";
my $cad8= "AGTCACATTATT";

my @arr = ($cad1,$cad2,$cad3,$cad4,$cad5,$cad6,$cad7,$cad8);
my $resultado;

for(my $i=0;$i<12;$i++){
   
    my $val = "1";
    my $aciertos = 0;
    my $iguales = 1;
    foreach my $cadena(@arr){
        my @data = split("", $cadena);
        print $data[$i]." ";
        if ($val ne "1") {
            if ($val eq $data[$i]) { $aciertos++;}
            else{ $iguales = 0; }
        }
        $val = $data[$i];
       
    }
    if ($iguales == 1) {
        $resultado .= "$val ";
        print "  Coinciden!! \n";
    }
    else{
        $resultado .= "- ";
        print "  NO coinciden :C \n";
    }
   
}
print "\n***************************\n";
print "   RESULTADO \n";
print "***************************\n";
print " x x x x x x x x x x x x\n";
print " $resultado \n\n";
print "***************************\n";