yNagaokaのブログ

このブログはNGS解析初心者がつまずいた部分と解決方法をまとめた覚書のようなものです。

samplepairlist.txtの作製方法に関しての覚書

はじめに

さて、前回はsamplelist.txtの作製方法をまとめました。今回はsamplepairlist.txtの作製方法をまとめようと思います。(例題のサンプルは前回と同様です。)

samplepairlist.txt (各項目は , 区切り)の形式おさらい

ChIP-samplename,Input-samplename,prefix,peak mode
HepG2_H2A.Z,HepG2_Control,HepG2_H2A.Z,sharp
HepG2_H3K4me3,HepG2_Control,HepG2_H3K4me3,sharp
HepG2_H3K27ac,HepG2_Control,HepG2_H3K27ac,sharp
HepG2_H3K27me3,HepG2_Control,HepG2_H3K27me3,broad
HepG2_H3K36me3,HepG2_Control,HepG2_H3K36me3,broad

サンプルによってかもしれませんがsamplelist.txtを作製するときに使用したsample.txtが使えそうです。ChIP-samplenameとprefixは同じ名前でOKで、Input-samplenameは繰り返しで行けそうです。

$ cat sample.txt
F1-CiPSC-Input
F1-CiPSC-K27ac
F1-CiPSC-K27me3
F1-CiPSC-K4me1
F1-CiPSC-K4me3
F1-CiPSC-p300
F1-CiPSC-Pol2
F1-CPC-Input
F1-CPC-K27ac
F1-CPC-K27me3
F1-CPC-K4me1
F1-CPC-K4me3
F1-CPC-p300
F1-CPC-Pol2

1行目のサンプルが2−7行目のInput-samplenameで、8行目が9−14行目のInput-samplenameというように84サンプル分続きます。

そこでInputが含まれていないものをsamplename.txtとして抜粋しておきます。

"含まれていないもの"を指定するには -v オプションを使います。

$ grep -v Input sample.txt > samplename.txt
$ cat samplename.txt
F1-CiPSC-K27ac
F1-CiPSC-K27me3
F1-CiPSC-K4me1
F1-CiPSC-K4me3
F1-CiPSC-p300
F1-CiPSC-Pol2
F1-CPC-K27ac
F1-CPC-K27me3
F1-CPC-K4me1
F1-CPC-K4me3
F1-CPC-p300
F1-CPC-Pol2

これを見るとinputのサンプルを6回ずつ繰り返したファイルを作ればpasteコマンドで楽に連結させることができそうです。やってみましょう。

$ for id in $(grep Input sample.txt)
do
    for i in {1..6}
  do
    echo $id >> inputname.txt
  done
done
$ cat inputname.txt 
F1-CiPSC-Input
F1-CiPSC-Input
F1-CiPSC-Input
F1-CiPSC-Input
F1-CiPSC-Input
F1-CiPSC-Input
F1-CPC-Input
F1-CPC-Input
F1-CPC-Input
F1-CPC-Input
F1-CPC-Input
F1-CPC-Input

 id という変数の中に $() の実行結果を入れます。内容はsample.txtからInputの名前が入ったサンプルを書き出しています。その後 id の中身を6回書き出して次の中身に行くといったものです。結果を見るとうまく準備できているようです。

これをpasteすればpeak modeを除いた部分の完成です。

$ paste -d , samplename.txt input.txt samplename.txt > samplepair.txt
$ cat samplepair.txt
F1-CiPSC-K27ac,F1-CiPSC-Input,F1-CiPSC-K27ac
F1-CiPSC-K27me3,F1-CiPSC-Input,F1-CiPSC-K27me3
F1-CiPSC-K4me1,F1-CiPSC-Input,F1-CiPSC-K4me1
F1-CiPSC-K4me3,F1-CiPSC-Input,F1-CiPSC-K4me3
F1-CiPSC-p300,F1-CiPSC-Input,F1-CiPSC-p300
F1-CiPSC-Pol2,F1-CiPSC-Input,F1-CiPSC-Pol2
F1-CPC-K27ac,F1-CPC-Input,F1-CPC-K27ac
F1-CPC-K27me3,F1-CPC-Input,F1-CPC-K27me3
F1-CPC-K4me1,F1-CPC-Input,F1-CPC-K4me1
F1-CPC-K4me3,F1-CPC-Input,F1-CPC-K4me3
F1-CPC-p300,F1-CPC-Input,F1-CPC-p300
F1-CPC-Pol2,F1-CPC-Input,F1-CPC-Pol2

あとはpeak modeですが以下の組み合わせで行きたいと思います。

K27ac→sharp
K27me3→broad
K4me1→sharp
K4me3→sharp
p300→sharp
Pol2→sharp

samplepair.txtは72行あるので12回繰り返したファイルを作れば良さそうです。

echoで書き出す際に\nを追加するとその部分で改行を入れることができます。

” ” で文字を指定してさらに改行する場合は-eオプションが必要です。

$ for i in {1..12}
do
    echo -e "sharp\nbroad\nsharp\nsharp\nsharp\nsharp" >> peaklist.txt
done
$ cat peaklist.txt 
sharp
broad
sharp
sharp
sharp
sharp
sharp
broad
sharp
sharp
sharp
sharp

最後にこのファイルをpasteすればsamplepairlist.txtの完成です。

$ paste -d , samplepair.txt peaklist.txt > samplepairlist.txt
$ cat samplepairlist.txt
F1-CiPSC-K27ac,F1-CiPSC-Input,F1-CiPSC-K27ac,sharp
F1-CiPSC-K27me3,F1-CiPSC-Input,F1-CiPSC-K27me3,broad
F1-CiPSC-K4me1,F1-CiPSC-Input,F1-CiPSC-K4me1,sharp
F1-CiPSC-K4me3,F1-CiPSC-Input,F1-CiPSC-K4me3,sharp
F1-CiPSC-p300,F1-CiPSC-Input,F1-CiPSC-p300,sharp
F1-CiPSC-Pol2,F1-CiPSC-Input,F1-CiPSC-Pol2,sharp
F1-CPC-K27ac,F1-CPC-Input,F1-CPC-K27ac,sharp
F1-CPC-K27me3,F1-CPC-Input,F1-CPC-K27me3,broad
F1-CPC-K4me1,F1-CPC-Input,F1-CPC-K4me1,sharp
F1-CPC-K4me3,F1-CPC-Input,F1-CPC-K4me3,sharp
F1-CPC-p300,F1-CPC-Input,F1-CPC-p300,sharp
F1-CPC-Pol2,F1-CPC-Input,F1-CPC-Pol2,sharp

これでようやく解析のスタートラインに立ちました。

このような感じでサクサクとリストが作製できればどんなにサンプル数が多くても対応できそうですね。