Source code for graphein.grn.features.node_features
"""Node featurisation utilities for Gene Regulatory Networks."""
from typing import Any
from bioservices import HGNC, UniProt
[docs]
def add_sequence_to_nodes(n: str, d: dict[str, Any]):
"""
Maps UniProt ACC to UniProt ID. Retrieves sequence from UniProt and adds
it to the node
:param n: Graph node. Unused (retained for a consistent function signature).
:type n: str
:param d: Graph attribute dictionary.
:type d: Dict[str, Any]
"""
h = HGNC(verbose=False)
u = UniProt(verbose=False)
d["uniprot_ids"] = h.fetch("symbol", d["gene_id"])["response"]["docs"][0][
"uniprot_ids"
]
# Todo these API calls should probably be batched
# Todo mapping with bioservices to support other protein IDs?
for id in d["uniprot_ids"]:
d[f"sequence_{id}"] = u.search(id, columns="sequence").split("\n")[1]