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:
- Tenía un script feo que analizaba un formato hostil porque la información que necesitaba solo estaba disponible en este formato.
- Mi idea preconcebida era que los formatos de salida de BLAST se arreglaron en función de mi base de conocimientos obsoleta.
- Leer la documentación permitió descubrir que puede personalizar la salida BLAST.
- 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.