金城一紀の対話篇、映画編がとても良かった。映画編最後の「愛の泉」で色々つながるのがとても素敵。
いしいしんじも割りと好きかな(ちょっとポジティブだけど)。
羊をめぐる冒険も楽しく読めた。
金城一紀の対話篇、映画編がとても良かった。映画編最後の「愛の泉」で色々つながるのがとても素敵。
いしいしんじも割りと好きかな(ちょっとポジティブだけど)。
羊をめぐる冒険も楽しく読めた。
自分らしさというものを再考できる。
生きるのがちょっと楽になるかなと。
名著かと。少なくとも自分にとっては貴重な出会いであった。
14012014 chemoinformatics Python
今週末の勉強会の内容です。ChEMBLダンプのimportに時間がかかるので、pythonラッパー弄りたい人はChEMBLを予め入れてから参加するといいでしょう。
当日行う手順を記しておきます。
パッケージ管理システムです(WIndowsユーザーは飛ばしてください)。
ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
こんだけ。
brewを入れてあればインストールは下のコマンドを打つだけ。(WIndowsユーザーはここから最新版のインストーラをダウンロードしてください)
brew install postgresql
インストール後にデータベースを初期化します
initdb /usr/local/var/postgres
サーバー起動
postgres -D /usr/local/var/postgres
別のターミナルから動いているか確認をします
psql -l
Lionだと標準でPostgreSQLがインストールされているようで、/usr/bin/psqlが存在します。homebrewでインストールする場合には/usr/local/bin/psqlなので、
which psql /usr/local/bin/psql
とならない場合はPATHを通すか
/usr/local/bin/psql -l
と打ってください
環境変数に設定する場合は~/.bashrcに以下の行を追加します
export PATH=/usr/local/bin:$PATH
その後新しいターミナルを立ち上げた後、
psql -l
ChEMBLのftpサイトから最新版(chembl_17_postgresql.tar.gz)をダウンロードします。
展開します
tar xvfz chembl_17_postgresql.tar.gz
cd chembl_17_postgresql
PostgreSQLにChEMBL用のデータベースを用意します
psql postgres postgres=# create database chembl_17; #Ctrl-D で抜けます
ダンプをインポートします
psql chembl_17 < chembl_17.pgdump.sql
数時間待ちます。(MBAの2013バージョンだと1.5hくらいかかったそうです)
僕のMBAではこのような結果でした。(ERRORは特に問題ありません)
ALTER TABLE ALTER TABLE REVOKE ERROR: role "postgres" does not exist ERROR: role "postgres" does not exist GRANT real 44m46.001s user 0m10.153s sys 0m13.130s
$ psql chembl_17 psql (9.2.4) Type "help" for help. chembl_17=# select pref_name from target_dictionary;
と打ってターゲット名が表示されればきちんと動いています。
青春、よさこい好きにはたまらないと思う。
サンカク△
冷めないスープはない。
アイデンティティを巡る旅
09012014 chemoinformatics
タイムテーブルと懇親会会場が決まりました。それからQAを追加しておきました。
ChEMBLはPostgres,MySQL,OracleのSQLダンプが配布されているので、データベースの構築は非常に簡単に行えます。構築を実際にやってみようというのが今回のメインです。
あわせてPythonでアクセスする方法や、イントラにWeb(REST)インターフェースを実装する方法なんかもお話できればと。
細かい話は後でまた書きますが、楽しいので興味があればお気軽に参加されるといいと思います。
この著者はとても好き。妻の超然はよかった。
重松清は何作か読んだけどポジティブ過ぎるのよね。
ドープな気分になった。あとちょっと読みづらかった。69のほうが好きかな。
短篇集。「停電の夜に」はとても良かったけど、それ以外はそそられなかった。
05012014 life
老人ホームに入居した祖母の家を処分するために労働力として駆り出されていたため、掃除漬けの年末年始だった。なんとか片付いて良かった。
去年は
今年は
著者の悲壮感というか、漂う諦め感みたいなのが好きかも。
「親離れ、子離れはあるけど、夫婦離れという言葉はないよな」ということ。ざらっとした感じが残った。
面白かった。
ポジティブかな
好きかも
このドープさは、かなり好き。江國香織が透明度高いのに対してスモーキーに感じる。
勢いとスピード
「勤労感謝の日」のほうが好みかな。
「女の過程」と「夏旅」はよかった。特に夏旅は惹きこまれた。
letter from home で泣いた
とても好き
R逆引きハンドブックのMatrixの章をPandasで。
作者の書いた本はオススメ
>>> pd.DataFrame([[1,2,3],[4,5,6]]) 0 1 2 0 1 2 3 1 4 5 6
>>> x = pd.DataFrame([[1,2,3],[4,5,6]]) >>> pd.DataFrame([[1,2,3],[4,5,6]]) 0 1 2 0 1 2 3 1 4 5 6 >>> x = pd.DataFrame([[1,2,3],[4,5,6]]) >>> x 0 1 2 0 1 2 3 1 4 5 6 >>> x.index = list("ab") >>> x.columns = list("cde") >>> x c d e a 1 2 3 b 4 5 6
>>> x = pd.DataFrame([[1,2,3],[4,5,6]], index=list("ab"), columns=list("cde")) >>> x c d e a 1 2 3 b 4 5 6 >>> x["c"] a 1 b 4 Name: c, dtype: int64 >>> x.c a 1 b 4 Name: c, dtype: int64
Seriesが返ってくるのでメソッドもよべる
>>> x.c.mean() 2.5 >>> x.c.sum() 5
>>> x = pd.DataFrame([[1,2,3],[4,5,6]], index=list("ab"), columns=list("cde")) >>> y = pd.Series([7,8,9], index=list("cde")) >>> x.append(y, ignore_index=True) c d e 0 1 2 3 1 4 5 6 2 7 8 9
rbind
::: python >>> x 0 1 0 1 0 1 -2 3 >>> x.append(x) 0 1 0 1 0 1 -2 3 0 1 0 1 -2 3 >>> pd.concat([x, x], axis=0) 0 1 0 1 0 1 -2 3 0 1 0 1 -2 3
cbind
::: python >>> pd.concat([x, x], axis=1) 0 1 0 1 0 1 0 1 0 1 -2 3 -2 3
ggplotの組込みデータを使う。 wt>3のname,disp列を抽出
>>> from ggplot import mtcars >>> mtcars[mtcars.wt > 3][["name","disp"]] name disp 3 Hornet 4 Drive 258.0 4 Hornet Sportabout 360.0 5 Valiant 225.0 6 Duster 360 360.0 7 Merc 240D 146.7 8 Merc 230 140.8 9 Merc 280 167.6 10 Merc 280C 167.6 11 Merc 450SE 275.8 12 Merc 450SL 275.8 13 Merc 450SLC 275.8 14 Cadillac Fleetwood 472.0 15 Lincoln Continental 460.0 16 Chrysler Imperial 440.0 21 Dodge Challenger 318.0 22 AMC Javelin 304.0 23 Camaro Z28 350.0 24 Pontiac Firebird 400.0 28 Ford Pantera L 351.0 30 Maserati Bora 301.0
transform
>>> x = pd.DataFrame([(1,2),(3,4),(5,6),(7,8)]) >>> x 0 1 0 1 2 1 3 4 2 5 6 3 7 8 >>> x[2] = x[0]+2 >>> x 0 1 2 0 1 2 3 1 3 4 5 2 5 6 7 3 7 8 9
R expand.grid() function in Python
::: python >>> x 0 1 2 0 1 2 3 1 4 5 6 2 7 8 9 >>> x.sum(axis=0) 0 12 1 15 2 18 dtype: int64 >>> x.sum(axis=1) 0 6 1 15 2 24 dtype: int64
>>> x = pd.DataFrame([(1,2),(3,4),(5,6),(7,8)]) >>> x.apply(sum) 0 16 1 20 dtype: int64
>>> x = pd.DataFrame([(1,2),(3,np.nan),(np.nan,6),(7,8)]) >>> x 0 1 0 1 2 1 3 NaN 2 NaN 6 3 7 8 >>> x.dropna() 0 1 0 1 2 3 7 8
multiindex便利
>>> x = pd.DataFrame([(1,"Y"),(3,"N"),(6,"N"),(7,"Y")]) >>> x 0 1 0 1 Y 1 3 N 2 6 N 3 7 Y >>> y = x.groupby(1) >>> y.head() 0 1 1 N 1 3 N 2 6 N Y 0 1 Y 3 7 Y >>> y.mean() 0 1 N 4.5 Y 4.0
>>> x = pd.DataFrame([(1,0,1),(1,1,2),(1,2,0),(2,0,1),(2,1,1),(2,2,3),(3,0,0),(3,1,1),(3,2,2)], columns=["subject","time","conc"]) >>> x subject time conc 0 1 0 1 1 1 1 2 2 1 2 0 3 2 0 1 4 2 1 1 5 2 2 3 6 3 0 0 7 3 1 1 8 3 2 2 >>> x.pivot(index="time", columns="subject") conc subject 1 2 3 time 0 1 1 0 1 2 1 1 2 0 3 2
groupby
>>> x = pd.DataFrame([(1,0,1),(1,1,2),(1,2,0),(2,0,1),(2,1,1),(2,2,3),(3,0,0),(3,1,1),(3,2,2)], columns=["subject","time","conc"]) >>> x subject time conc 0 1 0 1 1 1 1 2 2 1 2 0 3 2 0 1 4 2 1 1 5 2 2 3 6 3 0 0 7 3 1 1 8 3 2 2 >>> x.sort("time") subject time conc 0 1 0 1 3 2 0 1 6 3 0 0 1 1 1 2 4 2 1 1 7 3 1 1 2 1 2 0 5 2 2 3 8 3 2 2
R逆引きハンドブックのMatrixの章をPandasで。
Pandasの場合MatrixないからDataFrameだけど。
行列ではなくデータフレーム
>>> x = pd.DataFrame([[1,0],[-2,3]]) >>> y = pd.DataFrame([[-1,1],[4,2]]) >>> x.dot(y) 0 1 0 -1 1 1 14 4 >>> x * y 0 1 0 -1 0 1 -8 6
x %o% y はわからない
逆行列もnumpyに頼る感じ
applyでaxisで行か列かを選択する。applyはよく使う
>>> x 0 1 0 1 0 1 -2 3 >>> x.apply(sum, axis=0) #colsum 0 -1 1 3 dtype: int64 >>> x.apply(sum, axis=1) #rowsum 0 1 1 1 dtype: int64
numpyのarrayに
>>> x 0 1 0 1 0 1 -2 3 >>> x.as_matrix() array([[ 1, 0], [-2, 3]], dtype=int64)
DataFrameなので
>>> x 0 1 0 1 0 1 -2 3 >>> x.index Int64Index([0, 1], dtype=int64) >>> x.columns Int64Index([0, 1], dtype=int64) >>> x.index = list("ab") >>> x.columns = list("cd") >>> x c d a 1 0 b -2 3
>>> x.shape (2, 2)
>>> x 0 1 2 3 0 1 2 3 4 1 5 6 7 8 2 9 10 11 12 3 13 14 15 16 >>> x.iloc[[2],[3]] 3 2 12 >>> x.iloc[1:4,[3]] 3 1 8 2 12 3 16
rbind
concatで行か列を指定する。これもよく使う
>>> x 0 1 0 1 0 1 -2 3 >>> x.append(x) 0 1 0 1 0 1 -2 3 0 1 0 1 -2 3 >>> pd.concat([x, x], axis=0) 0 1 0 1 0 1 -2 3 0 1 0 1 -2 3
cbind
>>> pd.concat([x, x], axis=1) 0 1 0 1 0 1 0 1 0 1 -2 3 -2 3
>>> pd.DataFrame(np.diag(range(4))) 0 1 2 3 0 0 0 0 0 1 0 1 0 0 2 0 0 2 0 3 0 0 0 3
>>> x 0 1 2 0 1 2 3 1 4 5 6 2 7 8 9 >>> pd.DataFrame(np.triu(x.as_matrix())) 0 1 2 0 1 2 3 1 0 5 6 2 0 0 9 >>> pd.DataFrame(np.tril(x.as_matrix())) 0 1 2 0 1 0 0 1 4 5 0 2 7 8 9
>>> x 0 1 2 0 1 2 3 1 4 5 6 2 7 8 9 >>> x.T 0 1 2 0 1 4 7 1 2 5 8 2 3 6 9
>>> x 0 1 2 0 1 2 3 1 4 5 6 2 7 8 9 >>> x.sum(axis=0) 0 12 1 15 2 18 dtype: int64 >>> x.sum(axis=1) 0 6 1 15 2 24 dtype: int64 >>> x.sum(axis=0).sum() 45
固有値分解
>>> x 0 1 0 4 1 1 1 4 >>> pd.DataFrame(np.linalg.eig(x.as_matrix())[1]) 0 1 0 0.707107 -0.707107 1 0.707107 0.707107
特異値分解は知らん