我正在尝试为 .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”)是负数。在这些情况下,我想跳过该行继续,直到我遇到一个积极的条目,因为这些元素与找到位置所需的生物化学有关,而不是实际的蛋白质。更糟糕的是,有时你会得到这样的一行:
ATOM 139 CA AILE 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,但 biochem 不够精确,无法获得准确的位置,因此他们提供了两种选择。理想情况下,我会指定“1”、“2”或其他任何内容,但如果我只选择第一个选项就可以了。最后,对于原始示例中的原子类型(“N”),我只想获得带有“CA”的那些行。
我是 python 的新手,我的培训是生物统计学,所以我想知道最好的方法是什么?我是否使用 for 循环逐行解析?有没有办法在 python 中更快地做到这一点?如何处理某些原子的双重输入?
我意识到这有点问,但一些指导会很有帮助!我已经使用 R 编写了所有统计数据位,但现在我只需要以正确的格式获取我的文件!
谢谢!