"""A client to miRBase."""
import os
__all__ = [
'get_mirbase_id_from_mirbase_name',
'get_mirbase_name_from_mirbase_id',
'get_hgnc_id_from_mirbase_id',
'get_mirbase_id_from_hgnc_id',
'get_mirbase_id_from_hgnc_symbol',
]
HERE = os.path.dirname(os.path.abspath(__file__))
MIRBASE_FILE = os.path.join(HERE, os.pardir, 'resources', 'mirbase.tsv')
[docs]def get_mirbase_name_from_mirbase_id(mirbase_id):
"""Return the miRBase name corresponding to the given miRBase ID.
Parameters
----------
mirbase_id : str
The miRBase ID to be converted. Example: "MI0000060"
Returns
-------
mirbase_name : str
The miRBase name corresponding to the given miRBase ID.
"""
return _mirbase_id_to_name.get(mirbase_id)
[docs]def get_mirbase_id_from_mirbase_name(mirbase_name):
"""Return the miRBase identifier corresponding to the given miRBase name.
Parameters
----------
mirbase_name : str
The miRBase ID to be converted. Example: "hsa-mir-19b-2"
Returns
-------
mirbase_id : str
The miRBase ID corresponding to the given miRBase name.
"""
return _mirbase_name_to_id.get(mirbase_name)
[docs]def get_hgnc_id_from_mirbase_id(mirbase_id):
"""Return the HGNC ID corresponding to the given miRBase ID.
Parameters
----------
mirbase_id : str
The miRBase ID to be converted. Example: "MI0000060"
Returns
-------
hgnc_id : str
The HGNC ID corresponding to the given miRBase ID.
"""
return _mirbase_id_to_hgnc_id.get(mirbase_id)
[docs]def get_mirbase_id_from_hgnc_id(hgnc_id):
"""Return the HGNC ID corresponding to the given miRBase ID.
Parameters
----------
hgnc_id : str
An HGNC identifier to convert to miRBase, if it is indeed
an miRNA. Example: "31476"
Returns
-------
mirbase_id : str
The miRBase ID corresponding to the given HGNC ID.
"""
return _hgnc_id_to_mirbase_id.get(hgnc_id)
[docs]def get_mirbase_id_from_hgnc_symbol(hgnc_symbol):
"""Return the HGNC gene symbol corresponding to the given miRBase ID.
Parameters
----------
hgnc_symbol : str
An HGNC gene symbol to convert to miRBase, if it is indeed
an miRNA. Example: "MIR19B2"
Returns
-------
mirbase_id : str
The miRBase ID corresponding to the given HGNC gene symbol.
"""
return _hgnc_symbol_to_mirbase_id.get(hgnc_symbol)
def _read():
"""Read the miRBase data into some lookup dictionaries."""
mirbase_id_to_name = {}
mirbase_name_to_id = {}
hgnc_id_to_mirbase_id = {}
mirbase_id_to_hgnc_id = {}
hgnc_symbol_to_mirbase_id = {}
mirbase_id_to_hgnc_symbol = {}
with open(MIRBASE_FILE) as file:
next(file)
for line in file:
try:
mirbase_id, mirbase_name, db, identifier, name = \
line.strip().split('\t')
except ValueError: # fails on WORMBASE since no names
continue
mirbase_id_to_name[mirbase_id] = mirbase_name
mirbase_name_to_id[mirbase_name] = mirbase_id
if db == 'HGNC':
hgnc_id_to_mirbase_id[identifier] = mirbase_id
mirbase_id_to_hgnc_id[mirbase_id] = identifier
hgnc_symbol_to_mirbase_id[name] = mirbase_id
mirbase_id_to_hgnc_symbol[mirbase_id] = name
return (
mirbase_id_to_name,
mirbase_name_to_id,
hgnc_id_to_mirbase_id,
mirbase_id_to_hgnc_id,
hgnc_symbol_to_mirbase_id,
mirbase_id_to_hgnc_symbol,
)
(
_mirbase_id_to_name,
_mirbase_name_to_id,
_hgnc_id_to_mirbase_id,
_mirbase_id_to_hgnc_id,
_hgnc_symbol_to_mirbase_id,
_mirbase_id_to_hgnc_symbol,
) = _read()