Source code for schrodinger.protein.gpcr.annotate
"""
This module is for annotating GPCR sequences using data from the GPCR DB.
Copyright Schrodinger, LLC. All rights reserved.
"""
import json
import inflect
from . import gpcrdb
from . import sql
from .sql import create_conn
[docs]@create_conn
def get_sequence(entry_name, *, conn=None):
    """
    Get the sequence for the given entry
    :param entry_name: GPCR DB entry name (e.g. 5ht1a_human)
    :type entry_name: str
    :param conn: keyword-only; if not passed, will open default connection
    :type conn: sqlite3.Connection
    :rtype: str
    """
    resp = conn.execute("SELECT sequence FROM entries WHERE entry_name = ?",
                        [entry_name])
    rows = list(resp)
    if len(rows) == 1:
        return rows[0][0]
    else:
        n_rows = inflect.engine().no("row", len(rows))
        raise ValueError(f"Found {n_rows} with entry name {entry_name}") 
[docs]@create_conn
def get_families(entry_name, *, conn=None):
    """
    Get the GPCR families for the given entry
    :param entry_name: GPCR DB entry name (e.g. 5ht1a_human)
    :type entry_name: str
    :param conn: keyword-only; if not passed, will open default connection
    :type conn: sqlite3.Connection
    :rtype: list[str]
    """
    resp = conn.execute("SELECT families FROM entries WHERE entry_name = ?",
                        [entry_name])
    rows = list(resp)
    if len(rows) == 1:
        families = rows[0][0]
        return json.loads(families)
    else:
        n_rows = inflect.engine().no("row", len(rows))
        raise ValueError(f"Found {n_rows} with entry name {entry_name}") 
[docs]@create_conn
def get_residue_annotations(entry_name, *, conn=None):
    """
    Get the residue annotations for the given entry
    :param entry_name: GPCR DB entry name (e.g. 5ht1a_human)
    :type entry_name: str
    :param conn: keyword-only; if not passed, will open default connection
    :type conn: sqlite3.Connection
    :rtype: list[dict]
    """
    residue_rows = conn.execute(sql.SELECT_RESIDUES_SQL, [entry_name])
    return [dict(zip(sql.RESIDUES_KEYS, row)) for row in residue_rows] 
[docs]def get_gpcrdb_url(entry_name):
    """
    Get the GPCR DB URL for the given entry
    :param entry_name: GPCR DB entry name (e.g. 5ht1a_human)
    :type entry_name: str
    """
    return gpcrdb.get_url(entry_name)