API <- 'https://www.ebi.ac.uk/interpro/api/'Búsquedas programáticas en Interpro
PRÁCTICA 6
Objetivos
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:
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: falsepara 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).