Os cuento, trabajo en bioinformática con análisis de secuencias biológicas y Perl y me ha surgido un problema. Pero antes de nada, para que veáis cómo son los datos que empleo os pongo este ejemplo:
- Código: Seleccionar todo
Q P V L H L V A L N T P L S G G M R G I R G A D F Q C
donde cada letra de la secuencia correspondería, en este caso, a un aminoácido. En mi trabajo tengo que asignar a cada aminoácido de una secuencia un determinado valor numérico. Eso lo he hecho con un Hash (como cada aminoácido puede repetirse le he puesto un índice numérico según la posición de cada aminoácido) y hasta ahí, bien. El problema es que tengo que asignar esos valores a otra secuencia de aminoácidos diferente en un proceso de alineamiento en que se pueden perder aminoácidos en una y otra secuencia, con lo cual pierdo las "keys" del hash para asignar esos valores.
Por ejemplo, tengo las secuencias de partida A y B:
- Código: Seleccionar todo
Secuencia A = VPIVNLKDEVLSQPGARI
Secuencia B = VPIVNLKDELLFSGSEGPLKPGARI
Cada secuencia la meto en un array diferente (@A y @B), y los valores que asigno a la secuencia A en otro array (@VALOR), de igual longitud que @A. Con los posición de cada aminoácido de @A puedo asignar a cada aminoácido del array @A el valor de @VALOR que corresponde en un hash %H, de esta manera:
Using perl Syntax Highlighting
my $i=0;
do {
$H{$i}=$VALOR[$i];
$i++;
} until ($i==scalar@A);
do {
$H{$i}=$VALOR[$i];
$i++;
} until ($i==scalar@A);
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Vale, el código podría escribirse mejor, pero bueno, estoy aprendiendo
En fin, al alinear ambas secuencias A y B me queda esto (es un ejemplo):
- Código: Seleccionar todo
Secuencia A resultante= IVNLKDQPGARI
Secuencia B resultante= IVNLKDKPGARI
Como veis, en el proceso he perdido aminoácidos de la secuencia A y la B. Partiendo de los valores del Hash para los aminoácidos de la secuencia A que queden, ¿Cómo podría asignar los valores del hash %H que correspondan a la secuencia B?
Espero que hayáis entendido el problema, si no es así decidlo y os lo aclaro.
Muchas gracias por anticipado.