かれーの店うどんで秋の夜カレー

久しぶりの東京出張。しかも雅叙園@目黒だったので、昼はかれーの店うどん@五反田で。五反田には花善もあるしね。

ちょっと早く着きすぎてオープンしてなかったので、ぶらっとしたら、うどんのすぐ先に豚と小麦って店があって結構人が入っていたので、ココでもいいかなとふらふら入りそうになったけど、なんとなく察知して結局入らなかった。あとで調べたら、二郎インスパイア系だったので正解。昼に二郎系は濃すぎて無理だからな。

1288429171

ぶらっと近所をぐるットして戻ってきたらopenしてたので入店。季節の夜かれー(薬膳)を注文

1288429168

これがもう、ジワジワ来る感満載の味で。まぁそんな感じの表現しかできないな。

さて、来週はIBISで東大駒場か。嚆矢は一度は行くとして他にどこを攻めるかなぁ。

openbabel+GAMESSで計算できるようにする

Izu.R #0お疲れ様でした。いつもは22時前には寝るのだけど、2時半くらいまで起きてコード書いてた。たのしす。

1288429089 1288429091

今回が初めてで、Rらしく発表+LT的なほうがいいのか、ハッカソン的なもののほうがいいのか、わからなかったうえに初めての宿という不安はあったが、とりあえず集まってみて様子見しようという感じでしたが、蓋を開けてみれば、楽しい会になってくれて良かった。

次回もやる方向で考えているので、興味があれば。

今回のキーワード

Galaxy

pythonで書かれたワークフロー管理ツール。@bonohu さんに初期の導入のあたりを教えてもらいながら。みんな、ほとんどこれいじってたような。

ちなみにmacportsのpythonだと依存関係トラブリまくってうまく動かないので、潔く/usr/binのを使えという結論に落ち着いた。

これはもう少しいじる。次回にはなんか成果物をもっていきたいかな。

別トラックで流れていたセッションの情報交換

これはよい。あとで内容をきちんと把握する。あの、ユーザー会は一定の確率で面白い内容出てくるからよいです。面白さを面白いと感じるためには、面白さに対して感度をあげる努力を怠るとダメですな。

ジャパネットムスカ

きっかけは覚えてないが、MADの方向に行ってきた。

ついでに、一人ふぁぼ界に引きずり込まれてた。

Python

みんなのPythonは良書ですよね。

ProductName みんなのPython 改訂版
柴田 淳
ソフトバンククリエイティブ / ¥ 2,940 ()
在庫あり。

そういえば、前日の二次会でもPython利用者率を上げていこうという結論で落ち着いた(Pythonistaの中で)

書いたもの

openbabelで荒く構造立ち上げて、その後量子化学計算で精密化して、Mulliken Chargeとか楽に求めたいこと多いので、サクサク出来るようにラッパー欲しかったので書いてた。 ファイルの読み込みとかよくわからんバグが出ててはまったが、なんとか動くとこまでいった。

あとはもう少しちゃんと書いてクックブックにでもあげとく。

import openbabel as ob
from tempfile import mkstemp, mkdtemp
from os import removedirs, unlink, system, environ
import re
import os.path
import string
from random import choice

def randstr(n):
    "ランダムなファイル名を生成するため"
    return u''.join(choice('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ') for i in xrange(n))

class Gamess(object):

    def __init__(self):
        self.tempdir = mkdtemp()
        self.gamess  = "/Users/kzfm/gamess/rungms"
        self.jobname = ''
        self.cwd    = os.getcwd()

    def calc(self, mol):
        self.jobname = randstr(6)
        obc = ob.OBConversion()
        obc.SetInFormat("gamout")

        gamin = self.write_file(mol)
        gamout = self.tempdir + "/" + self.jobname + ".out"
        os.chdir(self.tempdir)
        os.system("%s %s> %s  2> /dev/null" % (self.gamess, self.jobname, gamout))        

        # エラーが出たのでstringを渡したらなおった
        # TypeError: in method 'OBConversion_ReadFile', argument 3 of type 'std::string'
        new_mol = ob.OBMol()
        s = open(gamout).read()
        next = obc.ReadString(new_mol, s)

        os.chdir(self.cwd)
        unlink(gamin)
        unlink(gamout)
        return new_mol

    def header(self):
        h = """ $BASIS GBASIS=STO NGAUSS=3 $END
 $CONTRL SCFTYP=RHF RUNTYP=OPTIMIZE $END
 $STATPT OPTTOL=0.0001 NSTEP=20 $END"""

        return h

    def write_file(self,mol):
        obc = ob.OBConversion()
        obc.SetOutFormat("gamin")

        gamess_input_file = self.tempdir + "/" + self.jobname +".inp"
        gamess_input_str = obc.WriteString(mol)

        h = self.header()
        ng = gamess_input_str.replace(" $CONTRL COORD=CART UNITS=ANGS $END",h)

        with open(gamess_input_file, "w") as f:
            f.write(ng)
        return gamess_input_file

    def __del__(self):
        #print "remove " + self.tempdir
        removedirs(self.tempdir)

if __name__ == '__main__':

    g = Gamess()

    obc = ob.OBConversion()
    obc.SetInFormat("mol")

    mol = ob.OBMol()
    next = obc.ReadFile(mol,"test.mol")

    newmol = g.calc(mol)
    print [obatom.GetPartialCharge() for obatom in ob.OBMolAtomIter(newmol)]

GAMESSに関しては動く環境をもっているのが前提なので、そこをやりたい場合はこの本が良いです。

プレゼン用にGrowl通知するタイマーを作った

今日の朝、時計をもっていないことに気づいて。

import sys,os
import Growl
import threading

def timenotify(notify_string):
    image = Growl.Image.imageFromPath("/Users/kzfm/.tw_growl/kzfm.png")
    g = Growl.GrowlNotifier(applicationName='Timer', notifications=['Watch'])
    g.register()
    g.notify(
        noteType='Watch', 
        title="GrowlTimer", 
        description= notify_string,
        icon=image,
        sticky=False)

if __name__ == "__main__":
    t1 = threading.Timer(600, timenotify, args=["10分経過しました"])
    t2 = threading.Timer(1200, timenotify, args=["20分経過しました"])
    t3 = threading.Timer(1500, timenotify, args=["25分経過しました。そろそろまとめ"])
    t4 = threading.Timer(1800, timenotify, args=["30分経過しました。発表終了"])
    t1.start()
    t2.start()
    t3.start()
    t4.start()

やっつけスクリプト

旨い純米酒が味わえる店

近所の情報が載ってないと悲しい思いをするので、中見てからだな。

ProductName 旨い純米酒が味わえる店

エンターブレイン / ¥ 998 ()
近日発売 予約可

FMトランスミッターを購入

5,6年使ってたのが壊れたので、新しいのを買った。ちなみに初代iPod nanoを使っていて、バッテリーはないけど車内では電源があるのであまり困らない(電車内ではすぐ切れて使い物にならないが)。

色によって値段がかなり違うが色にはこだわらないので安いの購入。

満足。朝聴いてたHospital podcastのNu:Logic - Sundownがやたらと良かった。

おりがみプログラミング 3.14

apoL'を使ってinsertを定義する

-- 3.14

apoL' :: (b -> Maybe (a, Either b (List a))) -> b -> List a
apoL' f u = case f u of
              Nothing            -> Nil
              Just (x, Left v)   -> Cons x (apoL' f v)
              Just (x, Right xs) -> Cons x xs

insert3 = apoL' step u
    where 
      step Nil = Nothing
      step (Cons x xs) = if x < u then Just (x, Left xs) else Just (x, Right xs)

とやると

Not in scope: `u'

と言われるが理由がわからん。

ProductName 関数プログラミングの楽しみ

オーム社 / ¥ 4,410 ()
在庫あり。

疲れたので、今日はもう読むのをやめよう。

「Scheme手習い」と「起業のファイナンス」が届いた

Scheme手習いは、最後の方の章が気になる。あと娘か息子が読んでくれればいいなぁと思いつつ。

ProductName Scheme手習い
Daniel P. Friedman,Matthias Felleisen
オーム社 / ¥ 2,940 ()
在庫あり。

ProductName 起業のファイナンス ベンチャーにとって一番大切なこと
磯崎 哲也
日本実業出版社 / ¥ 2,310 ()
一時的に在庫切れですが、商品が入荷次第配送します。配送予定日がわかり次第Eメールにてお知らせします。商品の代金は発送時に請求いたします。

王様のカレー@富士宮

久しぶりの王様のカレー。富士、富士宮界隈ではピカイチだと思う。東京行ったらデリーとかうどんとかエチオピアとかあるけど、ここらへんはおいしいカレーがないから貴重だ。インドの方が経営しているんだけど接客がすごい良いですな。子連れにもやさしいし素晴らしい。

1288006782

チーズナンで、ほうれん草ベースのカレーとトマトベースのカレー

1288006776 1288006789

タンドリーチキンを頼んでみた。これまた美味い。

1288006795

帰りによこぜきでお酒買って、イオンでお買い物という鉄板コース。これにオプションで魚セイとかさの萬、ビオデリというオプションをつけると、だいたい事足りる。

第10回静岡Haskell読書会

先週末の読書会。切符遊びの章。

ProductName プログラミングHaskell
Graham Hutton
オーム社 / ¥ 2,940 ()
在庫あり。

団子うまかった。

1288005978

懇親会はセルフ串揚げの店。マジセルフ。ネタケースから串を持ってきて、衣つけて揚げる。

1288005975

なんていうか、この地域の居酒屋の名前を借りるなら、串電車でGoみたいなセルフ感満載だった。

来月、京都行きとかぶってるじゃんということにさっき気づいた。というわけで次回は初の欠席になりますな。

Real World Haskell 26章

ブルームフィルター

ProductName Real World Haskell―実戦で学ぶ関数型言語プログラミング
Bryan O'Sullivan,John Goerzen,Don Stewart
オライリージャパン / ¥ 3,990 ()
在庫あり。

3,4日かけて一応buildまではしたが、テストとか動かしてない。いまいち理解も追いついてなかったのが心残りだが、一通り読み終わったのでよしとしよう。それにしてもこの本はPerl的には「続・はじめてのPerl」くらいのレベル?「実用 Perlプログラミング 第2版」ではないでしょうなぁと。

みなさんこの先どうやって進んでいくんだろう?超気になるところ。

一周目は15章以降がほとんど理解できなかったけど、今回読んだら結構理解できたのでよかった。

1288005286

プログラミングHaskell読書会にでて、問題もきちんと解いたってのも良かったのかも。

ProductName プログラミングHaskell
Graham Hutton
オーム社 / ¥ 2,940 ()
在庫あり。