WIPOで公開番号からpdfを落とす

公開番号.pdfとかなってるんだろうから楽勝だろうなと思ったら、そんなことはなくてドキュメント用のIDがついていて面倒くささが20%増量してた。

検索してpdfのリンクをスクレイプしてダウンロードするようにしておいた。

こんな感じ

import sys
import requests
from pyquery import PyQuery as pq

wipo_url = "http://patentscope.wipo.int/"

def get_pdf_url(wipoid):
    url = wipo_url + "search/en/detail.jsf?docId=" \
        + wipoid + "&recNum=1&tab=PCTDocuments"
    d = pq(requests.get(url).content)
    pdf_link = pq(d('table.rich-table:eq(1) a:contains("PDF")')[1]).attr('href')
    return wipo_url + pdf_link

if _name_ == '__main__':
    wipoid = sys.argv[1]
    pdf_url = get_pdf_url(wipoid)
    with open(wipoid + ".pdf", "wb") as f:
        f.write(requests.get(pdf_url).content)

pyqueryがちょっと決め打ちしすぎなのと、requestsでgetしたのをファイル開いて書き出してるんだけどsaveみたいなメソッドないのかな?

チケット駆動開発を読んだ

付箋の数と良書度は比例する(脳内調べ)。

アジャイルとウォーターフォールという二元論的な考え方は、その概念が普及する段階では役に立ちましたが、もうその次代は終わりつつあると思います。様々な開発法があるなかで、どのようなプロセスで開発するか、具体的な実践技術が求められているでしょう。

1347269572

僕のチケット駆動に対する期待は、創薬研究への応用なので、チケット駆動開発の背景にある考え方がぎっしり詰まった本書は、色々な発見や再発見があったり、今の仕事のアナロジーを見つけたりとかなり満足度の高い本だった。ただ、redmineをある程度使っているとか、アジャイルサムライ読んだとかそういいう基礎知識は必須なので、いきなり本書を読むよりは前作を読んだりしておいたほうがいいかなと思う。

ProductName Redmineによるタスクマネジメント実践技法
小川 明彦
翔泳社 / 3444円 ( 2010-10-13 )


ProductName アジャイルサムライ−達人開発者への道−
Jonathan Rasmusson
オーム社 / 2730円 ( 2011-07-16 )


本書は、ソフトウェアの使い方が載っているわけではない(mantisくらいかな)ので、そこは注意。

ProductName チケット駆動開発
小川 明彦
翔泳社 / 3444円 ( 2012-08-24 )


処理手順

障害管理ツールの処理手順(p.24)を創薬探索系に重ねると、

  • 障害発見者: アッセイ担当
  • BTS: BTS
  • 担当者: 合成担当

という感じになるかな。そうすると障害とは何か?という話になるが、創薬系だと予想外の結果ということになるだろう。

予想外というのは仮説駆動開発の文脈だったら、なんのために合成するのか?という最初の目的が達成されたかどうかで判断するところだろうが、明確な目的を持って合成されることは少ないので、MMPに照らし合わせてcliffかどうかで判断してもいいかもしれない。結局cliffは予測外の事象だからね。

リポジトリマイニング

創薬系だとリポジトリにあたるものは既に存在するので、そこから今後の予測を行う技術は非常に興味がある。本書では詳しく解説されてないので、他の文献をあたろうと思った。

バージョン

本書を読んでredmineのバージョンの使い方を理解した。だが、創薬系だと多次元で並行的に進めていくので、ソフトウェア開発だと2系と3系を同時に開発するみたいな感じかなあ。ちょっと難しい。

バージョンの概念は、単なるタグだけでなく、合意というマネジメント要素も含んでいるのです。

p.295のバージョンの概念が欠落する理由も参考になった。

2012.09.18追記

著者の方からレスポンスを頂いた。ありがとうございます。

Q.創薬系のプロジェクトのバージョンとは何か? A.プロジェクトのマイルストーンに相当します。  学会で報告する、創薬研究の開発が完了する、などのチェックポイントが大きなマイルストーンになりますが、たぶん1ヶ月単位で意味ある成果物を出せるように、マイルストーンの目的を明確にすればいいでしょう。

大きいマイルストーンはあるのだけど、一ヶ月単位で測れるようなマイルストーンというのはあまり見ない気がする。というわけで、今必要なのはそういうブレークダウンした形のマイルストーンをどう定義するかだな。そういう意味ではメトリクスも足りてないだろう。

もう一つは、創薬開発手法は生産ではなく開発だという点において、トヨタ生産方式みたいな工場の生産系よりはソフト開発手法にすごく似ているのだけど、大きく異る点が1つある。 それは探索の割合が非常に大きいということだ(ライフサイエンス全般に言えることだけど)。これは工学と明らかに違って、コントロール出来ない要因を多分に含んでいて、それを考慮したような仮説ドリブンなマイルストンが必要なんだろうなぁと。

もう少し丁寧に考える必要があるが、理解が前進したので嬉しい。

Photoshopでキャラデザイン

PyConJPに行ってて、子供の面倒を見なかったので、今日は一緒にお絵かきした

ProductName Photoshopキャラクタデザイン (MdN books)
伊藤 輝
エムディエヌコーポレーション / ?円 ( 2003-07 )


この本はキャラクターごとに完成までの目標時間が書いてあるので、難易度が類推できる。娘はペンタブ使って描いてたけど、これだったらマウスのほうが効率的かも。

PyConJP2012二日目

聞いたセッションは以下

基調講演の緊張感が面白かった。YAPCなんかでは他言語比較はよく見た気がするけど、PyConでPerlやRubyと比較してた。個人的にPythonにも正規表現リテラル欲しいなぁと思っているので、そこは同意。

基調講演後はSphinxの部屋にいたんだけど、電車の関係で早めに帰った。後半はディープな話題に入っていったのかなぁ、それとも初心者向けの話題が多めだったのか気になる。後でスライド見ようっと。自分用のHTMLテーマとか作りたいし、職場のレポート自動化にSphinx使えないかなぁと思っているので、そのうちいじってみようっと。

そういえば、SphinxのソースコードリーディングメモをSphinxで管理してるけどpyccoのほうがイイかもしれないなぁ。

PyConJP2012一日目

PyConJP2012の一日目は超楽しかった。

python+awsのepubを買おうか迷っていたら、PyConJP用に薄い本として特別に出版されていたので即ゲットしておいた。

1347712165

僕はこのブログをFlask+gunicorn+supervisorで動かしているのと、職場のウェブサービスも似たような構成にしているので、今日の全てのセッションが楽しかったし勉強になった。

基調講演

マシン名がナウシカ。

Python Type and Object

あとで、Python Types and Objectsを丁寧に読みなおそうと思った。

演者のスライドにjavascriptとpythonのクラスシステムを比較したのもあって、それも面白そう。

MongoDB with Python

Flask-SQLAlchemy+Flask-WTFが便利なのでなかなか移行する気になれないなぁ、でも気になってるんだよなぁという状況だったのだけど、ウェブサービスじゃなくて、ケモインフォマティクスの仕事でMongoDB使えそうじゃんと思ったので、来週会社に行ったら早速遊んでみる。距離のインデックスがちょっとよさげ。

発表内容もクックブック的なものも織り込まれていて良かった。スライド公開すんだろうか?して欲しいなぁ。

分散バージョン管理システムの組織化

ブランチ戦略がよくまとまっていて、かなりわかりやすかった。ただ僕はチーム開発してないので、最初の方に出てきたパターンで動いているのだが。

SQLAlchemyと僕

入門的な内容だったが、最後のツール紹介のAlembicってのは初めて知ったけど、そのうち使うことになりそうなので覚えておく。

Gunicorn what’s next? The new web challenge

gunicornの今後に関して。gunicorn便利ですよね。

Python 製ビルドツールのススメ

wafを積極的に使っていこうと思った。

pygamessの便利なところ

懇親会でpygamessじゃなくてもFacioで良かろうと言われたのだけど、対話環境よりも、スクリプトでやれたほうがいい場面が多いので書いておく。ちなみに僕はAvogadroユーザーです。

適当なsdfが手元になかったので

C
CC
CCC

というSMILESのリストを

babel -ismi carbons.smi -osdf carbons.sdf

とやってsdfにしたものを使いました。

sdfの分子群に対して計算したい場合、対話環境だとチマチマと作業しないといけないが、スクリプトだとforループを回せばよいし、結果がmoleculeオブジェクトで返ってくるので、そのあとのケモインフォマティクス的な取り回しが楽です。Gamessのアウトプット睨みながらコピペとか苦行だし、アウトプットの処理用のパーサー書くならinputから全てスクリプトで処理したほうがいいんじゃないかなと。

>>> import pybel
>>> from pygamess import Gamess
>>> g = Gamess()
>>> mols = pybel.readfile('sdf', 'carbons.sdf')
>>> for mol in mols:
...   nmol = g.run(mol)
...   print nmol, nmol.energy
... 
C   
 -39.7265813363
CC  
 -78.3052918313
CCC 
 -116.885136991

ケミストのように化合物を個別のものとして一つ一つ丁寧に対応していくのか、情報論的にまとめて取り扱いたいのかとかそういうあたりで使い分ければいいのだと思う。オービタル見たい場合にはGUI必須だけど、エネルギーみたいな数字だけに関心があるのであればGUIは要らないかな。

セミナー終了

これで、座長と演者をしてきた。

いまいち良くわからない感のタイトルを付けてしまったのだけど、LBDDには量子化学計算が必要という内容にした(ちょっとこじつけた)ので、演題の流れ的にかなりアウェーの方向を向いてしまうかなとちょっと心配だったのと、スライドの構成もちょっと散漫だったので主題が見えにくかいかなと思ったのだけど、懇親会で色々とフィードバックをもらえたので良かった。

明日からpyconjpなので楽しみだ。

演題を聞いたり、懇親会でディスカッションしながら色々参考になったのでメモ

歪みエネルギーを許容したドッキングの双対表現

直感的には複合体結晶構造から歪みエネルギーを取り去れば活性向上につながるということの裏返しだろう。ということは、ドッキングシミュレーションや複合体結晶構造をうまく捉えれば、このような活性向上のヒントが得られるということだろう。これが今回、一番の収穫かな。

MDを合成案に使うヒントを得た

おー、こうやればいいじゃんとか思ったのだけど、メモを取ってなかったのですっかり忘れたが軽い興奮だけが残っている。思い出したら追記するかもしれない。トラジェクトリー絡みだったかな。

ライブコーディング力を鍛えたい

突然思いついてライブコーディングをはじめたけどたどたどしかった。例えるなら生まれたばかりの子鹿のようだったので、次はツタタタターンくらいのノリでやりたい。

量子化学計算では解は得られないのか?

経験のある方から量子化学計算でdockingの理解は無理だよと指摘を受けたのだけど、これはもう少し考えてみてもいいのかなと思っている。結合モードの再現は無理なのかもしれないが、そこはゴールじゃなくて、ケミストが次の有効な一手を生み出せればいいと思うので。とはいえ、個人的にはドッキングというのは出発物質と生成物質が変わらないだけの化学反応でしょ?と思っているのでサイエンスとしての結合の理解は量子化学以外になにが必要なんだろうか?もう少し突っ込んで議論しておけばよかったかなと後悔。また今度聞こうっと。

MMPとFBDDが本質的に一緒じゃないのってどういことよ?

思いついたので一行入れておいたら質問された。こういうアルゴリズム使うとなんとなくわかると思うが、結局MMPは大きいフラグメントに小さいフラグメントをリンクしてるわけであって、リンキングによるエネルギーロスを考えなくていいのはどういう場合なんだろうねーというあたりを考えてみると面白いのではないかと。

国際学会English―挨拶・口演・発表・質問・座長進行

読み流しておこうと思ったのだけど、結局時間がとれなかったというか、黒龍のひやおろしを呑み始めてしまったので、集中力が霧散して緩みまくっている。

ProductName 国際学会English―挨拶・口演・発表・質問・座長進行
C.S.ラングハム
医歯薬出版 / 2625円 ( 2007-04 )


明日の新幹線のなかで流し読みしておこう。

というより、LBDDとかいいつつ120%量子化学に傾倒しているので、明日の内容はアウェーすぎるんじゃないかと不安がないわけではないが。まぁ、自分の中ではLBDDの行き着く先は量子化学計算だと思っているので空気を読まずに発表する。

そして、明日のセミナーが終わったら、次の日から二日間PyConJPなので楽しみだ。

あおものくんの育て方

小さいポットやエコバッグなどを使って室内とベランダで青物を育てるテク。

  • ルッコラ
  • リーフレタス
  • ニラ
  • スティックセニョール

ルッコラとリーフレタスは定番ですな。

スティックセニョールは、今頃は苗が出回っているので試すのにいいかな。青虫対策もできるし、プランターのほうがいいかもしれない。ちょっとやってみたい。

それからニラは多年草なので家庭菜園で植える場合は気をつかうが、プランターだったらお気軽かもしれないなぁと思った。手入れは大変だろうけど。

ハイポネックスが余っているのでちょっと色々試そうかな

ProductName ハイポネックス 原液 800ml

ハイポネックス / 1029円 ( )


Titanium Studioのキーバインドを変更していつも使っているEmacsの操作性に近づける

動的略語展開がなくてイライラすんなーとぐぐったら「eclipseの動的略語展開をC-oに割り当てたら調子よくなった。」という自分のtweetにヒットして、なんだこれ?となった。どうも二年くらい前にAndroid絡みで設定したことがあるらしい。自分のBlogを検索しても出てこないのできちんとメモっておくことにした(再来年くらいの自分にむけて)。

変更の方法

環境設定 -> general -> Keysにキーバインド一覧があるので適切なものを探しだして再アサインするだけ。

  • 動的略語展開はCtrl-.に割り当ててあったので、Ctrl-oに割り当てなおした。
  • Delete to End of LineをCtrl-k
  • UndoをCtrl-/

他にも割り当て直したらメモっておく。