20 de junio de 2022

Hacia dónde va el lenguaje Perl (desde v5.36)?

Hola,

la semana pasada la perlfoundation.org lanzó una campaña para captar voluntarios (y donaciones) para el desarrollo de Perl (y Raku, lee más). Puedes leer los mensajes originales aquí y aquí. Es una excelente oportunidad si conoces Perl, tienes buen inglés y eres una persona activa en comunidades Open Source.

Como parte de esta iniciative han publicado un documento (o prospectus) donde entre otras cosas se resumen los planes futuros de desarrollo del lenguaje Perl, que me pareció interesante compartir con vosotros:

  • la recientemente liberada versión v5.36.0 , que se resume en:
    • diagnostics turned on
    • shed a bunch of weird anti-features that we’ve been discouraging for years
    • enable subroutine signatures
    • new features (like n-at-a-time iteration) and improved facilities for adding new features, like the new ‘builtin’ namespace
  • facilitar el trabajo con texto no-ASCII, como unicode, una de las áreas donde Perl ya es muy potente
  • A lo largo de los dos próximos años se van a eliminar/corregir aspectos del lenguaje que lo hacen "weird in a bad way".
  • Aunque ya es uno de los lenguajes scripting más rápidos, hay margen de mejora importante a partir de los recientemente adoptados prototipos de subrutinas, que especifican los tipos de los parámetros.

Hasta pronto,

Bruno

2 de junio de 2022

Traducir codones a aminoácidos en el terminal

Hola,

hoy me he vuelto a encontrar con una tarea frecuente cuando trabajas con secuencias genómicas, la de traducir codones a aminoácidos. Para unas pocas secuencias se pueden usar herramientas Web como https://web.expasy.org/translate , pero para hacerlo de manera programática y a medida me pareció más conveniente hacerlo con el clásico módulo BioPerl, que tiene documentación específica para esta tarea aquí, incluyendo cómo cambiar de tabla de uso de codones o de fase. En concreto usaremos un one-liner, un pequeño comando en Perl, similar a otros que podeís ver aquí.

 



##1) Instalación, muestro 3 opciones


# 1.1) ubuntu/Debian
sudo apt-get install -y bioperl

# 1.2) bioconda
conda install perl-bioperl

# 1.3) cpanm
cpan -i App:cpanminus cpanm --force Bio::Perl


# 2) Traducciones de un fichero FASTA (codons.fna)

# 2.1 Si bioperl está en ubicación central en @INC
perl -MBio::Seq -lne 'if(/^>/){ print } else { print Bio::Seq->new(-seq => $_)->translate()->seq() }' codons.fna > peptides.faa 


# 2.2) Si bioperl está instalada en otro sitio
perl -I $biopath -MBio::Seq -lne 'if(/^>/){ print } else { print Bio::Seq->new(-seq => $_)->translate()->seq() }' codons.fna > peptides.faa

# 2.3) Para comprobar codones de stop internos
grep -B 1 -P "\*[A-Z]" peptides.faa


Hasta pronto,

Bruno

31 de mayo de 2022

footprintDB May 2022 version

Hi, we just updated the motifs, transcription factors and sites in the database footprintDB

The 31052022 version includes JASPAR2022 and new plant data at EEADannot (see repo), plus all protein-DNA interface residues have been recomputed after bringing 3d-footprint up to speed. 

The current contents include:

totaluniquemetazoaplants
Transcription Factors9920746249401217
DNA motifs (PSSM)146151212980932233
DNA Binding Sites/Sequences46154


Sequence logo of transcription factor WRKY71, read more here.


The footprintDB motifs will be shortly synced with the RSAT servers so that they can be used there as well, see you soon,
Bruno

16 de mayo de 2022

Cómo portar tu software a bioconda, ejemplo paso a paso con GET_HOMOLOGUES

Hola,

hace poco logramos portar el software GET_HOMOLOGUES a la plataforma bioconda (ver artículo), el canal especializado en bioinformática del gestor de paquetes conda. En esta entrada voy a resumir cómo lo hicimos por si sirve de ayuda a otros programadores desprevenidos. La documentación en línea que he consultado por el camino incluye estos enlaces, me pareció que estaba todo mejor documentado en conda, el proyecto principal, que en bioconda:


Los pasos que seguí fueron:

  1. Análisis de dependencias del software GET_HOMOLOGUES. Como ya lo teníamos en GitHub, Travis y Dockerhub lo teníamos bastante claro, pero aun así tuvimos que explorar las recetas ya existentes en bioconda (https://github.com/bioconda/bioconda-recipes/tree/master/recipes) para aprovechar los binarios disponibles. Tras esta tarea descubrimos que las recetas blast, hmmer, diamond, mcl y phylip resolvían casi todas nuestras necesidades, pero faltaba el software COGtriangles, necesario para ejecutar $ get_homologues.pl -G
  2. Por recomendación de mi colega Borja Latorre, y siguiendo la filosofía de bioconda, lo lógico era crear una nueva receta independiente para esta dependencia, así que eso decidimos hacer.
  3. Hacer un fork del repositorio bioconda (https://github.com/bioconda/bioconda-recipes) con tu usuario de GitHub
  4. Clonar localmente el nuevo repositorio
  5. $ cd bioconda-recipes/recipes
  6. Crea una nueva rama como se explica en la documentación y selecciónala
  7. $ mkdir cogtriangles
  8. Los siguientes pasos consistieron en preparar la receta cogtriangles, lo cual implicó editar dos ficheros de texto con ayuda de la documentación y cotilleando otras recetas en el repositorio:
    1.  meta.yaml : define los metadatos de la receta, incluyendo el origen del código fuente, su suma SHA256 para comprobar que la descarga es correcta, su licencia y publicaciones, las dependencias para construir esta receta (las recetas make, el compilador de C++ y perl) y, lo más importante, la batería de tests para comprobar que la receta funciona. 
    2.  build.sh : define cómo se construye el paquete, colocando los binarios compilados de COGtriangles en la carpeta $PREFIX/bin 
  9. $ cd .. && mkdir get_homologues && cd get_homologues
  10. Edito dos ficheros similares para esta segunda receta:
    1. meta.yaml
      1. en la sección build puedes declarar variables de ambiente
      2. verás que la sección requirements->run importa la receta cogtriangles 
      3. los tests se ejecutan invocando directamente dos comandos sin indicar un camino/path
    2. build.sh : copia a la carpeta $PREFIX/bin los scripts y dependencias de GET_HOMOLOGUES para que los tests funcionen tanto en local como en modo mulled test (mira el punto 11). 
    3. $ cd ../..
  11. Tras instalar minicondaDocker deberás configurar los canales de bioconda (gracias José María! Si ya tenías conda instalado igual no los necesitáis; una alternativa a conda es mamba)
    1. $ conda config --add channels defaults 
    2. $ conda config --add channels bioconda 
    3. $ conda config --add channels conda-forge 
    4. $ conda create -c base -n bioconda 
    5. $ conda install -c bioconda bioconda-utils
  12. Ahora prueba las nuevas recetas en tu máquina local
    1. $ conda activate bioconda
    2. $ bioconda-utils lint --packages get_homologues
    3. $ bioconda-utils build --docker --mulled-test --packages get_homologues
  13. Si hay problemas de permisos de escritura en Docker puedes resolverlos con
    1. $ sudo chmod 666 /var/run/docker.sock
  14. Si te aparence un error como FileNotFoundError: [Errno 2] No such file or directory: 'miniconda3/envs/bioconda/conda-bld/conda_build_config_0_-e_conda_build_config.yaml' puedes resolverlo con (gracias José María!):
    1. $ mkdir ~/miniconda3/envs/bioconda/conda-bld
  15. Si los paquetes de las respectivas recetas se construyen correctamente es momento de 
    1. Registrar todos los cambios con git add, git commit, git push 
    2. Abrir un Pull Request (PR) y documentar tus recetas. Puedes ver por ejemplo el nuestro en  https://github.com/bioconda/bioconda-recipes/pull/34595 . Cada cambio que hagas, por ejemplo por nuevos git push, lanza de manera automática los tests que definiste en tus metadatos.  
    3. Escribir en https://gitter.im/bioconda/lobby para pedir por favor que alguien revise el PR, y  si todo va bien, una tu rama al repositorio oficial
  16. Prueba a instalar el paquete desde la nube, posiblemente desde otra máquina, con algo como 
    1. $ conda activate bioconda
    2. $ conda create -n get_homologues -c conda-forge -c bioconda get_homologues
    3. $ conda activate get_homologues 
Espero que esta explicación os ayude,
un saludo,
Bruno











28 de abril de 2022

Gabriela y la dinámica molecular

Hola,

esta mañana leía sobre el descubrimiento de que una mutación en el gen TLR7 es suficiente para causar lupus eritematoso sistémico (LES), una enfermedad autoinmune. La mutación es la sustitución Y264H, deletérea según los programas SIFT y CADD (ver otras opciones aquí), de la que es portadora Gabriela, una chica madrileña. 

El artículo completo está en https://doi.org/10.1038/s41586-022-04642-z , yo quería simplemente destacar parte de la primera figura:

Adaptada del original en https://doi.org/10.1038/s41586-022-04642-z

En el alineamiento múltiple de arriba se puede ver que la tirosina Y264 está muy conservada en animales, y por eso SIFT le asigna una puntuación de 0.12 al cambio por histidina (otras dos mutaciones no sinónimas tienen puntuaciones de 0.05 y 0). 

El panel del medio muestra la unión del ligando guanosina al receptor silvestre TLR7 (Y264) y el de abajo con el receptor mutado, donde se ve que se libera volumen que ocupan varias moléculas de agua, aumentando a la vez la afinidad por la guanosina.

Este análisis fue posible por la disponibilidad de tres estructuras de la proteína ortóloga en Maccaca mulata en el PDB (6IF55GMF y 5GMH), que fueron usadas como punto de partida para hacer varias simulaciones de dinámica molecular que se describen con detalle (3 páginas) en el material suplementario,

hasta pronto,

Bruno