4 de julio de 2017

rooting and laddering Newick trees

Buenas,
esta entrada es para compartir un script Perl para enraizar árboles, muchos árboles, de manera automática, y ordenar los nodos por distancia. Pongo el título en inglés para los buscadores.
Rubén Sancho y yo estamos probando el software GRAMPA, que requiere una colección de árboles de genes precalculados en formato Newick, pero además los quiere enraizados y ordenados de manera ascendente. Como son más de mil árboles no lo queríamos hacer uno a uno con FigTree, por poner un ejemplo; queríamos automatizarlo y para ello aprovechamos los módulos Bio::TreeIO y Bio::Phylo. El primero es de Bioperl y ya lo tenía instalado, el segundo lo instalé con: $ sudo cpanm Bio::Phylo

El árbol de ejemplo, contenido en el fichero unrooted.ph, es:

(1_Sbic:0.047,2_Osat:0.068,(((((((((((3_B422:0.007,(((4_Barb:0.000,((5_Bret:0.003,(6_BsyE:0.000,7_BsyE:0.000):0.000):0.000,8_BsyC:0.000):0.000):0.000,9_Bpho:0.002):0.000,(10_BsyC:0.000,11_BsyC:0.000):0.001):0.000):0.008,((12_B422:0.005,13_Bpho:0.005):0.002,14_Barb:0.000):0.005):0.000,((((15_Bdis:0.000,16_Bdis:0.000):0.000,17_Bmex:0.033):0.013,18_Bhyb:0.001):0.014,(19_Bboi:0.021,((20_Bmex:0.017,21_Bsta:0.034):0.012,22_Bsta:0.000):0.003):0.020):0.012):0.002,23_Barb:0.000):0.000,24_Brup:0.012):0.000,25_BsyG:0.000):0.000,(26_Bpin:0.000,27_BsyG:0.000):0.000):0.011,28_Bsta:0.000):0.053,29_BsyG:0.000):0.036,(30_Barb:0.005,(31_Bpho:0.024,(32_BsyC:0.000,33_BsyE:0.000):0.027):0.029):0.000):0.005,34_Bboi:0.030):0.035);

Invocando el script lo enraizamos con el taxón elegido, el outgroup '_Sbic':

$ perl reroot_tree.pl unrooted.ph > rooted.ph

Obtenemos el fichero rooted.ph, que podemos visualizar con FigTree:

Árbol enraizado y con orden creciente de nodos.
Éste es el código de reroot_tree.pl :

 #!/usr/bin/perl -w  
   
 # Re-roots an input Newick tree with a user-defined outgroup and   
 # prints the resulting tree in ascending or descending node order.  
 # Based on https://github.com/phac-nml/snvphyl-tools/blob/master/rearrange_snv_matrix.pl  
   
 use strict;  
 use Bio::TreeIO;  
 use Bio::Phylo::IO;  
 use Bio::Phylo::Forest::Tree;  
    
 my $OUTGROUPSTRING = '_Sbic'; # change as needed  
 my $NODEORDER = 1; # 1:increasing, 0:decreasing  
 my ($outfound,$outnode,$sorted_newick) = (0);  
   
 die "# usage: $0 <tree.newick>\n" if(!$ARGV[0]);  
   
 # read input tree  
 my $input = new Bio::TreeIO(-file=>$ARGV[0],-format=>'newick');  
 my $intree = $input->next_tree();  
   
 # find outgroup taxon  
 for my $node ( $intree->get_nodes() ) {   
  if(defined($node->id()) && $node->id() =~ m/$OUTGROUPSTRING/) {  
   $outnode = $node;   
   $outfound = 1;  
   last;  
  }  
 }  
 if($outfound == 0) {  
  die "# cannot find outgroup $OUTGROUPSTRING in input tree $ARGV[0]\n";  
 }  
   
 # root in outgroup and sort in increasing order  
 $intree->reroot_at_midpoint($outnode);  
   
 # sort nodes in defined order and print  
 my $unsorted_tree = Bio::Phylo::IO->parse(  
  '-string' => $intree->as_text('newick'),  
  '-format' => 'newick'  
 )->first();  
   
 $unsorted_tree->ladderize($NODEORDER);  
   
 $sorted_newick = $unsorted_tree->to_newick();  
 $sorted_newick =~ s/'//g;  
   
 print $sorted_newick;  


Un saludo,
Bruno

21 de junio de 2017

Leyendo FASTQ con CPAN

Buenas,
hace un par de años describía en otra entrada cómo leer de manera eficiente ficheros FASTQ con ayuda de kseq.h. Para ello definí una clase C++ que llamábamos desde Perl5 con Inline::CPP. La entrada de hoy es para contar que se puede hacer lo mismo instalando el módulo Bio::DB::HTS::Kseq desde CPAN, previa instalación en tu sistema de la librería htslib:

$ git clone https://github.com/samtools/htslib.git
$ cd htslib
$ make 
$ sudo make install
$ cd ..
$ sudo cpanm Bio::DB::HTS::Kseq

Ahora podemos escribir código como éste para probarlo:

use strict;
use Bio::DB::HTS::Kseq;

my ($length,$header,$sequence,$quality);

my $kseq = Bio::DB::HTS::Kseq->new("sample18MB.fq.gz");
my $iter = $kseq->iterator();
while(my $r = $iter->next_seq()) {

  ($header,$sequence,$quality) = ($r->name,$r->seq,$r->qual);
  print ">$header\n$sequence\n$quality\n";
}

En mis pruebas con un fichero FASTQ comprimido de 18MB, este código es un 20% más lento que la versión Inline::CPP,
hasta luego,
Bruno

16 de junio de 2017

Actualización de Perl en bioinformática

Buenas,
solamente quería comentar que el ya vetusto curso de Perl en bioinformático ha cambiado un poco de cara y ha sido revisado para traerlo al 2017, con algunas referencias a Perl6 y nuevos one-liners, que es lo que usaremos de este material en el máster de biotecnología cuantitativa de la Universidad de Zaragoza a partir del curso que viene.

Lo podéis encontrar en: https://eead-csic-compbio.github.io/perl_bioinformatica

Portada de un libro de one-liners, tomada de http://www.catonmat.net/blog/perl-one-liners-explained-part-one

Buen finde,
Bruno

11 de mayo de 2017

Jornada de agrigenómica 2017

Hola,
hoy he estado por la mañana en la 1ª jornada de agrigenómica organizada por QUAES en la UPV, en Valencia. Los 6 ponentes que hemos participado hemos hablado sobre las distintas aplicaciones de las tecnologías genómicas y de secuenciación en la mejora de cultivos. Éstas son mis notas.

Iraida Amaya nos habló de sus proyectos en torno a la mejora de caracteres en la fresa, usando marcadores SNP obtenidos con chips y por genotipado por secuenciación que clasifican por subgenoma. Estos proyectos tienen, además de genómica, metabolómica para el seguimiento de los 20 compuestos volátiles más importantes para el aroma de la fresa. Como hitos destaca la obtención de dos marcadores PCR para genotipar con un 91% de precisión fresas con aroma aceptable, así como su trabajo en curso para caracterizar por agroinfiltración FvMYB10 como regulador del color rojo de la fresa, y del color blanco de sus mutantes, que portan un cambio de marco de lectura. Para ello usaron la metodología QTLseq propuesta por Takagi, 2013.

Guillermo Marco, bioinformático de Sistemas Genómicos, nos dió un curso abreviado sobre diseño y análisis de experimentos de RNAseq, apoyándose en la revisión de Conesa, 2016. Como en un trabajo reciente nuestro (Cantalapiedra, 2017),  recomienda siempre validar las muestras por PCA para descartar réplicas y probar diferentes tuberías de análisis y estrategias de ensamblaje para elegir la más adecuada en cada caso. Su mensaje general es que el diseño del experimento RNAseq determina su éxito.

Patricia Pascual, directora de I+D de Agrícola El Bosque SL, nos presentó el diseño de su incipiente programa de mejora en mora y lo justificó como estrategia empresarial.

David Calvache, del INIA, nos habló sobre el uso de marcadores moleculares en los exámenes técnicos de nuevas variedades desde el punto de vista de la propiedad intelectual (título de obtención) y las licencias de producción y comercialización (registro de variedades). El exámen técnico permite comprobar la distinción, homogeneidad y estabilidad de una variedad candidata. Discute el uso de marcadores molecular para determinar caracteres y la idea de distancia mínima respecto a variedades existentes. Esta distancia puede ser fenotípica y/o molecular, en base a una batería de marcadores. Explica, si lo entiendo bien, que la distinción de variedades esencialmente derivadas la hace la justicia ordinaria apoyándose en distancias moleculares y pedigrís.

Esther Esteban, de la oficina española de variedades vegetales,nos recuerda los retos para la agricultura del futuro, en torno a la seguridad alimentaria, la sostenibilidad, la adaptación al cambio climático, las enfermedades emergentes, los estreses abióticos o las mejoras nutricionales. Explica las diferencias de normativa entre Europa y otros países sobre las nuevas tecnologías de mejora, incluyendo cisgénesis, transgénesis o las ZFN. Cita el trabajo de Lusser, 2011. Desde entonces han surgido nuevas tecnologías como la biología sintética y la edición mediante CRISPR/Cas9. Hace una reflexión sobre las políticas en torno a la biotecnología en Europa frente al resto del mundo.

Yo hablé sobre genómica de plantas y la aplicación de las herramientas de ultrasecuenciación en la mejora de cebada, apoyándonos en la colección nuclear de cebadas españolas, y usando ejemplos de trabajos recientes nuestros [ get_homologues-est , oídio , RNAseq en sequía , adaptación climática ] y figuras de la estupenda revisión de  Bevan, 2017.

Un saludo,
Bruno




26 de abril de 2017

Genome annotation with footprintDB

Hi,
some of you might have heard of our footprintDB collection, which is somewhat unique in that it annotates DNA motifs from different sources together with their cognate transcription factors (TF) and their interface residues. it was published in 2014 and is regularly updated and queried by users around the world, who usually perform interactive searches.

There is also a web services interface which is also quite useful, but slow if you have many sequences to scan (see examples in the manual). Things are even worse if you have a complete genome or proteome. And that's exactly what Teshome Mulugeta, who's visiting the lab from Norway, needed to do.

ACE2 DNA motif, taken from http://floresta.eead.csic.es/footprintdb/index.php?motif=cb6f6b343b895dfa1c3776c99fbedda7 .
So, we have made available FASTA files of all transcription factors in footprintDB, together with their cognate DNA motifs, at http://floresta.eead.csic.es/footprintdb/download . They come in three flavours (all, Metazoa and plants), and TF sequences look like this one:

>1:ACE2 [Saccharomyces cerevisiae] libs:JASPAR;CISBP; motif:vTGCTGGtym;mCCAGCa; url 
MDNVVDPWYINPSGFAKDTQDEEYVQHHDNVNPTIPPPDNYILNNENDDGLDNLLGMDYYNIDDLLTQELRDLDIPLVPSPKTGDGS
SDKKNIDRTWNLGDENNKVSHYSKKSMSSHKRGLSGTAIFGFLGHNKTLSISSLQQSILNMSKDPQPMELINELGNHNTVKNNNDDF
DHIRENDGENSYLSQVLLKQQEELRIALEKQKEVNEKLEKQLRDNQIQQEKLRKVLEEQEEVAQKLVSGATNSNSKPGSPVILKTPA
MQNGRMKDNAIIVTTNSANGGYQFPPPTLISPRMSNTSINGSPSRKYHRQRYPNKSPESNGLNLFSSNSGYLRDSELLSFSPQNYNL
NLDGLTYNDHNNTSDKNNNDKKNSTGDNIFRLFEKTSPGGLSISPRINGNSLRSPFLVGTDKSRDDRYAAGTFTPRTQLSPIHKKRE
SVVSTVSTISQLQDDTEPIHMRNTQNPTLRNANALASSSVLPPIPGSSNNTPIKNSLPQKHVFQHTPVKAPPKNGSNLAPLLNAPDL
TDHQLEIKTPIRNNSHCEVESYPQVPPVTHDIHKSPTLHSTSPLPDEIIPRTTPMKITKKPTTLPPGTIDQYVKELPDKLFECLYPN
CNKVFKRRYNIRSHIQTHLQDRPYSCDFPGCTKAFVRNHDLIRHKISHNAKKYICPCGKRFNREDALMVHRSRMICTGGKKLEHSIN
KKLTSPKKSLLDSPHDTSPVKETIARDKDGSVLMKMEEQLRDDMRKHGLLDPPPSTAAHEQNSNRTLSNETDAL

The header contains the internal accession number, the main TF name, the organism name, the source libraries, the DNA motifs (from JASPAR and CISBP in the example) and a URL where the full annotation and references are available,
cheers,
Bruno