プログラミングの実験場

Haskell/Webアプリ/画像処理/可視化/ITによる生産性向上 など

Julialangでの配列演算のベクトル化

任意の1変数関数、2変数関数はベクトル化ができ、行列の要素への適用が劇的に高速化する。 julia> A = rand(10000,10000); julia> sq(x) = x*x; julia> sq_vec(x) = x*x; julia> @vectorize_1arg Float64 sq_vec sq_vec (generic function with 4 methods) j…

Julialangでの多次元配列使用のメモ: 配列の演算

基本の操作 添字による要素のアクセス julia> a = [x*10+a for x=0:2, a=0:5] 3x6 Array{Int64,2}: 0 1 2 3 4 5 10 11 12 13 14 15 20 21 22 23 24 25 julia> a[2,4] 13 julia> a[1:3,4] 3-element Array{Int64,1}: 3 13 23 julia> a[2,2:4] 1x3 Array{Int64…

Julialangでの多次元配列使用のメモ: 配列の作成

多次元配列に関するドキュメントなど 自分のための覚書、チートシート。Juliaのバージョンは0.3を使用。 公式ドキュメント Multi-dimensional Arrays — Julia Language 0.3.6-pre documentation これらも参照 http://sebastianraschka.com/Articles/2014_mat…

Julialangでの画像処理

Juliaの概要 Juliaという科学技術計算言語が最近出てきた(2009年に開発開始、2012年にオープンソース)のだが、これがかなり良さそうに見える。MatlabやRがやっていることを置き換えられるようなものであると思う。言語仕様やインフラがモダンという印象で…

Scala.jsでD3.jsを使う

Scala.jsの概要 Scala.js http://www.scala-js.org/ という、ScalaからJavaScriptのコードを生成できるシステムがあり、ちょっといじって見ているが、かなり良く出来ているという印象を持った。IntelliJの補完も使って、型安全+Scalaの抽象化能力を最大限に…

D3.jsの基本パターン

D3.jsをいじっているが、最初に期待していたのよりも難しい。 公式サイトには資料が結構多くあるのだが、あまり整理されていない感じがある。 チュートリアル https://github.com/mbostock/d3/wiki/Tutorials API reference https://github.com/mbostock/d3/…

Halide事始め

MIT Halide(http://halide-lang.org/)というC++の高速画像処理ライブラリが去年リリースされた。C++内のDSLを使っていて、画像処理を、 計算のアルゴリズム アルゴリズム自体は副作用がなく、純粋関数的に定義される。 実装の詳細(「スケジュール」) スケ…

HaskellでASTからのコード生成(1) Writer+Stateモナドによる構造化

前のポストでGADTを使って型付きの抽象構文木(AST)を表現する方法について書いたが、ここではそのASTから他の言語のコード生成する方法について調査・検討した結果を記す。@keigoiさんの記事(http://d.hatena.ne.jp/keigoi/20111206/haskell_tagless_dsl…

GADTによるHaskellの型付きDSLの構築

GADTについて、この解説が分かりやすい(英語)。 http://en.wikibooks.org/wiki/Haskell/GADT 背景 Haskell(というか関数型言語一般)の素晴らしい機能の一つ、代数的データ型を使うと、抽象構文木(AST)をHaskellの枠組みの中で表現できる。 例えば、整数…

D3.jsを使ってブラウザ上で宣言的なデータ可視化

D3.jsというJavaScriptでのDOM操作・可視化ライブラリ http://d3js.org/ が面白そう。D3.jsはHTMLのDOM要素とSVGに対して宣言的にプログラミングすることで可視化が見通しよく書けるライブラリ。D3.jsで生成されるのは図形を含めてすべてDOM要素であるので、…

MIT Halideのインストール方法

C++(とOCaml)で書かれた高速画像処理ライブラリである MIT Halide の自分の環境(Mac OSX 10.8)でのインストール方法の覚書。ここからコンパイル済みのものがダウンロードできる。解説のスライドや論文へのリンクもここに載っている。 MIT Halide http://…

関数型言語による画像処理環境の追求 その2 Haskellで画像データを扱うためのアプローチ

Haskellで画像データを扱う際に、いろいろな手法がありうる。 Pure Haskell Hackageを見てみると、(denseな)行列を扱うpure Haskellの(=外部ライブラリに依存しない)ライブラリで有名なのは、これだろうか。並列化が自動でできるというのが売りのようだ…

関数型言語による画像処理環境の追求 その1 現状と背景

Haskellグループができたのを機にはてなブログを作ったので、せっかくなのでHaskellについてなにか書こうと、僕の専門分野で使う、Haskellをつかった生物画像処理の環境について今一度調べてみることにした。 生物研究での画像処理というのは主に、画像に対…