You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用awk在.pdb文件第4个氨基酸残基后添加TER行?

解决PDB文件中在指定残基后添加TER行的问题

我有一段PDB文件片段:

ATOM     73  HG1 GLU     4      77.769  51.123  52.300  1.00  0.00           H
ATOM     74  HG2 GLU     4      78.465  52.119  52.349  1.00  0.00           H
ATOM     75  CD  GLU     4      79.068  49.945  51.438  1.00  0.00           C
ATOM     76  OE1 GLU     4      80.069  49.715  50.698  1.00  0.00           O
ATOM     77  OE2 GLU     4      78.545  49.062  52.176  1.00  0.00           O
ATOM     78  C   GLU     4      81.179  52.948  53.610  1.00  0.00           C
ATOM     79  O   GLU     4      80.203  53.460  54.165  1.00  0.00           O
ATOM     80  N   GLU     5      82.590  53.305  53.698  1.00  0.00           N
ATOM     81  HN  GLU     5      83.090  53.117  52.847  1.00  0.00           H
ATOM     82  CA  GLU     5      83.454  54.267  54.627  1.00  0.00           C
ATOM     83  HA  GLU     5      83.749  55.087  53.980  1.00  0.00           H
ATOM     84  CB  GLU     5      82.258  54.565  55.220  1.00  0.00           C

需要在**第4个氨基酸残基(残基编号位于第5列)**的所有原子行之后添加一行TER。之前尝试的脚本awk 'NR==5 {print; print "TER"} NR!=5' my_pdb.pdb > pdb-with-ter.pdb无法实现需求,原因是NR代表行号,不是残基编号,没法精准定位到残基4的最后一行。

正确解决方案

核心思路是跟踪当前行与前一行的残基编号,当检测到残基编号从4切换到其他数值时,在切换前的最后一行后插入TER。使用以下awk脚本:

awk '{
    if (prev_res == 4 && $5 != 4) {
        print "TER"
    }
    print $0
    prev_res = $5
}' my_pdb.pdb > pdb-with-ter.pdb

逻辑说明

  • 用变量prev_res存储上一行的残基编号
  • 处理每一行时,先判断:如果上一行残基是4且当前行残基不是4,就打印TER
  • 打印当前行内容
  • 更新prev_res为当前行的残基编号

处理后的目标文件片段如下:

ATOM     73  HG1 GLU     4      77.769  51.123  52.300  1.00  0.00           H
ATOM     74  HG2 GLU     4      78.465  52.119  52.349  1.00  0.00           H
ATOM     75  CD  GLU     4      79.068  49.945  51.438  1.00  0.00           C
ATOM     76  OE1 GLU     4      80.069  49.715  50.698  1.00  0.00           O
ATOM     77  OE2 GLU     4      78.545  49.062  52.176  1.00  0.00           O
ATOM     78  C   GLU     4      81.179  52.948  53.610  1.00  0.00           C
ATOM     79  O   GLU     4      80.203  53.460  54.165  1.00  0.00           O
TER
ATOM     80  N   GLU     5      82.590  53.305  53.698  1.00  0.00           N
ATOM     81  HN  GLU     5      83.090  53.117  52.847  1.00  0.00           H
ATOM     82  CA  GLU     5      83.454  54.267  54.627  1.00  0.00           C
ATOM     83  HA  GLU     5      83.749  55.087  53.980  1.00  0.00           H
ATOM     84  CB  GLU     5      82.258  54.565  55.220  1.00  0.00           C

内容的提问来源于stack exchange,提问作者skywalker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 23:15:12