9 de julio de 2014

regenerando DNA degenerado

Hola,
durante la reciente visita de mi colega Pablo Vinuesa al laboratorio pasamos ratos escribiendo código en Perl con el fin de diseñar de manera automática, para grandes conjuntos de secuencias de DNA previamente alineadas, parejas de primers (cebadores de PCR) adecuadas para estudios de microbiología ambiental, siguiendo principios bien conocidos ya. En cuanto probamos el código con unos cuantos ejemplos observamos que a menudo los primers para algunas regiones de los alineamientos múltiples eran degenerados. Como se muestra en la figura, eso significa que algunas posiciones de los cebadores no podían ser nucleótidos únicos si no que tenían que ser combinaciones de 2 o más para poder hibridarse con las secuencias utlizadas para su diseño.


Pareja de primers degenerados que definen un amplicón a partir de secuencias de DNA alineadas. De acuerdo con la nomenclatura IUPAC, el de la izquierda (fwd) puede escribirse como GAYTST y el de la derecha (rev) como GHGKAG. Figura tomada de http://acgt.cs.tau.ac.il/hyden.
A la hora de evaluar parejas de primers nos encontramos con que los degenerados en realidad tendrían que ser examinados por medio de cada una de las secuencias implícitas en el código degenerado. Y por tanto, tuvimos que buscar una manera de regenerar las secuencias de nucleótidos correspondientes a un primer degenerado, que es de lo que va esta entrada. El siguiente código en Perl hace precisamente esto:

 #!/usr/bin/perl  
 use strict;  
 my $degenerate_sequence = $ARGV[0] || die "# usage: $0 <degenerate DNA sequence>\n";  
 my $regenerated_seqs = regenerate($degenerate_sequence);  
 foreach my $seq (@$regenerated_seqs)  
 {  
    print "$seq\n";  
 }  
 # returns a ref to list of all DNA sequences implied in a degenerate oligo  
 # adapted from Amplicon (Simon Neil Jarman, http://sourceforge.net/projects/amplicon)  
 sub regenerate  
 {  
    my ($primerseq) = @_;  
    my %IUPACdegen = (   
    'A'=>['A'],'C'=>['C'], 'G'=>['G'], 'T'=>['T'],   
    'R'=>['A','G'], 'Y'=>['C','T'], 'S'=>['C','G'], 'W'=>['A','T'], 'K'=>['G','T'], 'M'=>['A','C'],  
    'B'=>['C','G','T'], 'D'=>['A','G','T'], 'V'=>['A','C','G'], 'H'=>['A','C','T'],   
    'N'=>['A','C','G','T']   
    );  
    my @oligo = split(//,uc($primerseq));   
    my @grow = ('');  
    my @newgrow = ('');  
    my ($res,$degen,$x,$n,$seq);  
    foreach $res (0 .. $#oligo){  
       $degen = $IUPACdegen{$oligo[$res]};   
       if($#{$degen}>0){  
          $x = 0;  
          @newgrow = @grow;  
          while($x<$#{$degen}){  
             push(@newgrow,@grow);  
             $x++;     
          }     
          @grow = @newgrow;  
       }  
       $n=$x=0;   
       foreach $seq (0 .. $#grow){  
          $grow[$seq] .= $degen->[$x];   
          $n++;  
          if($n == (scalar(@grow)/scalar(@$degen))){  
             $n=0;  
             $x++;  
          }     
       }  
    }  
    return \@grow;     
 }            

Podemos probarlo con las secuencias de la figura:

$ perl degenprimer.pl GAYTST
GACTCT
GATTCT
GACTGT
GATTGT

 y

$ perl degenprimer.pl GHGKAG
GAGGAG
GCGGAG
GTGGAG
GAGTAG
GCGTAG
GTGTAG

Hasta otra,
Bruno

17 de junio de 2014

postdoc computational systems biology Luxemburg

Postdoctoral Fellow in Computational Systems Biology at the Luxembourg Centre for Systems Biomedicine in collaboration with the Black Family Stem Cell Institute of the Mount Sinai School of Medicine

http://www.nature.com/naturejobs/science/jobs/425291-postdoctoral-fellow-in-systems-biology

The Computational Biology Group seeks a highly skilled and motivated Postdotoral Fellow to work on an exciting project on the application of network biology approaches to study the role of gene expression stochasticity in cell fate commitment. In particular, the selected candidate shall develop a computational model that integrates transcriptomics and epigenomics data to describe heterogeneity in embryonic stem cells and its implication in differentiation. Single cell and cell perturbation experiments will be performed in order to validate the predictions generated by the model. This project will be carried out in collaboration with Profs. Ihor Lemischka and Kateri Moore at the Black Family Stem Cell Institute of the Mount Sinai School of Medicine. The selected applicant will have the opportunity to visit the experimental labs of our collaborators at the Mount Sinai School of Medicine.

Requirements of the ideal candidate:

  • Ph.D. in Bioinformatics, Computer Science, Biology or a related discipline
  • Strong computational skills
  • Prior experience in mathematical modelling of biological networks, especially in network inference and analysis
  • A strong first-author publication record in the fields of Bioinformatics and Computational Biology
  • Excellent working knowledge in English.

We offer:

  • Opportunity to do applied research to medical problems within a highly dynamic research institution (LCSB) and in collaboration with internationally recognized partners
  • An exciting international environment
  • A very competitive salary

For further information, please contact:

Prof. Dr. Antonio del Sol, Luxembourg Centre for Systems Biomedicine
E-mail: antonio.delsol@uni.lu

30 de mayo de 2014

posdoc bioinformática/proteómica (Oxford)


Sir William Dunn School of Pathology, South Parks Road, Oxford
The Central Proteomics Facility at the Sir William Dunn School of Pathology, University of Oxford is looking for an enthusiastic team member experienced in computational and statistical methods to provide bioinformatics support to researchers using proteomics (http://www.proteomics.ox.ac.uk).
The successful candidate will work collaboratively with existing bioinformaticians, facility staff and academic researchers. The position will cover two main roles. The first is to advise research scientists on statistically rigorous experimental design and data analysis procedures. The second is to maintain and expand the range of computational and statistical tools the facility uses for the analysis of proteomics data. 
You will have a degree in statistics, computing, bioinformatics or equivalent with considerable demonstrable practical experience. You should have strong communication and organisational skills, experience with analysing high dimensional datasets, statistical programming and experience with at least one scripting language. While it is desirable to have previous experience with proteomics and mass spectrometry data this is not essential as training will be provided.

The post is available as a fixed-term contract for 2 years in the first instance. If you are interested in this role, please apply online. You will be required to upload a CV and supporting statement as part of your online application. 

Interviews will be held during the week commencing 23 June 2014.

http://www.jobs.ac.uk/job/AIU252/postdoctoral-bioinformatician-biostatistician

15 de mayo de 2014

Cuando Blastn no es Blastn


BLAST cambió hace ya algún tiempo a mejor con su versión BLAST+ pero por el camino se olvidó de algún detalle que puede confundir a más de uno.

El antiguo BLAST se ejecutaba con el comando 'blastall':

Blastall
--------

Blastall may be used to perform all five flavors of blast comparison. One
may obtain the blastall options by executing 'blastall -' (note the dash). A
typical use of blastall would be to perform a blastn search (nucl. vs. nucl.) 
of a file called QUERY would be:

blastall -p blastn -d nr -i QUERY -o out.QUERY

The output is placed into the output file out.QUERY and the search is performed
against the 'nr' database.  If a protein vs. protein search is desired,
then 'blastn' should be replaced with 'blastp' etc.

De esta forma un alineamiento de proteínas comenzaría como 'blastall -p blastp' y uno de ácidos nucleicos como 'blastall -p blastn' y si queremos usar MEGABLAST tenemos el comando diferente 'megablast'.

Sin embargo en la 'nueva' versión BLAST+, se separaron el alineamiento de proteínas y el de ácidos nucleicos en dos comandos: 'blastp' y 'blastn' (ver manual). Hasta aquí todo parece lógico y normal, lo que no todo el mundo sabe es que LA OPCIÓN POR DEFECTO DE BLASTN ES MEGABLAST, si ejecutamos 'blastn -help' encontraremos lo siguiente:


 *** General search options
 -task                 'megablast' 'rmblastn' >
   Task to execute
   Default = `megablast'

Y es que no todo el mundo está interesado en la velocidad de búsqueda de alineamientos, muchos de los que todavía usamos Blastn es porque apreciamos su gran sensibilidad para detectar alineamientos. En la actualidad usamos Blast para alinear miles de secuencias en tiempos muy razonables de minutos e incluso segundos. Para ganar velocidad en alineamientos de millones de secuencias existen otras mejores alternativas como Bowtie2.

La CONCLUSIÓN de todo esto, si usamos Blastn y nos interesa la sensibilidad deberemos ejecutarlo como:

 blastn -task blastn

Si lo hacemos sin añadir esta opción estaremos ejecutando MEGABLAST y correremos el peligro de perder una gran sensibilidad y no encontrar los alineamientos que deseamos. Por ejemplo, busquemos homología entre la 2'beta microglobulina humana (NM_004048.2) y la de ratón (NM_009735.3) usando la herramienta online de Blastn con las opciones por defecto ('Highly similar sequences (megablast)'):


Sin embargo si cambiamos la opción de búsqueda a 'Somewhat similar sequences (blastn)':


La diferencia es considerable, ¿no creéis? pasamos de no encontrar similaritud a un alineamiento con E-valor de 1.5E-56!!!!






9 de mayo de 2014

2nd CNB Course on Introduction to Research

Hola,
pego un anuncio de un curso para estudiantes interesados en investigar que se realizará en Madrid del  30 de Junio al 25 de Julio en el Centro Nacional de Biotecnología-CSIC, que me parece puede ser una excelente oportunidad para algunos de los seguidores del blog. Los alumnos elegidos tendrán la oportunidad de interaccionar con investigadores de todas las áreas del centro, y en concreto en el departamento de Biología de Sistemas hay varios grupos con tradición en la formación en biología computacional.




Toda la información en http://tinyurl.com/lnqtmgp.
 
Un saludo,
Bruno