7 de septiembre de 2017

acogemos un estudiante o postdoc del programa EMHE

Hola,
nuestro laboratorio tiene interés en acoger a un estudiante de doctorado o posdoc de Argentina, Costa Rica, Perú y Uruguay del programa EMHE “Enhancing Mobility between Latin-American and Caribean countries and Europe”. Las instrucciones para participar en la convocatoria están en http://www.csic.es/programa-emhe

Nuestra propuesta, que podréis encontrar en en las páginas web de las agencias financiadoras latinoamericanas MINCYT (ar), MICITT (cr), CONCYTEC (pe) y ANII (uy), gira en torno a la idea de que el pangenoma de una especie, la unión de todos los genomas de sus individuos, contiene variabilidad genética (codificante y no codificante) útil para estudiar el fenotipo, tanto en microorganismos como plantas. Sin embargo, construir y manejar pangenomas supone un reto. Este proyecto contribuirá a facilitar este tipo de análisis, en base a nuestra experiencia previa con https://github.com/eead-csic-compbio/get_homologues .

El candidato o candidata deberá tener conocimientos de Biología Molecular, Genómica y Biología Computacional, incluyendo experiencia real en el uso de lenguajes de programación en entornos Linux, como por ejemplo Perl, Python, R, Java o C++. Este blog es una buena muestra del trabajo en el grupo. Por favor contacta con bcontreras@eead.csic.es (https://digital.csic.es/cris/rp/rp02661).

Un saludo,
Bruno

5 de septiembre de 2017

one-liner for insert size histogram from BAM

Hola,
ayer necesitábamos obtener rápidamente un histograma con el tamaño de los insertos de una librería de lecturas/reads paired-end. Lo logramos con este one-liner que requiere haber instalado R:

$ samtools view -q 30 -F 3916 mapped_reads.bam | cut -f 9 | \
   Rscript -e 'data=abs(scan(file="stdin")); pdf("hist.pdf"); hist(data,xlab="insert size (bp)")'

$ evince hist.pdf

Lo explico por pasos:

1) Previamente habíamos alineado/mapeado las lecturas contra una referencia y convertido el alineamiento a formato BAM. Podemos hacernos una idea qué mapeos contiene el fichero mapped_reads.bam con ayuda de samtools:

$ samtools flagstat mapped_reads.bam 

497656 + 0 in total (QC-passed reads + QC-failed reads)
0 + 0 duplicates
497409 + 0 mapped (99.95%:-nan%)
497656 + 0 paired in sequencing
248828 + 0 read1
248828 + 0 read2
492706 + 0 properly paired (99.01%:-nan%)
...

2) con -q 30 le pedimos a samtools que nos devuelve solamente lecturas con calidad de mapeo (MAPQ) >= 30

3) con -F 3916 le pedimos que ignore, según podemos averiguar aquí, los siguientes tipos de lecturas: "read unmapped, mate unmapped, first in pair, not primary alignment, read fails platform/vendor quality checks, read is PCR or optical duplicate, supplementary alignment"

NOTA1: Si el fichero BAM es muy grande se puede hacer lo mismo con una muestra al azar de las lecturas, por ejemplo el 10%, con samtools view -s 0.10.

NOTA2: Si la distribución de mapeos contiene algunos insertos anormalmente grandes el histograma por defecto puede quedar demasiado ancho. En ese caso puede ser buena idea probar algo como:

hist(data[data < quantile(data,0.99)])

Hasta luego,
Bruno

28 de agosto de 2017

mean sequence length in FASTA

Hola,
para calcular la longitud promedio de las secuencias de un fichero FASTA estábamos usando el siguiente comando de Perl en el terminal, modificado de otro en https://eead-csic-compbio.github.io/perl_bioinformatica/node90.html:

$ time perl -lne 'if(/^(>.*)/){$h=$1}else{$fa{$h}.=$_} END{ foreach $h (keys(%fa)){$m+=length($fa{$h})}; printf("%1.0f\n",$m/scalar(keys(%fa))) }' ~/db/swissprot
376

real 0m4.943s
user 0m4.488s
sys 0m0.452s

Sin embargo, para ficheros de metagenomas era muy lento, y lo hemos reemplazado por este otro, que no guarda las secuencias en memoria (en un hash llamado %fa):

$ time perl -lne 'if(/^(>.*)/){$nseq++;$m+=$l;$l=0}else{$l+=length($_)} END{ $m+=$l; printf("%1.0f\n",$m/$nseq) }' ~/db/swissprot

376

real 0m2.013s
user 0m1.880s
sys 0m0.132s

Hasta luego,
Bruno

9 de agosto de 2017

semillas con licencia Open Source

Hola,

los que programamos en entornos académicos llevamos muchos años usando software distribuido con licencias de tipo Open Source (OS). De hecho, ahora mismo el canal de distribución de software más popular es GitHub, donde para alojar un nuevo proyecto debes elegir qué tipo de licencia OS le otorgas como creador.

A pesar de las controversias y del debate sobre la propiedad intelectual, este modelo ha tenido la ventaja de permitir que otros creadores aprovechen de manera eficiente los avances hechos por otros y creen soluciones mejores de las que al final todos nos beneficiamos. Una condición general de estas licencias es que el producto resultante sea también OS. Así funcionan las distribuciones Linux, por ejemplo, o gran parte del sistema operativo Mac OS X.

Variedad de tomate Sunviva del catálogo Open Source Seeds. Foto tomada de http://www.nature.com/nbt/journal/v35/n8/full/nbt0817-700.html.
Leo en Nature Biotechnology que estas licencias se están empezando a usar ahora para distribuir variedades y semillas, bajo el amparo de http://osseeds.org, como manera de acelerar y facilitar el intercambio legal de materiales vegetales. Veremos en los próximos años si también en este contexto las licencias OS son un motor de innovación, y como conviven con las empresas y cooperativas de semillas convencionales,
hasta luego,
Bruno


28 de julio de 2017

Tabla de estabilidad de sustituciones de aminoácidos

Hola,
a menudo nos preguntamos qué efecto puede tener un cambio de aminoácido sobre la estabilidad de una proteína. Una pregunta relacionada es si tendrá fenotipo una sustitución no sinónima (missense). De hecho hay toda una colección de herramientas que se han desarrollado para esto (ver por ejemplo el curso de bioinformática estructural). El trabajo reciente de Rocklin et al (2017), donde estudian la estabilidad de miles de miniproteínas (hasta 50aa) sintéticas y unas 500 naturales del PDB, nos proporciona la mejor respuesta hasta la fecha. Aunque es un artículo complejo, en esencia lo que hacen es medir la estabilidad de miles de proteínas expresándolas y exponiéndolas a proteasas en levadura.
De esa manera pueden estimar el efecto que tienen mutaciones individuales dependiendo de su contexto de estructura secundaria, ya sea una alfa-hélice, una lámina beta o un lazo o loop:
Efecto sobre la estabilidad de mutaciones en diferentes contextos estructurales. Los valores negativos, como los de la prolina en general, son desestabilizadores. Adaptada de http://science.sciencemag.org/content/357/6347/168.full.

En la siguiente figura se muestran ejemplos de mutaciones desestabilizadoras en amarillo:

Adaptada de http://science.sciencemag.org/content/357/6347/168.full.

Hasta pronto,
Bruno