古き良きLambdaExpression

lambda式を動的に生成したい場合を考える。 EmacsLispでは lambda式の形をしたリストはそのまま関数として使用可能なので (funcall (list 'lambda '(x) '(+ x 3)) 3) ;=> 6 とすれば良い。 しかしCommonLisp(Cltl2)では a list whose car is lambda is not, …

夏季休業中の目標

Erlang、Scalaの入門書を読む。アクターモデルに慣れたい。学科のクラスタ計算機で何か計算するぞ。 『バイオインフォマティクス ゲノム配列から機能解析へ 第2版』を読む。 『Computers and Intractability: A Guide to the Theory of Np-Completeness』を…

昨日のDBCLS

先週アップロードしたGSEA softwareの使い方 基本編 統合TV(togotv)|生命科学系DB・ツール使い倒し系チャンネルの続編。 DAVIDを使ってマイクロアレイデータを解析する 統合TV(togotv)|生命科学系DB・ツール使い倒し系チャンネルと同じデータ(GSE1657)をOp…

昨日のDBCLS

GSEA softwareの使い方 基本編 統合TV(togotv)|生命科学系DB・ツール使い倒し系チャンネルを作り終えた。このソフトウェアは、どの遺伝子がどの程度発現しているかを調べた実験結果を二種類以上与えると、その結果を比較し解釈の手助けをしてくれるソフトウ…

99 Lisp ProblemsをLOOPマクロのみで解く。

L-99: Ninety-Nine Lisp Problems リスト処理の問題集だそうだ。これをLOOPマクロのみで解いている。P01からP07まで解いた。 使っていい関数は引数のサイズによらずに定数時間で終了する関数のみ。つまり再帰呼び出しや#'EQUALは不可。ただし前にLOOPで書い…

Matlab

今週と来週の学生実習はひたすらMatlabをいじるそうだ。

生化学実験のレポートの再提出を命じられた。悔しい。

今日のDBCLSとその後

GSEA続き。今日は統合TV収録と編集もだいぶした。Javaの実行時環境のインストールや、とってきたマイクロアレイのデータのフォーマットを合わせる作業・正規化、GSEA softwareから元々利用可能な遺伝子セットの説明などを紹介したい。しかし一本に詰めこむと…

今日のDBCLS

GSEA software の統合TV続き。 Gene Set Enrichment Analysis (GSEA) 予め決めた遺伝子群が異なる条件下でどう振舞うかを調べる手法 GSEA software GSEAを実装したソフトウェア Tutorial まず Tutorial をまず全て見た。そして実際にp53のサンプルデータセッ…

昨日のDBCLS

マイクロアレイのデータを解析するツール GSEAの統合TVを作り始めた。 DAVID まずは似た目的のツール DAVIDの統合TVを見た。統合TVの構成や、強調するべき点、紹介する内容などを参考にしたい。二つのツールの相違点・共通点も念頭に置きながら作業するつも…

今日のDBCLS

Ensembl Tips ArrayExpress の遺伝子発現情報を表示する 統合TV(togotv)|生命科学系DB・ツール使い倒し系チャンネルを仕上げた。 遺伝子の発現状況(どのくらい使われているか)を網羅的に調べられるArrayExpressというデータベースがある。今回はそのデータ…

Tsukuba.R #7で話をしてきました

Tsukuba.R#7 - Tsukuba.R - Seesaa Wiki(ウィキ) 発表に使ったhttpサーバ及びスライドのソース スライド 会場の準備や進行を担当していた方々に感謝します。

Rの式の構造をS式で表現する関数

ソース:gist:392146 · GitHub Rが如何にLispに似ているかが分かる。 cmd.img <- function(exp, filename) { filename <- paste(filename, ".png", sep="") png(filename) eval(substitute(exp)) dev.off() c(pre(capture.output(substitute(exp))), img(fil…

Rの遅延評価

R

Rの遅延評価そのものはいたって普通ですが、Mapや?applyが副作用を使用しているので変態な動作をします。 from @mickey24 f <- Map(function(x){function() x}, 1:10) f[[1]]() #=> 10 # えっ!? 副作用無しで書けば直観通りに動作します。 car <- function(x…

3分で試せるClojure

Clojureのビルドツールであるleiningenを使うと簡単に導入できます。javaの開発環境が必要です。 wget http://github.com/technomancy/leiningen/raw/stable/bin/lein chmod +x lein mv lein /usr/bin/ # PATH内ならどこでもよい lein self-install これでイ…

今日のDBCLS

Ensembl Tips 〜Ensembl Archivesを使い倒す〜 2010 統合TV(togotv)|生命科学系DB・ツール使い倒し系チャンネルを作り終えた。 Ensemblは機能が盛り沢山で、適当にクリックしているだけで新しい機能を発見できる。楽しい。

ClojureのderefをいじくるPart2

2010-03-09 - 壊れた計算機のときはproxyを使ってclojure.lang.IDerefのderefをオーバーライドしていたが、今回はclojure.core/derefをそのままいじくった。derefをmultimethodに置きかえて、正規表現をderefしたらre-seqする関数を返すように変更してみた。…

Clojureからのxml・正規表現

camprojファイルから吹き出しのテキストを抽出するClojureのプログラムを書いた。 CamtasiaHukidashi/hukidashi.clj at master · Mozk0/CamtasiaHukidashi · GitHub clojure.xml, clojure.zip, clojure.contrib.zip-filter, clojure.contrib.zip-filter.xml …

今日のDBCLS

BioMartを使い倒す 比較ゲノミクス編 統合TV(togotv)|生命科学系DB・ツール使い倒し系チャンネルを作り終えた。 BioMartはシンプルなUIで分かりやすい。

Rの文字列が何バイトか確認するには

R

length(charToRaw("おはよう")) #=> 12 などとすればよい。これを使うように再定義すればwrite.socketで多バイト文字を問題なく送信できる。 forkしまくってたら こうなった

今日のDBCLS

Ensembl tips 配列の比較をする 2010 統合TV(togotv)|生命科学系DB・ツール使い倒し系チャンネルを作った。 Ensemblは一年に四回程アップデートがあり、インターフェースやデータそのもの(!!)が結構変化するそうだ。そのため、Ensembl archivesが用意されて…

ClojureからMeCabを使う

MeCabのJavaバインディングを利用する。replからいきなり使用してもエラーが出て動かないので、compileしたlib経由で使用する。コンパイルは以下のようにすると出来た。 classpathにMeCab.jar 環境変数LD_LIBRARY_PATHにlibMeCab.so(またはdylib) 下のような…

Clojureのderefをオーバーライド

Clojureはリーダマクロを自分で定義できないが、clojure.lang.IDerefのderefをオーバーライドしてやれば少し近いことができる。これはfuture-callでも使われている。 (def awkwardCounter (let [n (atom 0)] (proxy [clojure.lang.IDeref] [] (deref [] (swa…

ClojureでBasicAuth

java.net.Authenticatorをproxyでextendすれば良い。 user=> (import '(java.net Authenticator PasswordAuthentication)) java.net.PasswordAuthentication user=> (def *basicAuth* (proxy [Authenticator] [] (getPasswordAuthentication [] (PasswordAut…

多項のiterate(Clojure)

Clojureのiterateは2項間漸化式しか扱えないので、多項間漸化式を扱えるように拡張できないかと考えた。 (defn myIterate [f & arg] (map first (iterate (fn [%] `(~@(rest %) ~(apply f %))) arg))) (myIterate + 0 1) ;=> (0 1 1 2 3 5 8 13 21 34 55 89 …

Clojure

JavaVM上で動くLispのClojureが熱い Clojure Java資産の活用 (def a (into-array [2 3 1])) ;;;into-arrayはClojureの列をJavaの配列に変える (seq a) ;=> (2 3 1) ;;;seqは整列可能なObjectをClojureの列に変える (java.util.Arrays/sort a (proxy [java.ut…

+

CLRS Chapter 15-26 読んだ。Chapter27から選択的トピック。 CLRS Chapter 27 Multithreaded Algorithms Multithreaded Algorithmsまで辿りついたので、オライリーの『並行コンピューティング技法』も買ってきて一緒に読み始めた。並行コンピューティング技…

TopCoder SRM462 Div1

1528 -> 1673 250 「1, "11"」に引っかかって撃沈。 アルゴリズムの証明を頭の中でやれば、こんなミスもしなかっただろうに。 450 期待値の漸化式を立てて解く。 こういう問題ってDynamic Programmingに分類されるんだろうか? 最適化問題以外はDPって呼ぶの…

+

したこと TopCoder SRM 461 Div1 300だけ通った。三回Challengeに失敗した。Rateは少し下がった。 CLRS Chapter 13 14 赤黒木とその拡張。あるノードの情報が自分自身と子だけに依存していれば、赤黒木を基本操作の計算量のオーダーを変えずにその情報を保持…

_

インタプリタでごにょごにょして、twitterのログをmecabでつっつき、よく使っている語を取ってきた。 ["関数", 9] ["レポート", 7] ["文鳥", 7] ["情報", 6] ["数学", 6] ["問題", 5] ["相撲", 5] ["試験", 4] ["時間", 4] ["処理", 4] ["明日", 4] ["テスト…