パソコンを買いました
|.+|
買ったというより、今まで使ってたproたんがなんか体調を崩し気味で、予備用ということで買いました。airたんです。最近欲しかったんですよね、proが重くて。二つの意味で。
そこで、早速いろいろ設定するんですけど、なんか一応メモっとこうかなって。
・システム環境設定を変更する
>app store関連
Macは出荷時の設定ではApp Storeで購入したものしか起動できない設定になってます。
システム環境設定>セキュリティーとプライバシー>一般 に移動
左下の鍵のところをクリックして解錠 (要パスワード)
ダウンロードしたアプリケーションの実行許可をすべてのアプリケーションを許可に
keybordのcapsをcontrolにする
ターミナルを叩く身としてはよくcontrolを使いますので、Capsをcontrolにすると作業がはかどります
・夜フクロウを入れる
TWITTER!!!!!!!!!!
・Dropboxを入れる
ラボでファイルを共有する為に必須
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をインストールしないといろいろつらいですね。
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年生のときは、4ぐらいしか無かった
2年生の秋学期になって、この言葉を頂いて、せめて2と4ぐらいは自分でやろうと思った。1,3に関してはできるだけボスに機構と思った。
研究者に必要な能力はなんだろうか。
アカデミックに進んだとき、自分にそれらが付くのだろうか。
なんてことばっかり考えたり、なんで研究がうまく行かなかったり考えていたりで、あんまり良くない循環に笑
まぁそこらへんは永遠に考えていそうなんだよね。笑
では良いお年を。
大学2年になりました
2男になりました。
はやい。
後輩が入ってきます。
あ、|.+| です。
とりあえずは2年生となった自分の悲しみに明け暮れている次第でございます。
このブログもあまり更新していなくてすみません。
時期を見てまた更新していきます。
ただ書くネタがなくてですね....笑
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>にのみ色づけしてくれるので若干見やすくなります。