mkt.databases.kinase_schema

Builders that assemble KinaseInfo objects from API and scraper data.

Defines the *Generator subclasses (KinaseInfoGenerator and friends) and the conversion/combination functions that populate mkt.schema.kinase_schema.KinaseInfo from UniProt, KLIFS, Pfam, KinCore, and KinHub sources.

Module Attributes

DICT_COL2OBJ_ORIG

Dictionary of columns to object mapping.

DICT_COL2OBJ_REV

Dictionary of columns to object mapping.

DICT_MERGE_MULTIMAP

Dictionary where keys are UniProt IDs with multi-mapping.

DICT_MERGE_MULTIMAP_REV

DICT_MERGE_MULTIMAP in more accessible format.

Functions

align_inter_intra_region(dict_in)

Align inter and intra region sequences.

check_if_file_exists_then_load_dataframe(...)

Check if file exists and load dataframe.

combine_kinaseinfo(dict_uniprot, dict_kd)

Generate KinaseInfoGenerator from dictionary generated by combine_kinaseinfo_kd and combine_kinaseinfo_uniprot.

combine_kinaseinfo_kd(dict_in)

Generate KinaseInfoKinaseDomainGenerator from dictionary generated by generate_dict_obj_from_api_or_scraper.

combine_kinaseinfo_uniprot(dict_in)

Generate KinaseInfoUniProtGenerator from dictionary generated by generate_dict_obj_from_api_or_scraper.

convert_df2dictobj(df, str_obj)

Convert dataframe to dictionary of objects.

convert_str2family(str_input)

Convert string to Family enum.

convert_to_family(str_input[, bool_list])

Convert KinHub family to Family enum.

convert_to_group(str_input[, bool_list])

Convert KinHub group to Group enum.

find_alternative_hgnc(id_uniprot, ...[, ...])

Find alternative HGNC names for a given UniProt ID.

generate_dict_obj_from_api_or_scraper()

Generate dataframes for KinHub, KLIFS, and Pfam databases.

get_sequence_max_with_exception(list_in)

Get maximum sequence length from dictionary of dictionaries.

is_not_valid_string(str_input)

process_keys_dict(dict_in)

Process keys dictionary to convert to list of functions.

replace_none_with_max_len(dict_in)

return_none_if_not_valid_string(str_input)

Return None if string is not valid.

reverse_order_dict_of_dict(dict_in)

Reverse order of dictionary of dictionaries.

Classes

KinaseInfoGenerator(*, hgnc_name, ...)

Pydantic model for kinase information.

KinaseInfoKinaseDomainGenerator(*, ...)

Pydantic model for to generate KinaseInfoKinaseDomain (kinase info at the level of the kinase domain).

KinaseInfoUniProtGenerator(*, hgnc_name, ...)

Pydantic model for to generate KinaseInfoUniProt (kinase info at the level of the UniProt ID).

mkt.databases.kinase_schema.DICT_COL2OBJ_ORIG = {'kinhub': {'keys': {'list_col': ['HGNC Name', 'Kinase Name', 'Manning Name', 'xName', 'Group', 'Family'], 'list_fnc': [<function return_none_if_not_valid_string>, <function return_none_if_not_valid_string>, <function <lambda>>, <function <lambda>>, <function <lambda>>, <function <lambda>>], 'list_obj': ['hgnc_name', 'kinase_name', 'manning_name', 'xname', 'group', 'family']}, 'object': <class 'mkt.schema.kinase_schema.KinHub'>, 'uniprot_id': 'UniprotID'}, 'klifs': {'keys': {'list_col': ['gene_name', 'name', 'full_name', 'group', 'family', 'iuphar', 'kinase_ID', 'pocket'], 'list_fnc': [<function <lambda>>, <function <lambda>>, <function <lambda>>, <function <lambda>>, <function <lambda>>, <function <lambda>>, <function <lambda>>, <function return_none_if_not_valid_string>], 'list_obj': ['gene_name', 'name', 'full_name', 'group', 'family', 'iuphar', 'kinase_id', 'pocket_seq']}, 'object': <class 'mkt.schema.kinase_schema.KLIFS'>, 'uniprot_id': 'uniprot'}, 'pfam': {'keys': {'list_col': ['name', 'start', 'end', 'protein_length', 'pfam_accession', 'in_alphafold'], 'list_fnc': [<function <lambda>>, <function <lambda>>, <function <lambda>>, <function <lambda>>, <function <lambda>>, <function <lambda>>], 'list_obj': ['domain_name', 'start', 'end', 'protein_length', 'pfam_accession', 'in_alphafold']}, 'object': <class 'mkt.schema.kinase_schema.Pfam'>, 'uniprot_id': 'uniprot'}}

Dictionary of columns to object mapping.

Type:

dict[str, dict[str, Callable | str | dict[str, list[str, Callable]]]]

mkt.databases.kinase_schema.DICT_COL2OBJ_REV = {'kinhub': {'keys': {'family': {'column': 'Family', 'function': <function <lambda>>}, 'group': {'column': 'Group', 'function': <function <lambda>>}, 'hgnc_name': {'column': 'HGNC Name', 'function': <function return_none_if_not_valid_string>}, 'kinase_name': {'column': 'Kinase Name', 'function': <function return_none_if_not_valid_string>}, 'manning_name': {'column': 'Manning Name', 'function': <function <lambda>>}, 'xname': {'column': 'xName', 'function': <function <lambda>>}}, 'object': <class 'mkt.schema.kinase_schema.KinHub'>, 'uniprot_id': 'UniprotID'}, 'klifs': {'keys': {'family': {'column': 'family', 'function': <function <lambda>>}, 'full_name': {'column': 'full_name', 'function': <function <lambda>>}, 'gene_name': {'column': 'gene_name', 'function': <function <lambda>>}, 'group': {'column': 'group', 'function': <function <lambda>>}, 'iuphar': {'column': 'iuphar', 'function': <function <lambda>>}, 'kinase_id': {'column': 'kinase_ID', 'function': <function <lambda>>}, 'name': {'column': 'name', 'function': <function <lambda>>}, 'pocket_seq': {'column': 'pocket', 'function': <function return_none_if_not_valid_string>}}, 'object': <class 'mkt.schema.kinase_schema.KLIFS'>, 'uniprot_id': 'uniprot'}, 'pfam': {'keys': {'domain_name': {'column': 'name', 'function': <function <lambda>>}, 'end': {'column': 'end', 'function': <function <lambda>>}, 'in_alphafold': {'column': 'in_alphafold', 'function': <function <lambda>>}, 'pfam_accession': {'column': 'pfam_accession', 'function': <function <lambda>>}, 'protein_length': {'column': 'protein_length', 'function': <function <lambda>>}, 'start': {'column': 'start', 'function': <function <lambda>>}}, 'object': <class 'mkt.schema.kinase_schema.Pfam'>, 'uniprot_id': 'uniprot'}}

Dictionary of columns to object mapping.

Type:

dict[str, dict[str, Callable | str | dict[str, dict[str, str | Callable]]]

mkt.databases.kinase_schema.DICT_MERGE_MULTIMAP = {'general': {'kincore': 'fasta.hgnc', 'kinhub': 'xname', 'klifs': 'gene_name'}, 'manual': {'O60674': [['JAK2', 'JAK2', 'JAK2'], ['JAK2_b', 'JAK2-b', None]], 'O75582': [['MSK1', 'RPS6KA5', 'RPS6KA51'], ['MSK1_b', 'RPS6KA5-b', 'RPS6KA52']], 'O75676': [['MSK2', 'RPS6KA4', 'RPS6KA41'], ['MSK2_b', 'RPS6KA4-b', 'RPS6KA42']], 'P23458': [['JAK1', 'JAK1', 'JAK1'], ['JAK1_b', 'JAK1-b', None]], 'P29597': [['TYK2', 'TYK2', 'TYK2'], ['TYK2_b', 'TYK2-b', None]], 'P51812': [['RSK2', 'RPS6KA3', 'RPS6KA31'], ['RSK2_b', 'RPS6KA3-b', 'RPS6KA32']], 'P52333': [['JAK3', 'JAK3', 'JAK3'], ['JAK3_b', 'JAK3-b', None]], 'Q15349': [['RSK3', 'RPS6KA2', 'RPS6KA21'], ['RSK3_b', 'RPS6KA2-b', 'RPS6KA22']], 'Q15418': [['RSK1', 'RPS6KA1', 'RPS6KA11'], ['RSK1_b', 'RPS6KA1-b', 'RPS6KA12']], 'Q15772': [['SPEG', 'SPEG', 'SPEG1'], ['SPEG_b', 'SPEG-b', 'SPEG2']], 'Q5VST9': [['Obscn', 'OBSCN', 'OBSCN1'], ['Obscn_b', 'OBSCN-b', 'OBSCN2']], 'Q8IWB6': [['SgK307', 'TEX14', 'TEX14'], ['SgK424', None, None]], 'Q9P2K8': [['GCN2', 'EIF2AK4', 'EIF2AK4'], ['GCN2_b', 'EIF2AK4-b', None]], 'Q9UK32': [['RSK4', 'RPS6KA6', 'RPS6KA61'], ['RSK4_b', 'RPS6KA6-b', 'RPS6KA62']]}}

Dictionary where keys are UniProt IDs with multi-mapping. For the “general” sub-dictionary each key is the key of the dict_obj and the value is the attr on which to collapse. For the “manual” sub-dict values are lists where entries are for KinHub, KLIFS, and KinCore, respectively.

Type:

dict[str, dict[str, str] | list[list[str]]]

mkt.databases.kinase_schema.DICT_MERGE_MULTIMAP_REV = {'general': {'kincore': 'fasta.hgnc', 'kinhub': 'xname', 'klifs': 'gene_name'}, 'manual': {'O60674': [{'kincore': 'JAK2', 'kinhub': 'JAK2', 'klifs': 'JAK2'}, {'kincore': None, 'kinhub': 'JAK2_b', 'klifs': 'JAK2-b'}], 'O75582': [{'kincore': 'RPS6KA51', 'kinhub': 'MSK1', 'klifs': 'RPS6KA5'}, {'kincore': 'RPS6KA52', 'kinhub': 'MSK1_b', 'klifs': 'RPS6KA5-b'}], 'O75676': [{'kincore': 'RPS6KA41', 'kinhub': 'MSK2', 'klifs': 'RPS6KA4'}, {'kincore': 'RPS6KA42', 'kinhub': 'MSK2_b', 'klifs': 'RPS6KA4-b'}], 'P23458': [{'kincore': 'JAK1', 'kinhub': 'JAK1', 'klifs': 'JAK1'}, {'kincore': None, 'kinhub': 'JAK1_b', 'klifs': 'JAK1-b'}], 'P29597': [{'kincore': 'TYK2', 'kinhub': 'TYK2', 'klifs': 'TYK2'}, {'kincore': None, 'kinhub': 'TYK2_b', 'klifs': 'TYK2-b'}], 'P51812': [{'kincore': 'RPS6KA31', 'kinhub': 'RSK2', 'klifs': 'RPS6KA3'}, {'kincore': 'RPS6KA32', 'kinhub': 'RSK2_b', 'klifs': 'RPS6KA3-b'}], 'P52333': [{'kincore': 'JAK3', 'kinhub': 'JAK3', 'klifs': 'JAK3'}, {'kincore': None, 'kinhub': 'JAK3_b', 'klifs': 'JAK3-b'}], 'Q15349': [{'kincore': 'RPS6KA21', 'kinhub': 'RSK3', 'klifs': 'RPS6KA2'}, {'kincore': 'RPS6KA22', 'kinhub': 'RSK3_b', 'klifs': 'RPS6KA2-b'}], 'Q15418': [{'kincore': 'RPS6KA11', 'kinhub': 'RSK1', 'klifs': 'RPS6KA1'}, {'kincore': 'RPS6KA12', 'kinhub': 'RSK1_b', 'klifs': 'RPS6KA1-b'}], 'Q15772': [{'kincore': 'SPEG1', 'kinhub': 'SPEG', 'klifs': 'SPEG'}, {'kincore': 'SPEG2', 'kinhub': 'SPEG_b', 'klifs': 'SPEG-b'}], 'Q5VST9': [{'kincore': 'OBSCN1', 'kinhub': 'Obscn', 'klifs': 'OBSCN'}, {'kincore': 'OBSCN2', 'kinhub': 'Obscn_b', 'klifs': 'OBSCN-b'}], 'Q8IWB6': [{'kincore': 'TEX14', 'kinhub': 'SgK307', 'klifs': 'TEX14'}, {'kincore': None, 'kinhub': 'SgK424', 'klifs': None}], 'Q9P2K8': [{'kincore': 'EIF2AK4', 'kinhub': 'GCN2', 'klifs': 'EIF2AK4'}, {'kincore': None, 'kinhub': 'GCN2_b', 'klifs': 'EIF2AK4-b'}], 'Q9UK32': [{'kincore': 'RPS6KA61', 'kinhub': 'RSK4', 'klifs': 'RPS6KA6'}, {'kincore': 'RPS6KA62', 'kinhub': 'RSK4_b', 'klifs': 'RPS6KA6-b'}]}}

DICT_MERGE_MULTIMAP in more accessible format.

Type:

dict[str, dict[str, str] | list[list[str]]]

class mkt.databases.kinase_schema.KinaseInfoGenerator(*, hgnc_name: str, uniprot_id: ~typing.Annotated[str, ~pydantic.types.StringConstraints(strip_whitespace=None, to_upper=None, to_lower=None, strict=None, min_length=None, max_length=None, pattern=^[A-Z][0-9][A-Z0-9]{3}[0-9](_[12])?(_[12])?$)] | ~typing.Annotated[str, ~pydantic.types.StringConstraints(strip_whitespace=None, to_upper=None, to_lower=None, strict=None, min_length=None, max_length=None, pattern=^[A-Z][0-9][A-Z][A-Z0-9]{2}[0-9][A-Z][A-Z0-9]{2}[0-9](_[12])?(_[12])?$)], uniprot: ~mkt.schema.kinase_schema.UniProt, kinhub: ~mkt.schema.kinase_schema.KinHub | None = None, klifs: ~mkt.schema.kinase_schema.KLIFS | None = None, pfam: ~mkt.schema.kinase_schema.Pfam | None = None, kincore: ~mkt.schema.kinase_schema.KinCore | None = None, KLIFS2UniProtIdx: dict[str, int | None] | None = None, KLIFS2UniProtSeq: dict[str, str | None] | None = None, bool_offset: bool = True)[source]

Bases: KinaseInfo

Pydantic model for kinase information.

bool_offset: bool

Whether to use 1-based indexing (True) or 0-based indexing (False). Default is True.

Type:

bool

generate_kincore2uniprot_alignment() Self[source]

Generate dictionary mapping KinCore to UniProt indices.

generate_klifs2uniprot_dict() Self[source]

Generate dictionary mapping KLIFS to UniProt indices.

standardize_offset(idx_in: int) int[source]

Standardize offset where necessary.

Parameters:

idx_in (int) – Index to standardize.

Returns:

Standardized index.

Return type:

int

class mkt.databases.kinase_schema.KinaseInfoKinaseDomainGenerator(*, uniprot_id: ~typing.Annotated[str, ~pydantic.types.StringConstraints(strip_whitespace=None, to_upper=None, to_lower=None, strict=None, min_length=None, max_length=None, pattern=^[A-Z][0-9][A-Z0-9]{3}[0-9](_[12])?(_[12])?$)] | ~typing.Annotated[str, ~pydantic.types.StringConstraints(strip_whitespace=None, to_upper=None, to_lower=None, strict=None, min_length=None, max_length=None, pattern=^[A-Z][0-9][A-Z][A-Z0-9]{2}[0-9][A-Z][A-Z0-9]{2}[0-9](_[12])?(_[12])?$)], kinhub: ~mkt.schema.kinase_schema.KinHub | None = None, klifs: ~mkt.schema.kinase_schema.KLIFS | None = None, kincore: ~mkt.schema.kinase_schema.KinCore | None = None)[source]

Bases: KinaseInfoKinaseDomain

Pydantic model for to generate KinaseInfoKinaseDomain (kinase info at the level of the kinase domain).

change_wrong_klifs_pocket_seq() Self[source]

KLIFS pocket has some errors compared to UniProt sequence - fix this via validation.

generate_kincore_fasta2cif_alignment() Self[source]

Generate dictionary mapping KinCore FASTA to CIF indices.

class mkt.databases.kinase_schema.KinaseInfoUniProtGenerator(*, hgnc_name: str, uniprot_id: ~typing.Annotated[str, ~pydantic.types.StringConstraints(strip_whitespace=None, to_upper=None, to_lower=None, strict=None, min_length=None, max_length=None, pattern=^[A-Z][0-9][A-Z0-9]{3}[0-9](_[12])?$)] | ~typing.Annotated[str, ~pydantic.types.StringConstraints(strip_whitespace=None, to_upper=None, to_lower=None, strict=None, min_length=None, max_length=None, pattern=^[A-Z][0-9][A-Z][A-Z0-9]{2}[0-9][A-Z][A-Z0-9]{2}[0-9](_[12])?$)], uniprot: ~mkt.schema.kinase_schema.UniProt, pfam: ~mkt.schema.kinase_schema.Pfam | None = None)[source]

Bases: KinaseInfoUniProt

Pydantic model for to generate KinaseInfoUniProt (kinase info at the level of the UniProt ID).

validate_phosphosites2canonicalseq() Self[source]

Validate phosphosites match canonical sequence.

validate_uniprot_length() Self[source]

Validate canonical UniProt sequence length matches Pfam length if Pfam not None.

mkt.databases.kinase_schema.align_inter_intra_region(dict_in: dict[str, KinaseInfo]) dict[str, dict[str, str]][source]

Align inter and intra region sequences.

Parameters:

dict_in (dict[str, KinaseInfo]) – Dictionary of kinase information models

Returns:

Dictionary of aligned inter and intra region

Return type:

dict[str, dict[str, str]]

mkt.databases.kinase_schema.check_if_file_exists_then_load_dataframe(str_file: str) DataFrame | None[source]

Check if file exists and load dataframe.

Parameters:

str_file (str) – File to check and load.

Returns:

Dataframe if file exists, otherwise None.

Return type:

pd.DataFrame | None

mkt.databases.kinase_schema.combine_kinaseinfo(dict_uniprot: dict[str, KinaseInfoUniProtGenerator], dict_kd: dict[str, KinaseInfoKinaseDomainGenerator]) dict[str, KinaseInfoGenerator][source]

Generate KinaseInfoGenerator from dictionary generated by combine_kinaseinfo_kd and combine_kinaseinfo_uniprot.

Parameters:
  • dict_uniprot (dict[str, KinaseInfoUniProtGenerator]) – Dictionary of KinaseInfoUniProtGenerator objects.

  • dict_kd (dict[str, KinaseInfoKinaseDomainGenerator]) – Dictionary of KinaseInfoKinaseDomainGenerator objects.

Returns:

Dictionary of KinaseInfoGenerator objects.

Return type:

dict[str, KinaseInfoGenerator]

mkt.databases.kinase_schema.combine_kinaseinfo_kd(dict_in: dict[str, dict[str, Any]]) dict[str, KinaseInfoKinaseDomainGenerator][source]

Generate KinaseInfoKinaseDomainGenerator from dictionary generated by generate_dict_obj_from_api_or_scraper.

Parameters:

dict_in (dict[str, str]) – Dictionary of dictionary of mkt.kinase_schema objects. Keys needed here are “hgnc”, “uniprot”, and “pfam”.

Returns:

Dictionary of KinaseInfoKinaseDomainGenerator objects.

Return type:

dict[str, KinaseInfoKinaseDomainGenerator]

mkt.databases.kinase_schema.combine_kinaseinfo_uniprot(dict_in: dict[str, dict[str, Any]]) dict[str, KinaseInfoUniProtGenerator][source]

Generate KinaseInfoUniProtGenerator from dictionary generated by generate_dict_obj_from_api_or_scraper.

Parameters:

dict_in (dict[str, str]) – Dictionary of dictionary of mkt.kinase_schema objects. Keys needed here are “hgnc”, “uniprot”, and “pfam”.

Returns:

Dictionary of KinaseInfoUniProtGenerator objects.

Return type:

dict[str, KinaseInfoUniProtGenerator]

mkt.databases.kinase_schema.convert_df2dictobj(df: DataFrame, str_obj: str) dict[str, Any] | None[source]

Convert dataframe to dictionary of objects.

Parameters:
  • df (pd.DataFrame) – Dataframe to convert.

  • str_obj (str) – Object to convert to - needs to match key in DICT_COL2OBJ_REV.

Returns:

Dictionary of objects where key is UniProt ID and value is object.

Return type:

dict[str, Any]

mkt.databases.kinase_schema.convert_str2family(str_input: str) Family[source]

Convert string to Family enum.

Parameters:

str_input (str) – String to convert to Family enum.

Returns:

Family enum.

Return type:

Family

mkt.databases.kinase_schema.convert_to_family(str_input: str, bool_list: bool = True) Family[source]

Convert KinHub family to Family enum.

Parameters:

str_input (str) – String to convert to Family enum.

Returns:

Family enum.

Return type:

Family

mkt.databases.kinase_schema.convert_to_group(str_input: str, bool_list: bool = True) list[Group][source]

Convert KinHub group to Group enum.

Parameters:
  • str_input (str) – KinHub group to convert.

  • bool_list (bool, optional) – Whether to return list of Group enums (e.g., converting KinHub), by default True.

Returns:

List of Group enums.

Return type:

list[Group]

mkt.databases.kinase_schema.find_alternative_hgnc(id_uniprot: str, kinhub_dict: dict[str, Any], klifs_dict: dict[str, Any], kincore_dict: dict[str, Any], kinhub_attr: str = ['hgnc_name', 'xname'], klifs_attr: str = ['gene_name'], kincore_attr: str = ['fasta.hgnc']) str | list[str] | None[source]

Find alternative HGNC names for a given UniProt ID.

Parameters:
  • id_uniprot (str) – UniProt ID to search for.

  • kinhub_dict (dict[str, Any]) – KinHub dictionary.

  • klifs_dict (dict[str, Any]) – KLIFS dictionary.

  • kincore_dict (dict[str, Any]) – KinCore dictionary.

  • kinhub_attr (list[str], optional) – List of attributes to access in KinHub dictionary.

  • klifs_attr (list[str], optional) – List of attributes to access in KLIFS dictionary.

  • kincore_attr (list[str], optional) – AttribuList of attributeste to access in KinCore dictionary.

Returns:

String, list of strings of alternative HGNC names if found, else None.

Return type:

str | list[str] | None

mkt.databases.kinase_schema.generate_dict_obj_from_api_or_scraper() dict[str, DataFrame][source]

Generate dataframes for KinHub, KLIFS, and Pfam databases.

Returns:

Dictionary containing processed dataframes.

Return type:

dict[str, pd.DataFrame]

mkt.databases.kinase_schema.get_sequence_max_with_exception(list_in: list[int | None]) int[source]

Get maximum sequence length from dictionary of dictionaries.

Parameters:

dict_in (dict[str, dict[str, str | None]]) – Dictionary of dictionaries.

Returns:

Maximum sequence length.

Return type:

int

mkt.databases.kinase_schema.is_not_valid_string(str_input: str) bool[source]
mkt.databases.kinase_schema.process_keys_dict(dict_in: dict[str, list[str, Callable]]) dict[str, dict[str, str | Callable]][source]

Process keys dictionary to convert to list of functions.

Parameters:

dict_in (dict[str, list[str, function]]) – Dictionary of keys to process.

Returns:

Dictionary of keys with list of functions.

Return type:

dict[str, dict[str, str | function]]

mkt.databases.kinase_schema.replace_none_with_max_len(dict_in)[source]
mkt.databases.kinase_schema.return_none_if_not_valid_string(str_input: str) str | None[source]

Return None if string is not valid.

Parameters:

str_input (str) – String to check.

Returns:

String if valid, otherwise None.

Return type:

str | None

mkt.databases.kinase_schema.reverse_order_dict_of_dict(dict_in: dict[str, dict[str, str | int | None]]) dict[str, dict[str, str | int | None]][source]

Reverse order of dictionary of dictionaries.

Parameters:

dict_in (dict[str, dict[str, str | int | None]]) – Dictionary of dictionaries

Returns:

dict_out – Dictionary of dictionaries with reversed order

Return type:

dict[str, dict[str, str | int | None]]