• Publicidad

Cambio de Id en fasta

Perl aplicado a la bioinformática

Cambio de Id en fasta

Notapor fcorreas » 2016-09-07 09:16 @428

Hola.

Soy nuevo en el foro, y quería pedir una ayuda. Soy biólogo y no me manejo mucho en programación.

Tengo un archivo fasta con cerca de 2 millones de registros, que apenas lo puedo abrir en un procesador de texto. Los registros se encuentran de la siguiente forma.
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
>SRR1517819.1.1
TNTCATCGAGACAGACTGTGAGGTGGATTTTGCACCTCCTCTGGATTACAAGGAACCTGAAAGGCCTGTTGCAACTGTTCCTTCAGGCAAGGCACCATCACAAGTTGAAGAGATTCCAGCTGAGACCGAACCAAAATTCAAC
>SRR1517819.1.2
GTTGAATTTTGGTTCGGTCTCAGCTGGAATCTCTTCAACTTGTGATGGTGCCTTGCCTGAAGGAACAGTTGCAACAGGCCTTTCAGGTTCCTTGTAATCCAGAGGAGGTGCAAAATCCACCTCACAGTCTGTCTCGATGATA
>SRR1517819.2.1
CNTATACATTTCAATTTACAATTTCAACATAAAACAGAAATAAAATGATAATATAATGTTTACATCTGGAATATACAATTATTGATTAACAAGCCCGTATCGGTTAGTATTTTTTTTTTTTGGGTAACGAGGATCCCACCCGTATTTAAGT
>SRR1517819.2.2
ATAAGTTCCATCCTTCTGGGGGTTGTGTGCAACAAATGGATTTTACAACTTAAGTGTCAATTCCTTGAAGATCTGTCACTACTTAAATACGGGTGGGATCCTCGTTACCCAAAAAAAAAAAATACTAACCGATACGGGCTTGTTAATCAAT
>SRR1517819.3.1
CNGTAATGAAACAAGACATAAGACCAGCTCTCAAGGACATTGTTTGGACCTGGCAAGGGGAGCCGCAGCAGCAGCAGCATCAGCATCAAGAACAACTACAACTAGAGGAACAAGAGCTACAGCCTTCTCAAGCACTCCCAATG
>SRR1517819.3.2
CATTGGGAGTGCTTGAGAAGGCTGTAGCTCTTGTTCCTCTAGTTGTAGTTGTTCTTGATGCTGATGCTGCTGCTGCTGCGGCTCCCCTTGCCAGGTCCAAACAATGTCCTTGAGAGCTGGTCTTATGTCTTGTTTCATTACCG
>SRR1517819.4.1
CNCTGGTACTATTGCAACATAAGCACTCTCAAAAAAAGAAACAAGTAGCATTGACACAAAACAGATTTTGACTAGATAGCAACTGAGATAATGCTCTAATCGAAGAGTGAGAATCCCATATCTTCATCTTCGC
>SRR1517819.4.2
GCGAAGATGAAGATATGGGATTCTCACTCTTCGATTAGAGCATTATCTCAGTTGCTATCTAGTCAAAATCTGTTTTGTGTCAATGCTACTTGTTTCTTTTTTTGAGAGTGCTTATGTTGCAATAGTACCAGAG
 
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

Como se observa, todos los id terminan en '.1' o '.2'.

Lo que necesito es que eso sea reemplazado por '/1' y '/2', respectivamente, quedando, por ej.:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
SRR1517819.1.1 -> SRR1517819.1/1
SRR1517819.1.2 -> SRR1517819.1/2
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


¿Cómo lo puedo hacer? ¿Con expresiones regulares?

Cualquier ayuda sería de gran utilidad.
fcorreas
Perlero nuevo
Perlero nuevo
 
Mensajes: 1
Registrado: 2016-09-07 09:04 @419

Publicidad

Re: Cambio de Id en fasta

Notapor explorer » 2016-09-07 16:54 @746

Bienvenido a los foros de Perl en Español, fcorreas.

El cambio es muy sencillo de hacer, en Perl. Desde la misma línea de comandos puedes ejecutar Perl con una orden para que te modifique el archivo:

Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. perl -p -i -e 's{^(>.+)[.](\d+)$}{$1/$2}' code_39671.txt
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4

Explicación:
  • la opción '-p' abre el archivo fasta 'code_39671.txt', y lo va leyendo línea por línea
  • la opción '-i' indica que vamos a hacer modificaciones al propio archivo
  • la opción '-e' indica el mini programa Perl que queremos que se ejecute en cada línea
  • el programa consiste un único comando de sustitución (s///): si la línea coincide con el primer patrón, lo sustituirá por la parte de reemplazo
  • el patrón es '^(>.+)[.](\d+)$', que quiere decir:
  • toda la línea, desde el principio (^)
  • debe empezar por el carácter '>' y seguirse por un uno o más caracteres cualesquiera (.+)
  • seguidos, al final ($), por el carácter de un punto ([.]) y un número (uno o más dígitos (\d+))
  • además, usando los paréntesis, recordaremos las dos partes separadas por el punto
  • si la línea coincide con el patrón, es sustituida por $1/$2, que es lo que hemos capturado en el par de paréntesis anteriores, pero esta vez separadas por una línea diagonal
Y ya está. Lo ejecutas una vez y el archivo ya queda modificado.

Tienes un resumen de exp. reg. en la página correspondiente en Wikipedia. Perl trae un montón de documentación para exp. reg.:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
        perlrequick         Perl regular expressions quick start
        perlretut           Perl regular expressions tutorial

          perlfaq6          Regexes

        perlre              Perl regular expressions, the rest of the story
        perlrebackslash     Perl regular expression backslash sequences
        perlrecharclass     Perl regular expression character classes
        perlreref           Perl regular expressions quick reference
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
que puedes ver con el comando perldoc.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Bioinformática

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados