Association of drug targets with diseases are important information for drug discovery. There are lots of databases to provide these information I think.
I like python. ;-) So, I am interested in following article.
https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5210543/
Opentargets is a ” a data integration and visualization platform that provides evidence about the association of known and potential drug targets with diseases”.
That sounds good. The platform is provided by web app. You can use the data from https://www.targetvalidation.org/.
UI is very simple and sophisticated.
And also Python API is provided from pypi / github. I used the package by referring to the document.
At first I installed the package from pip command.
iwatobipen$ pip install git+git://github.com/CTTV/opentargets-py.git
Next, I tried to get evidence for a disease. Retrieved data related my query and printed it.
import pprint from opentargets import OpenTargetsClient ot = OpenTargetsClient() e_for_disease = ot.get_evidence_for_disease('arthritis') res = [] for e in e_for_disease: try: res.append([ e['disease']['efo_info']['label'], e['evidence']['target2drug']['mechanism_of_action'], e['target']['target_name'], e['drug']['molecule_name']] ) except: pass # get unique dataset uniqres = [] for i in res: if i in uniqres: pass else: uniqres.append(i) # check the result for i in uniqres: print(i) print("**********") ###output### ['gout', 'Cyclooxygenase inhibitor', 'Cyclooxygenase', 'INDOMETHACIN'] ********** ['rheumatoid arthritis', 'T-lymphocyte activation antigen CD86 inhibitor', 'T-lymphocyte activation antigen CD86', 'ABATACEPT'] ********** ['rheumatoid arthritis', 'Dihydrofolate reductase inhibitor', 'Dihydrofolate reductase', 'METHOTREXATE'] ********** ['rheumatoid arthritis', 'T-lymphocyte activation antigen CD80 inhibitor', 'T-lymphocyte activation antigen CD80', 'ABATACEPT'] ********** ['rheumatoid arthritis', 'Dihydroorotate dehydrogenase inhibitor', 'Dihydroorotate dehydrogenase', 'LEFLUNOMIDE'] ********** ['osteoarthritis', 'Plasminogen inhibitor', 'Plasminogen', 'TRANEXAMIC ACID'] ********** ['gout', 'Xanthine dehydrogenase inhibitor', 'Xanthine dehydrogenase', 'ALLOPURINOL'] ********** ['osteoarthritis', 'Adrenergic receptor agonist', 'Adrenergic receptor', 'EPINEPHRINE'] ********** ['rheumatoid arthritis', 'Janus Kinase (JAK) inhibitor', 'Janus Kinase (JAK)', 'TOFACITINIB'] ********** ['rheumatoid arthritis', 'TNF-alpha inhibitor', 'TNF-alpha', 'ADALIMUMAB'] ********** ['chronic childhood arthritis', 'Dihydrofolate reductase inhibitor', 'Dihydrofolate reductase', 'METHOTREXATE'] ********** ['osteoarthritis, hip', 'Adrenergic receptor agonist', 'Adrenergic receptor', 'EPINEPHRINE'] ********** ['rheumatoid arthritis', 'Interleukin-6 receptor alpha subunit inhibitor', 'Interleukin-6 receptor alpha subunit', 'TOCILIZUMAB'] ********** ['osteoarthritis', 'Coagulation factor X inhibitor', 'Coagulation factor X', 'RIVAROXABAN'] ********** ['osteoarthritis', 'Cyclooxygenase-2 inhibitor', 'Cyclooxygenase-2', 'CELECOXIB'] ********** ['rheumatoid arthritis', 'Cyclooxygenase-2 inhibitor', 'Cyclooxygenase-2', 'CELECOXIB'] ********** ['chronic childhood arthritis', 'Cyclooxygenase-2 inhibitor', 'Cyclooxygenase-2', 'CELECOXIB'] ********** ['rheumatoid arthritis', 'FK506-binding protein 1A inhibitor', 'FK506-binding protein 1A', 'TACROLIMUS'] ********** ['osteoarthritis', 'Mu opioid receptor agonist', 'Mu opioid receptor', 'MORPHINE'] ********** ['rheumatoid arthritis', 'TNF-alpha inhibitor', 'TNF-alpha', 'INFLIXIMAB'] ********** ['chronic childhood arthritis', 'Histamine H2 receptor antagonist', 'Histamine H2 receptor', 'FAMOTIDINE'] ********** ['osteoarthritis', 'Adrenergic receptor alpha-2 agonist', 'Adrenergic receptor alpha-2', 'DEXMEDETOMIDINE'] ********** ['chronic childhood arthritis', 'Cyclooxygenase inhibitor', 'Cyclooxygenase', 'IBUPROFEN'] ********** ..snip...
Next, retrieve data with limited field. The returned object can be converted pandas dataframe.
from opentargets import OpenTargetsClient ct = OpenTargetsClient() res = ct.get_associations_for_target('PDCD1', fields=['association_score.datasource*', 'association_score.overall', 'target.gene_info.symbol', ] ) resdf = res.to_dataframe()
Statistics method can handle scores. (I do not understand the part well so I need to read document)
from opentargets import OpenTargetsClient from opentargets.statistics import HarmonicSumScorer ot = OpenTargetsClient() r = ot.get_associations_for_target('PDCD1') interesting_datatypes = ['genetic_association', 'known_drug', 'somatic_mutation'] def score_with_datatype_subset(datatypes,results): for i in results: datatype_scores = i['association_score']['datatypes'] filtered_scores = [datatype_scores[dt] for dt in datatypes] custom_score = HarmonicSumScorer.harmonic_sum(filtered_scores) if custom_score: yield(custom_score, i['disease']['id'], dict(zip(datatypes, filtered_scores))) for i in score_with_datatype_subset(interesting_datatypes, r): print(i)
Whole code is pushed my repo.
https://github.com/iwatobipen/opentargetstest/blob/master/opentarget.ipynb