SlideShare a Scribd company logo
1 of 19
Download to read offline
RDKitjsの話
mishima.syk#6
@iwatobipen
1
自己紹介
・一応メドケム
・ケモインフォ好き
・Python JS少々
・実験も少々
3
https://iwatobipen.wordpress.com/
たまに日記を書いたり
今日はRDKitjsな話し
• 普段Python+RDKit+Scikit-learn+Flaskですが。
• JSでいければ楽ジャーンって思うことありました。
• 、、、JS のケモなライブラリなんてない。
4
っておもってました。
5
!!!
できるらしい、、、
Openbabelもある。。
EmscriptenでC++=>JS
という流れでできるそうだ
あ
る
!
6
C++からJS変換するナイス
ツールらしい
Emscriptenとは
EmscriptenはC/C++言語からLLVMを生成し、それを
JavaScriptに変換するコンパイラのことです。
C言語の標準ライブラリやPOSIXの一部もサポートし、
OpenGL ES2.0も使えるそうです。
そうこうしているうちに
Github上がった。
全ての機能が動くわけではないが
ex)
MolWt,
NQM?,
FrCSp3,
3D conf-gen,
2D cordinate-gen,
NumAtoms,などは行けそう。
8
https://github.com/cheminfo/RDKitjs
作者にも見てもらったっぽい
早速書いてみました。
• 今回はRDKitjs + D3jsで適当な散布図描画ページを
作ってみました。
• 注!クオリティーが低いのは私のスキル依存です
10
作図はD3js!
• 設計の方針
• smielsのリスト受け取り
• =>オブジェクトに変換
• =>calc MolWt、FrSP3
• 作図
rdkitjs
d3
flask
11
フォルダ構成(Flaskの作法で)
mishimasyk6 iwatobipen$ tree
.
├── README.md
├── __init__.py
├── app.py
├── sample_smi.txt
├── static
│   ├── basejs.js
│   ├── d3.js
│   └── rdkit.js
└── templates
└── toppage.html
計算や描画関数
nodejs/expressじゃないのはごめんなさい時間が、、、、
ライブラリ
12
関数部分(一部)
function moldraw( smi ){
var mol = RDKit.Molecule.fromSmiles( smi );
var mol2d = mol.Drawing2D();
var remol = mol2d.replace( /svg:/g, '' );
document.getElementById( 'molstructure' ).innerHTML = remol;
};
分子をSVGで描画
function calc_mw_fsp3( smi ){
var mol = RDKit.Molecule.fromSmiles( smi );
var mw = mol.getMW();
var fr_sp3 = mol.FractionCSP3();
return { mw:mw, fr_sp3: fr_sp3,smi: smi };
};
計算値とsmilesを返す
13
描画部分(D3js)
function darwchart( smiles_data ){
d3.select("#scatterplot").remove();
var svg = d3.select("#chart").append("svg")
.attr("id", "scatterplot")
.attr("width", w)
.attr("height", h);
var dataset = calc_smiles_data( smiles_data );
中略
svg.selectAll( "circle" )
.data(dataset)
.enter()
.append("circle")
.attr("cx", function(d){
return xScale(d["mw"]);
})
.attr("cy", function(d){
return yScale(d["fr_sp3"]);
})
.attr("r", 5)
.attr("fill", "skyblue")
14
データセット
  の配列取得
D3jsにおける散布図のお作法
HTML部分の構成
<body>
<h1>input smiles</h1>
<form id="smiles_list">
<div>
<textarea id="dataset" cols=40 rows=10>
</textarea>
</div>
<input type="button" value="darw chart"
onclick="darwchart( document.forms.smiles_list.dataset.value )">
</form>
</br></br>
<h1> scatter plot</h1>
</br>
<div style="float:left;" id="chart"></div>
<div style="float:left;" id="molstructure"></div>
</body>
テキストエリアのデータを受け取り
15
イメージ
smiles入れる
テキストエリア
submit
0
0.25
0.5
0.75
1
0 100 200 300 400
16
<div id=“chart”> <div id=“molstructure”>
でけた
https://github.com/iwatobipen/mishimasyk/tree/master/mishimasyk6
17
動作確認!
18
動いた
構造描画がJSで出来るってことは
Redmineに埋め込める?
D3jsと合わせて素敵なビューが?
tooltip実装したかったけど時間がなかった。
是非某TKも。。。?
19

More Related Content

What's hot

Kink: プロトタイプベースの俺々 JVM 言語
Kink: プロトタイプベースの俺々 JVM 言語Kink: プロトタイプベースの俺々 JVM 言語
Kink: プロトタイプベースの俺々 JVM 言語
Taku Miyakawa
 
YAPC::ASIA 2012 LT GaiaX
YAPC::ASIA 2012 LT GaiaXYAPC::ASIA 2012 LT GaiaX
YAPC::ASIA 2012 LT GaiaX
Kazuyuki Todo
 
俺のGentooがこんなに可愛いわけがない
俺のGentooがこんなに可愛いわけがない俺のGentooがこんなに可愛いわけがない
俺のGentooがこんなに可愛いわけがない
Takuto Matsuu
 
TddでFizzBuzzしてみる in Swift
TddでFizzBuzzしてみる in SwiftTddでFizzBuzzしてみる in Swift
TddでFizzBuzzしてみる in Swift
Shoichi Matsuda
 
Raspberry pi on java 20130510
Raspberry pi on java 20130510Raspberry pi on java 20130510
Raspberry pi on java 20130510
Masafumi Ohta
 

What's hot (20)

PHPerのためのpostgresqlチューニングmini
PHPerのためのpostgresqlチューニングminiPHPerのためのpostgresqlチューニングmini
PHPerのためのpostgresqlチューニングmini
 
第二回 クラウドサーバー管理者若葉の会
第二回 クラウドサーバー管理者若葉の会第二回 クラウドサーバー管理者若葉の会
第二回 クラウドサーバー管理者若葉の会
 
Gentoo Linuxの紹介
Gentoo Linuxの紹介Gentoo Linuxの紹介
Gentoo Linuxの紹介
 
レビューで保守性のためにした コメントをふりかえってみた
レビューで保守性のためにした コメントをふりかえってみたレビューで保守性のためにした コメントをふりかえってみた
レビューで保守性のためにした コメントをふりかえってみた
 
Javascriptを書きたくないヒ トのためのPythonScript
Javascriptを書きたくないヒ トのためのPythonScriptJavascriptを書きたくないヒ トのためのPythonScript
Javascriptを書きたくないヒ トのためのPythonScript
 
Kink: プロトタイプベースの俺々 JVM 言語
Kink: プロトタイプベースの俺々 JVM 言語Kink: プロトタイプベースの俺々 JVM 言語
Kink: プロトタイプベースの俺々 JVM 言語
 
OSC 2016 Hokkaido セミナー資料
OSC 2016 Hokkaido セミナー資料OSC 2016 Hokkaido セミナー資料
OSC 2016 Hokkaido セミナー資料
 
YAPC::ASIA 2012 LT GaiaX
YAPC::ASIA 2012 LT GaiaXYAPC::ASIA 2012 LT GaiaX
YAPC::ASIA 2012 LT GaiaX
 
俺のGentooがこんなに可愛いわけがない
俺のGentooがこんなに可愛いわけがない俺のGentooがこんなに可愛いわけがない
俺のGentooがこんなに可愛いわけがない
 
TddでFizzBuzzしてみる in Swift
TddでFizzBuzzしてみる in SwiftTddでFizzBuzzしてみる in Swift
TddでFizzBuzzしてみる in Swift
 
Kernel vm13lt
Kernel vm13ltKernel vm13lt
Kernel vm13lt
 
ロボットシステム学2015年第9回
ロボットシステム学2015年第9回ロボットシステム学2015年第9回
ロボットシステム学2015年第9回
 
ロボットシステム学2015年第7回
ロボットシステム学2015年第7回ロボットシステム学2015年第7回
ロボットシステム学2015年第7回
 
Submitwordpresspy
SubmitwordpresspySubmitwordpresspy
Submitwordpresspy
 
勉強会 Cvml python基礎
勉強会 Cvml python基礎勉強会 Cvml python基礎
勉強会 Cvml python基礎
 
Raspberry pi on java 20130510
Raspberry pi on java 20130510Raspberry pi on java 20130510
Raspberry pi on java 20130510
 
Frank-afcproxy
Frank-afcproxyFrank-afcproxy
Frank-afcproxy
 
Gitoriousをubuntu 10.04 LTSへインストール
Gitoriousをubuntu 10.04 LTSへインストールGitoriousをubuntu 10.04 LTSへインストール
Gitoriousをubuntu 10.04 LTSへインストール
 
[Vitocha.iso] FreeBSDカスタムiso作ってみた
[Vitocha.iso] FreeBSDカスタムiso作ってみた[Vitocha.iso] FreeBSDカスタムiso作ってみた
[Vitocha.iso] FreeBSDカスタムiso作ってみた
 
Debian Multiarch Support
Debian Multiarch SupportDebian Multiarch Support
Debian Multiarch Support
 

Viewers also liked

Viewers also liked (9)

201310slide day1
201310slide day1201310slide day1
201310slide day1
 
Mishimasyk5 chemomine up
Mishimasyk5 chemomine upMishimasyk5 chemomine up
Mishimasyk5 chemomine up
 
FAMSとchooseLDを用いたインシリコ創薬パイプライン
FAMSとchooseLDを用いたインシリコ創薬パイプラインFAMSとchooseLDを用いたインシリコ創薬パイプライン
FAMSとchooseLDを用いたインシリコ創薬パイプライン
 
Mishimasyk
MishimasykMishimasyk
Mishimasyk
 
mishimasyk#4
mishimasyk#4mishimasyk#4
mishimasyk#4
 
主成分分析を用いた教師なし学習による変数選択を用いたヒストン脱アセチル化酵素阻害剤の機能探索
主成分分析を用いた教師なし学習による変数選択を用いたヒストン脱アセチル化酵素阻害剤の機能探索主成分分析を用いた教師なし学習による変数選択を用いたヒストン脱アセチル化酵素阻害剤の機能探索
主成分分析を用いた教師なし学習による変数選択を用いたヒストン脱アセチル化酵素阻害剤の機能探索
 
現在のDNNにおける未解決問題
現在のDNNにおける未解決問題現在のDNNにおける未解決問題
現在のDNNにおける未解決問題
 
IIBMP2016 深層生成モデルによる表現学習
IIBMP2016 深層生成モデルによる表現学習IIBMP2016 深層生成モデルによる表現学習
IIBMP2016 深層生成モデルによる表現学習
 
IPAB2017 深層学習を使った新薬の探索から創造へ
IPAB2017 深層学習を使った新薬の探索から創造へIPAB2017 深層学習を使った新薬の探索から創造へ
IPAB2017 深層学習を使った新薬の探索から創造へ
 

Similar to Mishimasyk6 iwatobipen

DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングDLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミング
terurou
 
LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45
civic Sasaki
 
Phjosh(仮)プロジェクト
Phjosh(仮)プロジェクトPhjosh(仮)プロジェクト
Phjosh(仮)プロジェクト
Moriyoshi Koizumi
 

Similar to Mishimasyk6 iwatobipen (20)

とある Perl Monger の働き方
とある Perl Monger の働き方とある Perl Monger の働き方
とある Perl Monger の働き方
 
Emscriptenと不思議のダンジョン
Emscriptenと不思議のダンジョンEmscriptenと不思議のダンジョン
Emscriptenと不思議のダンジョン
 
Hannari python#27
Hannari python#27Hannari python#27
Hannari python#27
 
LT#7 Hello coffeeしてきた
LT#7 Hello coffeeしてきたLT#7 Hello coffeeしてきた
LT#7 Hello coffeeしてきた
 
NodeJSでCLI開発を楽しくするライブラリの紹介
NodeJSでCLI開発を楽しくするライブラリの紹介NodeJSでCLI開発を楽しくするライブラリの紹介
NodeJSでCLI開発を楽しくするライブラリの紹介
 
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングDLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミング
 
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
 
CLR/H第54回勉強会 ライトニングトーク
CLR/H第54回勉強会 ライトニングトークCLR/H第54回勉強会 ライトニングトーク
CLR/H第54回勉強会 ライトニングトーク
 
LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45
 
Real world lisp
Real world lispReal world lisp
Real world lisp
 
Phjosh(仮)プロジェクト
Phjosh(仮)プロジェクトPhjosh(仮)プロジェクト
Phjosh(仮)プロジェクト
 
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
 
20150228_渋谷Webエンジニア朝会LT資料
20150228_渋谷Webエンジニア朝会LT資料20150228_渋谷Webエンジニア朝会LT資料
20150228_渋谷Webエンジニア朝会LT資料
 
Ember コミュニティとわたし
Ember コミュニティとわたしEmber コミュニティとわたし
Ember コミュニティとわたし
 
tsudaりについて
tsudaりについてtsudaりについて
tsudaりについて
 
Boost container feature
Boost container featureBoost container feature
Boost container feature
 
dwangocpp1-lt
dwangocpp1-ltdwangocpp1-lt
dwangocpp1-lt
 
ぼくのかんがえたさいきょうの Rails スタートダッシュ
ぼくのかんがえたさいきょうの Rails スタートダッシュぼくのかんがえたさいきょうの Rails スタートダッシュ
ぼくのかんがえたさいきょうの Rails スタートダッシュ
 
Start!! Ruby
Start!! RubyStart!! Ruby
Start!! Ruby
 
TypeScriptをオススメする理由
TypeScriptをオススメする理由TypeScriptをオススメする理由
TypeScriptをオススメする理由
 

Mishimasyk6 iwatobipen