Búsquedas programáticas en Interpro

Última actualización:

17 de mayo de 2026

PRÁCTICA 6

Objetivos

  1. Aprender a usar la API de Interpro.
  2. Recordar que existen las herramientas datasets y dataformat de NCBI.

Introducción

Todas las consultas a InterPro (Paysan-Lafosse et al. 2022) deben empezar con la dirección de la API: https://www.ebi.ac.uk/interpro/api/ (Proteins Web Team 2023). Por tanto, guardo esta URL básica como cadena de caracteres en la variable API:

API <- 'https://www.ebi.ac.uk/interpro/api/'

La API devuelve los datos en un formato llamado JSON, basado en texto plano. Necesitamos un paquete que nos ayude a leer los archivos JSON. Por ejemplo, jsonlite (Ooms 2014):

library('jsonlite')

Contar registros

En InterPro existen seis tipos principales de datos:

  • Entry: elementos funcionales predichos sobre las proteínas. Se pueden distinguir los definidos por cada base de datos: InterPro, Pfam, CDD, etc.
  • Protein: las secuencias proteicas procedentes de UniProtKB. Pueden ser reviewed (Swiss-Prot) o unreviewed (TrEMBL).
  • Taxonomy: Organismo y su linaje del que proviene una proteína. La fuente de estos datos es UniProtKB.
  • Structure: Estructuras tridimensionales de las proteínas. Proporcionadas por la base de datos PDB.
  • Set: Conjuntos de registros (entries) relacionados, de acuerdo con las bases de datos Pfam o CDD.
  • Proteome: Conjuntos de proteínas de un mismo organismo. Proporcionados por UniProtKB.

Podemos consultar el número de registros de tipo entry en la URL https://www.ebi.ac.uk/interpro/api/entry, cuyo contenido se muestra aquí:

{
    "entries": {
        "member_databases": {
            "pfam": 25501,
            "cathgene3d": 6566,
            "ssf": 2019,
            "panther": 15912,
            "cdd": 19760,
            "profile": 1399,
            "smart": 1322,
            "ncbifam": 32088,
            "prosite": 1311,
            "prints": 2106,
            "hamap": 2391,
            "pirsf": 3292,
            "sfld": 303,
            "antifam": 278
        },
        "integrated": 62376,
        "unintegrated": 52549,
        "interpro": 49900,
        "all": 165723
    }
}

La función fromJSON del paquete jsonlite nos permite guardar este tipo de datos en una lista de listas. En R, podemos acceder a los elementos de una lista con la función doble corchete [[.

registros <- fromJSON(paste0(API, 'entry'))
registros[[1]][['member_databases']]
$pfam
[1] 27208

$cathgene3d
[1] 6566

$ssf
[1] 2019

$panther
[1] 15912

$cdd
[1] 19760

$profile
[1] 1399

$smart
[1] 1322

$ncbifam
[1] 33921

$prosite
[1] 1311

$prints
[1] 2106

$hamap
[1] 2391

$pirsf
[1] 3292

$sfld
[1] 303

$antifam
[1] 278

Ejercicio 1

Construye las URLs necesarias para determinar el número de registros del resto de tipos: protein, structure, set, y proteome. Fíjate en las posibles fuentes de cada tipo de datos, e intenta guardar la información en variables de tu sesión de R.

Para cada caso:

  • https://www.ebi.ac.uk/interpro/api/protein

  • https://www.ebi.ac.uk/interpro/api/structure

  • https://www.ebi.ac.uk/interpro/api/set

  • https://www.ebi.ac.uk/interpro/api/proteome

Para proteína:

proteina <- fromJSON(paste0(API, 'protein')) 
structure <- fromJSON(paste0(API, 'structure')) 
set <- fromJSON(paste0(API, 'set')) 
proteome <- fromJSON(paste0(API, 'proteome'))

Lista de datos de algún tipo

Si además del tipo de datos (entry, protein, taxonomy…), añadimos a la URL la fuente o base de datos de origen que queremos consultar, obtendremos la lista (completa?) de los registros de ese tipo provenientes de esa base de datos. Consulta los ejemplos siguientes:

  • https://www.ebi.ac.uk/interpro/api/entry/interpro
  • https://www.ebi.ac.uk/interpro/api/entry/pfam
  • https://www.ebi.ac.uk/interpro/api/protein/reviewed
  • https://www.ebi.ac.uk/interpro/api/taxonomy/uniprot

Pero, para no saturar los servidores, InterPro sólo devuelve los 20 primeros registros de cada consulta, y ofrece una nueva URL (next) para poder ver o descargar los 20 siguientes.

A continuación, usamos la función fromJSON() de jsonlite para descargar los 20 primeros registros de tipo Pfam y exploramos el resultado.

pfam01 <- fromJSON(paste0(API, 'entry/pfam'))
class(pfam01)
[1] "list"
length(pfam01)
[1] 4
names(pfam01)
[1] "count"    "next"     "previous" "results" 
pfam01[['count']]
[1] 27481
pfam01[['next']]
[1] "https://www.ebi.ac.uk/interpro/api/entry/pfam/?cursor=cD1QRjAwMDIw"
pfam01[['previous']]
NULL
pfam01[['results']]
   metadata.accession
1             PF00001
2             PF00002
3             PF00003
4             PF00004
5             PF00005
6             PF00006
7             PF00007
8             PF00008
9             PF00009
10            PF00010
11            PF00011
12            PF00012
13            PF00013
14            PF00014
15            PF00015
16            PF00016
17            PF00017
18            PF00018
19            PF00019
20            PF00020
                                                     metadata.name
1                      7 transmembrane receptor (rhodopsin family)
2                       7 transmembrane receptor (Secretin family)
3                   7 transmembrane sweet-taste receptor of 3 GCPR
4  ATPase family associated with various cellular activities (AAA)
5                                                  ABC transporter
6        ATP synthase alpha/beta family, nucleotide-binding domain
7                                              Cystine-knot domain
8                                                  EGF-like domain
9                          Elongation factor Tu GTP binding domain
10                             Helix-loop-helix DNA-binding domain
11                                   Hsp20/alpha crystallin family
12                                                   Hsp70 protein
13                                                       KH domain
14               Kunitz/Bovine pancreatic trypsin inhibitor domain
15     Methyl-accepting chemotaxis protein (MCP) signalling domain
16 Ribulose bisphosphate carboxylase large chain, catalytic domain
17                                                      SH2 domain
18                                                      SH3 domain
19                     Transforming growth factor beta like domain
20                                  TNFR/NGFR cysteine-rich region
   metadata.source_database metadata.type metadata.integrated
1                      pfam        domain           IPR000276
2                      pfam        domain           IPR000832
3                      pfam        domain           IPR017978
4                      pfam        domain           IPR003959
5                      pfam        domain           IPR003439
6                      pfam        domain           IPR000194
7                      pfam        domain           IPR006208
8                      pfam        domain           IPR000742
9                      pfam        domain           IPR000795
10                     pfam        domain           IPR011598
11                     pfam        domain           IPR002068
12                     pfam        family           IPR013126
13                     pfam        domain           IPR004088
14                     pfam        domain           IPR002223
15                     pfam        family           IPR004089
16                     pfam        domain           IPR000685
17                     pfam        domain           IPR000980
18                     pfam        domain           IPR001452
19                     pfam        domain           IPR001839
20                     pfam        domain           IPR001368
   metadata.member_databases metadata.go_terms
1                         NA                NA
2                         NA                NA
3                         NA                NA
4                         NA                NA
5                         NA                NA
6                         NA                NA
7                         NA                NA
8                         NA                NA
9                         NA                NA
10                        NA                NA
11                        NA                NA
12                        NA                NA
13                        NA                NA
14                        NA                NA
15                        NA                NA
16                        NA                NA
17                        NA                NA
18                        NA                NA
19                        NA                NA
20                        NA                NA
pfam01[['results']][['metadata']]
   accession                                                            name
1    PF00001                     7 transmembrane receptor (rhodopsin family)
2    PF00002                      7 transmembrane receptor (Secretin family)
3    PF00003                  7 transmembrane sweet-taste receptor of 3 GCPR
4    PF00004 ATPase family associated with various cellular activities (AAA)
5    PF00005                                                 ABC transporter
6    PF00006       ATP synthase alpha/beta family, nucleotide-binding domain
7    PF00007                                             Cystine-knot domain
8    PF00008                                                 EGF-like domain
9    PF00009                         Elongation factor Tu GTP binding domain
10   PF00010                             Helix-loop-helix DNA-binding domain
11   PF00011                                   Hsp20/alpha crystallin family
12   PF00012                                                   Hsp70 protein
13   PF00013                                                       KH domain
14   PF00014               Kunitz/Bovine pancreatic trypsin inhibitor domain
15   PF00015     Methyl-accepting chemotaxis protein (MCP) signalling domain
16   PF00016 Ribulose bisphosphate carboxylase large chain, catalytic domain
17   PF00017                                                      SH2 domain
18   PF00018                                                      SH3 domain
19   PF00019                     Transforming growth factor beta like domain
20   PF00020                                  TNFR/NGFR cysteine-rich region
   source_database   type integrated member_databases go_terms
1             pfam domain  IPR000276               NA       NA
2             pfam domain  IPR000832               NA       NA
3             pfam domain  IPR017978               NA       NA
4             pfam domain  IPR003959               NA       NA
5             pfam domain  IPR003439               NA       NA
6             pfam domain  IPR000194               NA       NA
7             pfam domain  IPR006208               NA       NA
8             pfam domain  IPR000742               NA       NA
9             pfam domain  IPR000795               NA       NA
10            pfam domain  IPR011598               NA       NA
11            pfam domain  IPR002068               NA       NA
12            pfam family  IPR013126               NA       NA
13            pfam domain  IPR004088               NA       NA
14            pfam domain  IPR002223               NA       NA
15            pfam family  IPR004089               NA       NA
16            pfam domain  IPR000685               NA       NA
17            pfam domain  IPR000980               NA       NA
18            pfam domain  IPR001452               NA       NA
19            pfam domain  IPR001839               NA       NA
20            pfam domain  IPR001368               NA       NA

Los siguientes 20 registros de Pfam se encuentran en pfam01[['next']]: https://www.ebi.ac.uk/interpro/api/entry/pfam/?cursor=cD1QRjAwMDIw. Y los podemos descargar igual.

Nota: No me deja instalarme el paquete “kableExtra”, asi que sustituyo por “knitr”.

library('knitr')
pfam02 <- fromJSON(pfam01[['next']])
kable(pfam02[['results']][['metadata']])
accession name source_database type integrated member_databases go_terms
PF00021 u-PAR/Ly-6 domain pfam domain IPR016054 NA NA
PF00022 Actin pfam family IPR004000 NA NA
PF00023 Ankyrin repeat pfam repeat IPR002110 NA NA
PF00024 PAN domain pfam domain IPR003609 NA NA
PF00025 ADP-ribosylation factor family pfam domain IPR006689 NA NA
PF00026 Eukaryotic aspartyl protease pfam domain IPR033121 NA NA
PF00027 Cyclic nucleotide-binding domain pfam domain IPR000595 NA NA
PF00028 Cadherin domain pfam domain IPR002126 NA NA
PF00029 Connexin pfam domain IPR013092 NA NA
PF00030 Beta/Gamma crystallin pfam domain IPR001064 NA NA
PF00031 Cystatin domain pfam domain IPR000010 NA NA
PF00032 Cytochrome b(C-terminal)/b6/petD pfam domain IPR005798 NA NA
PF00033 Cytochrome b/b6/petB pfam domain IPR005797 NA NA
PF00034 Cytochrome c pfam domain IPR009056 NA NA
PF00035 Double-stranded RNA binding motif pfam domain IPR014720 NA NA
PF00036 EF hand domain pfam domain IPR002048 NA NA
PF00037 4Fe-4S binding domain pfam domain IPR017896 NA NA
PF00038 Intermediate filament protein pfam coiled_coil IPR039008 NA NA
PF00039 Fibronectin type I domain pfam domain IPR000083 NA NA
PF00040 Fibronectin type II domain pfam domain IPR000562 NA NA

Ejercicio 2

Crea una tercera lista con los contenidos de la tercera página de registros de Pfam.

library('knitr') 
library('jsonlite')
pfam03 <- fromJSON(pfam02[['next']]) 
kable(pfam03[['results']][['metadata']])
accession name source_database type integrated member_databases go_terms
PF00041 Fibronectin type III domain pfam domain IPR003961 NA NA
PF00042 Globin pfam domain IPR000971 NA NA
PF00043 Glutathione S-transferase, C-terminal domain pfam domain IPR004046 NA NA
PF00044 Glyceraldehyde 3-phosphate dehydrogenase, NAD binding domain pfam domain IPR020828 NA NA
PF00045 Hemopexin pfam repeat IPR018487 NA NA
PF00046 Homeodomain pfam domain IPR001356 NA NA
PF00047 Immunoglobulin domain pfam domain IPR013151 NA NA
PF00048 Small cytokines (intecrine/chemokine), interleukin-8 like pfam domain IPR001811 NA NA
PF00049 Insulin/IGF/Relaxin family pfam domain IPR016179 NA NA
PF00050 Kazal-type serine protease inhibitor domain pfam domain IPR002350 NA NA
PF00051 Kringle domain pfam domain IPR000001 NA NA
PF00052 Laminin B (Domain IV) pfam domain IPR000034 NA NA
PF00053 Laminin EGF domain pfam domain IPR002049 NA NA
PF00054 Laminin G domain pfam domain IPR001791 NA NA
PF00055 Laminin N-terminal (Domain VI) pfam domain IPR008211 NA NA
PF00056 lactate/malate dehydrogenase, NAD binding domain pfam domain IPR001236 NA NA
PF00057 Low-density lipoprotein receptor domain class A pfam repeat IPR002172 NA NA
PF00058 Low-density lipoprotein receptor repeat class B pfam repeat IPR000033 NA NA
PF00059 Lectin C-type domain pfam domain IPR001304 NA NA
PF00060 Ligand-gated ion channel pfam family IPR001320 NA NA

Unión de páginas en un mismo data frame

El paquete jsonlite nos ofrece la función rbind_pages() para juntar una lista de data frames en uno solo:

pfam <- rbind_pages(list(pfam01[['results']][['metadata']],
                         pfam02[['results']][['metadata']]))

Pero para leer y descargar todas las páginas, necesitaríamos alguna manera de automatizar el proceso. En el Apéndice 2 encontrarás una solución posible.

Mostrar todos los detalles de un registro concreto

Ya sabemos cómo mostrar el número de registros de un tipo y cómo descargar la lista de todos ellos (de 20 en 20). El siguiente paso es descargar toda la información relativa a un registro concreto, del cual debemos saber su identificador. Por ejemplo, el dominio PF06235 de Pfam. Para ello, añadimos un tercer campo a la URL, después del tipo de datos y del nombre de la base de datos de procedencia: el identificador del registro que queremos descargar:

https://www.ebi.ac.uk/interpro/api/entry/pfam/PF06235

La función genérica str() de R nos describe la estructura de cualquier objeto en R, y nos puede ayudar a entender cómo podemos acceder a cada dato del registro:

pf06235 <- fromJSON(paste0(API, 'entry/pfam/PF06235'))
str(pf06235)
List of 1
 $ metadata:List of 21
  ..$ accession               : chr "PF06235"
  ..$ entry_id                : NULL
  ..$ type                    : chr "family"
  ..$ go_terms                : NULL
  ..$ source_database         : chr "pfam"
  ..$ member_databases        : NULL
  ..$ integrated              : chr "IPR009356"
  ..$ hierarchy               : NULL
  ..$ name                    :List of 2
  .. ..$ name : chr "NADH dehydrogenase subunit 4L (NAD4L)"
  .. ..$ short: chr "NAD4L"
  ..$ description             :'data.frame':    1 obs. of  4 variables:
  .. ..$ text   : chr "<p>This family consists of NADH dehydrogenase subunit 4L (NAD4L) proteins from the mitochondria of several para"| __truncated__
  .. ..$ llm    : logi FALSE
  .. ..$ checked: logi FALSE
  .. ..$ updated: logi FALSE
  ..$ wikipedia               : NULL
  ..$ literature              : NULL
  ..$ set_info                : NULL
  ..$ overlaps_with           : NULL
  ..$ counters                :List of 11
  .. ..$ subfamilies         : int 0
  .. ..$ domain_architectures: int 3
  .. ..$ interactions        : int 0
  .. ..$ matches             : int 402
  .. ..$ pathways            : int 0
  .. ..$ proteins            : int 402
  .. ..$ proteomes           : int 8
  .. ..$ sets                : int 0
  .. ..$ structural_models   :List of 2
  .. .. ..$ alphafold: int 401
  .. .. ..$ bfvd     : int 0
  .. ..$ structures          : int 0
  .. ..$ taxa                : int 645
  ..$ entry_annotations       :List of 4
  .. ..$ hmm           : int 0
  .. ..$ logo          : int 0
  .. ..$ alignment:seed: int 12
  .. ..$ alignment:full: int 9
  ..$ cross_references        : Named list()
  ..$ is_llm                  : logi FALSE
  ..$ is_reviewed_llm         : logi FALSE
  ..$ is_updated_llm          : logi FALSE
  ..$ representative_structure: NULL
nombre_largo <- pf06235[['metadata']][['name']][['name']]
nombre_largo
[1] "NADH dehydrogenase subunit 4L (NAD4L)"

Obtenemos lo siguiente al ejecutar este bloque: “NADH dehydrogenase subunit 4L (NAD4L)

Ejercicio 3

Usa la función fromJSON() para guardar la información del registro P01923 (proteína de Swiss-Prot) y explora la estructura de los datos con la función str(). ¿Puedes extraer la secuencia?

Siguiendo la misma estructura del comando anterior, lo hago para P01923:

p01923 <- fromJSON(paste0(API, 'protein/reviewed/P01923')) 
str(p01923) 
List of 1
 $ metadata:List of 17
  ..$ accession       : chr "P01923"
  ..$ id              : chr "HBA_GORGO"
  ..$ source_organism :List of 3
  .. ..$ taxId         : chr "9595"
  .. ..$ scientificName: chr "Gorilla gorilla gorilla"
  .. ..$ fullName      : chr "Gorilla gorilla gorilla (Western lowland gorilla)"
  ..$ name            : chr "Hemoglobin subunit alpha"
  ..$ description     : chr [1:2] "Involved in oxygen transport from the lung to the various peripheral tissues" "Hemopressin acts as an antagonist peptide of the cannabinoid receptor CNR1. Hemopressin-binding efficiently blo"| __truncated__
  ..$ length          : int 141
  ..$ sequence        : chr "VLSPADKTNVKAAWGKVGAHAGDYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHGKKVADALTNAVAHVDDMPNALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAA"| __truncated__
  ..$ proteome        : chr "UP000001519"
  ..$ gene            : chr "HBA"
  ..$ go_terms        :'data.frame':    5 obs. of  3 variables:
  .. ..$ identifier: chr [1:5] "GO:0019825" "GO:0020037" "GO:0015671" "GO:0005833" ...
  .. ..$ name      : chr [1:5] "oxygen binding" "heme binding" "oxygen transport" "hemoglobin complex" ...
  .. ..$ category  :'data.frame':   5 obs. of  2 variables:
  .. .. ..$ code: chr [1:5] "F" "F" "P" "C" ...
  .. .. ..$ name: chr [1:5] "molecular_function" "molecular_function" "biological_process" "cellular_component" ...
  ..$ protein_evidence: int 1
  ..$ source_database : chr "reviewed"
  ..$ is_fragment     : logi FALSE
  ..$ in_alphafold    : logi TRUE
  ..$ in_bfvd         : logi FALSE
  ..$ ida_accession   : chr "479f10f36c30dd70c041c861502b6b89292a259d"
  ..$ counters        :List of 11
  .. ..$ domain_architectures: int 26315
  .. ..$ entries             : int 14
  .. ..$ isoforms            : int 0
  .. ..$ proteomes           : int 1
  .. ..$ sets                : int 2
  .. ..$ structures          : int 0
  .. ..$ taxa                : int 1
  .. ..$ dbEntries           :List of 8
  .. .. ..$ cathgene3d: int 1
  .. .. ..$ profile   : int 1
  .. .. ..$ ssf       : int 1
  .. .. ..$ cdd       : int 1
  .. .. ..$ pfam      : int 1
  .. .. ..$ panther   : int 1
  .. .. ..$ prints    : int 2
  .. .. ..$ interpro  : int 6
  .. ..$ proteome            : int 1
  .. ..$ taxonomy            : int 1
  .. ..$ similar_proteins    : int 26315
secuencia <- p01923[['metadata']][['sequence']] 
secuencia
[1] "VLSPADKTNVKAAWGKVGAHAGDYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHGKKVADALTNAVAHVDDMPNALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPAEFTPAVHASLDKFLASVSTVLTSKYR"

La secuencia extraída es la siguiente:“VLSPADKTNVKAAWGKVGAHAGDYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHGKKVADALTNAVAHVDDMPNALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPAEFTPAVHASLDKFLASVSTVLTSKYR”

Filtros. Cruzar dos tipos de datos

Hasta ahora hemos construido una URL con hasta tres elementos: el tipo de datos, la base de datos de procedencia, y el identificador concreto. Estos tres elementos constituyen el bloque de punto final de la URL. También hemos visto que InterPro devuelve una estructura de datos diferente en función de cuantos de esos tres elementos usamos (sólo el tipo de datos es obligatorio): un recuento de registros, una lista de registros, o toda la información de un registro concreto.

Si al bloque de punto final añadimos un segundo tipo de datos, obtendremos un recuento o una lista del primer tipo de datos con información sobre el segundo. Por ejemplo, al comparar estas 2 URLs:

  • https://www.ebi.ac.uk/interpro/api/protein
  • https://www.ebi.ac.uk/interpro/api/protein/entry

podemos observar que no en todas las proteínas en UniProtKB se encuentra algún dominio o elemento funcional en InterPro.

Ejercicio 4

Determina cuántos taxones de UniProtKB no tienen ninguna proteína asignada. ¿Y qué proporción de proteínas cuentan con una estructura terciaria?

Ahora usamos la taxonomía, cuyos datos provienen de UniProtKB.

taxonomy <- fromJSON(paste0(API,'taxonomy')) 
taxonomyprotein <- fromJSON(paste0(API, 'taxonomy/protein')) 
str(taxonomy) 
List of 1
 $ taxa:List of 1
  ..$ uniprot: int 2678841
str(taxonomyprotein)
List of 2
 $ taxa    :List of 1
  ..$ uniprot: int 1291419
 $ proteins:List of 3
  ..$ unreviewed: int 201794580
  ..$ reviewed  : int 571702
  ..$ uniprot   : int 202150435
taxones_total <- taxonomy[['taxa']][['uniprot']]-taxonomyprotein[['taxa']][['uniprot']] 
taxones_total 
[1] 1387422

Por tanto, el número total de taxones que no tienen proteína asignada es de 1387422.

Ahora siguiendo los mismos pasos lo hacemos pero para la estructura terciaria, usando “structure” en vez de “taxonomy”.

protein <- fromJSON(paste0(API,'protein')) 
proteinstructure <- fromJSON(paste0(API, 'protein/structure')) 
str(protein) 
List of 1
 $ proteins:List of 3
  ..$ unreviewed: int 201794580
  ..$ reviewed  : int 571702
  ..$ uniprot   : int 202150435
str(proteinstructure) 
List of 2
 $ proteins  :List of 3
  ..$ reviewed  : int 37334
  ..$ unreviewed: int 30128
  ..$ uniprot   : int 67874
 $ structures:List of 1
  ..$ pdb: int 228088
prot3d <- protein[['proteins']][['uniprot']]
proteinstructure[['proteins']][['uniprot']] 
[1] 67874
prot3d
[1] 202150435

El número total de estructuras primarias es de 202082561. Mientras que 67874 es el número total de estructuras tridimensionales.

Nota: he usado proteins = tanto reviewed como unreviewed.

Filtros. Subconjunto de registros

Podemos especificar un registro concreto de un tipo de datos para limitar una lista de registros de otro tipo de datos. Por ejemplo, la lista de proteínas de la base de datos reviewed (Swiss-Prot) anotadas con la familia Pfam PF00019 (Transforming grow factor beta like domain):

https://www.ebi.ac.uk/interpro/api/protein/reviewed/entry/pfam/PF00019

Para extraer la información desde R, tenemos que familiarizarnos con la estructura de los datos.

pfam00019 <- fromJSON(paste0(API, 'protein/reviewed/entry/pfam/PF00019'))
names(pfam00019)
[1] "count"    "next"     "previous" "results" 
pfam00019[['count']]
[1] 229
names(pfam00019[['results']])
[1] "metadata" "entries" 
# La función "flaten()" corrige el anidamiento de marcos de datos,
kable(flatten(pfam00019[['results']][['metadata']]))
accession name source_database length gene in_alphafold in_bfvd source_organism.taxId source_organism.scientificName source_organism.fullName
A1C2U3 Growth/differentiation factor 8 reviewed 375 MSTN TRUE FALSE 9600 Pongo pygmaeus Pongo pygmaeus (Bornean orangutan)
A1C2U6 Growth/differentiation factor 8 reviewed 375 MSTN TRUE FALSE 9544 Macaca mulatta Macaca mulatta (Rhesus macaque)
A1C2U7 Growth/differentiation factor 8 reviewed 375 MSTN TRUE FALSE 9597 Pan paniscus Pan paniscus (Pygmy chimpanzee)
A1C2V0 Growth/differentiation factor 8 reviewed 375 MSTN TRUE FALSE 9598 Pan troglodytes Pan troglodytes (Chimpanzee)
A1C2V5 Growth/differentiation factor 8 reviewed 375 MSTN TRUE FALSE 9595 Gorilla gorilla gorilla Gorilla gorilla gorilla (Western lowland gorilla)
A8E7N9 Growth/differentiation factor 6-B reviewed 412 gdf6b TRUE FALSE 7955 Danio rerio Danio rerio (Zebrafish)
A9CB18 Growth/differentiation factor 9 reviewed 455 GDF9 TRUE FALSE 9555 Papio anubis Papio anubis (Olive baboon)
F1QWZ4 Growth/differentiation factor 2 reviewed 389 gdf2 TRUE FALSE 7955 Danio rerio Danio rerio (Zebrafish)
G5EBY8 BMP-like protein unc-129 reviewed 407 unc-129 TRUE FALSE 6239 Caenorhabditis elegans Caenorhabditis elegans
G5EEL5 Protein dbl-1 reviewed 365 dbl-1 TRUE FALSE 6239 Caenorhabditis elegans Caenorhabditis elegans
G7PWZ3 Growth/differentiation factor 15 reviewed 308 GDF15 TRUE FALSE 9541 Macaca fascicularis Macaca fascicularis (Crab-eating macaque)
O00292 Left-right determination factor 2 reviewed 366 LEFTY2 TRUE FALSE 9606 Homo sapiens Homo sapiens (Human)
O08689 Growth/differentiation factor 8 reviewed 376 Mstn TRUE FALSE 10090 Mus musculus Mus musculus (Mouse)
O08717 Inhibin beta E chain reviewed 350 Inhbe TRUE FALSE 10090 Mus musculus Mus musculus (Mouse)
O13048 Nodal homolog 4-A reviewed 402 nodal4-a TRUE FALSE 8355 Xenopus laevis Xenopus laevis (African clawed frog)
O14793 Growth/differentiation factor 8 reviewed 375 MSTN TRUE FALSE 9606 Homo sapiens Homo sapiens (Human)
O18828 Growth/differentiation factor 8 reviewed 375 MSTN TRUE FALSE 9557 Papio hamadryas Papio hamadryas (Hamadryas baboon)
O18830 Growth/differentiation factor 8 reviewed 375 MSTN TRUE FALSE 9940 Ovis aries Ovis aries (Sheep)
O18831 Growth/differentiation factor 8 reviewed 375 MSTN TRUE FALSE 9823 Sus scrofa Sus scrofa (Pig)
O18836 Growth/differentiation factor 8 reviewed 375 MSTN TRUE FALSE 9913 Bos taurus Bos taurus (Bovine)

Ejercicio 5

Intenta obtener una lista de los dominios de Pfam presentes en vertebrados (taxon 7742). Al menos, los 20 primeros.

vertebrados <- fromJSON(paste0(API, 'entry/pfam/taxonomy/uniprot/7742'))
names(vertebrados)
vertebrados[['results']][['metadata']]
kable(vertebrados)

Se ha usado #| eval: false ,#| message: falsey #| warning: false para facilitar la visualización al renderizarlo.

Ejercicio 6

¿Cuántas proteínas de cocodrilos (taxon 8493) conocemos con el dominio zinc finger, C2HC type (Pfam PF01530)?

pfam01530 <- fromJSON(paste0(API, 'protein/uniprot/entry/pfam/PF01530/taxonomy/uniprot/8493'))
names(pfam01530)
[1] "count"    "next"     "previous" "results" 
pfam01530[['count']]
[1] 15

Se conocen 15 proteínas de cocodrilos con el dominio zinc finger, C2HC type (Pfam PF01530).

Bibliografía

Ooms, Jeroen. 2014. «The jsonlite Package: A Practical and Consistent Mapping Between JSON Data and R Objects». arXiv. https://doi.org/10.48550/ARXIV.1403.2805.
Paysan-Lafosse, Typhaine, Matthias Blum, Sara Chuguransky, Tiago Grego, Beatriz Lázaro Pinto, Gustavo A Salazar, Maxwell L Bileschi, et al. 2022. «InterPro in 2022». Nucleic Acids Research 51 (D1): D418-27. https://doi.org/10.1093/nar/gkac993.
Proteins Web Team. 2023. https://github.com/ProteinsWebTeam/interpro7-api/tree/master/docs.