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 

 

No hay comentarios:

Publicar un comentario