Hola,
nuestro laboratorio (www.eead.csic.es/compbio) coordinará un tutorial el viernes 1 de Febrero a las 15.00 horas como parte del congreso BIFI 2013. El título es:
Taller de análisis bioinformático de proteínas reguladoras
Resumen: En este taller veremos cómo estudiar por medio de herramientas bioinformáticas propiedades de las proteínas reguladoras, como las regiones intrínsecamente desordenadas, su interfaz de reconocimiento de ADN y la predicción de posibles elementos cis.
Duración: 2 horas
Cómo llegar: http://goo.gl/maps/RFJmj
Un saludo,
Bruno
PD Un artículo nuestro reciente donde estudiamos el desorden en plantas: http://www.biomedcentral.com/1471-2229/12/165
Ideas y código para problemas de genómica de plantas, biología computacional y estructural
22 de enero de 2013
11 de enero de 2013
Indexando archivos FASTA
Hola y feliz año nuevo con retraso!
Recientemente me he visto en la necesidad de acceder de maneara aleatoria a secuencias de un archivo FASTA de gran tamaño, en mi caso cercano a los 2 Gb,
con las secuencias formateadas en una sola línea.
Primero probé con las herramientas de BLAST+, en concreto:
$ makeblastdb -in archivo.fasta -parse_seqid
Con la idea de posteriormente consultar las secuencias con algo como (más ejemplos aquí):
$ blastdbcmd -query -db archivo.fasta
Sin embargo, la generación del índice se hizo eterna y de hecho la aborté, por problemas que desconozco y no he seguido mirando.
Posteriormente, tras buscar en Google encontré dos caminos en Perl:
1) con ayuda de scripts de Bioperl: bp_index.pl y bp_fetch.pl
2) con ayuda del módulo core Tie::File, como muestro en el ejemplo a continuación, mi solución preferida, un saludo:
Recientemente me he visto en la necesidad de acceder de maneara aleatoria a secuencias de un archivo FASTA de gran tamaño, en mi caso cercano a los 2 Gb,
con las secuencias formateadas en una sola línea.
Primero probé con las herramientas de BLAST+, en concreto:
$ makeblastdb -in archivo.fasta -parse_seqid
Con la idea de posteriormente consultar las secuencias con algo como (más ejemplos aquí):
$ blastdbcmd -query -db archivo.fasta
Sin embargo, la generación del índice se hizo eterna y de hecho la aborté, por problemas que desconozco y no he seguido mirando.
Posteriormente, tras buscar en Google encontré dos caminos en Perl:
1) con ayuda de scripts de Bioperl: bp_index.pl y bp_fetch.pl
2) con ayuda del módulo core Tie::File, como muestro en el ejemplo a continuación, mi solución preferida, un saludo:
#!/usr/bin/perl -w
use strict;
use Tie::File;
my $fasta_file = '/path/to/file.fasta';
my (%index_fasta,@fasta_array);
open(FASTA,$fasta_file) ||
die "# cannot open $fasta_file\n";
while(<FASTA>)
{
if(/^> any typical marker in header, such as gi (\S+)/)
{
$index_fasta{$1} = $.;
}
}
close(FASTA);
printf("# indexed %d sequences in file %s\n\n",
scalar(keys(%index_fasta)),$fasta_file);
tie(@fasta_array,'Tie::File',$fasta_file) ||
die "# cannot tie file $fasta_file\n";
print "ejemplo: secuencia con identificador 'id12':\n";
print "$fasta_array[$index_fasta{'id12'}-1]\n".
"$fasta_array[$index_fasta{'id12'}]\n";
21 de diciembre de 2012
Bioinformatic Merry Christmas!!!
My boss is very nervous when I prepare this blog entry at the end of December, and this 'crisis' year I wanted to prepare the best bioinformatic inspirated Christmas card ever..
If you are not as geek as us, here is written in flat words... MERRY CHRISTMAS AND HAPPY NEW YEAR 2013!!!
If you want to replicate the Christmas greeting, go to this link, or to the 'retrieve' section in UniProt and introduce the following protein identifiers: P0A183, O02437, Q40309, Q6L5Z2, E0ZPQ6.
30 de noviembre de 2012
comparando secuencias de igual longitud
Hola,
hoy quería compartir recetas en Perl para la comparación eficiente de secuencias de igual longitud. Las dos funciones que vamos a ver devuelven como resultado listas con las posiciones (contando desde 0) en las que difieren dos secuencias.
Para qué sirve esto? En general, para calcular distancias de edición (edit distances); en bioinformática es una manera, por ejemplo, de comparar oligos de igual longitud o secuencias extraídas de un alineamiento múltilple, incluyendo gaps. El siguiente código fuente incluye una subrutina en Perl (con el operador binario ^ y la función pos) y otra en C embebido para hacer la misma operación por dos caminos:
un saludo,
Bruno
hoy quería compartir recetas en Perl para la comparación eficiente de secuencias de igual longitud. Las dos funciones que vamos a ver devuelven como resultado listas con las posiciones (contando desde 0) en las que difieren dos secuencias.
Para qué sirve esto? En general, para calcular distancias de edición (edit distances); en bioinformática es una manera, por ejemplo, de comparar oligos de igual longitud o secuencias extraídas de un alineamiento múltilple, incluyendo gaps. El siguiente código fuente incluye una subrutina en Perl (con el operador binario ^ y la función pos) y otra en C embebido para hacer la misma operación por dos caminos:
use strict;
use warnings;
my $seq1 = 'ACTGGA';
my $seq2 = 'AGTG-A';
my @Pdiffs = find_diffs($seq1,$seq2);
my @Cdiffs = find_diffs_C($seq1,$seq2);
printf("# version Perl\ndiferencias = %d\n%s\n",scalar(@Pdiffs),join(',',@Pdiffs));
printf("# version C\ndiferencias = %d\n%s\n",scalar(@Cdiffs),join(',',@Cdiffs));
sub find_diffs
{
my ($seqA,$seqB) = @_;
my $XOR = $seqA ^ $seqB;
my @diff;
while($XOR =~ /([^\0])/g)
{
push(@diff,pos($XOR)-1);
}
return @diff;
}
use Inline C => <<'END_C';
void find_diffs_C(char* x, char* y)
{
int i;
Inline_Stack_Vars;
Inline_Stack_Reset;
for(i=0; x[i] && y[i]; ++i) {
if(x[i] != y[i]) {
Inline_Stack_Push(sv_2mortal(newSViv(i)));
}
}
Inline_Stack_Done;
}
END_C
Podéis ver en stackoverflow otras versiones y su comparación en base a su tiempo de cálculo,un saludo,
Bruno
21 de noviembre de 2012
Comprimiendo BLAST
Hola,
ya hemos hablado antes en este blog de las crecientes aplicaciones de los algoritmos de compresión en la bioinformática. Hoy precisamente quería enlazar a dos artículos recientes que los explotan para acelerar algo que a priori parece imposible, la herramienta más universal de la biología computacional, BLAST.
En un paper en Nature Biotech, Loh, Maym y Berger nos presentan el prototipo Compression-accelerated BLAST (fuente C++ aquí), que en pruebas empíricas acelera varios órdenes de magnitud las búsquedas de BLAST simplemente haciendo las operaciones en un espacio comprimido. Como ventaja añadida se generan archivos de resultados de tamaños significativamente menores. Obviamente pagamos una pequeña pérdida de sensibilidad, pero puede ser perfectamente asumible para tareas de mapeo de lecturas (reads) de secuenciación de última generación:
En otro paper recientemente publicado en Bioinformatics, Koskinen y Holm, aplican el marco de los vectores de sufijos (ya discutidos aquí) a la búsqueda de proteínas homólogas con una identidad superior al 50%, acelerando de nuevo varias órdenes de magnitud por encima de BLAST.ya hemos hablado antes en este blog de las crecientes aplicaciones de los algoritmos de compresión en la bioinformática. Hoy precisamente quería enlazar a dos artículos recientes que los explotan para acelerar algo que a priori parece imposible, la herramienta más universal de la biología computacional, BLAST.
En un paper en Nature Biotech, Loh, Maym y Berger nos presentan el prototipo Compression-accelerated BLAST (fuente C++ aquí), que en pruebas empíricas acelera varios órdenes de magnitud las búsquedas de BLAST simplemente haciendo las operaciones en un espacio comprimido. Como ventaja añadida se generan archivos de resultados de tamaños significativamente menores. Obviamente pagamos una pequeña pérdida de sensibilidad, pero puede ser perfectamente asumible para tareas de mapeo de lecturas (reads) de secuenciación de última generación:
Original de http://www.nature.com/nbt/journal/v30/n7/full/nbt.2241.html. |
Familias de algoritmos para la búsqueda inexacta de secuencias, según Koskinen y Hol (http://bioinformatics.oxfordjournals.org/content/28/18/i438.full). |
un saludo,
Bruno
Suscribirse a:
Entradas (Atom)