Skip to main content

ChEMBL 21 web services update






Traditionally, along with the release of the new ChEMBL version, we have made a few updates to our RESTful API. Below you can find a short description of the most important changes:

 

Data API (https://www.ebi.ac.uk/chembl/api/data/docs):

1. New resources: Since ChEMBL 21 introduced a few new tables, we have made them available via the API. The new resources are:

Moreover, the target_component endpoint has been enhanced to provide a list of related GO terms.

2. Solr-based search: a very popular feature request was the ability to search resources by a keyword. A form of searching was already possible before, using filtering terms, such as [i]contains,[i]startswith and [i]endswtith filters. For example, in order to search molecules for 'metazide' in their preferred name, this filter can be used:


However, this approach has many drawbacks:
  • it's executed on the database level and can be very slow
  • in order to search in several attributes, you have to add the filter separately to each of them, which can result with a very long tail of filters
  • you can't search in one-to-many/many-to-many attributes (for example you cannot search molecule by its synonym because a molecule can have many synonyms)
The good news is that in order to solve this problem, we implemented a solr-based solution using django-haystack. Let's just jump straight into examples:

What if we want to search for some term in molecules, targets and assays at once? No problem, the chembl_id_lookup endpoint can be used for this, for example searching for 'morphine' will look like:


Looking at the results of the last request, it's very easy to tell (by examining the 'entity_type' attribute) that a large number of compounds and assays were returned.

Another important thing to note is that every result of search query has a 'score' attribute, indicating the relevancy of the given result. The results are sorted by the score descending (i.e. the most relevant are always first) and although you can add additional filters, for example:

you cannot change ordering by appending 'order_by=...' attribute.

You may ask, why do we only offer searching for 3 resources (well, 4 including the chembl_id_lookup)? This is because these resources are most popular and most important but we are planning to add more (such as searching in document abstracts, cell descriptions, activities) in the near future. If you have any suggestions about which resources should offer search functionality in the first place, please let us know in comments or write your suggestions to chembl-help@ebi.ac.uk. You can easily check which resources offer searching by looking at our live documentation, where all the searching methods are listed.

Furthermore, we would also appreciate your feedback about the quality of search results. If you believe that some results should have higher relevancy score than others and currently that's not the case, let us know so we can properly adjust boosts.

3. Compound images have transparent background by default. So now you can use them regardless of the color scheme used in your website:





 It's also possible to explicitly specify background color, by appending the 'bgColor=color_name' attribute for example in order to get a nice and warm orange background you have do:



The colour names are the standard names defined for HTML, you can check the full list here.

4. Datatables support: Datatables is one of the most popular jQuery plugins for rendering tabular data. In order for you to use it in a generic way (i.e. write the code in such a way it can use datatables to render data from any API endpoint), we have to be able to provide definitions of columns (e.g. how many columns we have for a given endpoint, are they searchable, sortable, what type of data they contain). This is possible using the schema API method (for example: https://www.ebi.ac.uk/chembl/api/data/molecule/schema.json), that describes every resource in a vary detailed way; however, the data provided by the schema has to be transformed to the format compatible with datatables. This is why we decided to provide another method, which is directly compatible with datatables: https://www.ebi.ac.uk/chembl/api/data/molecule/datatables.json.

Below is an example code snippet that renders a datatable from the target resource. Click on the 'Result' tab to see the table - you can sort by columns, change pages and set the number of rows displayed per page. Notice that if you change the name of the resource in the first line of code (from 'target' to 'source' or 'assay' for example), the columns and data will change as well.



Utils API (https://www.ebi.ac.uk/chembl/api/utils/docs):

There is a small update to the utilities (Beaker) part of the API. There is a new method called ctab2xyz, which converts a molfile to the xyz file format. You will notice the new method is now available in the live docs. Also the compound rendering code has been improved so it's now compatible with the latest versions of Pillow library.

Python client (https://github.com/chembl/chembl_webresource_client):

Our official Python client library has been updated as well in order to reflect recent changes. Just to remind you, in order to get the latest version of the client, you should install it via pip:

pip install -U chembl_webresource_client

Some examples of using recently added resources (drug indications, GO slim, drug metabolism):



Searching is exposed as well, examples below:



Another important change to the client is the integration with UniChem API. The latter deserves a separate blog post, so stay tuned.

Comments

Popular posts from this blog

ChEMBL_27 SARS-CoV-2 release

The COVID-19 pandemic has resulted in an unprecedented effort across the global scientific community. Drug discovery groups are contributing in several ways, including the screening of compounds to identify those with potential anti-SARS-CoV-2 activity. When the compounds being assayed are marketed drugs or compounds in clinical development then this may identify potential repurposing opportunities (though there are many other factors to consider including safety and PK/PD considerations; see for example https://www.medrxiv.org/content/10.1101/2020.04.16.20068379v1.full.pdf+html). The results from such compound screening can also help inform and drive our understanding of the complex interplay between virus and host at different stages of infection.
Several large-scale drug screening studies have now been described and made available as pre-prints or as peer-reviewed publications. The ChEMBL team has been following these developments with significant interest, and as a contribution t…

RDKit, C++ and Jupyter Notebook

Fancy playing with RDKit C++ API without needing to set up a C++ project and compile it? But wait... isn't C++ a compiled programming language? How this can be even possible?

Thanks to Cling (CERN's C++ interpreter) and xeus-cling jupyter kernel is possible to use C++ as an intepreted language inside a jupyter notebook!

We prepared a simple notebook showing few examples of RDKit functionalities and a docker image in case you want to run it.

With the single requirement of docker being installed in your computer you'll be able to easily run the examples following the three steps below:
docker pull eloyfelix/rdkit_jupyter_clingdocker run -d -p 9999:9999 eloyfelix/rdkit_jupyter_clingopen http://localhost:9999/notebooks/rdkit_cling.ipynb in a browser


FPSim2, a simple Python3 molecular similarity tool

FPSim2 is a new tool for fast similarity search on big compound datasets (>100 million) being developed at ChEMBL. We started developing it as we needed a Python3 library able to run either in memory or out-of-core fast similarity searches on such dataset sizes.

It's written in Python/Cython and features:
A fast population count algorithm (builtin-popcnt-unrolled) from https://github.com/WojciechMula/sse-popcount using SIMD instructions.Bounds for sub-linear speed-ups from 10.1021/ci600358fA compressed file format with optimised read speed based in PyTables and BLOSCUse of multiple cores in a single search In memory and on disk search modesSimple and easy to use
Source code is available on github and Conda packages are also available for either mac or linux. To install it type:

conda install rdkit -c rdkitconda install fpsim2 -c efelix
Try it with docker (much better performance than binder):

    docker pull eloyfelix/fpsim2    docker run -p 9999:9999 eloyfelix/fpsim2    open htt…

2019 and ChEMBL – News, jobs and birthdays

Happy New Year from the ChEMBL Group to all our users and collaborators. 
Firstly, do you want a new challenge in 2019?  If so, we have a position for a bioinformatician in the ChEMBL Team to develop pipelines for identifying links between therapeutic targets, drugs and diseases.  You will be based in the ChEMBL team but also work in collaboration with the exciting Open Targets initiative.  More details can be found here(closing date 24thJanuary). 
In case you missed it, we published a paper at the end of last on the latest developments of the ChEMBL database “ChEMBL: towards direct deposition of bioassay data”. You can read it here.  Highlights include bioactivity data from patents, human pharmacokinetic data from prescribing information, deposited data from neglected disease screening and data from the IMI funded K4DD project.  We have also added a lot of new annotations on the therapeutic targets and indications for clinical candidates and marketed drugs to ChEMBL.  Importantly we ha…

ChEMBL 25 and new web interface released

We are pleased to announce the release of ChEMBL 25 and our new web interface. This version of the database, prepared on 10/12/2018 contains:

2,335,417 compound records1,879,206 compounds (of which 1,870,461 have mol files)15,504,603 activities1,125,387 assays12,482 targets72,271 documents

Data can be downloaded from the ChEMBL ftp site: ftp://ftp.ebi.ac.uk/pub/databases/chembl/ChEMBLdb/releases/chembl_25

Please see ChEMBL_25 release notes for full details of all changes in this release: ftp://ftp.ebi.ac.uk/pub/databases/chembl/ChEMBLdb/releases/chembl_25/chembl_25_release_notes.txt


DATA CHANGES SINCE THE LAST RELEASE

# Deposited Data Sets:

Kuster Lab Chemical Proteomics Drug Profiling (src_id = 48, Document ChEMBL_ID = CHEMBL3991601):
Data have been included from the publication: The target landscape of clinical kinase drugs. Klaeger S, Heinzlmeir S and Wilhelm M et al (2017), Science, 358-6367 (https://doi.org/10.1126/science.aan4368)

# In Vivo Assay Classification:

A classification…