{"id":1523,"date":"2021-11-16T11:55:57","date_gmt":"2021-11-16T02:55:57","guid":{"rendered":"https:\/\/www.insilico.jp\/blog\/?p=1523"},"modified":"2021-12-10T14:42:21","modified_gmt":"2021-12-10T05:42:21","slug":"chembl-structure-pipeline","status":"publish","type":"post","link":"https:\/\/www.insilico.jp\/blog\/2021\/11\/16\/chembl-structure-pipeline\/","title":{"rendered":"Using ChEMBL Structure Pipeline to standardize compound structure data"},"content":{"rendered":"\n<p>As I have promised in my previous blog regarding <a href=\"https:\/\/www.insilico.jp\/blog\/2021\/09\/24\/curation-of-chemogenomics-data\/\">curation of chemogenomics data<\/a>, this time I will be talking about standardization of compound structure data. Specifically, I will be explaining how we used ChEMBL Structure Pipeline (CSP) to do just that, with a few additions\/modifications to the actual usage explained in this <a href=\"https:\/\/github.com\/chembl\/ChEMBL_Structure_Pipeline\">link<\/a>. As you may have known already, that link also explains how you can install CSP. However, I will be giving you a much better option of installing the CSP within a contained environment. Yes, you guessed it! That is, by also installing the Anaconda toolkit.<\/p>\n\n\n\n<p>So , without further ado, I&#8217;ll dive right into it.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Installation of ChEMBL Structure Pipeline<\/h2>\n\n\n\n<p>As I have mentioned earlier, I will be telling you, in my honest opinion, a much better option for installing CSP and that is, by installing it within an Anaconda environment. Well, I will not be telling you about the Anaconda toolkit itself but you can follow this <a href=\"https:\/\/www.anaconda.com\/products\/individual\">link<\/a> if you want to know more. If you are a heavy python user, then, I assume you already know about it and probably already enjoying its usefulness. However, if you are new to it, I am sure it will be worth your while to try it. I would like to tell you first that I am assuming you are using a Linux machine. If you are a Windows user, most of the things you&#8217;ll find here will still be useful, though, especially with regard to compound structure standardization, so please read on. Now, enough for the talk and let us download Anaconda.<\/p>\n\n\n\n<p>There are two ways by which you can download and install Anaconda: (1) by following the instructions on this <a href=\"https:\/\/docs.anaconda.com\/anaconda\/install\/linux\/\">site<\/a> or (2) by following the shortened instructions below. <\/p>\n\n\n\n<p>In the Linux terminal, select or create a subdirectory where you would like to download the installer and enter it. Then execute the command below. By the time you are reading this, the download link might have changed so please check it through this <a href=\"https:\/\/www.anaconda.com\/products\/individual#Downloads\">link<\/a>. Make sure to use the download URL for the 64-Bit (x86) Installer.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ wget https:\/\/repo.anaconda.com\/archive\/Anaconda3-2021.05-Linux-x86_64.sh<\/code><\/pre>\n\n\n\n<p>Once the download is finished, start the installation by executing the following command.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ bash .\/Anaconda3-2021.05-Linux-x86_64.sh<\/code><\/pre>\n\n\n\n<p>Just follow the instructions to continue installation. I suggest that you accept the default installation directory and also allow it to initialize the installer. I am sure it will be annoying for you if the default (base) Anaconda environment gets activated whenever you open the terminal. To prevent it from doing so, just execute the command below. Close and then reopen the terminal to enable the Anaconda settings.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ conda config --set auto_activate_base False<\/code><\/pre>\n\n\n\n<p>Now, let us proceed to the installation of CSP. First, create a working environment for CSP, setting the name to &#8220;csp&#8221; and the default python version to 3.6.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ conda create -n csp python=3.6<\/code><\/pre>\n\n\n\n<p>The command above creates an environment named &#8220;csp&#8221; and installs python3.6 along with other base applications. Next, activate the csp environment.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ conda activate csp<\/code><\/pre>\n\n\n\n<p>Notice that the name of the environment appears right  before the command prompt once it is activated. You&#8217;ll always know which environment you are in. <\/p>\n\n\n\n<p>Now install CSP. Since, it requires RDKit libraries for it to work, it automatically installs RDKit as a dependency. You don&#8217;t have to execute another command to install it. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>(csp) $ conda install -c conda-forge chembl_structure_pipeline<\/code><\/pre>\n\n\n\n<p>That&#8217;s it! You have successfully installed CSP via Anaconda. Well, of course, you are supposed to use CSP within the environment you created so you will be processing your compound structure files (SDF or SMILES) while the environment is in activated state. Once you are finished with the processing of your files, you can simply deactivate the environment with the command below. The prompt should return to its original state, without the name of any environment prefixing it.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>(csp) $ conda deactivate <\/code><\/pre>\n\n\n\n<p>As a side note regarding Anaconda, let&#8217;s say, you have  several applications requiring different conflicting versions of python or other applications. You can simply create separate Anaconda environment for each, allowing you to install those applications with the respective required python version.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Standardization of compound structures<\/h2>\n\n\n\n<p>You can find in the documentation of CSP that it is very easy to perform standardization of compound structures by simply following the usage instructions. However, in our case, we find the results lacking in certain aspects so we decided to create a script using the original standardize module of CSP together with the LargestFragmentChooser submodule of the MolStandardize module in RDKit.<\/p>\n\n\n\n<p>Let me show some sample structures that we need to be processed accordingly. In the following figure, the structural features we need to be dealt with are enclosed in red boxes.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"636\" src=\"https:\/\/www.insilico.jp\/blog\/wp-content\/uploads\/2021\/11\/testcomp-1-1024x636.png\" alt=\"\" class=\"wp-image-1564\" srcset=\"https:\/\/www.insilico.jp\/blog\/wp-content\/uploads\/2021\/11\/testcomp-1-1024x636.png 1024w, https:\/\/www.insilico.jp\/blog\/wp-content\/uploads\/2021\/11\/testcomp-1-300x186.png 300w, https:\/\/www.insilico.jp\/blog\/wp-content\/uploads\/2021\/11\/testcomp-1-768x477.png 768w, https:\/\/www.insilico.jp\/blog\/wp-content\/uploads\/2021\/11\/testcomp-1-850x528.png 850w, https:\/\/www.insilico.jp\/blog\/wp-content\/uploads\/2021\/11\/testcomp-1.png 1500w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Figure 1. Sample compound structures used to check the utility of ChEMBL Structure Pipeline. <\/figcaption><\/figure>\n\n\n\n<p>The sample structures above were used to check whether CSP can perform processing of compounds such as tautomerization, neutralization, desalting and retrieval of parent structure. We also checked whether CSP would leave the N of a quaternary amine (q-amine in Fig. 1) untouched.<\/p>\n\n\n\n<p>We performed processing of the sample structures using CSP alone and the results are shown in Fig. 2.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"636\" src=\"https:\/\/www.insilico.jp\/blog\/wp-content\/uploads\/2021\/11\/testcomp_csp-2-1024x636.png\" alt=\"\" class=\"wp-image-1560\" srcset=\"https:\/\/www.insilico.jp\/blog\/wp-content\/uploads\/2021\/11\/testcomp_csp-2-1024x636.png 1024w, https:\/\/www.insilico.jp\/blog\/wp-content\/uploads\/2021\/11\/testcomp_csp-2-300x186.png 300w, https:\/\/www.insilico.jp\/blog\/wp-content\/uploads\/2021\/11\/testcomp_csp-2-768x477.png 768w, https:\/\/www.insilico.jp\/blog\/wp-content\/uploads\/2021\/11\/testcomp_csp-2-850x528.png 850w, https:\/\/www.insilico.jp\/blog\/wp-content\/uploads\/2021\/11\/testcomp_csp-2.png 1500w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Figure 2. Results of compound structure processing using  ChEMBL Structure Pipeline alone.<\/figcaption><\/figure>\n\n\n\n<p>As can be seen from the figure above, the uppermost left molecule showed an imidic acid form rather than an amide form. Additionally, the existence of Na<sup>+<\/sup> ions indicate failed desalting of the compounds concerned.<\/p>\n\n\n\n<p>We have tried several ways to achieve the results we wanted and found that the combination of the standardize module of CSP with LargestFragmentChooser submodule of the MolStandardize module satisfied our requirements. Results are show in the Figure 3.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"950\" height=\"590\" src=\"https:\/\/www.insilico.jp\/blog\/wp-content\/uploads\/2021\/11\/testcomp_modcsp-2.png\" alt=\"\" class=\"wp-image-1559\" srcset=\"https:\/\/www.insilico.jp\/blog\/wp-content\/uploads\/2021\/11\/testcomp_modcsp-2.png 950w, https:\/\/www.insilico.jp\/blog\/wp-content\/uploads\/2021\/11\/testcomp_modcsp-2-300x186.png 300w, https:\/\/www.insilico.jp\/blog\/wp-content\/uploads\/2021\/11\/testcomp_modcsp-2-768x477.png 768w, https:\/\/www.insilico.jp\/blog\/wp-content\/uploads\/2021\/11\/testcomp_modcsp-2-850x528.png 850w\" sizes=\"auto, (max-width: 950px) 100vw, 950px\" \/><figcaption>Figure 3. Results of compound structure processing using the combination of ChEMBL Structure Pipeline and LargestFragmentChooser submodule of RDKit.<\/figcaption><\/figure>\n\n\n\n<p>The script we created enabled us to achieve the results we wanted by executing standardize_mol, LargestFragmentChooser then standardize_mol again, in that sequence. The final script also allows processing of either SDF or SMILES file with the option of, also, SDF or SMILES file as output. It also skips on any compound that cannot be processed due to certain errors, thereby, enabling smooth processing of large input files. Regarding speed, processing of several SMILES files each containing about 210 thousand compounds on a machine with an Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz processor takes about 7 minutes per file. The script (curation_pipeline.py) can be executed as follows.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ conda activate csp\n\n(csp) $ python curation_pipeline.py input.sdf output.sdf<\/code><\/pre>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-1 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:1000px\">\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<p>The contents of the script are shown below. You can download the script by clicking the button on the right.<\/p>\n<\/div><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-bottom is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:308px\">\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<div class=\"wp-block-buttons is-content-justification-left is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button has-custom-font-size\" style=\"font-size:14px\"><a class=\"wp-block-button__link\" href=\"https:\/\/www.insilico.jp\/blog\/wp-content\/uploads\/2021\/11\/curation_pipeline.zip\">Download script<\/a><\/div>\n<\/div>\n<\/div><\/div>\n<\/div>\n<\/div>\n\n\n\n<pre class=\"wp-block-code\"><code>import sys\nimport os\nimport copy\nimport subprocess\nimport re\nimport argparse\nfrom chembl_structure_pipeline import standardizer\nfrom chembl_structure_pipeline import checker\nfrom rdkit import Chem\nfrom rdkit import RDLogger\nfrom rdkit.Chem import MolStandardize\nfrom os import path\n\n\ndef parse_infile(infile):\n    in_ext = os.path.splitext(args.inputfile)&#91;1]&#91;1:]\n    RDLogger.DisableLog(\"rdApp.*\")\n    if in_ext.lower() == \"smi\":\n        molecules = Chem.SmilesMolSupplier(\n            infile,\n            delimiter=\"\\t\",\n            smilesColumn=0,\n            nameColumn=1,\n            titleLine=False,\n            sanitize=True,\n        )\n    elif in_ext.lower() == \"sdf\":\n        molecules = Chem.ForwardSDMolSupplier(infile, sanitize=True, removeHs=True)\n    return molecules\n\n\ndef standardize_mol(molecule):\n    desalter = MolStandardize.fragment.LargestFragmentChooser()\n    std1_mol = standardizer.standardize_mol(molecule)\n    desalt_mol = desalter.choose(std1_mol)\n    std2_mol = standardizer.standardize_mol(desalt_mol)\n    return std2_mol\n\n\ndef process_mols(mols, outfile):\n    out_ext = os.path.splitext(outfile)&#91;1]&#91;1:]\n\n    if out_ext == \"smi\":\n        out = Chem.rdmolfiles.SmilesWriter(\n            outfile, delimiter=\"\\t\", includeHeader=False, nameHeader=\"_Name\"\n        )\n    elif out_ext == \"sdf\":\n        out = Chem.rdmolfiles.SDWriter(outfile)\n\n    for mol in mols:\n        if mol is None:\n            continue\n        molname = mol.GetProp(\"_Name\")\n        try:\n            curated_mol = standardize_mol(mol)\n        except:\n            print(\"error in %s, skipping current compound.\" % molname)\n            continue\n\n        curated_mol.SetProp(\"_Name\", molname)\n        out.write(curated_mol)\n\n    out.close()\n\n\nif __name__ == \"__main__\":\n    p = argparse.ArgumentParser(description=\"This is a script for compound standardization.\")\n    p.add_argument(\"inputfile\", help=\"Input SDF or SMILES\")\n    p.add_argument(\"outputfile\", help=\"Output SDF or SMILES\")\n    args = p.parse_args()\n\n    molecules = parse_infile(args.inputfile)\n    process_mols(molecules, args.outputfile)<\/code><\/pre>\n\n\n\n<p>And that&#8217;s it about the ChEMBL Structure Pipeline! I&#8217;ll be back soon with a machine learning blog which is about LightGBM.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>As I have promised in my previous blog regarding curation of chemogenomics data, this time I will be talking a&#8230;<\/p>\n","protected":false},"author":6,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[38,33],"tags":[45,40,46,47,48],"class_list":["post-1523","post","type-post","status-publish","format-standard","hentry","category-machine-learning","category-rdkit","tag-compound-structure-standardization","tag-data-curation","tag-desalting","tag-neutralization","tag-tautomerization"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.3.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Using ChEMBL Structure Pipeline to standardize compound structure data - In Silico \u5275\u85ac<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.insilico.jp\/blog\/2021\/11\/16\/chembl-structure-pipeline\/\" \/>\n<meta property=\"og:locale\" content=\"ja_JP\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Using ChEMBL Structure Pipeline to standardize compound structure data - In Silico \u5275\u85ac\" \/>\n<meta property=\"og:description\" content=\"As I have promised in my previous blog regarding curation of chemogenomics data, this time I will be talking a...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.insilico.jp\/blog\/2021\/11\/16\/chembl-structure-pipeline\/\" \/>\n<meta property=\"og:site_name\" content=\"In Silico \u5275\u85ac\" \/>\n<meta property=\"article:published_time\" content=\"2021-11-16T02:55:57+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-12-10T05:42:21+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.insilico.jp\/blog\/wp-content\/uploads\/2021\/11\/testcomp-1-1024x636.png\" \/>\n<meta name=\"author\" content=\"Enzo Kawasaki\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u57f7\u7b46\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"Enzo Kawasaki\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593\" \/>\n\t<meta name=\"twitter:data2\" content=\"7\u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.insilico.jp\/blog\/2021\/11\/16\/chembl-structure-pipeline\/\",\"url\":\"https:\/\/www.insilico.jp\/blog\/2021\/11\/16\/chembl-structure-pipeline\/\",\"name\":\"Using ChEMBL Structure Pipeline to standardize compound structure data - In Silico \u5275\u85ac\",\"isPartOf\":{\"@id\":\"https:\/\/www.insilico.jp\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.insilico.jp\/blog\/2021\/11\/16\/chembl-structure-pipeline\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.insilico.jp\/blog\/2021\/11\/16\/chembl-structure-pipeline\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.insilico.jp\/blog\/wp-content\/uploads\/2021\/11\/testcomp-1-1024x636.png\",\"datePublished\":\"2021-11-16T02:55:57+00:00\",\"dateModified\":\"2021-12-10T05:42:21+00:00\",\"author\":{\"@id\":\"https:\/\/www.insilico.jp\/blog\/#\/schema\/person\/f3e060be38907cda2a9c1cfcd17b1d00\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.insilico.jp\/blog\/2021\/11\/16\/chembl-structure-pipeline\/#breadcrumb\"},\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.insilico.jp\/blog\/2021\/11\/16\/chembl-structure-pipeline\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\/\/www.insilico.jp\/blog\/2021\/11\/16\/chembl-structure-pipeline\/#primaryimage\",\"url\":\"https:\/\/www.insilico.jp\/blog\/wp-content\/uploads\/2021\/11\/testcomp-1.png\",\"contentUrl\":\"https:\/\/www.insilico.jp\/blog\/wp-content\/uploads\/2021\/11\/testcomp-1.png\",\"width\":1500,\"height\":931},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.insilico.jp\/blog\/2021\/11\/16\/chembl-structure-pipeline\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u30db\u30fc\u30e0\",\"item\":\"https:\/\/www.insilico.jp\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Using ChEMBL Structure Pipeline to standardize compound structure data\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.insilico.jp\/blog\/#website\",\"url\":\"https:\/\/www.insilico.jp\/blog\/\",\"name\":\"In Silico \u5275\u85ac\",\"description\":\"\u3053\u306e\u30d6\u30ed\u30b0\u30b5\u30a4\u30c8\u306f\u3001In silico\u5275\u85ac\u306b\u95a2\u9023\u3059\u308b\u7814\u7a76\u8ad6\u6587\u3084\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u30fb\u30c4\u30fc\u30eb\u306e\u5229\u7528\u3084\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306a\u3069\u306b\u3064\u3044\u3066\u3054\u7d39\u4ecb\u3057\u3066\u3044\u307e\u3059\u3002\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.insilico.jp\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ja\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.insilico.jp\/blog\/#\/schema\/person\/f3e060be38907cda2a9c1cfcd17b1d00\",\"name\":\"Enzo Kawasaki\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\/\/www.insilico.jp\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/284279ad0a1fc82af3c28545bdfeaef0?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/284279ad0a1fc82af3c28545bdfeaef0?s=96&d=mm&r=g\",\"caption\":\"Enzo Kawasaki\"},\"url\":\"https:\/\/www.insilico.jp\/blog\/author\/kawasaki\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Using ChEMBL Structure Pipeline to standardize compound structure data - In Silico \u5275\u85ac","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.insilico.jp\/blog\/2021\/11\/16\/chembl-structure-pipeline\/","og_locale":"ja_JP","og_type":"article","og_title":"Using ChEMBL Structure Pipeline to standardize compound structure data - In Silico \u5275\u85ac","og_description":"As I have promised in my previous blog regarding curation of chemogenomics data, this time I will be talking a...","og_url":"https:\/\/www.insilico.jp\/blog\/2021\/11\/16\/chembl-structure-pipeline\/","og_site_name":"In Silico \u5275\u85ac","article_published_time":"2021-11-16T02:55:57+00:00","article_modified_time":"2021-12-10T05:42:21+00:00","og_image":[{"url":"https:\/\/www.insilico.jp\/blog\/wp-content\/uploads\/2021\/11\/testcomp-1-1024x636.png","type":"","width":"","height":""}],"author":"Enzo Kawasaki","twitter_card":"summary_large_image","twitter_misc":{"\u57f7\u7b46\u8005":"Enzo Kawasaki","\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593":"7\u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.insilico.jp\/blog\/2021\/11\/16\/chembl-structure-pipeline\/","url":"https:\/\/www.insilico.jp\/blog\/2021\/11\/16\/chembl-structure-pipeline\/","name":"Using ChEMBL Structure Pipeline to standardize compound structure data - In Silico \u5275\u85ac","isPartOf":{"@id":"https:\/\/www.insilico.jp\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.insilico.jp\/blog\/2021\/11\/16\/chembl-structure-pipeline\/#primaryimage"},"image":{"@id":"https:\/\/www.insilico.jp\/blog\/2021\/11\/16\/chembl-structure-pipeline\/#primaryimage"},"thumbnailUrl":"https:\/\/www.insilico.jp\/blog\/wp-content\/uploads\/2021\/11\/testcomp-1-1024x636.png","datePublished":"2021-11-16T02:55:57+00:00","dateModified":"2021-12-10T05:42:21+00:00","author":{"@id":"https:\/\/www.insilico.jp\/blog\/#\/schema\/person\/f3e060be38907cda2a9c1cfcd17b1d00"},"breadcrumb":{"@id":"https:\/\/www.insilico.jp\/blog\/2021\/11\/16\/chembl-structure-pipeline\/#breadcrumb"},"inLanguage":"ja","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.insilico.jp\/blog\/2021\/11\/16\/chembl-structure-pipeline\/"]}]},{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/www.insilico.jp\/blog\/2021\/11\/16\/chembl-structure-pipeline\/#primaryimage","url":"https:\/\/www.insilico.jp\/blog\/wp-content\/uploads\/2021\/11\/testcomp-1.png","contentUrl":"https:\/\/www.insilico.jp\/blog\/wp-content\/uploads\/2021\/11\/testcomp-1.png","width":1500,"height":931},{"@type":"BreadcrumbList","@id":"https:\/\/www.insilico.jp\/blog\/2021\/11\/16\/chembl-structure-pipeline\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u30db\u30fc\u30e0","item":"https:\/\/www.insilico.jp\/blog\/"},{"@type":"ListItem","position":2,"name":"Using ChEMBL Structure Pipeline to standardize compound structure data"}]},{"@type":"WebSite","@id":"https:\/\/www.insilico.jp\/blog\/#website","url":"https:\/\/www.insilico.jp\/blog\/","name":"In Silico \u5275\u85ac","description":"\u3053\u306e\u30d6\u30ed\u30b0\u30b5\u30a4\u30c8\u306f\u3001In silico\u5275\u85ac\u306b\u95a2\u9023\u3059\u308b\u7814\u7a76\u8ad6\u6587\u3084\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u30fb\u30c4\u30fc\u30eb\u306e\u5229\u7528\u3084\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u306a\u3069\u306b\u3064\u3044\u3066\u3054\u7d39\u4ecb\u3057\u3066\u3044\u307e\u3059\u3002","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.insilico.jp\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ja"},{"@type":"Person","@id":"https:\/\/www.insilico.jp\/blog\/#\/schema\/person\/f3e060be38907cda2a9c1cfcd17b1d00","name":"Enzo Kawasaki","image":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/www.insilico.jp\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/284279ad0a1fc82af3c28545bdfeaef0?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/284279ad0a1fc82af3c28545bdfeaef0?s=96&d=mm&r=g","caption":"Enzo Kawasaki"},"url":"https:\/\/www.insilico.jp\/blog\/author\/kawasaki\/"}]}},"_links":{"self":[{"href":"https:\/\/www.insilico.jp\/blog\/wp-json\/wp\/v2\/posts\/1523","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.insilico.jp\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.insilico.jp\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.insilico.jp\/blog\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/www.insilico.jp\/blog\/wp-json\/wp\/v2\/comments?post=1523"}],"version-history":[{"count":25,"href":"https:\/\/www.insilico.jp\/blog\/wp-json\/wp\/v2\/posts\/1523\/revisions"}],"predecessor-version":[{"id":1853,"href":"https:\/\/www.insilico.jp\/blog\/wp-json\/wp\/v2\/posts\/1523\/revisions\/1853"}],"wp:attachment":[{"href":"https:\/\/www.insilico.jp\/blog\/wp-json\/wp\/v2\/media?parent=1523"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.insilico.jp\/blog\/wp-json\/wp\/v2\/categories?post=1523"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.insilico.jp\/blog\/wp-json\/wp\/v2\/tags?post=1523"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}