CD-HITとは
・配列クラスタリングプログラム(http://weizhongli-lab.org/cd-hit/)
入力ファイル形式
・クラスタリングを実行させたい配列ファイルをFASTA形式で入力
出力ファイル形式
2種類
・クラスタリング実行後のFASTAファイル
・クラスター番号付きの.clstrファイル
問題
clstrファイルが扱いづらい。BLAST(https://blast.ncbi.nlm.nih.gov/Blast.cgi )の出力ファイルも同様。
→BED形式にしてBEDTools(https://bedtools.readthedocs.io/en/latest/ )を駆使したい。
つまり、csplitコマンド(https://linuxcommand.net/csplit/ )などでクラスターごとに分割後の、
hogehoge_clstr0.clstr
>Cluster 0
0 570nt, >chr1:7662318-7662888... at -/95.96%
1 178nt, >chr1:45648847-45649025... at +/99.44%
2 623nt, >chr1:51329409-51330032... at -/97.11%
3 187nt, >chr1:58841900-58842087... at -/98.40%
4 180nt, >chr1:60684077-60684257... at -/98.89%
5 629nt, >chr1:61108647-61109276... at +/96.98%
6 218nt, >chr1:61241171-61241389... at -/95.41%
7 748nt, >chr1:65918300-65919048... at -/96.79%
8 393nt, >chr1:67547311-67547704... at -/96.95%
これを
hogehoge_clstr0.bed
chr1 7662318 7662888
chr1 45648847 45649025
chr1 51329409 51330032
chr1 58841900 58842087
chr1 60684077 60684257
chr1 61108647 61109276
chr1 61241171 61241389
chr1 65918300 65919048
chr1 67547311 67547704
こうしたい。
解決法
今回はCD-HIT出力のヒトの常染色体のみを前提にしてるけど、
grepの正規表現をお好きなようにすれば生物種問わずBLASTにも対応できる。
grep -oでは正規表現にマッチした部分のみ抽出する。これを利用する。
bash
cat hogehoge_clstr0.clstr | grep -o '[0-9]\+:[0-9]\+-[0-9]\+' | tr ':-' '\t' | sort -k1,1n -k2,2n | awk '{print "chr"$0}' > hogehoge_clstr0.bed
シェルは偉大なり。
以上。