cocodrila escribiste:Yo tengo un problema similar, pero en vez de buscar la "C" me gustaría que recorriera un array en el que están los 20 residuos (ej. @aminoacidos), de manera que contara cuántas veces aparece cada residuo en el total de secuencias (no necesito reiniciar el contador) pero no tengo claro cómo decirle que para cada $letra mire si equivalen a los elementos de @aminoacidos.
for $letra (@seq)
for ($i = 0; $i < @aminoacidos; $1++) # esto no cogerá el valor (A, R, ...), solo correrá 20 veces...
en cambio:
for $aa (@aminoacios)
# aquí no sé como indicar los distintos contadores, que tienen que ser contadores asociados a $aa[0] .. $aa[19]
if $aa eq $letra...
¿Alguna sugerencia de hacia dónde tirar?
Teniendo $i, con $aminoaciodos[$i] accedes al aminoácido en la posición $i. Así que haces un if ($aa eq aminoacidos[$i]) y así sabes si son iguales.
Para los contadores, puedes usar otro hash: $contador{$letra}++
cocodrila escribiste:Si en vez de guardar las secuencias como elementos del array, lo leemos de la siguiente manera:
while ($line=<MSA>) {
chomp $line;
if ($line=~/^>/) {
@line=split(/\|/, $line);
$refseqid=$line[3]; # nombre proteína
} else {
$msa{$refseqid}.=$line; # secuencia proteína
}
}
¿Cómo puedo buscar el patrón en los values del hash? ¿Tengo que meter todos los values en un mismo array para luego recorrer elemento por elemento o con algo tipo "for (values %hash)", tendría que splitarlo y guardarlo en array?
Hay que guardar la información en aquella estructura que, o bien refleje su condición o concepto, o nos permita extraer mejor la información más tarde. Si vas a usar un array es porque vas a guardar elementos que guardan algún tipo de orden entre ellos o su posición es más importante que el valor o quieres procesarlos siempre en ese orden. Y usarás un hash si tienes que relacionar un clave con un valor, ya sea para agregar información que llega dispersa o para recordar información que ya has visto.
O, visto también de otra manera: si vamos a usar índices numéricos o correlativos, usaremos un array, pero si la información que vamos a tratar relaciona cadenas de texto con otras cadenas de texto, usaremos un hash.
Si nos pones ejemplos de la entrada y de lo que quieres hacer con ellos, y cómo tiene que ser la salida, tendremos más pistas.