Duda sobre matching de secuencias

Iniciado por Marne, Enero 11, 2014, 09:38:12 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Enero 11, 2014, 09:38:12 AM Ultima modificación: Enero 11, 2014, 10:12:47 AM por Expermicid
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"

Hola, no es muy dificil de hacer, que es lo que no te sale?


MMM no estoy seguro si entendí lo que necesitabas, si es que lo entendí sería algo asi, no?

Código: php
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";