我正在尝试为 .pdb 文件编写一个快速解析器(它们显示蛋白质结构)。我正在查看的蛋白质示例是 KRAS(常见于癌症),位于此处: http ://www.rcsb.org/pdb/files/3GFT.pdb
如果向下滚动足够远,您将看到如下所示的一行:ATOM 1 N MET A 1 63.645 97.355 31.526 1.00 33.80 N
第一个元素“原子”意味着这与蛋白质中的实际原子有关。 1 与一般计数有关,N 与原子类型有关,“MET”是残基的名称,“A”与链的类型有关,1(第二个“1”)是原子计数和那么接下来的 3 个数字是空间中的 xyz 位置。
我需要的输出是这样的(下面的“1”对应于原子计数,而不是一般计数): MET A 1 63.645 97.355 31.526
使事情变得更复杂的是,有时原子数(在本例中为第二个“1”)为负数。在那些情况下,我想跳过该行并继续,直到我找到一个积极的条目,因为这些元素与找到位置所需的生物化学有关,而不是实际的蛋白质。更糟糕的是,有时你会得到这样一行:
原子 139 CA 艾尔 A 21 63.260 111.496 12.203 0.50 12.87 C
ATOM 140 CA 胆汁 A 21 63.275 111.495 12.201 0.50 12.17 C
虽然他们都提到残基 21,但生物化学不够精确,无法获得准确的位置,因此他们提供了两种选择。理想情况下,我会指定“1”、“2”或其他任何内容,但如果我只选择第一个选项就可以了。最后,对于我原始示例中的原子类型(“N”),我只想获得带有“CA”的那些行。
我是 python 的新手,我接受过生物统计方面的培训,所以我想知道最好的方法是什么?我是否使用 for 循环逐行解析?有没有办法在 python 中更快地完成它?我如何处理某些原子的双重条目?
我知道这有点问,但一些指导会很有帮助!我已经使用 R 编写了所有统计位,但现在我只需要以正确的格式获取我的文件!
谢谢!
原文由 user1357015 发布,翻译遵循 CC BY-SA 4.0 许可协议
那是一个很长的描述。我不确定我是否正确理解了所有内容 :-) 如果字段(对于以 ATOM 开头的行)是固定的,您可以使用拆分和一些 comaprisons。我已经使用散列来查看是否已经看到该条目以消除您想要的重复项。希望这会给你一个开始,
会输出,