医学用語の変換が一発でいくようにする!!

ライフサイエンス辞書プロフェクとのデータベースをダウンロードすることが可能です!!

以下のサイトより、ことえり用かな漢字変換辞典をダウンロードしてきて、付属のPDFに書いてある操作をGUIで行えば完成です!!

PDFに書いてあるように、「扁桃体」などの単語が一発で変換できるのはかなりありがたいです。レポート作成に大活躍!!

macでシェルからofficeやhtmlファイルを開く。

Linuxの場合は、いちいち

$ choromium-browser foo.html &
$ openoffice.org foo.docx &

みたいな感じで、プログラムを明示してやる必要がありましたが、
Macの場合は、その必要はなく

$ open filename

ですべて解決します。
webブラウザであろうと、microsoftofficeであろうと何でも開くことができます。すばらしい!!!

blastallのめも

blastall -i query -d nr -o blast.out

http://blast.ncbi.nlm.nih.gov/Blast.cgi?CMD=Web&PAGE_TYPE=BlastDocs&DOC_TYPE=ProgSelectionGuide

Rで、共通した要素を抜き出す。

二つのベクトルがあったとき

それらに共通した要素を抜き出す方法を二つ紹介します。

> x <- c(1:10) > y <- c(3:5) > x
[1] 1 2 3 4 5 6 7 8 9 10
> y
[1] 3 4 5
> a <- x[x%in%y] > a
[1] 3 4 5
> z <- c(4,6,13,49) > b <- intersect(x,z) > b
[1] 4 6

Mac OS Xで作成したファイルの改行コードをUnix用に変換するワンライナー

$ tr '\r' '\n' < mac.txt > unix.txt

Macのソフトウェア.アップデートのフリーズの対処方法

題名の通りです。

Mac OS X 10.6.2を入れた状態でソフトウェアをアップデートしようとすると

フリーズしてしまいます。

そこで

$ rm ~/Library/Cachescom.apple.SoftwareUpdate

でひとつのファイルを消します。

すると問題は解消されます。

パス(PATH)の設定について考察する

シェルの初期設定ファイルはカレントディレクとドットファイルとして置いてあります。
これには二つの種類があります。
bashの場合、~/.bashrc(シェルを起動する度に読み込まれる)と~/.profile(ユーザーにログインする時に一度だけ読み込まれる)の2種類があります。
これらの設定ファイルには、コマンドパスやaliasの設定内容を記述します。
今回は、パスの設定について書こうと思います。
ホームディレクトリにbinディレクトリを作成して、そこにパスを通し、さらには実行ファイルを中に入れて実行してみます。
#まずは、パスを確認(PATHという変数を$をつけることで展開する)
$ echo $PATH
/home/kappa/bin:/usr/lib/libfm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

#ホームディレクトリにbinディレクトリを作る
$ mkdir ~/bin

#.profileに設定を追加する(リダイレクトを用いて、ファイルの末尾にechoの出力を追加する)
#もともとのPATHは/home/kappa/bin:/home/kappa/bin:/usr/lib/libfm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
#HOMEは、/home/kappa(echo $HOMEで確認可能)
#結局、もともとのPATHの内容の頭に$HOME/bin:すなわち、/home/kappa/bin:という文字列を追記して、PATH自体を上書きしてやればよいのである。
echo 'PATH=$HOME/bin:$PATH' >> .profile

#設定を反映させる。
$ source .profile

#PATHの内容を確認
$ echo $PATH
/home/kappa/bin:/home/kappa/bin:/usr/lib/libfm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

#例えば、perlでhello,worldプログラムを書いて、実行権限を与えて、~/binディレクトリ置いてみる。
$ cat > hello.pl
#/usr/bin/perl
print "Hello, world!!\n";
exit;
(Control + D)

$ chmod +x hello.pl
$ mv hello.pl ~/bin

#~/binのフィルはパスを指定せずに、プログラム名で実行できるようになっている。
$ hello.pl

#このように~/binに様々な言語のhello,worldを置いておいたら、
#hello(tabキー)とするだけで、いろんな言語の挨拶ができる。
#海外旅行には便利かも(?)
ホームディレクトリにパスの通ったディレクトリ(~/bin)を作成することは、プログラムのインストールにおいて極めて便利である。
アプリケーションのインストールにルート権限が必要だという認識は厳密には間違いである。
ソースコードからコンパイルしてソフトウェアをインストールするとき、(./configure, make)でプログラム自体はバイナリファイルとして実行可能な形式で生成します。
ルート権限になるのはmake installとするときに必要だと思います。
これは、ルートユーザしかアクセスのできないディレクトリ(/usr/local/sbin/,/sbin等)にこれらの実行ファイルをコピーするからなのです。
これらのディレクトリは、すべてのユーザーのシェルのコマンドパスが通っているため、みんなが共通して使用可能なプログラムとなります。
だから、ルート権限が必要なのです。
しかし、一個人ユーザーとしてバイナリファイルをパスを通ったディレクトリに置いて実行したいときは、ただ単に自分が作ったディレクトリ(今回ならば、~/binにパスを通し、そこにバイナリファイルを置いておけば良いだけなのです。
ですので、厳密にはプログラムのインストールにはルート権限が必要ではないと言えます。
このことを知っておけば、スパコンを使用するときでも、自分がアクセスできる範囲内でアプリケーションをインストールして使用することができるのです。

awkの基本。行列データをいじりたおす。

トップページ > bash > Rで作成した行列データをいじりたおす
Rで作成した行列データをいじりたおす - bash

DNAマイクロアレイにしても次世代シークエンサーにしても、タブ区切りテキストをいじり倒すのがとても重要です
最近のデータはもはや、ECELで開けない量のデータが出てきています。そうでなくても、ECELでいちいちデータいじるのもしんどいですし。。

#Rの起動
$R

#各実験データ(wild type 1,2 vs mutant 1,2)のオブジェクトを生成する。
#オミックスデータの場合、要素数は万のオーダであることに注意。
wt1 <- rnorm(10,sd=5,mean=10) wt2 <- rnorm(10,sd=5,mean=10) mt1 <- rnorm(10,sd=5,mean=10) mt2 <- rnorm(10,sd=5,mean=10) #4つのオブジェクトを列方向で結合させて、ひとつのマトリックスオブジェクトを生成する。 data <- cbind(wt1,wt2,mt1,mt2) #matrixからデータフレームに変換する。 data <- as.data.matrix(data) #geneIDを格納したオブジェクトを生成する。 geneID <- c("gene1","gene2","gene3","gene4","gene5","gene6","gene7","gene8","gene9","gene10") #geneIDとdataを結合させる。(geneIDすなわち行番号をcolnames(data)に組み入れず、意図的に列として扱うことで、シェルでも扱いやすくなる。) data <- as.data.frame(geneID,data) #表示してみる data geneID wt1 wt2 mt1 mt2 1 gene1 5.3540485 10.1280394 14.617105 6.858430 2 gene2 11.5216158 14.5030568 7.085197 13.102492 3 gene3 13.7710811 7.3251649 13.330784 10.927682 4 gene4 13.6855603 12.9628329 11.214203 8.208379 5 gene5 5.8908762 2.8704293 3.867760 13.401720 6 gene6 10.4802003 12.9800204 3.919811 13.068045 7 gene7 4.9378381 18.3811396 6.663597 8.449231 8 gene8 14.3298039 1.3903394 10.880709 10.668398 9 gene9 13.7565999 0.8564426 7.720071 7.457218 10 gene10 0.6470612 6.1940915 15.617938 18.897270 #タブ区切りテキストとして書き出す。row.names=Fであることに注意。 write.table(data, file="data.txt", append=F, quote=F, sep="\t",row.names=F, col.names=T) #Rの終了 q() #catコマンドでファイルの内容をざっと眺める。 $ cat data.txt geneID wt1 wt2 mt1 mt2 gene1 5.35404848886385 10.1280394156775 14.6171048972252 6.85843001971764 gene2 11.5216157754471 14.5030567924109 7.08519743930237 13.1024919832259 gene3 13.7710811043585 7.32516494384991 13.330783789993 10.9276822183253 gene4 13.685560287049 12.9628329089167 11.2142032367318 8.20837940027492 gene5 5.8908761625754 2.87042929983391 3.86776035487622 13.4017204451707 gene6 10.4802002976654 12.9800203785410 3.91981136037804 13.0680452237444 gene7 4.93783813414918 18.3811395889717 6.66359654696842 8.44923140218957 gene8 14.3298038985442 1.39033944308932 10.8807085354603 10.6683978986145 gene9 13.7565999427345 0.856442626818601 7.72007073640271 7.4572175263714 gene10 0.647061248986092 6.1940915115274 15.6179381871434 18.8972700901370 #tailコマンドにより、ヘッダー(このファイルならば一行目)を飛ばして、2行目より最終行まで表示 $ tail -n +2 data.txt gene1 5.35404848886385 10.1280394156775 14.6171048972252 6.85843001971764 gene2 11.5216157754471 14.5030567924109 7.08519743930237 13.1024919832259 gene3 13.7710811043585 7.32516494384991 13.330783789993 10.9276822183253 gene4 13.685560287049 12.9628329089167 11.2142032367318 8.20837940027492 gene5 5.8908761625754 2.87042929983391 3.86776035487622 13.4017204451707 gene6 10.4802002976654 12.9800203785410 3.91981136037804 13.0680452237444 gene7 4.93783813414918 18.3811395889717 6.66359654696842 8.44923140218957 gene8 14.3298038985442 1.39033944308932 10.8807085354603 10.6683978986145 gene9 13.7565999427345 0.856442626818601 7.72007073640271 7.4572175263714 gene10 0.647061248986092 6.1940915115274 15.6179381871434 18.8972700901370 #2列目(wt1)の合計値を計算してみる。 tail -n +2 data.txt | awk '{sum+=$2} END{print sum}' 94.3747 #2列目(wt1)の行数をカウントする。 $ tail -n +2 data.txt | awk '{ln++} END{print ln}' 10 #2列目(wt1)の平均値を求める。 $ tail -n +2 data.txt | awk '{sum+=$2 ; ln++} END{print sum/ln}' 9.43747 #各行の平均値を求める。 $ tail -n +2 data.txt | awk '{print ($2+$3+$4+$5)/4}' 9.23941 11.5531 11.3387 11.5177 6.5077 10.112 9.60795 9.31731 7.44758 10.3391 #各行においてFold Change(mt/wt)を求める(結果はリダイレクトによりファイルに書き出す。) $ tail -n +2 data.txt | awk '{print ($4+$5)/($2+$3)}' > fc.txt
1.38712
0.775713
1.14989
0.728846
1.97111
0.724113
0.648091
1.3708
1.03861
5.04523

#Fold Changeの列用のヘッダーを記入したファイルを用意する。
echo 'Fold Change(mt/wt)' > header.txt

#結合(concatenate)させる。
$ cat header.txt fc.txt > fold_change.txt
$ less fold_change.txt
Fold Change(mt/wt)
1.38712
0.775713
1.14989
0.728846
1.97111
0.724113
0.648091
1.3708
1.03861
5.04523

#もとのデータファイル(data.txt)とFC計算値の格納したファイル(fold_change.txt)を横方向に結合(pasteコマンド)
$ paste data.txt fold_change.txt > output.txt

$ cat output.txt
geneID wt1 wt2 mt1 mt2 Fold Change(mt/wt)
gene1 5.35404848886385 10.1280394156775 14.6171048972252 6.85843001971764 1.38712
gene2 11.5216157754471 14.5030567924109 7.08519743930237 13.1024919832259 0.775713
gene3 13.7710811043585 7.32516494384991 13.330783789993 10.9276822183253 1.14989
gene4 13.685560287049 12.9628329089167 11.2142032367318 8.20837940027492 0.728846
gene5 5.8908761625754 2.87042929983391 3.86776035487622 13.4017204451707 1.97111
gene6 10.4802002976654 12.9800203785410 3.91981136037804 13.0680452237444 0.724113
gene7 4.93783813414918 18.3811395889717 6.66359654696842 8.44923140218957 0.648091
gene8 14.3298038985442 1.39033944308932 10.8807085354603 10.6683978986145 1.3708
gene9 13.7565999427345 0.856442626818601 7.72007073640271 7.4572175263714 1.03861
gene10 0.647061248986092 6.1940915115274 15.6179381871434 18.8972700901370 5.04523

#発現量の変化(Fod Change)の大きい遺伝子の順にソートをかける。
$ sort -k 6,6 -n -r output.txt
gene10 0.647061248986092 6.1940915115274 15.6179381871434 18.8972700901370 5.04523
gene5 5.8908761625754 2.87042929983391 3.86776035487622 13.4017204451707 1.97111
gene1 5.35404848886385 10.1280394156775 14.6171048972252 6.85843001971764 1.38712
gene8 14.3298038985442 1.39033944308932 10.8807085354603 10.6683978986145 1.3708
gene3 13.7710811043585 7.32516494384991 13.330783789993 10.9276822183253 1.14989
gene9 13.7565999427345 0.856442626818601 7.72007073640271 7.4572175263714 1.03861
gene2 11.5216157754471 14.5030567924109 7.08519743930237 13.1024919832259 0.775713
gene4 13.685560287049 12.9628329089167 11.2142032367318 8.20837940027492 0.728846
gene6 10.4802002976654 12.9800203785410 3.91981136037804 13.0680452237444 0.724113
gene7 4.93783813414918 18.3811395889717 6.66359654696842 8.44923140218957 0.648091

#発現量が低下(Fold Change<1)の遺伝子だけを抽出し表示する。
$ awk '$6<1 {print $0} output.txt
gene2 11.5216157754471 14.5030567924109 7.08519743930237 13.1024919832259 0.775713
gene4 13.685560287049 12.9628329089167 11.2142032367318 8.20837940027492 0.728846
gene6 10.4802002976654 12.9800203785410 3.91981136037804 13.0680452237444 0.724113
gene7 4.93783813414918 18.3811395889717 6.66359654696842 8.44923140218957 0.648091

#ちなみに、タブ区切りテキストであるこのファイルをRで読み込むには、read.delim()を用いる。
$ R
output <- read.delim("output.txt")
#outputオブジェクトの内容確認。
output
geneID wt1 wt2 mt1 mt2 Fold.Change.mt.wt.
1 gene1 5.3540485 10.1280394 14.617105 6.858430 1.387120
2 gene2 11.5216158 14.5030568 7.085197 13.102492 0.775713
3 gene3 13.7710811 7.3251649 13.330784 10.927682 1.149890
4 gene4 13.6855603 12.9628329 11.214203 8.208379 0.728846
5 gene5 5.8908762 2.8704293 3.867760 13.401720 1.971110
6 gene6 10.4802003 12.9800204 3.919811 13.068045 0.724113
7 gene7 4.9378381 18.3811396 6.663597 8.449231 0.648091
8 gene8 14.3298039 1.3903394 10.880709 10.668398 1.370800
9 gene9 13.7565999 0.8564426 7.720071 7.457218 1.038610
10 gene10 0.6470612 6.1940915 15.617938 18.897270 5.045230

acerのネットブックのバックライトの調整

Acerのネットブック使っていて、バックライトの輝度が足りないと思ったら以下のコマンドを実行します。

Fn + -> or Fn + <-

macでターミナルから指定したディレクトリの内容をFinderで表示する

#カレントディレクトリをfinderで開く
$ open .

シェルでテキストファイル内容の部分表示(tail)

tail [-行数] [ファイル名]

によりファイルの内容を、先頭から数えて指定された行以降を出力する。


#先頭業を除去して指定された行以降を出力する。
$ tail +2 test.text

Chrome における便利なショートカット

できる限りマウスは使用したくないという変なこだわりに答えてくれるショートカットを集めました。

1 アドレスバー入力に一発で移動(?が入りますが)

Ctrl + e

2 新しいタブを作成

Ctrl + t

3 タブの間の移動

Ctrl + Tab

CでUnixのコマンドを呼び出す。

#include
#include

int main(void)
{
system("ls"); /* unixのlsコマンドを呼び出す。 */

return 0;
}

GNU Makeについてすこし勉強してみた。

cでコーディングしているときのお話。

ソースコードを分割するとき(プロトタイプ宣言を別のファイルに分けたりする)、コンパイルの順番を意識しなくてはいけない。

それをMakefileなるものに書き込むのである。

メモを以下に示します。

MakeをもちいてHello, worldを。

/* hello.c */

include

in t main(void)
{
printf("Hello, world!!\n");
return 0;
}

ここで、同一のディレクトリ内において以下の内容のファイルを作成


# Makefile
hello: hello.c
gcc -o hello hello.c

あとは、コマンドラインより

$ make
gcc -o hello hello.c

これで、helloという名の実行ファイルが生成されます。


もう少し、発展させます。

分割コンパイルの初歩です。


以下の二つのソースコードを作成します。

/* hello.c */
#include

int main(void)
{
printf("Hello, world!!\n");

aisatsu(); /* オリジナルの関数です */

return 0;
}


/* aisatsu.c */
#include

void aisatsu(void){
printf("Konnichiwa\n");
}



以下のようなメイクファイルを作る

#Makefile
hello: hello.c aisatsu.c
gcc -o hello hello.o aisatsu.o

hello.o: hello.c
gcc -c hello.c
aisatsu: aisatsu.c
gcc -c aisatsu.c

$ make

これでOK