27 de diciembre de 2017

más one-liners Perl

Hola,
antes de que se acabe el año aprovecho para compartir con vosotros un excelente tutorial de one-liners de Perl, esos comandos que en una línea permiten ejecutar complejas operaciones en el terminal de Linux, el símbolo del sistema de Windows, o, mejor aún, desde dentro de una ventana de MobaXterm.
El tutorial se aloja e:

https://github.com/learnbyexample/Command-line-text-processing/blob/master/perl_the_swiss_knife.md

y tiene ejemplos tan útiles como:

# 1) calcula máximo de una lista de números separados por comas
$ echo '34,17,6' | perl -MList::Util=max -F, -lane 'print max @F'
34

# 2) valida y expande un one-liner a un programa completo más comprensible
$perl -MO=Deparse -ne 'if(!$#ARGV){$h{$_}=1; next} print if $h{$_}'
LINE: while (defined($_ = )) {
    unless ($#ARGV) {
        $h{$_} = 1;
        next;
    }
    print $_ if $h{$_};
}
-e syntax OK

El tutorial tiene también recetas para usar el resto de herramientas del terminal Linux, como grep, sed y muchas otras, en

https://github.com/learnbyexample/Command-line-text-processing

Feliz año!
Bruno

12 de diciembre de 2017

Secuencia de referencia para experimento TagSeq

Hola,
cada vez se van publicando más trabajos donde se emplea TagSeq, una versión low cost de RNAseq que se especializa en secuenciar el máximo número de transcritos posibles, pero sólo unos cuantos cientos de bases de su extremo 3', contando desde la cola poliA. Un tamaño típico de librería TagSeq es 500b.

Protocolo TagSeq, tomado de https://tinyurl.com/y9yc4u5a.

Cuando obtenemos lecturas o reads de este tipo y las queremos alinear contra los transcritos anotados del genoma de referencia puede ser útil, con vistas a posibles normalizaciones posteriores que consideren la longitud original del gen, recortar las secuencias de referencia. Os pongo un ejemplo en Perl:

zcat primaryTranscriptOnly.fa.gz | \
     perl -lne 'if(/^(>.*)/){$h=$1}else{$fa{$h} .= $_} END{ foreach $s (sort keys(%fa)){ print "$s\n".substr($fa{$s},-500)."\n" }}' > \     
     primaryTranscriptOnly.TagSeq500b.fa

Hasta luego,
Bruno


1 de diciembre de 2017

Docker image of GET_HOMOLOGUES + GET_PHYLOMARKERS

Dear all,
Pablo Vinuesa and me we have recently built a Docker image of GET_HOMOLOGUES bundled with a new pipeline, meant to be used downstream, called GET_PHYLOMARKERS. This software will be described in detail in a forthcoming publication. The image, and instructions on how to run it, are available at https://hub.docker.com/r/csicunam/get_homologues :



By packing them in a ready-to-use, cross-platform image, users avoid installation glitches, usually related to several extremely useful R packages required by the second pipeline. Please test it and give us feedback if possible,
cheers,
Bruno and Pablo

Note: link to docker hub updated 29Dic2017

8 de noviembre de 2017

Figuras de PowerPoint a 800dpi

Hola,
ayer Rubén necesitaba aumentar la resolución de varias figuras incluídas en un artículo aceptado en la revista New Phytologist, que requiere resoluciones mínimas de 300dpi (ppp) o 800dpi, para fotos o gráficos respectivamente. En este caso se trataba de varios gráficos generados en PowerPoint.

Con el siguiente protocolo de Carlos Cantalapiedra lo lograron:

1- Aumentar el tamaño de las figuras en PowerPoint, al menos el doble de lo que será en la realidad.
2- Guardar figura desde en formato EMP
3- En http://www.zamzar.com pasarla a formato BMP
4- con paint.net abrir el BMP e ir a: Imagen --> cambiar tamaño --> aumentar resolución hasta 800 ppp
5- Guardar como TIFF


Los tamaños de los ficheros aumentan considerablemente, pasando de Kb a Mb,
hasta luego,
Bruno

24 de octubre de 2017

SOAP interface of footprintDB

Hi,
this entry shows how to query footprintDB from a Perl script.
First, make sure you have module SOAP::lite, which you can install with: $ sudo cpan -i SOAP::Lite. The following Perl5 code shows how to make all dna, protein and text queries, obtaining XML output in all cases.
Note that if you register you can query also your private databases (see details in documentation). Also note that protein searches are time consuming, and if you wish to annotate a large number of proteins it is advised that BLASTP searches are done in your own hardware, with the appropriate FASTA files., as explained in a previous post. Cheers, Bruno.



#!/usr/bin/perl -w
use strict;
use SOAP::Lite;

my $footprintDBusername = ''; # type your username if registered
my ($result,$sequence,$sequence_name,$datatype,$keyword) = ('','','','','');
my $server = SOAP::Lite
-> uri('footprintdb')
-> proxy('http://floresta.eead.csic.es/footprintdb/ws.cgi');

## sample protein sequence
$sequence_name = 'test';
$sequence = 'IYNLSRRFAQRGFSPREFRLTMTRGDIGNYLGLTVETISRLLGRFQKSGMLAVKGKYITIEN';

$result = $server->protein_query($sequence_name,$sequence,$footprintDBusername);
unless($result->fault()){
 print $result->result(); 
}else{
 print 'error: ' . join(', ',$result->faultcode(),$result->faultstring());
}

## sample regulatory motif sequence
#$sequence = 'TGTGANNN'; # possible format
#$sequence = "TGTGA\nTGTGG\nTGTAG"; # another format
#transfac format for position weight matrices can be used as heredoc
$sequence= <<EOM;
DE 1a0a_AB
01 1 93 0 2
02 0 96 0 0
03 58 33 3 2
04 8 78 6 4
05 8 5 75 8
06 1 2 47 46
07 1 2 84 9
XX
EOM

$result = $server->DNA_motif_query($sequence_name,$sequence,$footprintDBusername);
unless($result->fault()){
 print $result->result();
}else{
 print 'error: ' . join(', ',$result->faultcode(),$result->faultstring());
}

$keyword = "myb";
$datatype = "site";
$result = $server->text_query($keyword,$datatype,$footprintDBusername);
unless($result->fault()){
 print $result->result();
}else{
 print 'error: ' . join(', ',$result->faultcode(),$result->faultstring());
}