ブログのネタを日頃から探しているのですが、なかには、過去に先輩が取り上げていそうで、意外にも紹介していない話題が結構あります。
例えば、sortコマンド。
このコマンドは、言わずと知れた基本的なUnixコマンドですが、
社内でもあまり知られていない、素敵なオプションがあります。
このオプションがあればBEDファイルやVCFファイルを綺麗にソートすることが出来ますよ。
では、実際にBEDファイルをソートしてみます。
sort -k 1,1 target.bedchr1 172113674 172113784 MIR199A2chr10 63239798 63253189 TMEM26-AS1chr12 49250915 49259653 RND1chr15 41099273 41106767 ZFYVE19chr15 72879557 72879654 MIR630chr18 30252633 30352974 KLHL14chr2 149804343 149883273 KIF5Cchr2 203141153 203141241 SNORD70chr2 37869024 37899342 CDC42EP3chr20 37377096 37401089 ACTR5chr21 31581468 31584101 LINC00307chr3 14693252 14714166 CCDC174chr3 49058050 49058142 MIR191chr4 103715539 103749105 UBE2D3chr6 161581163 161583014 AGPAT4-IT1chr6 39282473 39290330 KCNK16chr8 109455852 109499136 EMC2chr9 100818958 100845365 NANSchrX 36011397 36019767 LOC101928564chrX 55477927 55478015 MIR4536-2
-kオプションで一列目を指定していますが並び順が変ですね。ポジションもソートされていませんね。
まずはポジションをソートしましょう。
sort -k 1,1 -k 2,2n target.bedchr1 172113674 172113784 MIR199A2chr10 63239798 63253189 TMEM26-AS1chr12 49250915 49259653 RND1chr15 41099273 41106767 ZFYVE19chr15 72879557 72879654 MIR630chr18 30252633 30352974 KLHL14chr2 37869024 37899342 CDC42EP3chr2 149804343 149883273 KIF5Cchr2 203141153 203141241 SNORD70chr20 37377096 37401089 ACTR5chr21 31581468 31584101 LINC00307chr3 14693252 14714166 CCDC174chr3 49058050 49058142 MIR191chr4 103715539 103749105 UBE2D3chr6 39282473 39290330 KCNK16chr6 161581163 161583014 AGPAT4-IT1chr8 109455852 109499136 EMC2chr9 100818958 100845365 NANSchrX 36011397 36019767 LOC101928564chrX 55477927 55478015 MIR4536-2
-k 2,2n オプションで2列目を数値扱いでソートしました。ポジションはバッチリですね。
あとは、染色体です。「-V」オプションを追加します。
sort -V -k 1,1 -k 2,2n target.bedchr1 172113674 172113784 MIR199A2chr2 37869024 37899342 CDC42EP3chr2 149804343 149883273 KIF5Cchr2 203141153 203141241 SNORD70chr3 14693252 14714166 CCDC174chr3 49058050 49058142 MIR191chr4 103715539 103749105 UBE2D3chr6 39282473 39290330 KCNK16chr6 161581163 161583014 AGPAT4-IT1chr8 109455852 109499136 EMC2chr9 100818958 100845365 NANSchr10 63239798 63253189 TMEM26-AS1chr12 49250915 49259653 RND1chr15 41099273 41106767 ZFYVE19chr15 72879557 72879654 MIR630chr18 30252633 30352974 KLHL14chr20 37377096 37401089 ACTR5chr21 31581468 31584101 LINC00307chrX 36011397 36019767 LOC101928564chrX 55477927 55478015 MIR4536-2
綺麗にソートされましたね。文句なしです。
本来「-V」オプションは、ソフトウェアのバージョン番号をソートするためのオプションですが、染色体番号にも使用可能です。
※ 残念ながらOS Xの場合は、付属のBSD版のsortコマンドに、「-V」オプションがありませんので、GNU版のsortが入っているCoreutils(http://www.gnu.org/software/coreutils/coreutils.html)をインストールする必要があります。
ちなみに、VCFファイルも1列目が染色体番号、2列目がポジションと、BEDファイルの例と同じですので、まったく同じオプションでソート可能です。
ですが、オプションを毎回書いてると面倒なので、エイリアスしておくといいですよ。
sortBedはbedtoolsですでにあるコマンド(http://bedtools.readthedocs.org/en/latest/content/tools/sort.html)ですし、sortFineで、登録しちゃいましょう。
bashをお使いの方は、~/.bashrc
zshをお使いの方は、~/.zshrc
などへ以下を記述します。
alias sortFine="sort -V -k 1,1 -k 2,2n"
必要であれば設定ファイルを再読み込みします。source ~/.bashrc
or
source ~/.zshrc
それでは、使ってみましょう。
sortFine target.bedchr1 172113674 172113784 MIR199A2chr2 37869024 37899342 CDC42EP3chr2 149804343 149883273 KIF5Cchr2 203141153 203141241 SNORD70chr3 14693252 14714166 CCDC174chr3 49058050 49058142 MIR191chr4 103715539 103749105 UBE2D3chr6 39282473 39290330 KCNK16chr6 161581163 161583014 AGPAT4-IT1chr8 109455852 109499136 EMC2chr9 100818958 100845365 NANSchr10 63239798 63253189 TMEM26-AS1chr12 49250915 49259653 RND1chr15 41099273 41106767 ZFYVE19chr15 72879557 72879654 MIR630chr18 30252633 30352974 KLHL14chr20 37377096 37401089 ACTR5chr21 31581468 31584101 LINC00307chrX 36011397 36019767 LOC101928564chrX 55477927 55478015 MIR4536-2
うーん、これは相当素敵です。相当ファイン、sortFineですね。