计算化学公社

标题: 关于将PDB文件转为特定格式的脚本问题求助 [打印本页]

作者
Author:
lym563557413    时间: 2020-6-30 10:01
标题: 关于将PDB文件转为特定格式的脚本问题求助
本帖最后由 lym563557413 于 2020-6-30 10:04 编辑

有已知的PDB文件,如下,
ATOM      1  N   TYR A   1       1.195   3.926   2.552  1.00  0.00           N  
ATOM      2  CA  TYR A   1       0.509   3.483   1.309  1.00  0.00           C  
ATOM      3  C   TYR A   1       1.466   3.480   0.121  1.00  0.00           C  
ATOM      4  O   TYR A   1       2.626   3.875   0.242  1.00  0.00           O  
ATOM      5  CB  TYR A   1      -0.662   4.428   1.036  1.00  0.00           C  
ATOM      6  CG  TYR A   1      -1.698   3.859   0.092  1.00  0.00           C  
ATOM      7  CD1 TYR A   1      -2.555   2.843   0.497  1.00  0.00           C  
ATOM      8  CD2 TYR A   1      -1.814   4.337  -1.206  1.00  0.00           C  
ATOM      9  CE1 TYR A   1      -3.499   2.321  -0.366  1.00  0.00           C  

想通过读取TYR和它前面这一列,生成特定格式的txt文件,如 读取到TYR并且前面是CA,则写入新的txt文件内容为:
6     1       1.195   3.926   2.552

解释:我想通过TYR和它前面那列,生成自动的两列序号,第一列为元素周期表的序号,第二列为我自己定的号,剩下的则写入它的xyz坐标
关与脚本 不是很懂,请求有人给个例子,非常感谢!


作者
Author:
snljty    时间: 2020-6-30 12:18
本帖最后由 snljty 于 2020-6-30 13:43 编辑

用靠谱的搜索引擎搜索下面几个Linux相关内容:
Linux cut命令
Linux awk命令
Linux declare命令
Linux shell 字典
Linux 管道符
Linux 重定向输出
不想学shell也可以,如楼下,直接学python我觉得更简单一些。


作者
Author:
agent99    时间: 2020-6-30 12:49
楼上+1

或者用python(好处是不限于linux,windows也行),你这个需求20行左右就可以搞定
作者
Author:
lym563557413    时间: 2020-6-30 14:03
snljty 发表于 2020-6-30 12:18
用靠谱的搜索引擎搜索下面几个Linux相关内容:
Linux cut命令
Linux awk命令

这个用awk命令等,确实可以实现这种转换,不过我之后会面临更多不同的蛋白,因此如果有个可以循环的脚本最好。不过谢谢
作者
Author:
lym563557413    时间: 2020-6-30 14:04
agent99 发表于 2020-6-30 12:49
楼上+1

或者用python(好处是不限于linux,windows也行),你这个需求20行左右就可以搞定

正在尝试用python写,不过很不熟练,后续会继续发一下,如果有问题还请多指教
作者
Author:
liuyuje714    时间: 2020-6-30 14:08
awk编程还不是可以循环,你就当C语言写就行。很强大的
作者
Author:
lym563557413    时间: 2020-6-30 14:11
liuyuje714 发表于 2020-6-30 14:08
awk编程还不是可以循环,你就当C语言写就行。很强大的

我的编程基础只有一点FORTRAN的,C语言确实没有接触过,还用过python的程序
作者
Author:
sobereva    时间: 2020-6-30 19:08
这种事情用你现在已经会的Fortran就可以很容易地写出来,完全没必要为此还学python去。把格式化输入输出搞懂,把相应的列读入相应变量里,弄个循环就搞定了,简单至极。有不懂的你再具体问。

作者
Author:
DoubeeTwT    时间: 2020-7-2 21:00
思路:

1. 新建一个空的数组Result=[]
2. 循环
    2-1. 按行读取文件(百度一下python文件读写)
    2-2. 判断第四列是不是TYR
    2-3. 将需要的信息保存至一开始新建的空数组中
3. 保存空数组为 Result.txt

*需要百度 for循环 | 文件I/O | if判断

作者
Author:
lym563557413    时间: 2020-7-10 16:20
DoubeeTwT 发表于 2020-7-2 21:00
思路:

1. 新建一个空的数组Result=[]

多谢,已写完小程序!多谢各位!




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3