LinuxおよびBash染色体ソートファイル

LinuxおよびBash染色体ソートファイル

この特定の方法で、すべてのファイルをゲノムデータと組み合わせる必要があります。つまり、最初に数字順に並べてから、アルファベット順に並べ替える必要があります。ファイル名は次のとおりです。

Homo_sapiens.GRCh38.dna.chromosome.1.fa.gz
Homo_sapiens.GRCh38.dna.chromosome.2.fa.gz
Homo_sapiens.GRCh38.dna.chromosome.3.fa.gz 
etc.
Homo_sapiens.GRCh38.dna.chromosome.11.fa.gz
Homo_sapiens.GRCh38.dna.chromosome.13.fa.gz
etc.
Homo_sapiens.GRCh38.dna.chromosome.X.fa.gz
Homo_sapiens.GRCh38.dna.chromosome.Y.fa.gz

bashでできるだけ簡単に行う必要があります。スクリプトなどは必要ありません。他のものも試してみましたが、sort -Vまだ動作しません。どんなアイデアがありますか? 8)

ベストアンサー1

zshシェルでは、

print -l Homo_sapiens.GRCh38.dna.chromosome.*.fa.gz(n)

必要な順序でファイルを印刷します。

$ print -l Homo_sapiens.GRCh38.dna.chromosome.*.fa.gz(n)
Homo_sapiens.GRCh38.dna.chromosome.1.fa.gz
Homo_sapiens.GRCh38.dna.chromosome.2.fa.gz
Homo_sapiens.GRCh38.dna.chromosome.3.fa.gz
Homo_sapiens.GRCh38.dna.chromosome.4.fa.gz
Homo_sapiens.GRCh38.dna.chromosome.5.fa.gz
Homo_sapiens.GRCh38.dna.chromosome.6.fa.gz
Homo_sapiens.GRCh38.dna.chromosome.7.fa.gz
Homo_sapiens.GRCh38.dna.chromosome.8.fa.gz
Homo_sapiens.GRCh38.dna.chromosome.9.fa.gz
Homo_sapiens.GRCh38.dna.chromosome.10.fa.gz
Homo_sapiens.GRCh38.dna.chromosome.11.fa.gz
Homo_sapiens.GRCh38.dna.chromosome.12.fa.gz
Homo_sapiens.GRCh38.dna.chromosome.13.fa.gz
Homo_sapiens.GRCh38.dna.chromosome.14.fa.gz
Homo_sapiens.GRCh38.dna.chromosome.15.fa.gz
Homo_sapiens.GRCh38.dna.chromosome.16.fa.gz
Homo_sapiens.GRCh38.dna.chromosome.17.fa.gz
Homo_sapiens.GRCh38.dna.chromosome.18.fa.gz
Homo_sapiens.GRCh38.dna.chromosome.19.fa.gz
Homo_sapiens.GRCh38.dna.chromosome.20.fa.gz
Homo_sapiens.GRCh38.dna.chromosome.21.fa.gz
Homo_sapiens.GRCh38.dna.chromosome.22.fa.gz
Homo_sapiens.GRCh38.dna.chromosome.X.fa.gz
Homo_sapiens.GRCh38.dna.chromosome.Y.fa.gz

最後は、(n)グローバルマッチで生成された名前を10進整数でソートします。最後はアルファベットX順に保持されますY

1つのファイルに結合するには:

cat Homo_sapiens.GRCh38.dna.chromosome.*.fa.gz(n) >Homo_sapiens.GRCh38.dna.combined.fa.gz

私が選択した名前はパターンと一致せず、フォーマットはgzipこのタイプのリンクを受け入れます(圧縮された結合ファイルを解凍すると、すべての結合ファイルの結合データが提供されます)。圧縮しておいたらbgzipそれから私は考えるあなたは大丈夫でしょう。

Mさらに、染色体(ミトコンドリアおよび配置されていない足場)がある場合、通常、Un最後に必要に応じてソートが多少混乱する可能性があります。

sort -t. -k5,5 -V(ドットで区切られた5番目のフィールドで「バージョンソート」を実行)を使用して、このソート順序を取得することもできます。一方sort -V(ソートフィールドを指定しない)は、染色体番号では38なく染色体番号に基づいてソートされます。


存在するbash

printf '%s\0' Homo_sapiens.GRCh38.dna.chromosome.*.fa.gz |
sort -z -t. -k5,5 -V |
xargs -0 cat >Homo_sapiens.GRCh38.dna.combined.fa.gz

これにより、関連するすべてのファイル名のリストが生成され、sortコマンドにパイプされます(すでに説明しました)。ソート後、ソートされxargsた名前を読み取り、呼び出してcatデータを結合します。例に示すように、出力は新しいファイルに書き込まれますzsh

パイプライン全体では、ファイル名はnullで終わる文字列として扱われます。

おすすめ記事