Mostrando entradas con la etiqueta NCBI. Mostrar todas las entradas
Mostrando entradas con la etiqueta NCBI. Mostrar todas las entradas

31 de marzo de 2026

Obtén taxonomías del NCBI desde el terminal

Hola, en una entrada anterior comentaba cómo aprendimos a descargar datos del NCBI desde el terminal, usando el binario datasets, en mi caso para Linux. 

Hoy os cuento cómo se puede utilizar para obtener de manera sencilla la taxonomía completa correspondiente a un taxonID, como los que utiliza la base de datos https://www.ncbi.nlm.nih.gov/taxonomy . Lo explico con un ejemplo, buscando en dicho portal la primera especie que se me ocurre:

  • Deduzco que el taxonID de esta especie es el 56046
  • Invoco el binario datasets con este identificador, obteniendo resultados en formato JSON:
       $ datasets summary taxonomy taxon 56046
 
{"reports": [{"query":["56046"],"taxonomy":{"children":[928733,928732,928731],"classification":{"class":{"id":58019,"name":"Pinopsida"},"domain":{"id":2759,"name":"Eukaryota"},"family":{"id":3318,"name":"Pinaceae"},"genus":{"id":3319,"name":"Abies"},"kingdom":{"id":33090,"name":"Viridiplantae"},"order":{"id":1446380,"name":"Pinales"},"phylum":{"id":35493,"name":"Streptophyta"},"species":{"id":56046,"name":"Abies pinsapo"}},"curator_common_name":"Spanish fir","current_scientific_name":{"authority":"Boiss., 1838","name":"Abies pinsapo"},"current_scientific_name_is_formal":true,"genomic_moltype":"dsDNA","group_name":"seed plants","parents":[1,131567,2759,33090,35493,131221,3193,58023,78536,58024,1437180,58019,3313,2821352,1446380,3318,3319],"rank":"SPECIES","tax_id":56046}}],"total_count": 1}

Cuando nos interesa solamente un taxonID es realmente más cómodo hacerlo en la Web, como se ha explicado. Esta operación tiene más sentido en el terminal cuando queremos hacerlo para toda una lista. Por ejemplo, podemos hacer una búsqueda con BLASTN contra la colección core_nt, obteniendo el taxonID de cada resultado en la columna 13:

$ blastn -query test.fna -db core_nt -outfmt "6 std staxids" -out results.tsv 

Con un comando como el siguiente podemos repetir la llamada a datasets para ese fichero:

$ perl -lane 'foreach $i (split(";",$F[12])){ $t=$see{$i}||`datasets summary taxonomy taxon $i`; printf("%s\t%s\t\%s",$F[0],$i,$t); $see{$i}=$t }' results.tsv

Hasta pronto, Bruno 

 

8 de enero de 2026

NCBI Blast 2.17.0+ es más rápido y acepta FASTAs comprimidos

ola de nuevo.

Siguiendo con la serie de entradas sobre BLAST en este blog, hoy os comento que mientras actualizaba el código de https://github.com/eead-csic-compbio/get_homologues he descubierto que había una versión de NCBI Blast, la 2.17.0+, publicada el pasado verano. 

Revisando la lista de cambios respecto a la versión anterior me llamaron la atención estos dos:

  1. makeblastdb supports compressed in gzip, bzip2, and zstd formats
  2. Improved search speed of blastp with -task blastp-fast

La primera resuelve un problema que me ha afectado muchas veces, y evita que tengas que descomprimir un fichero FASTA de gran tamaño antes de indexar un conjunto de secuencias, una operación que a veces tarda mucho tiempo.

La segunda, que en realidad se estrenó en la versión 2.2.30+, permite acelerar las búsquedas con blastp, blastx y tblastn. Según los autores, acelera las búsquedas contra la colección no redundante de proteínas (nr) un 20%, siendo 2-3x más rápido con colecciones más pequeñas como swissprot o pdbaa. Para blastp y blastx se pierde un 3% de sensibilidad.

Hice una prueba rápida en mi máquina:

time ncbi-blast-2.17.0+/bin/blastp -task blastp-fast -query fnr.faa \
	-db sprot.fasta -outfmt 6 > f

real    0m1.113s
user    0m0.713s
sys    0m0.028s

time ncbi-blast-2.17.0+/bin/blastp -task blastp -query fnr.faa \
	-db sprot.fasta -outfmt 6 > s

real    0m3.945s
user    0m2.925s
sys    0m0.040s

wc -l s f
  113 s
   32 f

diff <(head -30 s) <(head -30 f)

Observo que los primeros 30 resultados son idénticos en ambas búsquedas, y que la estrategia -task blastp en este caso es mucho más sensible, produciendo 81 alineamientos más, todos ellos cortos y con identidades bajas. Si no necesitas estos últimos -task blastp-fastp es para ti.

Hasta pronto,

Bruno

15 de mayo de 2025

Descarga datasets del NCBI desde el terminal

Hola, hace unos días necesitaba obtener todas las secuencias de genes de pimiento (Capsicum annuum) de la colección 'gene' del NCBI (que tan mal lo está pasando en 2025). Para ello abrí el navegador y obtuve una lista de 48K identificadores (gene-id) en https://www.ncbi.nlm.nih.gov/gene?term=capsicum%20annuum%5BOrganism%5D

Descargué el fichero y lo hice no redundante de esta manera:

$ head -3 gene_result.txt | cut -f 1-6
tax_id Org_name GeneID CurrentID Status Symbol
4072 Capsicum annuum 107859632 0 live LOC107859632
4072 Capsicum annuum 107868427 0 live LOC107868427 
$ cut -f 3 gene_result.txt | sort -u | grep -v Gene > pimiento.geneids.txt

Descubrí que obtener la lista de genes es fácil, pero no tanto sus secuencias. Por ejemplo no lo logré con https://www.ncbi.nlm.nih.gov/sites/batchentrez , me daba secuencias que no eran de pimiento, supongo que por esperar otro tipo de identificadores. Entonces pedí ayuda en https://support.nlm.nih.gov/support/create-case y tras unos días de espera me dirigieron amablemente a la documentación de la herramienta datasets del NCBI, y me compartieron la siguiente figura:


Me descargué el binario datasets para linux de https://www.ncbi.nlm.nih.gov/datasets/docs/v2/command-line-tools/download-and-install y lo utilicé de esta manera:

$ chmod +x datasets
# probamos primero con un gen de ejemplo 
$ ./datasets download gene gene-id 20217883 --include gene,protein
Collecting 1 gene record [================================] 100% 1/1
Downloading: ncbi_dataset.zip 3.24kB valid data package
Validating package files [================================] 100% 5/5
$ unzip ncbi_dataset.zip
Archive: ncbi_dataset.zip
inflating: README.md
inflating: ncbi_dataset/data/gene.fna
inflating: ncbi_dataset/data/data_report.jsonl
inflating: ncbi_dataset/data/dataset_catalog.json
inflating: md5sum.txt
$ head ncbi_dataset/data/gene.fna
>NC_024624.1:447314-449261 rrn18 [organism=Capsicum annuum] [GeneID=20217883] [chromosome=MT]
ATCATAGTCAAAAGAAGAGTTTGATCCTGGCTCAGAAGGAACGCTAGCTATATGCTTAACACATGCAAGT
CGAACGTTGTTTTCGGGGAGCTGGGCAGAAGGAAAAGAGGCTCCTAGCTAAAGGTAGCTTGTCTCGCCCA
GGAGGTGAGAAGAGTTGAGAACAAAGTGGCGAACGGGTGCGTAACGCGTGGGAATCTGCCGAACAGTTCG
GGCCAAATCCTGAAGAAAGCTAAAAAGCGCTGTTTGATGAGCCTGCGTAGTATTAGGTAGTTGGTCAGGT
AAAGGCTGACCAAGCCAATGATGCTTAGCTGGTCTTTTCGGATGATCAGCCACACTGGGACTGAGACACG
GCCCGGACTCCCACGGGGGGCAGCAGTGGGGAATCTTGGACAATGGGCGAAAGCCCGATCCAGCAATATC
GCGTGAGTGAAGAAGGGCAATGCCGCTTGTAAAGCTCTTTCGTCGAGTGCGCGATCATGACAGGACTCGA
GGAAGAAGCCCCGGCTAACTCCGTGCCAGCAGCCGCGGTAAGACGGGGGGGGCAAGTGTTCTTCGGAATG
ACTGGGCGTAAAGGGCACGTAGGCGGTGAATCGGGTTGAAAGTGAAAGCCGCCAAAAACTGGCGGAATGC
 
# ahora con gene-ids del fichero que preparamos antes, tarda, ncbi_dataset.zip > 100MB
$ ./datasets download gene gene-id --inputfile pimiento.geneids.txt --include gene,protein
$ unzip ncbi_dataset.zip 
Archive: ncbi_dataset.zip
inflating: README.md
inflating: ncbi_dataset/data/gene.fna
inflating: ncbi_dataset/data/protein.faa
inflating: ncbi_dataset/data/data_report.jsonl
inflating: ncbi_dataset/data/dataset_catalog.json
inflating: md5sum.txt
 
$ head ncbi_dataset/data/gene.fna
>NW_025826840.1:c5280-2277 LOC124890618 [organism=Capsicum annuum] [GeneID=124890618] [chromosome=Un]
GGAGGTACTTAAAGCATGACTTTTAAAAGTTTGCATAGGGCAAGAAGCAGGAGTGTGACTAAACTGATTT
TTCTTTCTGGTTTTAAGCATGATGCTATTCCTCAGCGTCCTCAAAATGAGCAAATTGAAAAGCTCAAGAA
GTTCAAGGCTGTGTTGGAACGCATTCTGATTTTCTTGCAGCTCAATAAGCATGACATTCAGCTTACTCAC
AAGGAGAAGTTGTGTTCGGTTGAGAGGCACATAGGTTTCTTTCTTAGCAAGCCTACTTCTCCTCCTCTGC
AGGGGCAACTTCCTCAGTCTTCCATGCAGCTTCAGCAACCACAATCACTTGATGTTCAAACTAATCCACC
GATGCAACCTCAACTTCATCAGGCACTATCTTCGCAGGTACGTCATCAACATTTTAATCCACTATTATCA
TTTCTGGAGGCAATTCTACCAATTGTATGGTGCATCATGCTGGATTTACTAAATTTTGATACTATAAAAG
GTCTCTTGACAAACAGCTAGCCAAATGTGTCAGTCGTCATTGAAAGTTCTGCTACCGTTTAGTTTCTTTT
TCTCCAATGTCTTTTGTTACACTTGTTTTGTATATTACTATATTGTTGGCTCTTTTTCTTTCTTTTGATC
$ head ncbi_dataset/data/protein.faa 
>XP_047258369.1 LOC124890618 [organism=Capsicum annuum] [GeneID=124890618]
MTFKSLHRARSRSVTKLIFLSGFKHDAIPQRPQNEQIEKLKKFKAVLERILIFLQLNKHDIQLTHKEKLC
SVERHIGFFLSKPTSPPLQGQLPQSSMQLQQPQSLDVQTNPPMQPQLHQALSSQAQSTGALQTATLDSDS
TSQTGNADGADWQEELYQEIKTMREKNLPELNALYQKIASKVQQHDAIPQRPQNEQIEKLKMFKAVLERI
LIFLQVNKHDIQLTHKEKLCSVERHIGFFLSKPTSPPLQGQLPQSSMQLQQPQSLDVQTNPPMQPQLHQA
LSSQAQSTGALQTATLDSDSTSQTGNADGADWQEELYQEIKTMRDKNLPELNA
>XP_047259376.1 LOC124891834 [organism=Capsicum annuum] [GeneID=124891834]
MTSNITESLNSILRDEREYPVASIFNSIAPRFGEIFRKRYAEVDNSKTTFIPVAETILRENMTKGDKLYV
NNINESTNEFTVLGYGRSAKVNLSRQPCSCRKYDLVKLPCAYTMAALHLKHGDEYGTSIYKNPFQIYSKE
SYLLAYLEPICAAPLESEWSVAREYLEIQVLPPDVDPKHGRRKVKHVKGVLEPSRYKKRNKCSKCKRLGH

Hay muchas otras maneras de utilizarlo y ejemplos en https://www.ncbi.nlm.nih.gov/datasets/docs/v2/how-tos

Hasta pronto, Bruno