-1

これらの列を持つファイルがあります:

chr1    1397031 1445511   360   chr1    1436533 1436893
chr1    3558988 3639716   9837  chr1    3565359 3575196
chr1    9634389 9711556   1958  chr1    9635273 9637231
chr1    10657207 10657742  535  chr1    10629864 10676549
chr1    12590100 12594553 4453  chr1    12550526 12600407
chr1    14599424 14601321 1897  chr1    14590538 14619056
chr1    15352815 15419459 7429  chr1    15363278 15370707

4 番目の列は、2 番目、3 番目、6 番目、および 7 番目の列の間のオーバーラップを表します。

ということで、7列目と3列目の小さい方が重なり領域の終了位置です。そして2列目と6列目の間の大きい方が開始位置です。

誰でもawkスクリプトを手伝ってもらえますか?

4

1 に答える 1

1

よくあなたの質問はそれほど明確ではありません..あなたはあなたのデータを説明しましたが、あなたが何を得たいかについては言及しませんでした..

「オーバーラップ」の開始/終了をリストしたいと思いますか?

awk '{s=$2>=$6?$2:$6;e=$3<=$7?$3:$7;print $1,s,e,$4}' file

出力は次のようになります。

chr1 1436533 1436893 360
chr1 3565359 3575196 9837
chr1 9635273 9637231 1958
chr1 10657207 10657742 535
chr1 12590100 12594553 4453
chr1 14599424 14601321 1897
chr1 15363278 15370707 7429

列:

col1 is the text
col2 is the overlapping start
col3 is the overlapping end
col4 is the overlap 

魔法の質問に対する魔法の答え...:)

于 2012-10-11T14:13:02.323 に答える