行と列のラベルが付いた DNA 塩基配列の表を含む元のファイルと、列のラベルのサブセットをリストした別の「位置」ファイルがあります。元のファイルを処理して、位置ファイルで識別された列の値を変換する必要があります。
元のファイルの例:
name pos1 pos2 pos3 pos4 pos5 pos6 pos7
name1 AT TA CT GT CC TC TT
name2 AA TA TT GT TC TC TT
name3 AT TT CG AT CT TC TT
name4 GT TA CT TT CC TC TT
ポジションファイルの例:
pos1
pos3
pos6
pos7
選択した各フィールドで、次の翻訳を実行する必要があります。
A to T
C to G
G to C
T to A
したがって、提供された位置ファイルに基づいてサンプルの元のファイルを処理することによって得られる出力は次のようになります。
name pos1 pos2 pos3 pos4 pos5 pos6 pos7
name1 TA TA GA GT CC AG AA
name2 TT TA AA GT TC AG AA
name3 TA TT GC AT CT AG AA
name4 CA TA GA TT CC AG AA
したがって、最初の行は変更されず、後続の各行では、列ラベルpos1
、pos3
、pos6
、およびに対応するフィールドpos7
が変換されますが、他のフィールドは変更されずに保持されます。
awk
apply を使用してgsub()
入力行全体を変更する方法、または n番目のフィールドを具体的に変更する方法は知っていますが、変更する必要があるのは、データ ファイルの最初の行の列ラベルで識別されるように、位置ファイルにリストされているフィールドのみです。どうすればそれを実装できawk
ますか?