我有一个包含 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
applygsub()
来修改整个输入行或专门修改第 n个字段,但我只需要修改位置文件中列出的那些字段,由数据文件第一行上的列标签标识。我怎样才能实现awk
呢?