Hola, Perleros,
tengo un archivo multiFASTA con miles de entradas y quiero filtrarlo, en función del nombre de la secuencia, que incluye información relevante para el filtrado. La verdad es que estoy un poco perdido porque no sé cómo organizarlo ya que es un archivo fasta con miles de secuencias, y no sé si es buena idea guardar todo en variables.
El archivo es de la siguiente manera. En este ejemplo voy a incluir únicamente los nombres, pero hay que entender que al ser un archivo fasta después de cada nombre va una secuencia.
Using text Syntax Highlighting
>Locus_1_Transcript_1/4_Confidence_0.480_Length_1384
>Locus_1_Transcript_2/4_Confidence_0.556_Length_1223
>Locus_1_Transcript_3/4_Confidence_0.476_Length_470
>Locus_2_Transcript_4/4_Confidence_0.556_Length_1112
>Locus_2_Transcript_1/2_Confidence_0.508_Length_515
>Locus_2_Transcript_2/2_Confidence_0.048_Length_497
...
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
Como veis, cada secuencia tiene un identificador que indica que es el
Transcript X del Locus Y. Y además está definido por un valor de confianza y una longitud.
Lo que quiero hacer es seleccionar de cada Locus, el mejor. Y eso lo defino en dos pasos.
- Primero quiero filtrar por longitud y para eso me quedo con los que son más largos que una fracción de la longitud máxima de cada Locus (pasada al programa como argumento entre 0 y 1). Así, si selecciono que la longitud tiene que ser por lo menos el 50% de la longitud máxima para el Locus_1, de los cuatro, me quito el Transcript_3/4 porque su longitud es menor que la mitad del máximo (1384). Me quedo con los otros tres para el siguiente paso.
- Después, para los que quedan quiero ordenarlos por confianza y selecciono el que mayor confianza tenga y a su vez mayor longitud.
Así en el ejemplo, del Locus_1 me quedaría al final con
>Locus_1_Transcript_2/4_Confidence_0.556_Length_1223 y su secuencia.
Para el Locus_2 los dos pasarían el corte de longitud pero me quedaría con el Transcript_1/2 porque tiene la mayor confianza de los dos.
Los mejores me los pasa a un archivo de resultados, también en formato fasta, con identificador seguido de su secuencia.
Entiendo que después de leer el archivo, tengo que trabajar Locus a Locus. Lo primero que tengo que hacer es cortar el identificador y quedarme con la longitud y la confianza de cada Transcrito. Y entonces encontrar el mayor valor de longitud y multiplicarlo por el valor dado al argumento al ejecutar el programa para poner mi valor umbral de longitud.
Pero no sé muy bien cómo continuar. ¿Cómo guardo también la secuencia de cada Transcrito para que me la devuelva en el archivo de resultados?
A ver si me podéis ayudar.
D.