Aide-memoire

Bio-infomaticsで困った事の備忘録的なサムシング

自分が困った事をまとめた備忘録的なサムシング

パソコンを買いました

|.+| 

 

買ったというより、今まで使ってたproたんがなんか体調を崩し気味で、予備用ということで買いました。airたんです。最近欲しかったんですよね、proが重くて。二つの意味で。

 

そこで、早速いろいろ設定するんですけど、なんか一応メモっとこうかなって。

 

・システム環境設定を変更する

  >app store関連

   Macは出荷時の設定ではApp Storeで購入したものしか起動できない設定になってます。

システム環境設定>セキュリティーとプライバシー>一般 に移動

左下の鍵のところをクリックして解錠 (要パスワード)

ダウンロードしたアプリケーションの実行許可をすべてのアプリケーションを許可に

  keybordのcapsをcontrolにする

   ターミナルを叩く身としてはよくcontrolを使いますので、Capsをcontrolにすると作業がはかどります

 

夜フクロウを入れる

  TWITTER!!!!!!!!!!

 

Dropboxを入れる

  ラボでファイルを共有する為に必須

 

Xcodeを入れる App StoreでDL

  Command line toolsがないとgccがない、gccがないと何も"make"できない

 

・ Alfred2を入れる http://www.alfredapp.com

  便利なアプリランチャー

  これがあるといろんなことができるのでおすすめ

  でもOSX Yosemiteからはスポットライトで同様のことができるらしいから楽しみ

 

・ iTerm2を入れる http://www.iterm2.com

  MacだとTerminalがありますが、iTerm2はエンコードとかがよいらしい。背景とかいろいろ設定できるから、なんかよい。

  > zshrcの設定

   漢ならzshですよね。http://news.mynavi.jp/column/zsh/

 

・ perlbrewを入れる http://perlbrew.pl

  知ってる人は知ってるperlのバージョン管理ソフト的なサムシング 

  複数のperl (v5)のバージョンを同時にインストールして、使い分けができる

  cpanmという便利なモジュールインストーラーが手に入るので、よい

  > cpanmのlocal-libの設定

   root、sudoを持っていない人は、自分のホーム上にいろんなモジュールをインストールすることになる(普通は/usr/local/lib?)。最近ここら辺で苦戦しました。

   zshrcに次のこと書いておくと、よいかも?

alias cpanm=cpanm --local-lib=$HOME/perl5

PATH=$HOME/perl5/bin:$PATH

export PERL5LIB=$HOME/perl5/perlbrew/perls/perl-5.8.9/lib/:$PERL5LIB
export PERL5LIB=$HOME/perl5/lib/perl5:$PERL5LIB

   *現段階ではperl-5.8.9を入れているので、3行目は5.8.9になっているけど、ほかのやつを入れた場合は逐次増やしていけばいいと思う

  > デフォルトのモデルの更新

   perlをインストールしたとき、大半のものは結構古くなっている可能性が高いので、outdatedなものはとりあえず全部updateしましょう。

cpanm App::cpanoutdated;

cpan-outdated  | cpanm

 

・ homebrewを入れる  http://brew.sh

  MacPortsと並んでよく使われるアプリインストーラー。結構いろんなものをインスオールすることができるので、検索するだけでも結構楽しかったりする。間違いなく最初に入れるべきはGit、wget、lvの3つ。ほかはなんか気が向いたときに入れればいいと思います。あと、

% brew tap homebrew/science

  ってしているだけで、バイオ系のソフトが大量にインストール可能になります(MAFFTとかBowtieとか)

 

・ Rを入れる http://www.r-project.org

  みんな大好きR。図を作ったり統計検定したりいろんなことができます。いろんなlibraryがありますが、Rのバージョン依存が激しいので、Rswitchを入れることで回避しましょう (http://r.research.att.com)。

  > ggplot2 http://ggplot2.org

   図を作る中でも、かなり自由度の高いggplot2を僕はよく使ってます。初心者にとってはかなり難しいかもしれませんけど、使い慣れたらすごいきれいな図を作れるようになりますので、おすすめですね。

 

・ XQuartzを入れる https://xquartz.macosforge.org/landing/

  X11の代用。Macはlion?からX11をデフォルトで入れてくれなくなりましたので、一般公開されているXQuartzをインストールしないといろいろつらいですね。

 

Safari拡張機能

 Hatenaのブクマを使っている人だったら必須でしょうかね http://b.hatena.ne.jp/guide/safari_extension

 

・ perian・Flash playerを入れる http://perian.softonic.jp http://get.adobe.com/jp/flashplayer

  某動画サイトを作業用BGMとしてよく使うので、必須。というかこのリストの中で一番最初に入れたレベルで必須。

 

 

 

 

 

いま思いつくのはこれぐらいですかねぇ。

何かあれば随時付け加えておきます。

 

 

treefam.plの使い方

・自分の遺伝子をTreeFamのファミリーにassignする方法

TreeFam (http://www.treefam.org)に自分の配列をつっこむのもありですが、全ゲノムレベルで投げる場合はstand alone (https://github.com/treefam/treefam_tools/tree/master/treefam_scan)を使う.

自分で使ってみたけど、色々引っかかったので、一応メモ代わりに

 

・HMMER ver 3.0を使う

3.1bだとなんだかエラーが出るらしいので、HMMER3.0を使いましょう

http://xfam.wordpress.com/2009/09/11/pfam_scan-pl-part-ii/

 

・Bio::Perlをいれること

自分はperlbrewでperl-5.16を入れているんですけど、なんだか色々文句を言われましたので、怒濤のcpanmをしました.cpanmを持っていないヒトは是非使いましょう、めちゃくちゃ便利です

 

・テストrun

https://github.com/treefam/treefam_tools/tree/master/treefam_scanに従ってテストするんですけど、

  -hmm_fileはhmmファイルのパスじゃなくて、ファイル名のままです.

  -dirはhmmファイルのhmmpressバイナリーがあるディレクトリーを渡すんですけど、これはhmmer3.0のhmmpressを使わないと行けなかったっす.

  -cpuはオプションの一つなんですけど、指定しないと開いているコアを全部使うので、共有の計算サーバーとかだったら絶対付けましょう.

perl treefam_scan.pl -fasta example/example_small.fasta -dir example/hmm_lib/ -hmm_file TreeFam.hmm > ./test.tab

 

 

 

RPS-BLAST

ただの備忘録

 

blast+ 2.2.28でrps-blast用のpssmデータベースの作成

 

wget ftp://ftp.ncbi.nih.gov/pub/mmdb/cdd/cdd.tar.gz

% tar zxfv cdd.tar.gz

% ls | grep "KOG" | grep "smp" > KOG.pn

 

 KOG*.smpからtitleだけパース

<code>

#!/usr/env/bin perl

use strict;

use warnings;

 

my $foo = "";

my $hoge = 1;

 

open my $fh, "<", shift;

while( <$fh> ) {

  if( $_=~ /descr/ && $hoge == 1) {

    $hoge=0;

  }

  elsif( $_ =~ /\}\,$/ && $hoge == 0) {

    $foo .= $_;

    $hoge = 1;

 

    $foo =~ s/\n//g;

    $foo =~ s/title//;

    $foo =~ s/[\"\}\,]//g;

    $foo =~ s/^\s+//;

 

    print $foo."\n";

    $foo = "";

  }

  elsif ( $hoge == 0 ) {

    $foo .= $_;

  }

}

</code>

 

# % makeprofiledb -in foo.pn

% rpsblast -query /path/to/query.fa -db foo.pn -out test_rps_blast.txt -outfmt '6 qseqid stitle pident length mismatch gapopen qstart qend sstart send evalue bitscore'

9ヶ月ぶりじゃん

9ヶ月ぶりの記事。

 

別に書く内容が無かった訳じゃない、ただ、書く元気が無かっただけです。

一年でperlを書く力も、ちょっとは付いたと思います。

研究の方についてですはね、なかなか進まないですね。

まぁもう3年生になるってことで、進学とかについて色々考えはじめたんですよね。

 

今の直属のボスに4ヶ月前言われた言葉

----------------

さて、というわけで、大切なのは
1. 何を解き明かしたいかを明確にすること
2. それを解き明かす強い意志を持つこと
3. それを解き明かすために《手段を選ばず》手法を模索すること
4. それを解き明かすために尽力すること
になります。
 
 
ここで2と4は《絶対に》君にしかできません。しかし、現状ではここがまず出来ていないように思えます。
 
逆に、1と3は、研究はじめたての君にはおそらく自分の力だけでやることは《不可能》です。そのために教員やアドバイザーがいます。

----------------

 

1年生のときは、4ぐらいしか無かった

2年生の秋学期になって、この言葉を頂いて、せめて2と4ぐらいは自分でやろうと思った。1,3に関してはできるだけボスに機構と思った。

 

研究者に必要な能力はなんだろうか。

アカデミックに進んだとき、自分にそれらが付くのだろうか。

 

なんてことばっかり考えたり、なんで研究がうまく行かなかったり考えていたりで、あんまり良くない循環に笑

 

まぁそこらへんは永遠に考えていそうなんだよね。笑

 

では良いお年を。

 

大学2年になりました

2男になりました。

はやい。

後輩が入ってきます。

 

 

あ、|.+| です。

 

 

とりあえずは2年生となった自分の悲しみに明け暮れている次第でございます。

このブログもあまり更新していなくてすみません。

時期を見てまた更新していきます。

 

 

 

ただ書くネタがなくてですね....笑

Statistics::R

Statistics::R

自分は研究するとき、二つの言語をつかいます。それはPerlとRという言語。

Perlは文字列操作に秀ていて、ゲノム解析ソフト( G-Language )やパーサーとして用いられますが、"The R Project for Statistical Computing" (以下R) は統計処理や数値計算に秀でています。

私がよく使うCufflinksプロトコルでは、最終的に出力される各種ファイルの統合的解析ソフトのcummeRbundは、Rで作成されているBioConductorプロジェクトの一つのパッケージがある。バイオインフォマティクスの統計処理ではかなり便利なものである。

そんな二つの言語を一緒に使えるようにしたPerlのモジュールがStatistics::Rである。

 

Perlbrewが入っているならインストールは簡単。

% cpanm Statistics::R

たまにエラーとか出てしまって、ログとかみてテストで失敗しているようだったら -f オプションつけてインストールすると良いかもです(自分はそうしました)。

細かい使い方はいろいろあるのですが、自分はドキュメントの例で十分書けました。


# Statistics::Rを使用することを宣言
use Statistics::R ;
# Rのオブジェクトを作成する
my $R = Statistics::R->new() ;
# startRでRを起動させる
$R->startR ;
# send(q``)でRにコマンドを送る(作図する場合)
$R->send(q`postscript("file.ps" , horizontal=FALSE , width=500 , height=500 , pointsize=1)`) ;
$R->send(q`plot(c(1, 5, 10), type = "l")`) ;
# send(q``)の後に、 readすると、一つ手前の結果を変数に入れる
$R->send(q`x = 123 \n print(x)`) ;
my $ret = $R->read ;
# set()で第1引数の名前のRの変数に第2引数のPerlの変数の値を代入する
$R->set('param_A',$count);
$R->set('param_B',$count);
# Rを修了する
$R->stopR() ;



こんな感じで使えます。

自分はDESeqという発現量定量比較ソフトを動かすために使ってます。 ←これ

さらにめんどくさがりな自分はこれをモジュールとして作成して、別個にPerlスクリプトでサブルーチンとして読み出した物をシェルスクリプトで呼び出しています。




#!/bin/bash

if [ $# == 0 ]; then
	echo "This program runs a DESeq analysis on a Tab delimited Read Count file." 1>&2
	echo "USAGE::" 1>&2
	echo "script.sh replication_count file" 1>&2
	exit 1
fi

if [ -f $1 ]; then
    file=$1
    count=$2
    echo "Conducting DESeq analysis on $file"
    echo "There are" ${count:-null} " replications for each sample"
    perl rnaseq_deseq.pl ${count:-null} $file
elif [ -f $2 ]; then
    file=$2
    count=$1
    echo "Conducting DESeq analysis on $file"
    echo "There are" ${count:-null} "replications for each sample"
    perl rnaseq_deseq.pl ${count:-null} $file
fi



これをDESeqという名前で保存して、% chmod 755 DESeq してからパスを通してあげると、なんと

% DESeq input_file replication_number

ってやるだけでDESeqを自動ができる!!っていう優れもの。なんか自分でコマンド作るのって楽しいです。笑

次回はPerlモジュールの作成につういてかな!

|.+|

自分のよく使うunixコマンド

こんばんわ。

いや、朝見ている人がいるかもしれないからおはようございます。

.....

こんにちは!

気晴らしに記事を書きます、|.+| です。

 

今回の内容はプログラミングで必須なツール、

神様の作ってくださった最高のプログラミング言語Unixコマンドです。

これがあればpythonだろうがperlだろうがRだろうが必要ない!

ターミナルに一行書くだけで!文字列編集だろうがファイル統合だろうが!できちゃいます!

基礎的なもの( cd ls mv cp rm mkdir )は省略させていただきます、ご了承ください...

 

 

まぁ定番の物から

 

1. cut

これは便利。各行を決まった方式で分裂し、自分の欲しい列を手に入れられます。

自分は数千行のファイルでいちいちプログラミングで読み込んでするのがめんどくさいから重宝してます。

【使い方】

cut -d <区切り文字> -f <欲しい列番号> <ファイル番号>

-d (区切り文字) はデフォルトだとtab (\t) ですね、tabularファイルだったら気にしないでいいと思います。

 -f (欲しい列番号) は一つの数字、もしくはコンマやハイフンを使って -f 1-4 (1~4列)の様に使えます。また -f 3- のように使うと、3列目以降という認識になります。

一応区切り文字数も指定できます。◎番目〜□番目の文字が欲しい場合は

cut -c ◎-□ <ファイル>と出来ます。

 

2. sort

これは各行の順番をそろえるコマンドです。例えばa~zの文字が26行に渡ってランダムに割り振られているときsortを使うとアルファベット順に全部整形されます。

【使い方】

sort <ファイル名>

オプションは幾つかあります。

-nは数字としてソートする事。1,2,10,11,12はデフォルトでsortすると1,10,11,12,2となります。そこを-nつけてあげる事で数字として認識します。

-r 逆順。昇順だった物を降順にしてくれます。

 

3. uniq

これは連続して同じ行がある場合にまとめて表示してくれます。目で確認するのが面倒なほどの行数があるファイルだと重宝します。というかしてます。

【使い方】

uniq <ファイル名>

これもオプションいっぱいありますが、自分が特に使ってるもの。たいていの場合sortしてからuniqを使った方がいいです。

-c 行数をカウントして、<数字> <行の内容>という風に表示してくれます。

-d 重複している行のみを表示する。

 

====余談=====

1,2,3,をまとめて使うのをボクはよくしてます。

cut -f 2,3 hoge.txt | sort -n | uniq -c

という風に。|はパイプと言って、一個左のタスクの結果に対して右のタスクを行う、という感じです。パイプの数には限界はないです(常識の範囲内の使用をお願いします)。

一応自分がやった感じだと

cut -d "," -f 1,4  hoge.txt | sort -n | uniq | cut -d ":" -f 2  >  foo.txt

>とはリダイレクトと言って、左の結果を右のファイル名に書き込む、という意味となります。ですがこのリダイレクトは他にもいろんな使い方が合って、結果だけではなくエラーも別ファイルに書き出せたりしちゃえます(自分はやった事無いです...)

これに関連して、/dev/nullという便利な物があります。

ここにリダイレクトされた物は、ハードに蓄積される事無く消えます。

試しに % yes > /dev/null としてみてください。

yesは永遠に"yes"をプリントするコマンドですが、/dev/nullに書き込んで、一回yesを殺してみてください。(すぐに殺さないとパソコンが熱くなる事があります)

そして % less /dev/null とやってもyesは一つもありません。

エラーだけを見たいときとかで使った事あります。

====余談終了====

 

4. grep/egrep

これはもう便利。テキストファイルを開いて⌘+fをやる必要がなくなります。

【使い方】

% grep "<query>" hoge.txt

とやると、<query>の含まれる行のみプリントされます。

オプションはかなり豊富です。

-A <数字> : <query>の含まれる行の前<数字>行数もプリントします。

-B <数字> : <query>の含まれる行の後<数字>行数もプリントします。

-n : その行が何行目かも表示します。

-v : <query>を含まない行だけを表示します。

 

複数のqueryで検索したい場合はegrepを使います。

% egrep '<query1>|<query2>' hoge.txt

という風にパイプでつなげていけます。ですがこれはどちらかのqueryを含む場合になりますので、両方とも含まれる場合をしたかったら、2度grepするのが良いかもですね。

ボクはaliasでgrep --colorを張っています。これは<query>にのみ色づけしてくれるので若干見やすくなります。