タグ

ブックマーク / blog.kzfmix.com (56)

  • Cytoscapeでchemoinformatics

    Chemviz2を使い始めたのでメモ インストール Cytoscapeのサイトから3.xの最新バージョンをダウンロードしてインストール Apps -> App ManagerからChemviz2を探してインストール 使ってみる pychembldbを使ってノード用の属性ファイルとnetworkファイルを作った。ネットワークはとりあえずランダムにつないでみた。 Cytoscapeを起動して"network.sif"をインポート。続いてテーブルファイルとして"node.csv"をimport プライマリキーはsmilesにする。 構造描画の設定はApps -> Chemoinformatics Tools -> SettingsでSmiles Attributesをnode.shared.nameを選んでおく。 構造描画するときには右クリックしてオプションダイアログのApps -> Chemi

    Cytoscapeでchemoinformatics
    yuiseki
    yuiseki 2014/08/18
  • あらかじめクラスタ数を決めないでクラスタリングする方法(Affinity Propagation)

    K-meansのように予めクラスタ数を指定すると、「そのクラスタ数は正しいの?」っていう疑問が浮かぶと思う。 「なんらかの統計値に基づいて適切なクラスタに分割して欲しい」そんな願いを叶えるのがAffinity Propagationというクラスタリングアルゴリズムである exemplara(セントロイドとかクラスタ中心)になるべきパラメータ(responsibility)とクラスタメンバに属しやすさ(availability)を交互に更新していって収束させる手法なので、K-meansのような初期値依存性がないらしい。 クラスタ数は類似度行列の対角要素(自分との類似度)に依存する(デフォルトはmedian)のでここを変更するとクラスタ数も変わるんだけどね。 Scikit-learnではAffinity Propagationが実装されているのでsykのケミストリースペースを作ってクラスタリン

    あらかじめクラスタ数を決めないでクラスタリングする方法(Affinity Propagation)
    yuiseki
    yuiseki 2014/07/09
  • SQLAlchemyのmany-to-manyであるタグを含むエントリをフィルタする方法

    単にタグを含むエントリを取ってくる場合にはこうやればいいんだけど、さらに絞り込む場合にどうやればいいのか悩んだ。

    SQLAlchemyのmany-to-manyであるタグを含むエントリをフィルタする方法
    yuiseki
    yuiseki 2014/07/03
  • SQLAlchemyのmany-to-manyのsecondaryにunique制約をかけたい

    同じ外部キー同士の組み合わせが重複して登録されないようにしたい。Objectでチェックするよりはデータベースに任せたかったのでこんな風にしてみた。 patents_tags = db.Table('patents_tags', db.Column('tag_id', db.Integer, db.ForeignKey('tag.id')), db.Column('patent_id', db.Integer, db.ForeignKey('patent.id')), db.UniqueConstraint('tag_id', 'patent_id', name='tag_patent') )

    SQLAlchemyのmany-to-manyのsecondaryにunique制約をかけたい
    yuiseki
    yuiseki 2014/07/03
  • 逆引きPandas (Matrix編)

    >>> 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

    逆引きPandas (Matrix編)
  • 逆引きPandas (ベクトル編)

    pandasはpandasの話がメインなので逆引きがないのが辛いかなと思う。pandasに慣れると手放せないけど☆

    逆引きPandas (ベクトル編)
  • Flaskが面倒くさくなる時

    最近Flaskでユーザーのロールを実装する必要があってさすがにちょっと面倒くさくなってきた。 Blueprintはまぁ許せるけど、フォームとモデルの連携とかフォームバリデーションとか大きくなればなるほど、フルスタックのほうがやりやすいよなーと。 しかしながら、そもそもFlaskに揺れた経緯がフルスタックなフレームワークのキャッチアップ辛いという反省からだったので、なんか一周した気もする。 ちなみにその当時使っていたCatalystは未だにperl5.8.8 + Catalyst5.7014で動かしている(自前プラグインとかの関係)。そして、そもそも同僚はMVCちゃんと理解してない(オブジェクト指向プログラミングすらあやしい)レベルで使っているので見事なスパゲッティPerl風味が出来上がっているw 結局中身が理解できた上でのフルスタックじゃないと辛いよなぁ。と思いながらRoRにするかDjan

    Flaskが面倒くさくなる時
    yuiseki
    yuiseki 2013/10/17
    すごいわかる
  • ggplot2のPython実装ができてた

    pandasを使い始めてから、「Rのメリットってggplot2だけだよなー」と思っているんだけどggplotが実用的になったら、もうPythonでやりたいことは完結するよなーと思った。 ちなみにちょっと動かそうとしたけど、動かなかったので、GitHubの画像を載せておく。 あとでコードリーディングする。

    yuiseki
    yuiseki 2013/10/10
  • Python+Selenium+PhantomJSが快適すぎる

    Selenium便利なんだけど、ブラウザ立ちあげないといけないのはサーバーで使いにくくて不便だよなと思っていたのだけどPhantomJS使えることを知ったので早速遊んでた。なにやりたいかというとGoogle Patent Searchから特許ID抜き出したいのだけど、Python+Selenium+PhantomJSの組み合わせでできることがわかった。 from selenium import webdriver import time driver = webdriver.PhantomJS() driver.get("https://www.google.co.jp/webhp?hl=ja&tab=ww&authuser=0#authuser=0&hl=ja&q=python") print driver.current_url time.sleep(2) driver.save_sc

    Python+Selenium+PhantomJSが快適すぎる
    yuiseki
    yuiseki 2013/09/18
  • RoRに入門している

    先週末にコメダでFlask談義をしていた時に、@ando_ando_andoに浮気しているとか言われたんだけど、RedmineもFastladderもRails使ってんだからしょうがないじゃんと答えておいた。 というわけで、最近Railsを学んでいる。

    RoRに入門している
    yuiseki
    yuiseki 2013/09/05
  • twitterのリプライ頻度を可視化する

    python+pandasで全部やればいいんだけど、ggplotが使いたかったので。 とりあえず全件取ってきた状態で import csv tweets = csv.reader(open("tweets.csv")) print "Date\tMessage" for tweet in tweets: if "[[user_id]]" in tweet[7]: print "{}\t{}".format(tweet[5].split()[0], tweet[7]) library(plyr) library(ggplot2) library(scales) setwd("/Users//kzfm/lang/rcode/tw") tweets <- read.delim("data.tsv", sep="\t", stringsAsFactors=FALSE, header=TRUE) t

    twitterのリプライ頻度を可視化する
    yuiseki
    yuiseki 2013/08/14
  • Rによるバイオインフォマティクスデータ解析 第2版 -Bioconductorを用いたゲノムスケールのデータマイニング

    内容はバイオインフォマティクスに限らずに割と広い内容をカバーした感じで、クックブックと逆引きの中間的なスタイルと言えば良いのだろうか? Rのインストールから基的な操作は(大体どのにもあるように)載っていて データマイニングとしては PCA ICA PLS MDS SPE k-means,Fuzzy cmeans spectral clustering NMF SOM decision tree kNN SVM RF LASSO MARS がサンプルコードとともに簡潔に説明されている。 8章はバイオ系データの解析、チップとか。odesolveを利用したシミュレーションのサンプルもあって、SBMLRは面白そうだなぁと思った。メカニズムがどうなっているのかはモデルと実験系の不一致をよく突き詰めて考えることでしかきちんとした理解は得られないと思っている。 最後のほうの章は統合環境、データベース

    Rによるバイオインフォマティクスデータ解析 第2版 -Bioconductorを用いたゲノムスケールのデータマイニング
    yuiseki
    yuiseki 2013/08/14
  • PhantomJSでスクレイピングするのがいいのかわるいのか?

    PhantomJSを触ってみたけど、スクレイピングというか自動化するならWWW::Mechanize::Firefoxのが使いやすいなぁと思った。 CasperJSを使うのがよさそうなんだけど、node.jsから使えないしなぁ。 例えばデータベースからurlリストを引っ張ってきて次々にアクセスしたいといった用途の場合、PhantomJSだったらphantomjs-nodeを使うらしいんだけどCasperJSはそういうことができるんだろうか? と思って調べたら、SpookyJSというものを見つけたんだが、PhantomJSが1.8からwebdriverをサポートするようになったからそっち使えみたいな感じになっている。 結局pythonでselenium使うのが正解なのか? ていうかseleniumでいいじゃんみたいな気分になっている。

    PhantomJSでスクレイピングするのがいいのかわるいのか?
  • GitHub版Fastladderをインストールしてみた

    5年くらい動かしているオープンソース版Fastladderだけど、この5年のうちにヒトの異動なんかでゴミユーザーが溜まりまくったり、メンテも大変だったり(今はsupervisordで動かしている)と、そろそろ新しくしたくなったので、昨日今日で仮想環境から稼働までさせた。 尚OSはFedora17で、FastladderはGithub版です。 Rubyのインストール 2.0.0-p247を入れたんだけど、OS側のライブラリのヘッダファイルが足りなくて何度もコンパイルしなおしたのでストレスフルだった。ちなみにrbenvは使ってない。 yum install sqlite sqlite-devel yum install zlib zlib-devel yum install openssl openssl-devel yum install libxml2 libxml2-devel yum

    GitHub版Fastladderをインストールしてみた
    yuiseki
    yuiseki 2013/08/01
  • pandasからmatplotlibを使う方法とバッチでハマった話

    plotというメソッドが用意されているので楽ちんと思ったがバッチの処理をさせたら同じ画像ばっかり生成されて小一時間ハマった。 いつものようにsofによるとcloseが必要らしい。 for experiment in experiments: exp.data.plot(x="Date", y="Val", style="ro", ) savefig("static/images/{}.png".format(exp.name)) close()

    pandasからmatplotlibを使う方法とバッチでハマった話
    yuiseki
    yuiseki 2013/07/24
  • RでWebアプリの作れるShinyというライブラリ

    @harumakiyukkoがShinyをtweetしてたので、今週末の読書会のサンプルコードをShinyで書くかと思ったんだけど、よさげな題材が見つからなかったので保留中。 Tutrial はじめてのShiny これは分析者のための分析者による分析者のためのウェブアプリなので、非分析者との橋渡しにはならないだろうな。

    RでWebアプリの作れるShinyというライブラリ
    yuiseki
    yuiseki 2013/07/21
  • 入門機械学習の6,7章を読んだ

    3連休の初日はグダグダしていたのだけど、残りの2日はそれなりに時間を確保してひと通り読んだので、積み残したところをメモ ヘルドアウトデータって言い方あまり聞いたことなかった Rのoptim関数 curve(sapply( func...))がちょっと良くわからんので調べる リッジ回帰を理解した。というよりバイアス-バリアンス分解がちゃんと分かった気が .Machine$double.eps 暗号解読のコードを走らせると30分くらいかかる PRML読みなおす

    入門機械学習の6,7章を読んだ
  • CoffeeScriptのsplatsの挙動がわからないと思ったがやっぱわかった。

    コッココッココココココッヒーな脳になってます。 splatsとはこれです。 最大値を返す関数を例にとります。 まずはNode.jsで > Math.max(1,9,7,4,2,6) 9 > Math.max([1,9,7,4,2,6]) NaN > Math.max.call(null,1,9,7,4,2,6) 9 > Math.max.apply(null,[1,9,7,4,2,6]) 9 coffee> Math.max 1,9,7,4,2,6 9 coffee> Math.max.call @, 1,9,7,4,2,6 9 coffee> Math.max.call null, 1,9,7,4,2,6 9 coffee> Math.max.apply @, [1,9,7,4,2,6] 9 coffee> Math.max.apply null, [1,9,7,4,2,6] 9 cof

    CoffeeScriptのsplatsの挙動がわからないと思ったがやっぱわかった。
    yuiseki
    yuiseki 2013/07/12
  • Python Testing Cookbook

    Python Testing: BeginnerはユニットテストとかTDDの習得に主眼を置いているのに対し、書はもうちょっと広くて高度な内容を取り扱っている。 BDDとか受け入れテストとか(Jenkinsを使った)継続的インテグレーションとかテストのカバレッジとかスモークテストなんか。 最終章の「良いテストの習慣」はなかなかいい言葉がまとまっている(ような気がする) Something is better than nothing Coverage isn't everything Be willing to invest in test fixtures Harvesting metrics こんなかんじで12の習慣が。 個人的に良かったのがBDDの章であった。書ではnose+mockitで説明されてた。ちなみに僕はpyVowsを使っています(Node.jsにVowsがあるので)。

    Python Testing Cookbook
  • Python Testing: Beginner

    pythonでのテストの doctestの使い方に始まり、doctestでのモックの使い方(mockerライブラリ)を学んだらdoctestでは不十分なユニットテストをUnittestライブラリを使ってテストする。 続いてNoseでdoctestとunittestを統合することを学びつつ、TDDの話しへ。 ほんでもって、twillを使ったwebアプリのテストのやり方をざっと紹介して、integration test, system testっていう流れ。

    Python Testing: Beginner