RにCのプログラムを取り込む

RにCのプログラムを取り込む方法についてのメモ

##RにCのプログラムを取り込む方法
とりあえず以下のプログラムを取り込んでみる
foo.c

プログラムがあるディレクトリへ移動して
R CMD SHLIB foo.c
と入力する.そうするとfoo.soというファイルが出来るので,これをRから参照することになる.

GUIのRを起動して
>dyn.load("hogehoge/foo.so")
>out <- .C("foo",as.integer(5), as.double(1:5), as.double(0))
と入力し,outを表示させると
>out
[[1]]
[1] 5

[[2]]
[1] 1 2 3 4 5

[[3]]
[1] 1 5
と出る.

リスト形式で戻るので,必要に応じて変更しよう
listsum <- function(x){
    n <- length(x)
    .C("foo",as.integer(n), as.double(x), as.double(0))[[3]]
}
とすると
>listsum(c(1,3,10))
[1] 14
と出る.



MacOSXへのOpenCVのインストール

#MacPortsを用いたOpenCVのインストールについてまとめてしました
#こちらの記事をどうぞ


前回はWindows上でOpenCVをいじってみたけど,今回はMacOSX上で使うためのインストール方法
少々やっかいなのでメモメモ


##参考WebSite
Hacking is believing@itoshi.tv - MacBook ProへOpenCVをインストールして, iSightで顔認識したりするぞ (動画付き)
Christoph Seibert: Weblog - OpenCV on Mac OS X

##用意するもの
Fink
iSquint
OpenCVのLinux用ソース
コンパイルエラーが起きても怒らない明鏡止水の心

##インストール方法
#1
Finkで以下のパッケージをインストールしておく
pkgconfig
giflib
libjpeg
libpng3
libtiff
gtk+2
gtk+2-dev
pango1-xft2-dev
glib2-dev
atk1
libtool14
autoconf2.5
automake1.9

#2
ffmpegはiSquint内に入っているらしいので,それを使う.
最新版はiSquint 1.5
dmgをマウントして,ffmpegを/usr/local/bin/以下にコピー
sudo cp /Volumes/iSquint/iSquint.app/Contents/Resources/ffmpeg /usr/local/bin/







#3
OpenCVをダウンロードしてくる.最新版はOpenCV 1.0.0
tarで解凍した後に./configure(オプションが結構あるので注意)
あとはmake, sudo make installという普通の流れ.
tar zxvf opencv-1.0.0.tar.gz
cd opencv-1.0.0
./configure --with-apps CPPFLAGS="-I/sw/include -I/usr/include/malloc" LDFLAGS=-L/sw/lib
make
sudo make install

#4
環境変数の設定
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
よく使う場合は.bashrcに書き込んでしまってもいいかも

#5
サンプルプログラムのコンパイル
cd samples/c
chmod +x ./build_all.sh
./build_all.sh



gfortranのインストール

##リンク先のHigh Performance Compupting for Mac OS Xからgfortranのバイナリが無くなってるようです.
##新しくインストール方法をまとめた記事を作っておきましたので,こちらへどうぞ


Fortranでプログラミングすることは滅多にないんだけど,Rのパッケージをインストールするときに必要なことが多いので,コンパイラのインストールメモ

この作業は失敗すると大変なことになるので要注意


##MacOSXにgfortranをインストールする方法
##必要な物
gfortranのバイナリー
失敗してもめげない勇気

##インストール方法
#1
High Performance Computing for Mac OS XのGCC 4 (auto-vectorizing gcc with openmp)のところにあるBinariesのところからgfortran-intel-bin.tar.gzをダウンロードする.
これはIntel版なので,PowerPCユーザーの人はgfortran-bin.tar.gzをダウンロード.

#2
適当なディレクトリに保存したgfortran-intel-bin.tar.gzをインストールする.
sudo tar zxvf gfortran-intel-bin.tar.gz -C /


これでインストールは完了
パスが通っていればTerminalでgfortranと入力すれと
gfortran: no input files
と返ってくるはず.



RでBioConductorのインストール

いろいろなサイトに方法が書いてあるから必要ないと思うけど,念のためメモ

#RでBioConductorのインストール方法
source("http://www.bioconductor.org/biocLite.R")
biocLite()
で完了.

あとは自動的にパッケージをインストールしてくれるので終わるのを待つだけ.



ソースからRをインストール

基本的にはインストーラーを使うから余りこの方法をとることはないと思うけど,念のためメモ.
基本はmake installでいいんだけど,./configureにつくオプションが結構多い.

(R for Mac Wikiより抜粋)
##IntelMacにソースからRをインストールする方法
##必要な物
gcc(GNU C Compiler) -Xcodeに付属の物でOK
g77(GNU Fortran Compiler) -Universal版かどうかは分からないけど,R2.2.1のインストーラーにはg77のインストーラーが付属している(ソースからインストールするのに,そのソフトのインストーラーを使うのは本末転倒な気がするけど)

##インストール方法
#1
The R Project for Statistical ComputingのDownloadから適当なCRANを選んでソースファイルをダウンロードする.
とりあえず2006/10/24現在最新版のバージョンは2.4.0

#2
適当な所に移動して解凍して,そのフォルダに移動する
tar zxvf /hogehoge/R-2.4.0.tar.gz
cd R-2.4.0

#3
./configureする.これが長い.
./configure --with-blas="-lptf77blas -lpthread -latlas"
CPPFLAGS=-msse3 CFLAGS="-g -O2 -march=pentium-m -mtune=prescott"
CXXFLAGS="-g -O2 -march=pentium-m -mtune=prescott"
FFLAGS="-g -O2 -march=pentium-m -mtune=prescott"

#4
あとはmake, make installするだけ
make
sudo make install

これでインストールは完了.



PC-MV71DX/U2のドライバがインストールできない

現象の原因が判明.
Buffalo製のPC-MV71DX/U2のドライバをインストールしようとすると,KS Capture(だったかな?)とかいうドライバーを入れる段階でブルースクリーンになって,Windowsごと落ちてしまう現象についてのお話.

色々と原因を調べてみたところ,どうやらLogicool社製のQuickCamというウェブカメラとの相性がすこぶる悪いらしいと言うことが判明.
とりあえずQuickCamの方をアンインストールしたら直ったけど,これってあんまりだよなぁ…
はやいとこ改善してくれないかしら.





Mac OS ROMを取り出す

前回見事に失敗した,IntelMac上でSheepShaverを使ってOS9を動かすという作業.
とりあえず最低限必要なMac OS ROMを取り出す作業を自宅で再開してみる.
0093にとっての初マックであるPowerPC G4搭載のMacminiならClassic環境が動作するので,多分Mac OS ROMも取り出せるはず.

恐らくこのMac OS ROMがネックになっているだろうから,コレさえ上手くいけば残りのインストール作業は上手くいくはず.
で,まぁ抽出には成功した訳なんだけど…これで動くのかな?
OS9のディスク自体は先生が持ってるので,今度研究室に行ったときに作業させて貰おう.

しかしMacOS9をIntelMacで動かすために,他のMacOS9が動くマシンを用意しなければならないというのも微妙に本末転倒な気がするなぁ.



IGOR Proの導入

研究室にIGOR Proが届いたみたいなので,早速インストールさせて貰いました.
UB化して無くてRosetta経由なのが少し残念だけど,まぁそれでも十分快適に動くから満足満足.
試しにサンプル音声データの解析を使ってみたら,かなり細かく分析していて面白い.
これは楽しめそう.

で…まぁインストールしたのはいいんだけど,使い方が良くわからん.
GUIが直感的じゃないというか……まぁ文句言っても仕方ないけど.
こりゃ当分マニュアルと格闘する日々が続きそう…



SheepShaverが言うことを聞かない

IntelMacでClassic環境がサポートされていないというのは有名な話だけど,裏技としてSheepShaverというソフトを使って動かす方法があるんだそうな.
聞いた話だと,もともとはBeOSをMacOS上で動かすためのソフトだったらしく,結構歴史があるエミュレーターみたい.
しかしBeOSを動かすためのソフトが,今度はMacOSを動かすためのソフトになるってのも,ちょっと皮肉めいてるような…

SheepShaverのレシピ
・MacOS 7.5.2~9.0.4のディスク
・Classic環境,もしくはOS9がインストールされたマシンから取ってきたROM
SheepShaver
・少々の根性

で,今日は大学で先生と一日共同作業
とりあえずMacOS9.0.4のディスクは幸運にも先生が持っていたのでセーフ.
ROMに関しても,教授が使ってたマシンから取ってきたのがあったのでセーフ.
で…準備は万全のはずなんだけど,上手くいかない.

どうやら取ってきたROMに問題があったみたいで,とりあえずROMを抽出する作業からやり直すことになったんだけど,TomeViewerというソフトを使ってROMを取り出す過程で何故かエラーが出る.
うーん,どうして?
俺何か悪い事しましたか?



ImageJ

先生からImageJというステキなソフトを紹介された.
なんでも米国国立衛生研究所で開発された画像処理ソフトウェアで,フリーなソフトウェアとのこと.
こういうのは学生としては嬉しい限り.

で,テキストのようなモノも教授から借りたのだけど,感想としては
「うおっ,古っ!!」
1997年発行の「画像解析テキスト NIHImage新講座」という本で,テキスト内に載ってるマシンも漢字Talk7.1搭載とか歴史を感じるものばかり.
本に載ってる内容が今でも通用するのかちょっと不安になってきます.

で,とりあえずまぁいじってみようということで,やってみたのが下の画像.
Keshi



ゼミで「あんパン」の芥子の実の数をかぞえられないかという話題があったので,ためしにやってみました.
まぁ結論としては,↓みたいな感じになって全然ダメ.
Keshi6



結局,光源の関係とかで芥子の実のみを抜き出すってのが難しいみたい.
Photoshopとかで加工しても良いんだけど,出来ればそういうことはしたくないし…
なにか良い方法はないかしら.



Rでteapotの立体モデルを表示

DavesWikiRMeshVisualizationに、Rでtaapotの立体モデルを表示する方法が掲載。

要teapot.nc(RMeshVisualizationにリンク有)

OpenGLのファイルをnetCDF形式に変換するらしいけど、方法が分からない。

さて、どうしたものか。



ソースからRのパッケージをインストール

ここに方法が掲載。

要は、"R CMD INSTALL -l [パッケージ名]"ってことでいいのかしらん?

でも、前にこの方法でやったけれども上手くいかなかったような。
PATHの設定とか必要なのかしらん。



MacOS X Ports

MacOS X Portsで、libjpegやlibpngなどをOSXのインストーラー形式で配布。

これならソースから./configure(こういう表現で良いのかな?)しなくて済みそう。
こういう便利なサイトって他にないのかしら?



R for Mac Wiki

R for Mac Wikiで、MacOSX上でRを使う場合のトラブルなどへの対処法を掲載。
色々と頼りになる情報が掲載されていて助かります。
つかこういうサイトってあんまり見かけないんですが、MacOSX上でRを使っている人って少ないのかなぁ…



LAM/MPIのインストール for MacOSX

+++++++++++++++++++++++++++++++++
## 前準備
X11とX11SDKをインストールしておく。


+++++++++++++++++++++++++++++++++
## Fink & FinkCommanderのインストール
Finkを以下のサイトからダウンロードする。
http://fink.sourceforge.net/index.php?phpLang=ja
2006年3月3日現在のバージョンは
Fink-0.8.0-Installer.dmg

dmg形式なので自動的にディスクイメージがマウントされる。
次にFink 0.8.0 Installer.pkgをダブルクリックして、画面に従ってインストールを行う。
インストールの最後にターミナル.appが開き、pathsetupのユーティリティが自動的に実行される。
その後、シェルの設定ファイルを書き換えるかどうか聞かれるのでSubmit(Yesだったかな?)をクリック。

その後、マウントされたディスクイメージの中のFinkCommanderというフォルダにあるFinkCommanderというファイルを、OSXのアプリケーションフォルダに移動し、インストールは終了。

## Finkの設定
http://fink.sourceforge.net/download/index.php?phpLang=ja
ここに細かい説明が書いてあるので省略。

## g77のインストール
GNUのfortran_77コンパイラであるg77をインストールする。
やり方はFink_Commander経由とターミナル経由の二つがあるが、ターミナル経由で
sudo fink install g77
と入力してインストールするのが一番手っ取り早いと思われる。



+++++++++++++++++++++++++++++++++
## LAM/MPIのインストール
lamのソースファイルを以下のURLからダウンロードする。
http://www.lam-mpi.org/
2006年2月16日現在のバージョンは
lam-7.1.1.tar.gz

適当なディレクトリ、例えば…
~/Documents/work/
にソースファイルを移動して。
tar zxvf lam-7.1.1.tar.gz
として解凍する。

~/.bashrc

export PATH=/usr/local/bin:/sw/bin:${PATH}
と書き加え保存する。
次に
~/.bash_profile

export DISPLAY=:0.0
source .bashrc
と書き加えて保存する。
これが終わったら一度ログアウトして再度ログイン。

その後
cd lam-7.1.1
./configure --with-rsh="/usr/bin/ssh -x"
make
sudo make install
でインストールは完了する。


+++++++++++++++++++++++++++++++++
##SSH RSA認証の設定
参考URL:http://homepage3.nifty.com/toralu/MEMO/ssh.html

>>>きちんとお互いのコンピュータでRSA認証による接続ができるようにしておくこと。


+++++++++++++++++++++++++++++++++
##NetInfoマネージャーの設定
>>>localhost本体の内容は絶対にいじらないこと

NetInfoマネージャーを起動し、/machines/localhostを複製する。
複製したlocalhost("localhostのコピー"という名前になってるはず)の内容を変更する。
変更するところは以下の3点
ip_addressを変更
nameを変更
servesを削除
この作業を自分のコンピューターの分を含めて接続するコンピューターの数だけ作る

例えば"Mac1"と"Mac2","Mac3"の3機で処理をするのなら、localhostの複製を3つ作成して、各複製を
==========
ip_address:***.***.***.***(対象のIP。)
name:Mac1
servesを削除
==========
ip_address:***.***.***.***
name:Mac2
servesを削除
==========
ip_address:***.***.***.***
name:Mac3
servesを削除
==========
のように変更する。

>>>ここで一度ログアウトして再度ログイン。


+++++++++++++++++++++++++++++++++
##lamhostファイルの作成
ホームディレクトリ以下にlamhosts(名前に特に制限はない)というファイルを作成する。
viなどを用いて中身を編集し、NetInfoマネージャーの項で変更したnameの欄を記入する。
上の例ならば
Mac1
Mac2
Mac3
といった感じ。


+++++++++++++++++++++++++++++++++
##RSA認証で互いを接続
SSH RSA認証の設定の項で行った接続を行う。
つまりは
Mac1 <-> Mac2
といった感じで相互接続。
やりかたはSSH RSA認証の設定の項にある参考URLのところに記載してあるのでここでは記さない。


+++++++++++++++++++++++++++++++++
##lamの起動
ここからはメインのマシンでの操作となる。仮に名前をMac1とする。

ホームディレクトリ(あるいはlamhostのファイルを作成したディレクトリ)に移動して、
lamboot lamhost
と入力することによってLAM/MPIが起動し、各マシンとの接続を行う。特にエラーが出なければ問題なく接続できていると判断していいだろう。

接続できてる機器を確認したい場合は
lamboot -v lamhost
と入力すれば、どうなっているか確認できる。


+++++++++++++++++++++++++++++++++
これでとりあえずLAM/MPIの設定は完了となる。