22 de junio de 2021

leer datos desde GitHub en R

Hola, esta es una entrada muy breve, donde describo cómo leer datos desde un fichero alojado en un repositorio GitHub en la Web. El problema tiene dos partes. 

Primero, nos aseguramos de acceder al formato original de los datos. Por ejemplo, para leer el fichero https://github.com/eead-csic-compbio/bioinformatics/blob/main/test_data/Ensembl_repeats.tsv , en formato TSV (texto separado por tabuladores), podemos obtener la ruta o path al fichero crudo haciendo click en el botón "Raw" a la derecha en la figura, que en este caso es https://raw.githubusercontent.com/eead-csic-compbio/bioinformatics/main/test_data/Ensembl_repeats.tsv :


 

Segundo, leemos el fichero directamente pasando su URL a la función read.csv de R indicando que las columnas están separadas por tabuladores y que la primera línea del fichero son los nombres de las columnas:

datos <- read.csv(
url("https://raw.githubusercontent.com/eead-csic-compbio/bioinformatics/main/test_data/Ensembl_repeats.tsv"),
sep="\t",
header=TRUE) 

 

Hasta pronto,

Bruno


15 de junio de 2021

entornos Python con pyenv

Hola,

si programas en Python o usas software escrito en este lenguaje es posible que te hayas enfrentado a la necesidad de usar una versión concreta que no tienes instalada en tu sistema, por ejemplo la versión 3.7.9. En esta entrada explico una manera de resolver este problema en Linux con ayuda de pyenv, que de hecho te permite tener múltiples versiones en paralelo, cada una con su propio espacio de dependencias. Espero que aquí quede más claro que en esta otra entrada.

Lo primero que necesitas es una partición en tu disco para pyenv:  

export PYENV_ROOT="/mi/particion/.pyenv"

curl https://pyenv.run | bash
  
# install python 3.7.9 (EOF June 2023)
pyenv install 3.7.9


Si todo va bien ahora debes añadir las siguientes líneas al final de tu fichero .bashrc:

if [[ -d "/mi/particion/.pyenv" ]]; then
    export PYENV_ROOT="/mi/particion/.pyenv"
    export PATH="$PYENV_ROOT/bin:$PATH"
    eval "$(pyenv init --path)"
    eval "$(pyenv virtualenv-init -)"
fi

 

Ahora ya puedes crear un entorno virtual sobre esta versión de Python, por ejemplo 'proyectox', e instalar dependencias específicas de ese proyecto:

pyenv virtualenv 3.7.9 proyectox
pyenv local proyectox
pip install --upgrade pip
 
# dependencias, tras clonar https://github.com/proyextox (ejemplo, no existe)
pip install -r proyectox/requirements.txt


Finalmente, ya puedes trabajar dentro de ese entorno:

pyenv local proyectox



Hasta pronto,

Bruno

9 de junio de 2021

comprueba si dos genomas FASTA son iguales

Hola, 

hoy mi colega Najla Ksouri y yo teníamos que comprobar si dos versiones del mismo genoma, una de Phytozome y otra de Ensembl Plants, eran iguales en secuencia. Para eso usamos este one-liner Perl que hace una digestión MD5 de las secuencias desde un fichero en formato FASTA, donde cada secuencia va precedida de una cabecera o header, capturada en la variable $h:

cat Prunus_persica.Prunus_persica_NCBIv2.dna.toplevel.fa |
    perl -MDigest::MD5=md5_hex -lne 'if(/^(>\S+)/){ $h=$1 } else { $fa{$h} .= $_ }
    END{ foreach $h (keys(%fa)){ print "$h\t".md5_hex(uc($fa{$h})) }}'
 

Éstas son las primeras líneas que imprime:

>scaffold_284	390b26eb24b1926aca0cbd2be8174139
>scaffold_112	9ed6d212a00a8018572c06d6c21fc78d
>scaffold_12	4d99812ab949deb933d84a5a9ebc5787
... 

Como se puede ver, la primera columna es la primera palabra de cada cabecera, y la segunda es la digestión MD5 de esa secuencia, que sería idéntica para dos secuencias iguales. Finalmente, veréis que llama al módulo core Digest::MD5, por tanto ya instalado, y que usa la función uc para convertir las secuencias a mayúsculas antes de digerirlas.

Hasta pronto,

Bruno

4 de mayo de 2021

Acceso a FTP de Ensembl desde un navegador web

En abril de 2021 Mozilla Firefox dejó de soportar el protocolo FTP (ver anuncio). Tras Google Chrome y Safari fue el último navegador en dar el paso, al parecer por los fallos de seguridad de ese vetusto protocolo. 


Dado que FTP sigue siendo la principal forma de descargar grandes volúmenes de datos desde Ensembl, hay dos alternativas para navegar el servidor FTP:

1) Instalar el cliente filezilla y decirle a Firefox al abrir un enlace FTP que use siempre FTP para abrirlo.

2) Acceder a los mismos datos con el protocolo HTTP, tal como me explicó mi colega Michal Szpak, cambiando la URL de 

ftp://ftp.ensemblgenomes.org/pub/plants/

a

http://ftp.ebi.ac.uk/ensemblgenomes/pub/plants


Hasta pronto,

Bruno