TIL que puede personalizar la salida BLAST

Voy a comenzar una nueva serie de publicaciones basadas en cosas nuevas (nuevas para mí) que aprendí recientemente y se incluirán en la categoría TIL. Aprendí sobre TIL de la aplicación de aves hace un tiempo y se basa en el popular subreddit hoy aprendí. Solía ​​publicar cosas de TIL en la aplicación Bird, pero como ya no la uso, usaré mi blog para compartir algunas cosas que espero sean nuevas y útiles para otros también.

EXPLOSIÓN ha existido durante mucho tiempo y fue (y sigue siendo) un elemento básico de la bioinformática. También lo usé por primera vez hace mucho tiempo y en ese momento (si no recuerdo mal) BLAST solo tenía varias opciones de salida que especificaría con -outfmt. La más útil fue la salida tabular (6 o 7) que podía analizarse fácilmente con un script Perl. Así quedó arraigado en mí que ese era el camino a seguir.

Recientemente, necesitaba la alineación real producida por BLAST, que es proporcionada por el formato de salida 0 y la parte que me interesa se ve así.

Query  1    FTASSFLKSFY  11
            FTA SFLKSFY
Sbjct  708  FTAPSFLKSFY  718

Sin embargo, el formato de salida 6 o 7 genera una salida que no contiene la alineación.

FTASSFLKSFY ENSP00000395986.2|ENST00000431480.6|ENSG00000136111.14|OTTHUMG00000017088.5|-|TBC1D4-204|TBC1D4|1290    90.909  11  1   0   1   11  708 718 3.97e-04    34.6

Mientras yo poder (y lo hice) escribí un script para analizar el formato de salida 0, no se ve bien. Fue entonces cuando pensé (y lo he estado haciendo mucho más recientemente) ¿hay una mejor manera de hacerlo? Después de consultar al blastp página de ayuda, descubrí que puede personalizar la salida BLAST. La sección correspondiente de blastp -help se muestra a continuación:

Las opciones 6, 7 y 10 se pueden configurar adicionalmente para producir un formato personalizado especificado por especificadores de formato delimitados por espacios, o por un token especificado por la palabra clave delim.

El especificador de formato que necesitaba era:

qseq significa parte alineada de la secuencia de consulta
sseq significa parte alineada de la secuencia del sujeto

Por lo tanto al ejecutar blastp con lo siguiente outfmt:

-outfmt "7 sacc qacc slen qlen sstart send qstart qend sseq qseq length pident nident mismatch gapopen gaps evalue bitscore"

Pude generar el siguiente resultado:

ENSP00000395986.2|ENST00000431480.6|ENSG00000136111.14|OTTHUMG00000017088.5|-|TBC1D4-204|TBC1D4|1290    FTASSFLKSFY 1290    11  708 718 1   11  FTAPSFLKSFY FTASSFLKSFY 11  90.909  10  1   0   0   3.97e-04    34.6

lo que me permitió reconstruir la alineación con un script más limpio que el que escribí para analizar el formato de salida 0.

Resumen

Mencioné que recientemente comencé a cuestionarme si algo (cualquier cosa) se puede hacer mejor (sin hacer un esfuerzo hercúleo). Este ha sido un buen hábito para adquirir porque me obliga a seguir actualizando mis conocimientos en lugar de dejarlos estancados. He ilustrado este punto en esta publicación de blog:

  1. Tenía un script feo que analizaba un formato hostil porque la información que necesitaba solo estaba disponible en este formato.
  2. Mi idea preconcebida era que los formatos de salida de BLAST se arreglaron en función de mi base de conocimientos obsoleta.
  3. Leer la documentación permitió descubrir que puede personalizar la salida BLAST.
  4. La salida BLAST personalizada contenía la información que necesitaba y es mucho más agradable de analizar, lo que da como resultado un script mucho menos propenso a errores y más fácil de leer.

Por último, esta publicación es la publicación número 300 en este blog. Espero que siga así el mayor tiempo posible. Por favor, hágame saber si alguna de las publicaciones le ha resultado útil. Cuídate, Dave.

Imprimir amigable, PDF y correo electrónico

Fuente del artículo

Deja un comentario