PygamessのバックエンドをOpenbabelからRDKitに変更しているところ

今の会社がRDKitを使っていたり、gamessで計算したエネルギーとか軌道係数をそのままRDKit+Pandasに持っていけると都合が良かったりするので、バックエンドをRDKitに変更しようとしている。

とりあえず、このコミットでtotal energyが出るようになった。

久々にコードの修正していて、 なんじゃ、この書きなぐったようなコードは? と感じたのでもう少し綺麗に書き直したい。

>>> from pygamess import Gamess
>>> from rdkit import Chem
>>> from rdkit.Chem import AllChem
>>> m = Chem.MolFromSmiles("CC")
>>> m = Chem.AddHs(m)
>>> AllChem.UFFOptimizeMolecule(m,maxIters=200)
0
>>> g = Gamess()
>>> g.input(m)
' $contrl runtyp=energy scftyp=rhf mult=1  $end\n $basis gbasis=sto ngauss=3 $end\n $system mwords=30  $end\n $DATA\n6324\nC1\nC      6.0     -0.7593407291    0.0107048487   -0.0162273112 \nC      6.0      0.7593414912   -0.0107048029    0.0162270652 \nH      1.0     -1.1594363804   -0.1004995560    1.0135868837 \nH      1.0     -1.1131931576    0.9732198527   -0.4420381632 \nH      1.0     -1.1342180646   -0.8246918478   -0.6443526878 \nH      1.0      1.1342169299    0.8246865647    0.6443564239 \nH      1.0      1.1594357587    0.1005043120   -1.0135855392 \nH      1.0      1.1131941519   -0.9732193715    0.4420333286 \n$END\n'
>>> nm = g.run(m)
>>> nm.GetProp("total_energy")
'-78.302511907400003'

なんでGamessなんて使うかというと光毒性予測モデルのようなHOMO-LUMOギャップとか励起状態が効いてくるような現象を予測しようとした場合それなりの計算してあげないといけないからね。

Mishima.syk #11やります

次回の日程と内容が決まりました。

次回は2017/10/14@沼津で、GIt,GitHubのハンズオンをやります。

皆様の参加をお待ちしております。

なぜGit, GitHubのハンズオンなのかというと、最近のJ.C.I.M, J.M.Cといったメディシナルケミストリー、ケモインフォマティクス系の論文でも当たり前に「実装はGitHubにあげてあるから」みたいなことが書いてあって、

お前、その実装に興味あったらプルリク送るなり、Issue報告するなりコミットするの当然だろ?

というような意図が透けて見えるわけだけど、そもそもGitもGitHubも使えないとそういうあたりに貢献できないし、普通に困るだろうなぁという感じの話が出たからです。

実は、静岡のようなちょっと田舎のプログラマーコミュニティでも「えーまだgit使ってないの〜?」みたいな話が出たことがあってハンズオンをしたことがあります。

5年前だけどなw

つまり、プログラミングというかコード管理とかコミュニティの醸成などはこの業界はそのくらいは余裕で遅れているってことです。

プルリク送って取り込まれるとモチベーションがすごいあがるし、是非基本的なあたりは覚えて、ケモインフォティクス、バイオインフォマティクスコミュニティに貢献できるようになれるといいなぁと願っています。

大瀬崎でスノーケリング

野生のラブライバーの巣、つまり大瀬崎に行ってきた。密度的には内浦のほうが濃いけど、チャリで来る人とかいるからすごいな~と感心した次第。

尚、海のコンディションは波が高く、透明度も若干低めだったので、写真映えするようなものが少なく残念なショットばかりになってしまった。

知らん魚と、フロートのしたの小魚。

1503837397 1503837400

鯛の群れと、大きい魚

1503837402 1503837404

海から眺める富士山とキンギョハナダイ。実際はもっと綺麗だった…

1503837407 1503837409

タカッパと鯛の群れ(二度目)

1503837411 1503837414

天気は良いけど、風が強かった。あとこの時期でも海の家がやっていて、海水浴客が結構いたのはびっくりでした。 普段の年は終わっていてガランガランだしね。お盆が寒かったから延長したのかな?

1503837416

駐車場でタマムシを見つけた。人生で二度目かな数十年ぶりに見て感動してしまった。

1503837418

次のスノーケリングはいつ行けるのだろうか?

Gene symbolでpubmed検索をする

Gene symbolでpubmed検索をしたい場合には[sym]というオプションを付ければいいらしい。

あとはeutilに投げればXMLが返ってくるのでXPathでゴニョればいい。

例えばトポイソメラーゼIIでガン関連の文献がいくつあるかを調べたい場合にはこんな感じ。

import requests
from urllib import quote_plus
import xml.etree.ElementTree as ET

base_url = "http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term="
query = "TOP2A[sym] AND Cancer"

url = "{0}{1}".format(base_url, quote_plus(query))
r = requests.get(url)

root = ET.fromstring(r.content)
print root.find("Count").text

ここで一句

田子の浦に うち出でてみれば ワンリキーの みなと公園に飴は降りつつ

1503218641

先週くらいから田子の浦みなと公園がワンリキーの巣になっていて、ワンリキー集めおじさん達が大挙して押し寄せていました(10人くらいだけどw)

朝の一時間くらいで10匹ぐらいはゲットできて飴も結構たまったので、暑くなる前に退散してカイリキーを少し揃えてみた。

1503218643

最近ハピナス、ラッキー増えたからこいつらでさくさく撃破していきたい、カビゴンも。

そして通勤経路のジムバッジを金にして、アイテム不足を解消したいw

kangkong = 空芯菜

kangkongって空芯菜だということ知らなかった。

よく考えれば空芯菜って亜熱帯の野菜だから使わないわけないのにね。

というわけでカンコンアドボを作ってみました。

1503218638

あと空芯菜ってお浸しにしても美味しいらしい…

最近色々と勉強になることが多い。

炒め物を盛り付ける洒落た大皿ほしいなぁ。

ポケモンGO(Lv34)

前回から二週間くらい。70000XP/dayといったあたり。去年の今頃どうだったかなとログをチェックしたらレベル25,6ってこんなにポケモン貧弱なのかと絶句したw

レイドで勝てないじゃん…

1503058032

ところで70000XP/dayはコンスタントだったわけじゃなく横浜イベントが大きかったかも。あとゴプラは偉大。押しっぱなしで放置するだけで通勤電車で5000XPくらい入るのは嬉しい。東京だともっと効率がいいんだろうなぁと思った。

ミュウツーの先鋒はカイロスにすると決めているwので楽しみ。バンギラスはCP3000超えを2体作ったけどもう一体作るのに400km歩かないと行けないのが辛い。

1503058028

個体値100%にはとぐろって名前をつけていて、愛でないといけないんだろうけどゴローニャは横浜レイドで幾つかとっちゃったので飴と砂を突っ込む余裕なんかない

1503058030

レベル35まであと125万XP

横浜にポケモン狩りに行きつつ、ビール飲んだりホルモン焼いたり

横浜のイベントに行ってきた。既に参加した方にボール足りるか聞いたところ、心もとないということだったのですごい傷薬を全部捨ててボールにしてから参加した。横浜に着いたときにはモンボは380個くらいあったけど、帰るまでに投げきった。

1502676798 1502676800

リアルジムとリアルポケストップ

1502676802 1502676805

一通り投げまくって馬車道のタップルームで昼食。料理のレベルは沼津のタップルームと違う…。正直今沼津で昼酒するならリパブリューでいいかなと思う。

1502676810 1502676812

ピカチュウカーニバルとピカチュウ大音量発生機

1502676814 1502676816

桜木町駅を超えて野毛へ

1502676821

野毛のホルモンセンターでホルモン焼きつつ、ボールを投げる

1502676823 1502676825

ペラペラ焼きはなかなか。あとメガハイボールが90円と安い、ハッピーアワー最高。

1502676828 1502676830

野毛もルアー炊かれていて、こっちのほうが快適かもしれない

1502676832

最終的に全部投げきって桜木町駅でポケモンに囲まれているのに投げるものがないという事態に。

1502676834 1502676836

ゴローニャレイドを2回やってゴローニャは充実した。下田産ゴローニャほどの愛着はないがCPはある程度あげておくつもり。

1502676838

バリヤードは湧きまくっていた。ほとんど役に立たないので図鑑埋め。

1502676840

アンノーンはOとAがゲットできず無念の帰宅

1502676842

とても楽しかったので、またイベントがあれば積極的に参加したいところ。

手元のファイルをサーバーに送ってさらにサーバーでシンボリックリンクを張る(Pythonで)

Windowsの共有フォルダはCIFSを使ってLinuxにマウントすればいいということをちょっと前に知って、それ以来Windowsの共有フォルダを監視しつつ、ゴニョゴニョするようなサービスを幾つか作っている。メリット・デメリットはあるけど、ウェブブラウザのフォームを頑張るよりも楽なタスクも結構あるのではないかなと思う。

でクライアントのLinuxマシンから共有ディレクトリをマウントしておいて、適当なトリガーでフォルダの中身を漁って必要な情報をサーバーのデータベースに登録したり、ファイルをpushしたりするのはscp使えばなんとでもなって、pythonでやるんだったらparamiko使うのが普通だと思うんだが、送るファイル名に整合性がなくてシンボリックリンクを張ってキレイな別名をつけたくなった。

ま、sshからln -sっぽいことすればいいのかなと思ったら違った。sftp使うみたい

ssh = SSHClient()
ssh.set_missing_host_key_policy(AutoAddPolicy())
ssh.connect(host)
scp = SCPClient(ssh.get_transport())

scp.put(source, dest)
sftp = ssh.open_sftp()
sftp.symlink(dest, symlink)

最後の二行でシンボリックリンク張ってます。

ところで、最近コードのエントリあげてないなと思ったので調べたら、全然書いてないじゃないか…

BBQと今年初のスノーケリング

土曜日は知り合いの家族とBBQに行った。

ドラム缶様ピザ窯でピザった。

1502021940 1502021942

日曜は今年はじめてのスノーケリング。途中でヤバイジムを見つけた。これは破壊するのに躊躇するわw

1502021945

井田は相変わらず綺麗でした。ウニだらけ注意報が発令されていたけどほんとにウニだらけだった。はじめて。

1502021922 1502021924

ルリスズメダイときんぎょ

1502021926 1502021929

きんぎょとよくわからん魚

1502021931 1502021933

こっちもよくわからん

1502021936 1502021938

チョウチョウウオも結構いて楽しめた。今年はじめてのスノーケリングだったので耳抜きに難儀したけどだんだん慣れてきた。今年はあと3回は行きたいところ。