tak0kadaの何でもノート

発声練習、生存確認用。

医学関連は 医学ノート

pydotplusでdoxygenで生成したdotファイルを操作する

dot言語はグラフ構造をテキストファイルで表したもの。pydotというライブラリが有名だそうだが、手元で動かなかったためpydotplus(pydotplus 2.0.2 : Python Package Index)というライブラリをインストールした。dotファイルを読み込んだあとは基本的にgetter/setterで値にアクセスする。pythonでgetter/setter書く例は少ないので実装を確認したところ、メンバ変数は実際には辞書で登録されていた。

続きを読む

MAプロット、RAプロット、Bland-Altmanプロット

抄読会でRNA-seqのデータ処理についての話を聞いて、その中で出てきたプロットが気になったのでpythonでやってみた。実際に可視化するときはRのパッケージを使ったほうが楽だと思う。

続きを読む

Point Cloud Library

3次元の点群を扱うライブラリ

法線推定

Poisson Image Editing

以前の記事で利用したPoisson Surface Reconstructionのアルゴリズムを調べる前に2次元でポアソン方程式を解く手法について調べたところ、Poisson Image Editingを見つけた。この手法を3次元に拡張すると3次元メッシュも変形できる。

続きを読む

CGALのサンプルを実行する(その2)

前回の記事に続いてCGAL 4.8 - Point Set Processing: User Manualを実行してみる。aptで拾ってきたcgalだとバグがあるようで型エラーが取れなかったのでgithubからダウンロードしたソースコードをビルドして利用した。

続きを読む

Rの並列化

Rも並列化で高速化することが可能らしい。使うパッケージとしてはRmpi、snow、pforeachがある。pforeachが一番後発なので多分使いやすいのだろう?

2019/02/18 追記

parallel, foreach, dosnow, doparallel, snowfall, domc, furrr, future, future.batchtools, dompi など山ほど出てくる。

foreachパッケージをdoMCやdoSNOWパッケージと組み合わせて使うのが便利そうである。どちらを使うかであるが、foreach-based Parallelismを見ると

4.2. doMC: shared-memory parallelism
4.3. doSNOW: distributed-memory parallelism

とのことであり、doMCはそもそもWindows用のバイナリを配布していない。ということで、他の人に使ってもらうときはdoSNOW、自分で使うときは基本的にdoMC、クラスタを使うときはdoSNOWということにしておく。%dopar%でだめなら%do%にすれば並列化をoffにできる。

# doMC + foreach
library(foreach)
library(doMC)

registerDoMC(cores=as.integer(system("nproc", intern=TRUE)) - 1)

result <- foreach(i=1:10, .combine=c, .export=ls(envir=parent.frame())) %dopar% {
  myProc()
}
result
# doSNOW + foreach
library(foreach)
library(doSNOW, quietly=TRUE)
library(parallel) # detectCores

cluster <- makeCluster(detectCores(), type="SOCK")
# cluster <- makeCluster(detectCores() - 1, type="MPI")
registerDoSNOW(cluster)

result <- foreach(i=1:10, .combine=c, .export=ls(envir=parent.frame())) %dopar% {
  myProc()
}
result

stopCluster(cluster)

2019/02/19 追記

GPUも使ってみたい。R Language - GPU加速コンピューティング | r Tutorialを見るにnvidia製gpuならgputools、それ以外ならgpurを使うしかなさそう。openclパッケージはOpenCLをベタ書きするのでもはやRではない。