以前書いた以下のエントリでは、genome配列ファイルからgenome tableファイルを作成する方法を紹介しました。
UCSCから提供されているfetchChromSizes
を使うと、この作業をより簡便に行うことが可能です。
fetchChromSizesのインストール
UCSCサイトから fetchChromSizes
を直接ダウンロード可能です。
wget https://hgdownload.cse.ucsc.edu/admin/exe/linux.x86_64/fetchChromSizes chmod +x fetchChromSizes
またはbiocondaでもインストール可能です。
conda install -c bioconda ucsc-fetchchromsizes
fetchChromSizesの利用
例えばhg38のgenometableを作成するには以下のようにします。
$ fetchChromSizes hg38 > genometable.hg38.txt INFO: trying CURL for database hg38 url: http://hgdownload.soe.ucsc.edu/goldenPath/hg38/bigZips/hg38.chrom.sizes $ head genometable.hg38.txt chr1 248956422 chr2 242193529 chr3 198295559 chr4 190214555 chr5 181538259 chr6 170805979 chr7 159345973 chrX 156040895 chr8 145138636 chr9 138394717
ログに表示されている通り、このコマンドはUCSC database で公開されている chrom.sizesファイルhttp://hgdownload.soe.ucsc.edu/goldenPath/hg38/bigZips/hg38.chrom.sizes
をダウンロードしているだけです。なので、以下のコマンドと本質的に同じことをしています。
$ wget http://hgdownload.soe.ucsc.edu/goldenPath/hg38/bigZips/hg38.chrom.sizes -O genometable.hg38.txt --2021-05-24 20:15:40-- http://hgdownload.soe.ucsc.edu/goldenPath/hg38/bigZips/hg38.chrom.sizes ... 2021-05-24 20:15:40 (163 MB/s) - genometable.hg38.txt へ保存完了 $ head genometable.hg38.txt chr1 248956422 chr2 242193529 chr3 198295559 chr4 190214555 chr5 181538259 chr6 170805979 chr7 159345973 chrX 156040895 chr8 145138636 chr9 138394717
URLを直接指定しなくてよいぶん、fetchChromSizes
の方が簡便ですね。
fetchChromSizesの応用
fetchChromSizes
は結果を標準出力に表示しますので、出力をパイプすることができます。
上記のコマンドはコンティグ配列などを全て含んだgenometableを生成しますが、以下のコマンドでコンティグ配列分を除去したgenometableを作成できます。
# grep -vを使う場合 $ fetchChromSizes hg38 | grep -v _ > genometable.hg38.txt # awkを使う場合(より厳密) $ fetchChromSizes hg38 | awk -vOFS="\t" '($1!~/_/)' > genometable.hg38.txt $ cat genometable.hg38.txt chr1 248956422 chr2 242193529 chr3 198295559 chr4 190214555 chr5 181538259 chr6 170805979 chr7 159345973 chrX 156040895 chr8 145138636 chr9 138394717 chr11 135086622 chr10 133797422 chr12 133275309 chr13 114364328 chr14 107043718 chr15 101991189 chr16 90338345 chr17 83257441 chr18 80373285 chr20 64444167 chr19 58617616 chrY 57227415 chr22 50818468 chr21 46709983 chrM 16569
以下のようにするとbed形式にできます。
$ fetchChromSizes hg38 \ | awk -vOFS="\t" '($1!~/_/){ print $1, "0", $2 }' \ > hg38.bed $ cat hg38.bed chr1 0 248956422 chr2 0 242193529 chr3 0 198295559 chr4 0 190214555 chr5 0 181538259 chr6 0 170805979 chr7 0 159345973 chrX 0 156040895 chr8 0 145138636 chr9 0 138394717 chr11 0 135086622 chr10 0 133797422 chr12 0 133275309 chr13 0 114364328 chr14 0 107043718 chr15 0 101991189 chr16 0 90338345 chr17 0 83257441 chr18 0 80373285 chr20 0 64444167 chr19 0 58617616 chrY 0 57227415 chr22 0 50818468 chr21 0 46709983 chrM 0 16569
結果をソートしたい場合は以下のようにしましょう。
$ fetchChromSizes hg38 \ | awk -vOFS="\t" '($1!~/_/){ print $1, "0", $2 }' \ | sort -k1,1 -k2,2n \ > hg38.bed $ cat hg38.bed chr1 0 248956422 chr10 0 133797422 chr11 0 135086622 chr12 0 133275309 chr13 0 114364328 chr14 0 107043718 chr15 0 101991189 chr16 0 90338345 chr17 0 83257441 chr18 0 80373285 chr19 0 58617616 chr2 0 242193529 chr20 0 64444167 chr21 0 46709983 chr22 0 50818468 chr3 0 198295559 chr4 0 190214555 chr5 0 181538259 chr6 0 170805979 chr7 0 159345973 chr8 0 145138636 chr9 0 138394717 chrM 0 16569 chrX 0 156040895 chrY 0 57227415