virthualenvwrapperでmkvhenvしたら自動的にworkhonするようにした

mkvhenvっていうmkvirtualenvに対応するコマンドを用意した。mkvirthualenvしたあとにworkhonするのはめんどくさかったので、かなり快適になった。

泰平居酒屋で昼から呑んでた

先々週くらいの話。

@bg7860が新年会をしようと云うので、いつものように三島で飲もうかと思ったんだが、いい機会なので静岡まで足をのばして昼間から酒を飲むことにした。

目的の泰平居酒屋はオープンが15時30分という、昼から呑むにはもってこいの場所ですね。

1358942136

開運をやりながら白子を。

1358942132

造りの盛り合わせも開運で。

1358942133

金目の煮付けは初亀で。

1358942135

海つぼとはばい貝のことらしい。

1358942138

満足の昼酒だった。静岡いいなぁ、なんかいい職場ないかな。東京とか海外でもいいけど。

ChEMBLデータベースのPythonインターフェースを書いた

ちょっと欲しくなったので探してみたらpychemblを見つけた。

しかしメンテされてないようなのでフォークして更新しようかなと思い、ソースを眺めたら面倒くさそうな感じだったので、昨日一日使って新しいのを作ってみた。

declarativeでautoloadしているのでスキーマが変わってもメンテしやすいかなと思う。コーディングのほとんどの時間をテスト書くのに使ったので結構疲れた。それから、メタプログラミングはどうかなと思ったのでdbのuriは環境変数CHEMBL_URIで設定するようにしておいた(デフォルトはchemblのmysqlのインストールそのまま)。

chembl = ChEMBLDB(uri)とかやりたい場合にはFlask-SQLAlchemyのソースが参考になると思う。

ターゲットから活性値とInChiKeyをフェッチする

ターゲット名に含まれるアッセイ系から活性と対応する化合物の構造をとってくる。

from pychembldb import *
for target in chembldb.query(Target).filter_by(pref_name="Tyrosine-protein kinase ABL"):
    for assay in target.assays:
        for activity in assay.activities:
            print activity.published_value, activity.molecule.structure.standard_inchi_key

ジャーナルから活性値とInChiKeyをフェッチする

ジャーナル(doi)に含まれるアッセイ系から活性と対応する化合物の構造をとってくる。

from pychembldb import *
for journal in chembldb.query(Doc).filter_by(doi="10.1016/S0960-894X(01)80693-4"):
    for assay in journal.assays:
        for activity in assay.activities:
            print activity.published_value, activity.molecule.structure.standard_inchi_key

その他

ChEMBLのスキーマみれば大体わかるだろうし、その通りに動くでしょう。このスライドも参考になると思う。

余談ですが、Rubyだとbio-chemblがあるそうです。

今後やる予定のこと

  • とりあえずテーブル名をそのままクラス名にしたせいでlookupとかDictionaryとかついててダサいのでそこら辺の名前は変える(なのでクラス名とかメソッド名はまだ変わります)
  • relationが不完全なので追加していく
  • one-to-oneみたいなのもone-to-manyとしてrelation張っているせいでリストになっている部分は修正する(上だとmolecule.structures[0]とかださい)
  • pypiに登録する(pipでインストール出来ないと面倒くさい)

130128 追記

  • one-to-oneにしたのでmolecules[0]がmolecule
  • Dictionaryを除いたのでTarget,Moleculeになった

Building Node Applications With Mongodb and Backbone

Backbone.jsでクライアントサイド、Express+mongoose(MongoDB)+socket.ioでサーバーサイドで、チャットアプリをつくるという内容。

ProductName Building Node Applications With Mongodb and Backbone
Mike Wilson
Oreilly & Associates Inc / 1666円 ( 2012-12-31 )


誤字が多かった。コードはGithubにあるのでIssueみるとどこが修正されたか分かるので、確かめながら本を読んだほうがイイ。

あと、実際書いてみるとBackbone.jsのモデルとmongoのモデルの名前付けが紛らわしい。実際、本書のタイポはここらの名前付けルール(小文字かキャメルケースか)だったりするので、サーバーとクライアントの言語は変えたほうがいいのかなぁと思った。

あとmongooseみたいにスキーマ定義するのはどうなんだろう。それだったらSQLでいいんじゃないかなと思ったりするが。

こっちの本を参照しながらひと通り読んだのだけど、全文公開されているのでありがたい。

ProductName Developing Backbone.js Applications
Addy Osmani
Oreilly & Associates Inc / 2778円 ( 2013-05-22 )


Kindleに入れて気になった時に見れるようにしておきたいかも。

今日のリスト(131027)

サカナクション聴きすぎてサカナの気分だったので。

Over (featuring Zarif) / Breakage
Remainings II / Adam Beyer & Joel Mull
数え足りない夜の足音 / UA
Faith / Aeph
Love Like This (Ft.Craig David)(Club Mix) / T2
アイデンティティ / サカナクション
Bubbles / Makoto
Touch Sound / Xilent
シーラカンスと僕 / サカナクション
Innocence / Nero
Neurosis (140 Mix) / June Miller
ひまわり / タテタカコ

Adam Beyerのミニマルに数え足りない夜の足音を被せるのは気持よすぎた。

ProductName Illuminate~the very best songs~
UA
ビクターエンタテインメント / 2940円 ( 2007-11-08 )


「数学的推論が世界を変える」がおもしろい

Haskellなんかの型推論とか量子論をかじっているヒトが読むとかなり面白いと思う。述語理論、ゲーム理論、ゲーデルの不完全性定理なんかを説明して最後に確率的クリピキモデルに至るという内容。事例で金融の話が度々登場する。

僕はチューリングの定理(対角論法は知ってたけど)を理解できたのと、金融で不確定性原理が出てくるのが「原子の観測はミクロなのにマクロな市場でも表れるのか!」と驚いたが、結局介入しないと観測できないということから来てるんだろうなぁと解釈した。

  • 相互推論は様相論理の一つとみなすことができる
  • チューリングの定理が成り立つポイントはチューリングマシンを自然数で表すことができることである
  • ソロスの「再帰性」は「何の影響も与えることなく、外側から世界を理解することができない」ことを意味している
  • 確率的クリピキモデル

他にはボトムの意味をもうちょっと深く理解したのが、意外な収穫。

ProductName 関数プログラミング入門 ―Haskellで学ぶ原理と技法―
Richard Bird
オーム社 / 3990円 ( 2012-10-26 )


ゲーデルの不完全性定理を知るには数学ガールが良いとおもう。

ProductName 数学ガール ゲーデルの不完全性定理 (数学ガールシリーズ 3)
結城 浩
ソフトバンククリエイティブ / 1890円 ( 2009-10-27 )


小さな会社のFacebookページ制作・運用ガイド

Facebookはローカルな関係をネットに投影しているだけなのであまり面白さを感じないんだけど、店舗持っているヒトには良いツールなのかもしれないなぁと思ったので読んでみた。というより佳肴 季凛さんのFacebookの使い方上手だなぁと思ったので、Facebookも面白そうだなと思ったという。

要するに美味しいものが好きなだけなんですが、、、

オンラインからオフラインに導く施策をO2Oっていうらしい(知らんかった)。

本書は入門者向けの構成かな、インサイトの見方くらいしか見るとこなかった。もう少し、ソーシャルな方向から考えてる本のほうが良かったかな。

ズルデザStylusでモック体質の愛され★ウェブサイトみたいな

Rubyのヒトは迷わずSass+Compass使うのかもしれないけど、僕は見た目がすっきりしているStylusのほうが好きです。

Stylusのよいところ

  • Pythonっぽくかける
  • coffescriptっぽくもある
  • {}を極力使わなくていいので右手の小指に負担がかからない(Emacsユーザーは酷使するのは左手小指で十分)
  • Jadeを使えば全てインデントで統一できる
  • nibがある

Stylusのよくないところ

  • LESS2Stylusがない(twitter-bootstrap困る)

Sass関係ないですね。

ズルいStylus

ズルいデザインが良かったので、自分のためにStylus+nibで関数(mixin)にしておくことにした。CSSプリプロセッサのメリットはこういったデザイナーさんの知恵というかプロセスに名前を付けて単なる関数に落とし込めることだと思うんだけど、そういうライブラリはまだあんまないよなと思う。

こういう考え方はwebよりもPixateみたいなスマホとかそっち方面のほうが効果的なのかなぁ。

stylusにtext-shadowがなかったのでズルい線とズルいグラデーションしかやってない。ボックスとかは書くの飽きた。

最近プログラマー(僕はプログラマーじゃないんだけど)向けのデザインのスライドが増えてきて嬉しいですね。

もちろん予約した

ProductName スマートフォンデザインでラクするために
石嶋 未来
技術評論社 / 2499円 ( 2013-01-29 )


ジブリの森に行ってきた

先週ちょっと行ってきた。中は写真撮影禁止だが、外はOKなので少しだけ。

屋上にラピュタロボがおった。

1358941978

トトロもおった。

1358941977

正直あまり期待してなかったがいい意味で裏切られた。

自分のアタマで考える

今さら読んだが、基本的なことが書いてあったので、知らない人が読むと目から鱗なのかもしれない。

結局フレームワークにあてはめるのは単なる技術だからなぁ。フレームワークを駆使するのは「未来に通用する論理の到達点」の入り口に立つためであってという感じかなぁ。立たないってのはそれ以前の問題なので。結局その先が難しいんですよね。

知識とは「過去の事実の積み重ね」であり、思考とは「未来に通用する論理の到達点」です。

ProductName 自分のアタマで考えよう
ちきりん
ダイヤモンド社 / 1470円 ( 2011-10-28 )


ブレークスルーってのは論理の積み重ねとかフレームワークからは見いだせないと思う。フレームワークで過去の事実の積み重ねから枠を作っておいて、その枠を如何にに破壊するかというか、そんな感じだからなぁ。

「自分のアタマで考える」ってことはそういうことかなと思う。