今日から、俺は、遺伝子解析、始めます。 -15ページ目
・2つのファイルの共通行を検索する
grep -x -i -f  file1.txt file2.txt
・or検索
grep -e hoge -e fuga file.fasta
・「以外」検索("hoge"を含まない行)
grep -v hoge file.fasta
・"hoge"以下3行を出力("hoge"行を含めて計4行)
grep -A 3 hoge file.fasta
grep -B 3 hoge file.fastaだとhogeの上3行を出力
 ・"hoge"のN番目のhitで出力を止める(n=1にすれば最初のhitのみ出力できる)
grep -m N hoge file.fasta
・tabを検出する
grep hoge$'\t' file.txt
grep -e ^[0-9]*$'\t'${AROE}$'\t'${GDH}$'\t'${GKI}$'\t'${RECP}$'\t'${SPI}$'\t'${XPT}$'\t'${DDL}
これで表検索できる
・grepで正規表現(数字の並びの後_(アンダーバー)がある行を検索)
grep -o 'NODE_[0-9]*_'

A=0

num=$(wc -l ${f}_recombination_integ.bed | sed 's/[\t ]\+/\t/g' | cut -f1)
 

# wc -lでこれから行うwhile文の最大値を決める。
 

while [ $A -ne $num ]
do

       A=$(expr $A + 1)
       B=$(expr $A - 1)
       C=${A}p

sed -n ${C} ${f}_recombination_integ.bed > ${f}_recombination_integ${A}.bed
maskFastaFromBed -fi ${B}.fasta -bed ${A}.bed -fo ${A}.fasta
done
 

 

・awkでcsvの1列目にコメント追加

awk '{print "Chromosome""\t"$1"\t"$2}' file.txt

######################{ }を' 'ではさむ################################

 

・awkの中でshell変数を代入する

#!/bin/sh

time=1200

awk -v var=${time} '{print var""\t"$1}' file.txt >> output.txt

################shell変数をawk変数にまず渡す(-v var=${time})###########

 

・抽出参照

https://orebibou.com/2016/02/linuxunix%E3%81%A7%E6%96%87%E5%AD%97%E5%88%97%E3%81%8B%E3%82%89%E7%89%B9%E5%AE%9A%E9%83%A8%E5%88%86%E5%8F%B3%E3%81%8B%E3%82%89%E3%83%BB%E5%B7%A6%E3%81%8B%E3%82%89%E4%BD%95%E5%80%8B%E3%80%81%E3%80%87/#AB

 

・「:」から「|改行」までを削除

awk '{sub(":.*.|\n","");print $0;}'

 

・n列目がtestの行だけ抽出

awk '$n=="test"{print $0}' file.txt

 

・23/24の24を抽出

awk -F/ '{print #2}

(-Fの後の文字を区切りに2番目のものをprint)

 

・タブ区切りの3列目の平均値を求める

>less test.txt

a   a   1

b   b   2

c   c   3

>less test.txt | awk '{sum+=$3} END {print sum/NR}'

>2

 

・2列目が3より大の行を抽出

>less test.txt

yxdL_1  4
yxdL_2  1
yxdL_3  1
yxeN    3
znuA    2
znuB    2
znuC    1
zwf     2
 

>cat test.txt | awk '$2 > 3 {print $0}'

yxdL_1  4

 

 

・1行目だけ削除

$sed -e '1d' file.txt

・1行目から5行目を削除

$sed -e '1,5d' file.txt

・Nを全て削除する

$sed 's/N//g' file.txt

・特定文字から特定文字までを抽出する

>less test.fasta

>test1

aaaaaaaaaaa

cccccccccc

tttttttttttttt

ggggggggggg

>test2

cccccccccc

aaaaaaaaaaa

>less test.fasta | sed -ne /">test1"/,/">"/p | sed '$d'

>test1

aaaaaaaaaaa

cccccccccc

tttttttttttttt

ggggggggggg

(test1から>列までを抽出して、最後の1行を消去)

 

・5行目を抽出

sed -n 5p file.txt

 

・シェルの中で行末の特定文字を変換(かつ変数を用いる)

#!/bin/sh

echo "######key in dir name with path#####"

read dir
echo "######key in alterfile name#######"
read file
cd ${dir}
for f
do
rename=$(less filename.txt | grep -w ${f} | head -1 | cut -f6)
less ./${file} | sed -e "s/${f}\$/${rename}/g" > ./middle
rm ${file}
mv ./middle ${file}

done

これでfilename.txtを参考に${file}ファイルのIDを変更できる

 

・特定文字(>)の後に文字を挿入

less test.fasta

>E1

atcc

>E2

gtcc

 

less test.txt | sed -e '/>/s/$/[E. coli]/g' > res.txt

less res.txt

>E1[E.coli]

atcc

>E2[E. coli]

gtcc

 

・ある文字をタブに置換(_をタブに置換)

sed s/_/'\t'/g test.txt

 

・特定文字がある行を削除

sed '/abc/d' input.file

sed '/>/d' input.fasta

 

 

 

 

 

Nodeのラベルがついているtreeファイルは、Figtreeで見るときにそのラベルをPhylogenyの上に書き出せる。(当たり前と言えば当たり前だが)

Node labels→Displayから読み込み時に設定したのラベルの名前を選択。

 

これだけです。

 

・grepで抽出を行うときにうっとうしいイベントその1

検体名を抽出したいので、

$grep "ERR10" 

とすると

ERR10だけでなく、ERR100もERR101も102もそれこそERR1000も抽出されてしまう。

なんて事だ。

 

しかし、こういう抽出は何かのプログラムのアウトプットファイルに対して行うことが多い。

その際にはたいていERR10といった検体名の後はタブかスペースかカンマかダブルクォーテーションか、なにかしらの区切り文字がくるはず。

 

そこで回避的に

$grep -E "ERR10[^0-9]"

として、ERR10の後に数字以外の文字がくる配列を抽出すれば、うまくいくことが多い。

 

上記のようなあほな備忘録を書いてしまったが、grepには-wオプションなるものがあった。

less file.txt

abc

bc

grep -w bc file.txt

bc

となる。 

$sudo apt-get install openssh-server
で環境をインストール。
$ifconfig
でIPアドレス確認。
br0:後のinet 00.000.00.00がIPアドレスらしい。
普段はMobaExtermをつかっているが、今日はTeratermなるものをインストールして使ってみた。
ホストにIPアドレスを入れ、TCPポート22、SSH2で接続。
IDをPWを入れたらすんなり使えた。ファイルの送受信もできる。
しかしh、MobbaExtermの方がはるかに使いよい。これを使えばsambaの導入もいらないのではないだろうか。

自分の解析用にLinux環境が欲しくなった。

でもいきなりハイグレードなPCを買う勇気もなく、とりあえず昔使っていたノートPCを持ってきた。i5-2520M メモリ4GB。今でも十分に使えそうなスペックだ。もったいない。

でも使っていないから、Biolinux8を入れてみることに。

16GBのUSBにbiolinux8を入れる。isoファイルじゃないとインストールできないので注意。sangerが素敵なカスタマイズbiolinux8を出しているから使いたいけどovaファイルじゃ仮想化にしか使えない。

さらに UNetbootinなるソフトも必要。windowsにインストールし、biolinux8が入ったUSBを指す。

UNetbootinのホームページに書いている通り「Diskimage」にチェックを入れ、先ほどダウンロードしたBioLinux8のisoファイルを指定。

これでUSBは完成!

このUSBをインストールしたいPCにさして、ブートでUSBから立ち上げる。

あとは流れにのってやれば特に問題はなさそうだった。

パーティションも自動でやってくれる。特にこだわりを持った方がいいのだろうか。でも自分にはそれほどの知識もなく。。。ひとまずインストール終了。

Ubuntuのアップデートの告知がうざいので、何とか消したい。何となくupdateして環境が変わるのは最悪だし、とりあえず14.04のままで継続することにした。