プログラムへの入力としてベクトルの要素の組み合わせを作成します。

プログラムへの入力としてベクトルの要素の組み合わせを作成します。

単語リストがあります。たとえば、

a=(ENCFF002CDP ENCFF002COQ ENCFF002DAJ ENCFF002DCM)  

可能なすべての組み合わせを実行するツールを使用したいと思います。たとえば、次のようになります。

bedtools intersect -a ENCFF002CDP -b ENCFF002COQ > ENCFF002CDP.ENCFF002COQ.intersected  
bedtools intersect -a ENCFF002CDP -b ENCFF002DAJ > ENCFF002CDP.ENCFF002DAJ.intersected  

可能なすべての組み合わせについてなど。

どうすればいいですか?

ベストアンサー1

declare -a encode_ids=(ENCFF002CDP ENCFF002COQ ENCFF002DAJ ENCFF002DCM)  

for (( i = 0; i < ${#encode_ids[@]}; ++i )); do
  for (( j = i + 1; j < ${#encode_ids[@]}; ++j )); do
    bedtools intersect -a "${encode_ids[i]}" -b "${encode_ids[j]}" \
      >"${encode_ids[i]}.${encode_ids[j]}".intersected
  done
done

上記のデュアルループは与えられたIDのすべての組み合わせを提供しますが、同じIDとそれ自体の組み合わせを無視し、組み合わせがすでに使用されているA場合はIDとそれ自体を組み合わせることを防ぎます。BBA

サンプルの配列は次のようにbedtool実行されます。

bedtools intersect -a ENCFF002CDP -b ENCFF002COQ >ENCFF002CDP.ENCFF002COQ.intersected
bedtools intersect -a ENCFF002CDP -b ENCFF002DAJ >ENCFF002CDP.ENCFF002DAJ.intersected
bedtools intersect -a ENCFF002CDP -b ENCFF002DCM >ENCFF002CDP.ENCFF002DCM.intersected
bedtools intersect -a ENCFF002COQ -b ENCFF002DAJ >ENCFF002COQ.ENCFF002DAJ.intersected
bedtools intersect -a ENCFF002COQ -b ENCFF002DCM >ENCFF002COQ.ENCFF002DCM.intersected
bedtools intersect -a ENCFF002DAJ -b ENCFF002DCM >ENCFF002DAJ.ENCFF002DCM.intersected

おすすめ記事