Python:在子进程中对多个变量使用awk。

2024-06-16 10:00:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在处理一个包含多个记录的PDB文件。如果您不熟悉这种格式,下面是一个示例文件:

收割台生长因子1996年1月16日1KLA

源分子数:1

备注210实验细节

备注210实验类型:核磁共振

SSBOND 7 CYS B 15 CYS B 78 1555 1555 2.02

SSBOND 8中环44环乙109 1555 1555 2.01

模型1

原子1 N ALA A 1 9.028-1.949-15.575 1.00 0.00 N

原子2 CA-ALA A 1 7.983-2.064-14.518 1.00 0.00摄氏度

原子1770 N ALA B 1-9.094-0.752 15.747 1.00 0.00 N

原子1771 CA-ALA B 1-8.052-0.952 14.700 1.00 0.00 C

结束MDL

连接98 225

连接215 1211

结束

我只想保留这个文件中的某些记录:(SSBOND、ATOM、MODEL、TER、CONECT、ENDMDL)并删除其他记录。为此,我制作了一个python脚本,它使用pdb_文件.pdb并创建一个输出文件pdb_清洁.pdb公司名称:

import subprocess

def prep_molecule(pdb_file):

    pdb_fileName = pdb_file.split(".")[0]
    subprocess.call(['awk \'"\$1==\\"SSBOND\\" || \$1==\\"ATOM\\" || \$1==\\"TER\\" || \$1==\\"CONECT\\" || \$1==\\"END\\" || \$1==\\"MODEL\\" || \$1==\\"ENDMDL\\"\\' +pdb_file+' > '+pdb_fileName+'_clean.pdb"'],shell=True)

也许问题出在引文上。我总是犯同样的错误:

^{pr2}$

实际上,我正在编写Python脚本,因为awk不是我运行的唯一命令。我的目标是自动化蛋白质动力学的完整管道,所以Python是必要的。。。在

提前谢谢!在


Tags: 文件脚本model记录pdbcafileatom
1条回答
网友
1楼 · 发布于 2024-06-16 10:00:12

我的建议是只使用awk,因为python对于这个相当简单的任务来说似乎有些不必要,但是,这里有一个在python中使用awk的解决方案:

文件:

$ cat pbd_file.pbd
HEADER GROWTH FACTOR 16-JAN-96 1KLA

SOURCE MOL_ID: 1;

REMARK 210 EXPERIMENTAL DETAILS

REMARK 210 EXPERIMENT TYPE :NMR

SSBOND 7 CYS B 15 CYS B 78 1555 1555 2.02

SSBOND 8 CYS B 44 CYS B 109 1555 1555 2.01

MODEL 1

ATOM 1 N ALA A 1 9.028 -1.949 -15.575 1.00 0.00 N

ATOM 2 CA ALA A 1 7.983 -2.064 -14.518 1.00 0.00 C

TER

ATOM 1770 N ALA B 1 -9.094 -0.752 15.747 1.00 0.00 N

ATOM 1771 CA ALA B 1 -8.052 -0.952 14.700 1.00 0.00 C

ENDMDL

CONECT 98 225

CONECT 215 1211

END

Python脚本如下所示(使用sys.argv[1]意味着您可以从命令行将所需的任何文件作为参数传递):

^{pr2}$

然后用python脚本“清理”文件:

$ python pdb_clean.py pdb_file.pdb

结果:

$ cat pdb_file_clean.pdb
SSBOND 7 CYS B 15 CYS B 78 1555 1555 2.02
SSBOND 8 CYS B 44 CYS B 109 1555 1555 2.01
MODEL 1
ATOM 1 N ALA A 1 9.028 -1.949 -15.575 1.00 0.00 N
ATOM 2 CA ALA A 1 7.983 -2.064 -14.518 1.00 0.00 C
TER
ATOM 1770 N ALA B 1 -9.094 -0.752 15.747 1.00 0.00 N
ATOM 1771 CA ALA B 1 -8.052 -0.952 14.700 1.00 0.00 C
ENDMDL
CONECT 98 225
CONECT 215 1211
END

相关问题 更多 >