Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New API based on MyChem drugcentral.bioactivity data #101

Closed
colleenXu opened this issue Dec 21, 2022 · 8 comments
Closed

New API based on MyChem drugcentral.bioactivity data #101

colleenXu opened this issue Dec 21, 2022 · 8 comments

Comments

@colleenXu
Copy link

colleenXu commented Dec 21, 2022

Related to biothings/biothings_explorer#532 (comment)

MyChem drugcentral.bioactivity data, in subject-association-object format

@colleenXu
Copy link
Author

Related issue: biothings/biothings_explorer#316, JQ development work

@rjawesome
Copy link
Collaborator

With jq implemented, exisiting API can be used with modifications to smartapi yaml. See this comment

@colleenXu
Copy link
Author

colleenXu commented Dec 28, 2022

Note on the relationships in the resource:

  • Some chemicals have many drugcentral.bioactivity elements (>10), and only some of those elements have the action_type field that is most useful for filtering for specific relationships.
  • Perhaps act_type value could be used to assume certain relationships, but this has the same issue as Discuss BindingDB issues: related to parser / API? #99; IC50 and Ki might be mean "inhibitory relationship" but that may depend on the actual associated value being large / small... (EDIT: And I found relationships labeled "agonist" that had "IC50" values so...this method may not work)

Example: methotrexate's drugcentral info in MyChem

@colleenXu
Copy link
Author

colleenXu commented Dec 29, 2022

More notes on "action_type" and targets:

  • many bioactivity entries seem to be missing "action_types"; this seems to be a bigger issue than for chembl.drug_mechanism (for example, aripiprazole has 45 bioactivity entries but only 6 have action_type values
  • many bioactivity entries use non-human targets (for example, out of aripiprazole's 6 bioactivites with action_type values, only 3 are human). The association method / BTE post-processing with JQ may be helpful here, if we want to filter for only human targets (vs non-human orthologs)...

@colleenXu
Copy link
Author

Example of current MyChem structure vs association-based structure

(basically repeating #100 (comment) using an example from this resource)

expand here for the example

Background

aripiprazole (CHEMBL1112) has multiple bioactivity entries with different categories (action_types). I'll give two of them as examples:

  • PARTIAL AGONIST for D(2) dopamine receptor (P14416)
  • ANTAGONIST for 5-hydroxytryptamine receptor 2A (P28223)

In MyChem

these two bioactivity entries are nested inside the drugcentral.bioactivity field of the MyChem record for this chemical: https://mychem.info/v1/chem/60795?fields=drugcentral. This means BTE post-processing (JQ?) is needed to retrieve only the ANTAGONIST bioactivity (or vice versa).

{
    "drugcentral": {
        "bioactivity": "CHEMBL1089636",
        "drug_mechanisms": [
            {"action_type": "PARTIAL_AGONIST", "act_source": "WOMBAT-PK",..., "uniprot": [ {"uniprot_id": "P14416", "gene_symbol": "DRD2", ...} ] },
            {"action_type": "ANTAGONIST", "act_source": "WOMBAT-PK",..., "uniprot": [ {"uniprot_id": "P28223", "gene_symbol": "HTR2A", ...} ] }
        ]
    }
}

association-based structure

However, if we use an association-based structure, we can make two separate records. And these two records can be retrieved separately depending on what association.action_type is set to when querying.

{
    "subject": { "drug_chembl_id": "CHEMBL1112", ...},
    "association": { "action_type": "PARTIAL_AGONIST", "act_source": "WOMBAT-PK",...},
    "object": { "uniprot_id": "P14416", "uniprot_gene_symbol": "DRD2", ...}
},
{
    "subject": { "drug_chembl_id": "CHEMBL1112", ...},
    "association": { "action_type": "ANTAGONIST", "act_source": "WOMBAT-PK",...},
    "object": { "uniprot_id": "P28223", "uniprot_gene_symbol": "HTR2A", ...}
}

@colleenXu
Copy link
Author

colleenXu commented Feb 6, 2023

At the moment, creating a new API is not necessary. Using MyChem's new list_filter function (discussed here biothings/api-respone-transform.js#38 (comment)), I can write operations in the chem -> gene direction that are more specific (however not all records are covered).

Andrew decided that this was fine to try out. I therefore moved this issue to "on-hold"

The edits to the SmartAPI yamls are
for biolink 3.1.1 (currently on dev/CI instances):

for biolink 2.4.8 (currently on test/prod instances):

@colleenXu
Copy link
Author

Closing. If we notice an issue with this (not able to retrieve some desired info in the chem -> gene direction, want to be able to use more specific predicates in the gene -> chem direction), we'll reopen.

@colleenXu
Copy link
Author

@newgene

two issues encountered when trying to write operations:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants