{"id":1242,"date":"2017-07-27T15:30:53","date_gmt":"2017-07-27T06:30:53","guid":{"rendered":"https:\/\/www.ag.kagawa-u.ac.jp\/charlesy\/?p=1242"},"modified":"2017-07-27T23:31:57","modified_gmt":"2017-07-27T14:31:57","slug":"deepchem%e3%81%ab%e3%82%88%e3%82%8b%e6%ba%b6%e8%a7%a3%e5%ba%a6%e4%ba%88%e6%b8%ac-graph-convolution-%e3%83%8b%e3%83%a5%e3%83%bc%e3%83%a9%e3%83%ab%e3%83%8d%e3%83%83%e3%83%88%e3%83%af%e3%83%bc%e3%82%af","status":"publish","type":"post","link":"https:\/\/www.ag.kagawa-u.ac.jp\/charlesy\/2017\/07\/27\/deepchem%e3%81%ab%e3%82%88%e3%82%8b%e6%ba%b6%e8%a7%a3%e5%ba%a6%e4%ba%88%e6%b8%ac-graph-convolution-%e3%83%8b%e3%83%a5%e3%83%bc%e3%83%a9%e3%83%ab%e3%83%8d%e3%83%83%e3%83%88%e3%83%af%e3%83%bc%e3%82%af\/","title":{"rendered":"DeepChem\u306b\u3088\u308b\u6eb6\u89e3\u5ea6\u4e88\u6e2c (Graph convolution, \u30cb\u30e5\u30fc\u30e9\u30eb\u30cd\u30c3\u30c8\u30ef\u30fc\u30af)"},"content":{"rendered":"<p>\u74b0\u5883: macOS Sierra 10.12.5, CPU: 3.3 GHz Intel Core i5, \u30e1\u30e2\u30ea\uff1a 8 GB. Python 3.5.3, DeepChem 1.1.0, TensorFlow 1.0.1, RDKit 2017.03.3.<br \/>\n\u53c2\u8003\u30b5\u30a4\u30c8: <a href=\"https:\/\/iwatobipen.wordpress.com\/2017\/05\/11\/graph-convolution-regression-with-deepchem\/\">Graph convolution regression with deepchem &#8211; Is life worth living?<\/a><\/p>\n<p><a href=\"https:\/\/www.ncbi.nlm.nih.gov\/pmc\/articles\/PMC5408335\/figure\/fig3\/\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.ag.kagawa-u.ac.jp\/charlesy\/wp\/wp-content\/uploads\/2017\/07\/oc-2016-00367d_0003-264x300.jpg\" alt=\"\" width=\"264\" height=\"300\" class=\"alignright size-medium wp-image-1265\" srcset=\"https:\/\/www.ag.kagawa-u.ac.jp\/charlesy\/wp\/wp-content\/uploads\/2017\/07\/oc-2016-00367d_0003-264x300.jpg 264w, https:\/\/www.ag.kagawa-u.ac.jp\/charlesy\/wp\/wp-content\/uploads\/2017\/07\/oc-2016-00367d_0003-237x270.jpg 237w, https:\/\/www.ag.kagawa-u.ac.jp\/charlesy\/wp\/wp-content\/uploads\/2017\/07\/oc-2016-00367d_0003.jpg 700w\" sizes=\"auto, (max-width: 264px) 100vw, 264px\" \/><\/a><\/p>\n<p><a href=\"https:\/\/github.com\/deepchem\/deepchem\">DeepChem<\/a>\u306f\u5316\u5408\u7269\u306e\u30b0\u30e9\u30d5\u69cb\u9020\u306b\u5bfe\u3057\u3066\u7573\u307f\u8fbc\u307f\u6f14\u7b97 (Graph convolution) \u3092\u884c\u3046\u305f\u3081\u306e\u6a5f\u68b0\u5b66\u7fd2\u30e9\u30a4\u30d6\u30e9\u30ea\u3067\u3059\uff0e\u5316\u5408\u7269\u306eGraph convolution\u306b\u3064\u3044\u3066\u306f\uff0cAltae-Tran <span style=\"font-style:italic;\">et al.,<\/span> (2017) \u306efigure (\u53f3\u56f3\uff0c Copyright &copy; 2017 American Chemical Society) \u304c\u30d1\u30c3\u3068\u5206\u304b\u308a\u3084\u3059\u3044\u6c17\u304c\u3057\u307e\u3059 (Altae-Tran, H., <span style=\"font-style:italic;\">et al. ACS Cent. Sci.<\/span> <span style=\"font-weight:bold;\">2017<\/span>, <span style=\"font-style:italic;\">3<\/span>, 283. doi: <a href=\"http:\/\/dx.doi.org\/10.1021\/acscentsci.6b00367\">10.1021\/acscentsci.6b00367<\/a>)\uff0e<\/p>\n<p>\u3067\u306f\uff0c\u53c2\u8003\u30b5\u30a4\u30c8\u306e\u898b\u69d8\u898b\u771f\u4f3c\u3067\u3084\u3063\u3066\u307f\u307e\u3059\uff0e<\/p>\n<h2>Installing DeepChem on macOS Sierra<\/h2>\n<p>OS\u306f64bit Linux\u3057\u304b\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u306a\u3044\u305d\u3046\u3067\u3059\u304c\uff0cmacOS\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u307f\u307e\u3059\uff0eConda\u3092\u5229\u7528\u3057\u305f\u65b9\u6cd5\u304c\u7c21\u5358\u305d\u3046\u306a\u306e\u3067\u3053\u308c\u3092\u63a1\u7528\u3057\u307e\u3057\u305f (https:\/\/github.com\/deepchem\/deepchem)\uff0e<\/p>\n<pre class=\"command-line\"><code class=\"language-bash\" data-line=\"\">(anaconda3-4.4.0)$ git clone https:\/\/github.com\/deepchem\/deepchem.git\n(anaconda3-4.4.0)$ cd deepchem\n<\/code><\/pre>\n<p>scripts\/install_deepchem_conda.sh\u306e<\/p>\n<pre class=\"prettyprint lang-python\">\r\nif &#91; &#34;$python_version&#34; == &#34;3.5&#34; &#93;\r\nthen\r\n    export protobuf_url=https:&#47;&#47;storage.googleapis.com&#47;tensorflow&#47;linux&#47;cpu&#47;protobuf-3.1.0-cp35-none-linux_x86_64.whl\r\nelse\r\n    export protobuf_url=https:&#47;&#47;storage.googleapis.com&#47;tensorflow&#47;linux&#47;cpu&#47;protobuf-3.1.0-cp27-none-linux_x86_64.whl\r\nfi\r\n<\/pre>\n<p>\u306e\u90e8\u5206\u3092<\/p>\n<pre class=\"prettyprint lang-python\">\r\nif &#91; &#34;$python_version&#34; == &#34;3.5&#34; &#93;\r\nthen\r\n    export protobuf_url=https:&#47;&#47;storage.googleapis.com&#47;tensorflow&#47;mac&#47;cpu&#47;protobuf-3.1.0-cp35-none-macosx_10_11_x86_64\r\nelse\r\n    export protobuf_url=https:&#47;&#47;storage.googleapis.com&#47;tensorflow&#47;mac&#47;cpu&#47;protobuf-3.1.0-cp27-none-macosx_10_11_x86_64\r\nfi\r\n<\/pre>\n<p>\u306b\u66f8\u304d\u63db\u3048\u307e\u3059\uff0e<\/p>\n<pre class=\"command-line\"><code class=\"language-bash\" data-line=\"\">(anaconda3-4.4.0)$ bash scripts\/install_deepchem_conda.sh deepchem\n(anaconda3-4.4.0)$ source activate deepchem\n<\/code><\/pre>\n<p>TensorFlow\u306f1.0.1\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u307e\u3057\u305f\uff0e\u3053\u308c\u306f\u62e1\u5f35\u547d\u4ee4\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u306a\u3044\u3068\u8868\u793a\u304c\u51fa\u308b\u306e\u3067\u524d\u56de\u3068\u540c\u3058\u3088\u3046\u306b\u30d3\u30eb\u30c9\u3057\u307e\u3059 (\u9069\u5f53\u306a\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u79fb\u52d5)\uff0e<\/p>\n<pre class=\"command-line\"><code class=\"language-bash\" data-line=\"\">(anaconda3-4.4.0\/envs\/deepchem)$ git clone https:\/\/github.com\/tensorflow\/tensorflow\n(anaconda3-4.4.0\/envs\/deepchem)$ cd tensorflow\n(anaconda3-4.4.0\/envs\/deepchem)$ git checkout r1.0\n(anaconda3-4.4.0\/envs\/deepchem)$ .\/configure\n<\/code><\/pre>\n<p>\u4ee5\u4e0b\u306e\u8cea\u554f\u306f\u500b\u5225\u306b\u7b54\u3048\u3066\uff0c\u6b8b\u308a\u306freturn\u3092\u62bc\u3059\uff0e<\/p>\n<pre class=\"prettyprint\">\r\nDo you wish to use jemalloc as the malloc implementation? (Linux only) &#91;Y&#47;n&#93; n\r\n---\r\nPlease input the desired Python library path to use.  Default is ...\r\n&#47;PATHTO&#47;.pyenv&#47;versions&#47;anaconda3-4.4.0&#47;envs&#47;deepchem&#47;lib&#47;python3.5&#47;site-packages\r\n<\/pre>\n<pre class=\"command-line\"><code class=\"language-bash\" data-line=\"\">(anaconda3-4.4.0\/envs\/deepchem)$ bazel build --config=opt \/\/tensorflow\/tools\/pip_package:build_pip_package\n(anaconda3-4.4.0\/envs\/deepchem)$ bazel-bin\/tensorflow\/tools\/pip_package\/build_pip_package \/tmp\/tensorflow_pkg\n(anaconda3-4.4.0\/envs\/deepchem)$ pip uninstall tensorflow\n(anaconda3-4.4.0\/envs\/deepchem)$ pip install \/tmp\/tensorflow_pkg\/tensorflow-1.0.1-cp35-cp35m-macosx_10_7_x86_64.whl\n<\/code><\/pre>\n<p>deepchem\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u623b\u3063\u3066\uff0c<\/p>\n<pre class=\"command-line\"><code class=\"language-bash\" data-line=\"\">(anaconda3-4.4.0\/envs\/deepchem)$ python setup.py install \n(anaconda3-4.4.0\/envs\/deepchem)$ conda install jupyter matplotlib\n<\/code><\/pre>\n<h2>DeepChem\u3092\u4f7f\u3063\u3066\u307f\u308b<\/h2>\n<p>SDF\u30d5\u30a1\u30a4\u30eb\u3092\u5909\u63db\u3057\u3066\uff0c\u4ee5\u4e0b\u306e\u3088\u3046\u306bSMILES\u8868\u8a18\u3068\u6eb6\u89e3\u5ea6\u304c\u8a18\u8f09\u3055\u308c\u305fCSV\u30d5\u30a1\u30a4\u30eb (solubility.csv) \u3092\u4f5c\u308a\u307e\u3059\uff0e<\/p>\n<pre class=\"prettyprint\">\r\nname,smiles,solubility\r\n60-35-5,CC(N)=O,1.58\r\n60-34-4,CNN,1.34\r\n64-19-7,CC(O)=O,1.22\r\n<\/pre>\n<p>\u65b0\u3057\u304f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u4f5c\u3063\u3066\u30d5\u30a1\u30a4\u30eb\u3092\u79fb\u52d5\u3055\u305b\u307e\u3059\uff0e<\/p>\n<pre class=\"command-line\"><code class=\"language-bash\" data-line=\"\">(anaconda3-4.4.0\/envs\/deepchem)$ mkdir NEWDIR\n(anaconda3-4.4.0\/envs\/deepchem)$ mv solubility.csv NEWDIR\/\n(anaconda3-4.4.0\/envs\/deepchem)$ cd NEWDIR\n(anaconda3-4.4.0\/envs\/deepchem)$ ipython\n<\/code><\/pre>\n<p>\u53c2\u8003\u30b5\u30a4\u30c8<a href=\"https:\/\/iwatobipen.wordpress.com\/2017\/05\/11\/graph-convolution-regression-with-deepchem\/\">Graph convolution regression with deepchem &#8211; Is life worth living?<\/a>\u3092\u771f\u4f3c\u3066\u307f\u307e\u3059\uff0e<\/p>\n<pre class=\"brush: python; title: ; notranslate\" title=\"\">\r\n#\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u8aad\u307f\u8fbc\u307f\r\nimport tensorflow as tf\r\nimport deepchem as dc\r\nimport numpy as np\r\n\r\ngraph_featurizer = dc.feat.graph_features.ConvMolFeaturizer()\r\nloader = dc.data.data_loader.CSVLoader( tasks = &#x5B;'solubility'], smiles_field = &quot;smiles&quot;, id_field = &quot;name&quot;, featurizer = graph_featurizer )\r\ndataset = loader.featurize( '.\/solubility.csv' )\r\n<\/pre>\n<pre class=\"prettyprint\">\r\nLoading raw samples now.\r\nshard_size: 8192\r\nAbout to start loading CSV from .&#47;solubility.csv\r\nLoading shard 1 of size 8192.\r\nFeaturizing sample 0\r\nFeaturizing sample 1000\r\nTIMING: featurizing shard 0 took 1.425 s\r\nTIMING: dataset construction took 1.869 s\r\nLoading dataset from disk.\r\n<\/pre>\n<pre class=\"brush: python; title: ; notranslate\" title=\"\">\r\nsplitter = dc.splits.splitters.RandomSplitter()\r\ntrainset, testset = splitter.train_test_split( dataset )\r\n\r\nhp = dc.molnet.preset_hyper_parameters\r\nparam = hp.hps&#x5B; 'graphconvreg' ]\r\nprint( param )\r\n\r\n#\r\n#n_atoms = 5\r\nn_feat = 75\r\nbatch_size = 32\r\n\r\ngraph_model = dc.nn.SequentialGraph( n_feat )\r\n\r\ngraph_model.add( dc.nn.GraphConv( int( param&#x5B; 'n_filters' ]), n_feat, activation = 'relu' ) )\r\ngraph_model.add( dc.nn.BatchNormalization( epsilon = 1e-5, mode = 1 ) )\r\ngraph_model.add( dc.nn.GraphPool() )\r\n\r\n## Gather Projection\r\n#graph_model.add( dc.nn.Dense( int( param&#x5B; 'n_fully_connected_nodes' ] ),  int( param&#x5B; 'n_filters' ] ), activation = 'relu' ) )\r\ngraph_model.add( dc.nn.BatchNormalization( epsilon = 1e-5, mode = 1 ) )\r\ngraph_model.add( dc.nn.GraphGather( batch_size, activation = &quot;linear&quot; ) )\r\n<\/pre>\n<p>Keras\u307f\u305f\u3044\u306a\u66f8\u304d\u65b9\u3067\u3059\u306d\uff0e<\/p>\n<pre class=\"brush: python; title: ; notranslate\" title=\"\">\r\nwith tf.Session() as sess:\r\n    model_graphconv = dc.models.MultitaskGraphRegressor( graph_model,\r\n    1,\r\n    n_feat,\r\n    batch_size = batch_size,\r\n    learning_rate = param&#x5B; 'learning_rate' ],\r\n    optimizer_type = 'adam',\r\n    beta1 = .9, beta2 = .999 )\r\n    model_graphconv.fit( trainset, nb_epoch = 10 )\r\n\r\n<\/pre>\n<pre class=\"prettyprint\">\r\nStarting epoch 9\r\nOn batch 0\r\nOn batch 50\r\nOn batch 100\r\nOn batch 150\r\nOn batch 200\r\nOn batch 250\r\nOn batch 300\r\n<\/pre>\n<pre class=\"brush: python; title: ; notranslate\" title=\"\">\r\ntest_scores = {}\r\ntrain_scores = {}\r\nregression_metric = dc.metrics.Metric( dc.metrics.mean_squared_error )\r\ntest_scores&#x5B; 'graphconvreg' ] = model_graphconv.evaluate( testset, &#x5B; regression_metric ]  )\r\ntrain_scores&#x5B; 'graphconvreg' ] = model_graphconv.evaluate( trainset, &#x5B; regression_metric ]  )\r\n<\/pre>\n<pre class=\"prettyprint\">\r\ncomputed_metrics: &#91;0.66776533011426364&#93;\r\ncomputed_metrics: &#91;0.44895978015740012&#93;\r\n<\/pre>\n<p>RMS\u306fRDkit\u306edescriptor\u3092\u4f7f\u3063\u305f\u5834\u5408\u3068\u540c\u7b49\u3067\u3057\u305f\uff0e<\/p>\n<pre class=\"brush: python; title: ; notranslate\" title=\"\">\r\npred_train = model_graphconv.predict( trainset )\r\npred_test = model_graphconv.predict( testset )\r\n\r\ny_train = np.array( trainset.y, dtype = np.float32 )\r\ny_test = np.array( testset.y, dtype = np.float32 )\r\npred_train = np.array( pred_train, dtype=np.float32 )\r\npred_test = np.array( pred_test, dtype=np.float32)\r\n \r\nimport matplotlib.pyplot as plt\r\n\r\nplt.figure()\r\nplt.scatter( y_train, pred_train, label = 'Train', c = 'blue' )\r\nplt.title( 'Neural Network Predictor' )\r\nplt.xlabel( 'Measured Solubility' )\r\nplt.ylabel( 'Predicted Solubility' )\r\nplt.scatter( y_test, pred_test, c = 'lightgreen', label = 'Test', alpha = 0.8 )\r\nplt.legend( loc = 4 )\r\nplt.show()\r\n<\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/www.ag.kagawa-u.ac.jp\/charlesy\/wp\/wp-content\/uploads\/2017\/07\/plot.png\" alt=\"\" width=\"480\" class=\"aligncenter size-full wp-image-1258\" srcset=\"https:\/\/www.ag.kagawa-u.ac.jp\/charlesy\/wp\/wp-content\/uploads\/2017\/07\/plot.png 640w, https:\/\/www.ag.kagawa-u.ac.jp\/charlesy\/wp\/wp-content\/uploads\/2017\/07\/plot-300x225.png 300w, https:\/\/www.ag.kagawa-u.ac.jp\/charlesy\/wp\/wp-content\/uploads\/2017\/07\/plot-360x270.png 360w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/p>\n<p>(\u4e86)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u74b0\u5883: macOS Sierra 10.12.5, CPU: &#8230;<\/p>\n","protected":false},"author":1,"featured_media":1265,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_uag_custom_page_level_css":"","_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"_locale":"","_original_post":"","footnotes":""},"categories":[5],"tags":[],"class_list":["post-1242","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-5","ja"],"aioseo_notices":[],"uagb_featured_image_src":{"full":["https:\/\/www.ag.kagawa-u.ac.jp\/charlesy\/wp\/wp-content\/uploads\/2017\/07\/oc-2016-00367d_0003.jpg",700,796,false],"thumbnail":["https:\/\/www.ag.kagawa-u.ac.jp\/charlesy\/wp\/wp-content\/uploads\/2017\/07\/oc-2016-00367d_0003-150x150.jpg",150,150,true],"medium":["https:\/\/www.ag.kagawa-u.ac.jp\/charlesy\/wp\/wp-content\/uploads\/2017\/07\/oc-2016-00367d_0003-264x300.jpg",264,300,true],"medium_large":["https:\/\/www.ag.kagawa-u.ac.jp\/charlesy\/wp\/wp-content\/uploads\/2017\/07\/oc-2016-00367d_0003.jpg",700,796,false],"large":["https:\/\/www.ag.kagawa-u.ac.jp\/charlesy\/wp\/wp-content\/uploads\/2017\/07\/oc-2016-00367d_0003.jpg",700,796,false],"1536x1536":["https:\/\/www.ag.kagawa-u.ac.jp\/charlesy\/wp\/wp-content\/uploads\/2017\/07\/oc-2016-00367d_0003.jpg",700,796,false],"2048x2048":["https:\/\/www.ag.kagawa-u.ac.jp\/charlesy\/wp\/wp-content\/uploads\/2017\/07\/oc-2016-00367d_0003.jpg",700,796,false],"onepress-blog-small":["https:\/\/www.ag.kagawa-u.ac.jp\/charlesy\/wp\/wp-content\/uploads\/2017\/07\/oc-2016-00367d_0003.jpg",132,150,false],"onepress-small":["https:\/\/www.ag.kagawa-u.ac.jp\/charlesy\/wp\/wp-content\/uploads\/2017\/07\/oc-2016-00367d_0003.jpg",264,300,false],"onepress-medium":["https:\/\/www.ag.kagawa-u.ac.jp\/charlesy\/wp\/wp-content\/uploads\/2017\/07\/oc-2016-00367d_0003.jpg",352,400,false]},"uagb_author_info":{"display_name":"RCY","author_link":"https:\/\/www.ag.kagawa-u.ac.jp\/charlesy\/author\/charlesy\/"},"uagb_comment_info":0,"uagb_excerpt":"\u74b0\u5883: macOS Sierra 10.12.5, CPU: ...","_links":{"self":[{"href":"https:\/\/www.ag.kagawa-u.ac.jp\/charlesy\/wp-json\/wp\/v2\/posts\/1242","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ag.kagawa-u.ac.jp\/charlesy\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ag.kagawa-u.ac.jp\/charlesy\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ag.kagawa-u.ac.jp\/charlesy\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ag.kagawa-u.ac.jp\/charlesy\/wp-json\/wp\/v2\/comments?post=1242"}],"version-history":[{"count":25,"href":"https:\/\/www.ag.kagawa-u.ac.jp\/charlesy\/wp-json\/wp\/v2\/posts\/1242\/revisions"}],"predecessor-version":[{"id":1271,"href":"https:\/\/www.ag.kagawa-u.ac.jp\/charlesy\/wp-json\/wp\/v2\/posts\/1242\/revisions\/1271"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ag.kagawa-u.ac.jp\/charlesy\/wp-json\/wp\/v2\/media\/1265"}],"wp:attachment":[{"href":"https:\/\/www.ag.kagawa-u.ac.jp\/charlesy\/wp-json\/wp\/v2\/media?parent=1242"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ag.kagawa-u.ac.jp\/charlesy\/wp-json\/wp\/v2\/categories?post=1242"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ag.kagawa-u.ac.jp\/charlesy\/wp-json\/wp\/v2\/tags?post=1242"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}