1

よくある問題だと思いますが、まだ良い解決策が見つかりません。

以下のように、各行に染色体番号、染色体の開始位置、および関連する値が含まれるファイルがあります。

1       1.07299851019   1       1.07299851019   HQ      chrY    2845223         +       0.251366120219  46      
1       1.06860686763   1       1.06860686763   HQ      chr10   88595309        +       0.256830601093  47      
1       1.04688316093   3       3.14064948278   HQ      chr6    49126474        +       0.295081967213  54      
1       1.1563829915    1       1.1563829915    HQ      chrX    16428176        +       0.185792349727  34      

染色体 (6 列目) と開始位置 (7 列目) の両方で UNIX ソート コマンドを使用して、このファイルをソートしたいと考えています。周りを検索した後、これを思いついたので、かなり近づきました:

nohup sort -t $'\t' -k 6.4,6.5n -k 7,7n   

私が解決できない残りの問題は、番号で番号付けされた染色体は問題なくソートされますが、染色体Xと染色体Yは次のように開始位置で一緒にソートされるということです:

1       0.978579587641  9       8.80721628876   HQ      chrX    2861057 -       0.431693989071  79      
1       0.979500536702  1       0.979500536702  HQ      chrY    2861314 -       0.420765027322  77      
1       0.969979601694  9       8.72981641525   HQ      chrX    2861649 -       0.469945355191  86   

chrX と chrY を数字に置き換えたり、プログラムを書いたりして解決できることはわかっていますが、単純なコマンドを使用できると非常に便利です。これを繰り返します。

また、染色体が 1 番から 22 番、次に X 番、Y 番の順に並んでいるとよいでしょう。私のコマンドでは、X 番染色体と Y 番染色体が最初に来て、次に 1 番染色体から 22 番染色体が続きます。

4

3 に答える 3

2

Xから分離Yするには、フォールバック キーを指定できます。

nohup sort -t $'\t' -k 6.4,6.5n -k 6 -k 7,7n

(これは、2 つの行がフィールド内で数値的に比較して同等である場合、次のステップはフィールド内で6.4,6.5数値的に比較してから、フィールドを試すことを意味します)。6 7

免責事項:これは最後の段落の目標を満たしていません:

また、染色体が 1 番から 22 番、次に X 番、Y 番の順に並んでいるとよいでしょう。私のコマンドでは、染色体 X と Y が最初に来て、次に 1 番から 22 番の染色体が来ました。

XandYは数値ソート中にゼロとして扱われ、フォールバックはそれを変更しないためです。とにかく便利だと思います。

たとえば、chrX と chrY を数字に置き換えることで解決できることはわかっています […]

実際、その場でその置換を行うことができます。

sed 's/chrX/chr23/; s/chrY/chr24/' |
  sort -t $'\t' -k 6.4,6.5n -k 7,7n |
  sed 's/chr23/chrX/; s/chr24/chrY/'

(このコマンドの改行はオプションであることに注意してください。読みやすくするために含めましたが、実際に使用する場合は、必要に応じて、これを 1 行に入れることができます。)

于 2013-07-06T18:25:37.593 に答える