Open Source Software in Life Science Research

仮設駆動デザインを強く主導しているっぽいAZの論文読んでて、そういえばDjango製であるところのDesign Trackerの論文って見たことないなぁと思って探してたら、すでに購読しているBlogの著者が開発者だった。しかもOpenEyeにジョインしているのか。

というわけでこの本超読みたい。

The book is divided into four parts. Part one looks at laboratory data management and chemical informatics, covering software such as Bioclipse, OpenTox, ImageJ and KNIME. In part two, the focus turns to genomics and bioinformatics tools, with chapters examining GenomicsTools and EBI Atlas software, as well as the practicalities of setting up an ‘omics’ platform and managing large volumes of data. Chapters in part three examine information and knowledge management, covering a range of topics including software for web-based collaboration, open source search and visualisation technologies for scientific business applications, and specific software such as DesignTracker and Utopia Documents. Part four looks at semantic technologies such as Semantic MediaWiki, TripleMap and Chem2Bio2RDF, before part five examines clinical analytics, and validation and regulatory compliance of free/open source software. Finally, the book concludes by looking at future perspectives and the economics and free/open source software in industry. - See more at: http://www.woodheadpublishing.com/en/book.aspx?bookID=2830#sthash.n8wZvfrs.dpufOpen source software in life science research

特にDjangoを採用した経緯がちょっと知りたかったりする。日本の製薬企業の研究所の規模程度だったらFlaskで十分な気もする(maxでも3000userくらい捌けばいいんでしょ?)が。

でもやっぱDjangoはあつかえるようにしておいたほうがいいのかなぁー、悩む。

次々回のShizuoka.pyで誰か入門Djangoとかやってくれないかなぁ。

自家製ソンジャーネ

2人目産むの無理ゲーすぎるというエントリというか愚痴を読んで。給料が少ないとかそういうのは問題になっていないという空気感は取り入れてある。

頼れる実家が近くにあって、旦那も定時で帰ってくる、みたいな夢のような非実在家族

頼れる実家は近くにないけど、僕は基本的に定時で帰っている(妻は専業主婦ではないが正社員でもない)。僕の場合は朝はかなり早く出社するので残業していることになるけど、子供が病気になったら(積極的に)休みを取ったり、まぁそういう分担は普通。もしパートナー間で分担しない場合、専業主婦じゃないかぎり無理ゲーだし、専業主婦だとしてもかなりハードなんじゃないかなと思う。僕のまわりを観測してみると二人以上の子持ちはだいたい専業主婦だし、旦那はみんな遅くまで働いている気がするなぁ。

で、なぜ彼ら(旦那ね)は家庭へのコミットが少なくならざるを得ないのか?

それは社会がそういうシステムになっていてそれをみんなが肯定しているからでしょう。

会社における重要度緊急度マトリクス

自己啓発系によく説かれているように、重要度緊急度マトリクスのうちで大切にしなければならないものは第二象限の重要だけど緊急でないものですね。できるサラリーマンの皆さんは当たり前過ぎて言うまでもない。

じゃぁ第三象限ってなんなの?っていうのは素直に生じる疑問なんだけど、自己啓発系の本でこの象限に関しては言及が非常に少ないように思う。

僕は、既存の(特に年功序列が色濃く残る企業)においては、重要じゃないけど緊急だという第三象限をこなすことで、出世ポイントが貯まると解釈している。これに年功序列ポイントと労組ボーナスを加味して出世つまり給料の上昇という形で、自分の仕事へのフィードバックが行われるわけですね。

lifehack

ただ、時間は万人にとって平等であり、大抵の場合、第二象限、第三象限を同時にカバーする余裕はないので選択を迫られるわけだ。

  • 第三象限を切り捨てる
  • 第三象限を残業という拡大仕事枠を用意して取り込む

大抵は後者を選択するせいで遅くまで働くことになり、2人目産むの無理ゲーすぎるのようにパートナーとの負担分担が難しくなっているのだろう。僕の場合は第三象限切り捨て派として暮らしているために、家族や子供のために使う時間はそれなりにあるが、最近特に出世のレールからは若干はみ出してるかなぁと感じている。

つまるところ、第三象限はムダというわけではなく(そもそも第一象限は差別化要因ではないために)会社はああいう重要でない割に緊急なものをどんだけこなすかで、会社に対する忠誠心を測っているのかなぁと。

なんというか「残業してまで第三象限的な仕事をこなす」 イコール 「会社にコミットしているのよ」というコンセンサスが取れているのがそもそも問題なんじゃないかなぁと。

一昔前の終身雇用型の労働環境だったらこれが生き方の選択としてごく普通だったんだろうけど、これからはこのやり方でいいのかなぁ?もっとちゃんと考えたほうがいいんじゃないのかなぁと思うんだけどどうなんだろうねー。

そんじゃーね

わかりやすいプレゼーションのためにはDETAILが大切

Topic決まってないとぶれる。

  • Deliverry (効果的な話しかた)
  • Expectations (期待される内容)
  • Topic (中心となる主張)
  • Audience (聴衆についての情報)
  • Individual (自分の個性)
  • Language (使う言葉)

それから分かりやすいタイトルを付ける必要がある。僕はタイトルをわざわざ無意味な方向に持って行ったりアブストラクトもわざわざわかりにくくしようという謎の性癖があって、しかも自覚しているのでそのうち治す。

スピーチのタイトルは以下の2つのうち1つにあてはまる必要がある

  • 具体的に説明する断定的な表現
  • 解答の範囲をはっきりさせる明確な質問

また、スピーチは次の3つの機能のうち1つを持っていなければならない

  • 聴衆に情報提供すること
  • ある問題について説明したり、反対意見を持つ人々を説得すること
  • 新しいことに取り組んだり、何かを継続してやるよう刺激すること

トピックの主張の反対に意味があるかを考える。なければその主張はおかしい

  • 政府は今後5年にわたり、国民の幸福を目指している -(反対) 政府は今後5年にわたり、国民の貧困を目指している

こういうのはだめ。

ネット選挙のすべて

うちの会社がネット選挙系案件を全てお断りしている5つの理由を読んで、

これはかつてない規模の失言をウォッチできる千載一遇のチャンスではなかろうか!?

というわけで、しし座流星群やホエールウォッチングよろしく、来るべきネット選挙失言大発生にそなえて、予備知識を仕入れているのであった。

ProductName 新法対応! ネット選挙のすべて
飯田 泰士
明石書店 / 1260円 ( 2013-05-18 )


選挙用に電子メールを送っていいのは

  • 同意した者
  • 政治活動用電子メールを継続的に受信している者

政策についてメールで問い合わせたら、勝手にメルマガが送りつけられるようになったとかは駄目。

表示義務

  • 選挙用である旨
  • 送信者の氏名

とかは明記しないといけない。

ポイント(頒布はいいけど掲示はだめ)

パソコンのディスプレイに候補者のディスプレイに表示させて家の外壁に取り付けるようなことは駄目らしい。

落選運動の表示義務

電子メールアドレスが正しく表示されなければならない

pychembldbでつくるChEMBLウェブサービス

Flaskpychembldbを使えばChEMBLウェブサービスみたいなのは簡単に作れるよと、朝の30分くらいを使ってちょっとやってみた。

pychembldbはSQLAlchemyのラッパーなので、Flaskのほうではルーティングを設定して、ハンドラ関数用意すればいいだけ。特にFlaskはJSON化する関数が用意されているのでJSONで返すのはラク。

@app.route("/chemblws/compounds/<chembl_id>")
def compound_by_ChEMBLID(chembl_id):
    compound = chembldb.query(Molecule).filter_by(chembl_id=chembl_id).one()
    result = {...}
    return jsonify(result)

という感じでDictionaryを用意してxmlかjsonに変換して返せばいいので、とりあえずChEMBLIDを与えると対応する化合物情報を返すAPIを実装してExamplesに用意してみた。

自前でサービスを用意することのメリットは

  • 外部に情報が流れない
  • レスポンスが速い
  • 沢山投げても怒られない

ということの他に

  • 自分たちの用途に合わせて 拡張できる
  • データベースのスキーマをきちんと理解できる

という部分もあるかなと思います。例えばChEMBLウェブサービスにはジャーナルのdoiから構造リストを返すというAPIは存在しないけど、project毎にジャーナルをまとめていたりするときにはそういうAPIが用意されていると便利かもしれませんよね?

最初、ウェブサービスが返す情報は固定なのかなと思い、決め打ちで用意したのだけど、CHEMBL1CHEMBL2で返ってくるjsonのキーが違うので、valueが存在するのものをすべて返しているのかな。

もう少しちゃんと出来たらきちんとテストを書こう。

CHEMBL1

{
    "compound": {
        "acdLogd": 7.67, 
        "acdLogp": 7.67, 
        "alogp": 3.63, 
        "chemblId": "CHEMBL1", 
        "knownDrug": "No", 
        "medChemFriendly": "Yes", 
        "molecularFormula": "C32H32O8", 
        "molecularWeight": 544.59, 
        "numRo5Violations": 1, 
        "passesRuleOfThree": "No", 
        "rotatableBonds": 2, 
        "smiles": "COc1ccc2[C@@H]3[C@H](COc2c1)C(C)(C)OC4=C3C(=O)C(=O)C5=C4OC(C)(C)[C@@H]6COc7cc(OC)ccc7[C@H]56", 
        "stdInChiKey": "GHBOEFUAGSHXPO-XZOTUCIWSA-N"
    }
}

CHEMBL2

{
    "compound": {
        "acdBasicPka": 6.52, 
        "acdLogd": 2.09, 
        "acdLogp": 2.14, 
        "alogp": 2.11, 
        "chemblId": "CHEMBL2", 
        "knownDrug": "Yes", 
        "medChemFriendly": "Yes", 
        "molecularFormula": "C19H21N5O4", 
        "molecularWeight": 383.4, 
        "numRo5Violations": 0, 
        "passesRuleOfThree": "No", 
        "preferredCompoundName": "PRAZOSIN", 
        "rotatableBonds": 4, 
        "smiles": "COc1cc2nc(nc(N)c2cc1OC)N3CCN(CC3)C(=O)c4occc4", 
        "species": "NEUTRAL", 
        "stdInChiKey": "IENZQIKPVFGBNW-UHFFFAOYSA-N", 
        "synonyms": "CP-12299,Minipress,Minizide,PRAZOSIN,Prazosin"
    }
}

今週末は第3回入門機械学習読書会です

優先トレイと回帰分析の章をやります。

懇親会はどこにするかは決めていないですが、それほど人が多くなければPhotoに寄って、ソビって帰るというプランが(自分のなかで)固まりつつある。

ProductName 入門 機械学習
Drew Conway
オライリージャパン / 3360円 ( 2012-12-22 )


ちなみに、scikit-learnでも回帰分析してみました。

pychembldbでchembl_16をサポートしたのでchembl-apiクローンでもつくろうかなと

スキーマがほとんど変わっていないのでテストをちょいちょいいじったくらいですが。

で、この前のユーザー会で「化合物情報を外に出すのは怖いのでchembl-apiをイントラでサポート出来ないか?」っていう質問がでてて、「pychembldb使えば楽勝ですぞ」と。それを実証するためにexample書こうかなと。

あとは、ウェブサービスの作り方わからんわーっていう話もちょくちょくでるので、Flask使えば楽勝ですぞというかそんな感じのハンズオンをしつつ、danchuで高評価を得ている沼津の地ビールをグビグビいこうかとか三島のうなぎでもいっとこかとかそんな感じの集まりをやりたいなという感じの機運が高まっているので、興味があればtwitterでもfacebookでも口頭でもいいのでレスポンスを貰えればと。

数が集まりそうなら調整します。ネタ的には

  • Flaskとpychmebldbでつくるイントラchembl-api
  • pythonのクローラーでWIPOの化合物特許を自動で集めてデータベース管理

あたりが初心者向けかつ半日でできそうなので良いかもしれません。ハンズオンはおまけみたいなものでメインはビールです。

最近飲んだ日本酒とか(130615)

臥龍梅は安定の美味さ。

1371247621

明鏡止水。夏用の酒というものはすっきり感とかキレを重視するのかな?

1371247623

ついでに今年の梅酒用の焼酎。黒糖x2,泡盛x1

1371247624

紀土も夏酒が出ていたので買ってみたが、スッキリしてる。その分含みがなくなるので赤いラベルのほうが個人的には好きかも。

1371247626

あまりスッキリしていると燗つけたくなるね。

吉原祇園祭

先週の吉原祇園祭。ビール飲んで帰ってきただけともいう、出て行く時間が早すぎた。

あとビールしか置いてないのはどういうことなのか?日本の祭りなんだから日本酒があったほうがいいんじゃないか?(なくて困った)

1371247075

相変わらずのお絵かきせんべい。娘はチマチマお金を使うのが好き。

1371247076

一方で息子はいきなり小遣いの大半をお面に全力投球してしまい、買えるものがなくなって娘のかき氷を恵んでもらっていた。

1371247078

お金をどこにまわすか

404 not foundの書評が面白かったので買ったのだが、内容がなかなかアタマに入ってこなくて、ダラダラ読んでた。やっと読み終えた。

お金をどこにまわすかはあきらかなんだけど、それやっちゃうと票集め的にはいかがなものかということになっちゃうのでなかなか難しいのよねーという結論でOKか。

ProductName 日本の景気は賃金が決める (講談社現代新書)
吉本 佳生
講談社 / 840円 ( 2013-04-18 )


  • 制度的に「最低賃金の引き上げ」や「非正規雇用の正規化」を企業に押し付けると、雇用悪化等の弊害がある
  • もともとは各個人の問題である失業を、国全体の経済問題としてとらえることは、簡単ではない。気の毒な失業者と自業自得を区別することは難しいから
  • 不況の長期化は貯蓄のパラドクスによって起きる
  • 日本では、勤続年数が15-19年になると最初の4年よりも44.5%高い賃金がもらえる

最後の話は、本当に理不尽なシステムだなぁと思う。このようなシステムがいつまで耐えられるのか興味はあるが。

今思うと「属人的な手当を廃止して成果主義に以降」ってのは子育ての終わって逃げ切るような世代の給料を下げずに若い世代からやんわり給料をカットするいい口実だったのかなぁと思わないでもない。