用Python解析.pdb文件并为特定记录类型创建字典

问题描述 投票:0回答:1

[首先,让我说我正在作为Python练习来这样做,而我不允许使用Biopython

我正在编写一个脚本,可以帮助我解析从轨迹生成的任何.pdb文件。我正在尝试创建将chain变量resNumber变量链接的字典。尽管我为只有2个链的特定.pdb文件解决了该问题,但无论链的数量如何,我都希望此脚本适用于任何.pdb文件。这是我写的:

import sys

pdbTraj = open('md20_aligned_3frames.pdb', 'r')
pdbTraj_line = pdbTraj.readlines()
newFile = open('newfile.txt', 'w')
pdbDict = {}
resNumberList1 = []
resNumberList2 = []
chainTry = "A"
for line in pdbTraj_line:
    if line.startswith(("ATOM" or "HETATM")):
        atomType = line[0:6]
        atomSerialNumber = line[6:11]
        atomName = line[12:16]
        resName = line[17:20]
        chain = line[21]
        resNumber = line[22:26]
        coorX = line[30:38]
        coorY = line[38:46]
        coorZ = line[46:54]
        occupancy = line[54:60]
        temperatureFact = line[60:66]
        segmentIdentifier = line[72:76]
        elementSymbol = line[76:78]
        if chain == chainTry:
            resNumberList1.append(resNumber)
            pdbDict[chain] = list(dict.fromkeys(resNumberList1))
        else:
            resNumberList2.append(resNumber)
            pdbDict[chain] = list(dict.fromkeys(resNumberList2))

print(pdbDict)

这是我得到的结果:

{'A': ['   1', '   2', '   3', '   4', '   5', '   6', '   7', '   8', '   9', '  10', '  11', '  12', '  13', '  14', '  15', '  16', '  17'], 'B': ['  19', '  20', '  21', '  22', '  23', '  24', '  25', '  26', '  27', '  28', '  29', '  30', '  31', '  32', '  33', '  34', '  35', '  36', '  37', '  38', '  39', '  40', '  41', '  42', '  43', '  44', '  45', '  46', '  47', '  48', '  49', '  50', '  51', '  52', '  53', '  54', '  55', '  56', '  57', '  58', '  59', '  60', '  61', '  62', '  63', '  64', '  65', '  66', '  67', '  68', '  69', '  70', '  71', '  72', '  73', '  74', '  75', '  76', '  77', '  78', '  79', '  80', '  81', '  82', '  83', '  84', '  85', '  86', '  87', '  88', '  89', '  90', '  91', '  92', '  93', '  94', '  95', '  96', '  97', '  98', '  99', ' 100', ' 101', ' 102', ' 103', ' 104', ' 105', ' 106', ' 107', ' 108', ' 109', ' 110', ' 111', ' 112', ' 113', ' 114', ' 115', ' 116', ' 117', ' 118', ' 119', ' 120', ' 121', ' 122', ' 123', ' 124', ' 125', ' 126', ' 127', ' 128', ' 129', ' 130', ' 131', ' 132', ' 133', ' 134', ' 135', ' 136', ' 137', ' 138', ' 139', ' 140', ' 141', ' 142', ' 143', ' 144', ' 145', ' 146', ' 147', ' 148', ' 149', ' 150', ' 151', ' 152', ' 153', ' 154', ' 155', ' 156', ' 157', ' 158', ' 159', ' 160', ' 161', ' 162', ' 163', ' 164', ' 165', ' 166', ' 167', ' 168', ' 169', ' 170', ' 171', ' 172', ' 173', ' 174', ' 175', ' 176', ' 177', ' 178', ' 179', ' 180', ' 181', ' 182', ' 183', ' 184', ' 185', ' 186', ' 187', ' 188', ' 189', ' 190', ' 191', ' 192', ' 193', ' 194', ' 195', ' 196', ' 197', ' 198', ' 199', ' 200', ' 201', ' 202', ' 203', ' 204', ' 205', ' 206', ' 207', ' 208', ' 209', ' 210', ' 211', ' 212', ' 213', ' 214', ' 215', ' 216', ' 217', ' 218', ' 219', ' 220', ' 221', ' 222', ' 223', ' 224', ' 225', ' 226', ' 227', ' 228', ' 229', ' 230', ' 231', ' 232', ' 233', ' 234', ' 235', ' 236', ' 237', ' 238', ' 239', ' 240', ' 241', ' 242', ' 243', ' 244', ' 245', ' 246', ' 247', ' 248', ' 249', ' 250', ' 251', ' 252', ' 253', ' 254', ' 255', ' 256', ' 257', ' 258', ' 259', ' 260', ' 261', ' 262', ' 263', ' 264', ' 265', ' 266', ' 267', ' 268', ' 269', ' 270', ' 271', ' 272', ' 273', ' 274', ' 275', ' 276', ' 277', ' 278', ' 279', ' 280', ' 281', ' 282', ' 283', ' 284', ' 285', ' 286', ' 287', ' 288', ' 289', ' 290', ' 291', ' 292', ' 293', ' 294', ' 295', ' 296', ' 297', ' 298', ' 299', ' 300', ' 301', ' 302', ' 303', ' 304', ' 305', ' 306', ' 307', ' 308', ' 309', ' 310', ' 311', ' 312', ' 313', ' 314', ' 315', ' 316', ' 317', ' 318', ' 319', ' 320', ' 321', ' 322', ' 323', ' 324', ' 325', ' 326', ' 327', ' 328', ' 329', ' 330', ' 331', ' 332', ' 333', ' 334', ' 335', ' 336', ' 337', ' 338', ' 339', ' 340', ' 341', ' 342', ' 343', ' 344', ' 345', ' 346', ' 347', ' 348', ' 349', ' 350', ' 351', ' 352', ' 353', ' 354', ' 355', ' 356', ' 357', ' 358', ' 359', ' 360', ' 361', ' 362', ' 363', ' 364', ' 365', ' 366', ' 367', ' 368', ' 369', ' 370', ' 371']}

所以,有2个键(链A链B)和2个列表(链A的resNumber]和链B的resNumber)。

您能帮我将任何.pdb文件的脚本通用化吗?谢谢!

。pdb文件格式的前几行看起来像这样:

CRYST1   91.372  118.560   70.786  90.00  90.00  90.00 P 1           1
ATOM      1  N   LYS A   1      10.246  29.908   8.932  0.00  0.00      A     
ATOM      2  HT1 LYS A   1      11.053  29.331   8.619  0.00  0.00      A     
ATOM      3  HT2 LYS A   1      10.405  30.386   9.842  0.00  0.00      A     
ATOM      4  HT3 LYS A   1      10.211  30.643   8.197  0.00  0.00      A     
ATOM      5  CA  LYS A   1       9.010  29.017   8.844  0.00  0.00      A     
ATOM      6  HA  LYS A   1       9.395  28.160   8.311  0.00  0.00      A     
ATOM      7  CB  LYS A   1       8.484  28.723  10.313  0.00  0.00      A     
ATOM      8  HB1 LYS A   1       9.376  28.807  10.970  0.00  0.00      A     
ATOM      9  HB2 LYS A   1       7.797  29.544  10.609  0.00  0.00      A     
ATOM     10  CG  LYS A   1       7.855  27.321  10.494  0.00  0.00      A     
ATOM     11  HG1 LYS A   1       7.016  27.501  11.199  0.00  0.00      A     
ATOM     12  HG2 LYS A   1       7.294  26.942   9.613  0.00  0.00      A     
ATOM     13  CD  LYS A   1       8.769  26.282  10.991  0.00  0.00      A     
ATOM     14  HD1 LYS A   1       9.376  26.065  10.088  0.00  0.00      A     
ATOM     15  HD2 LYS A   1       9.476  26.682  11.750  0.00  0.00      A     
ATOM     16  CE  LYS A   1       7.894  25.110  11.592  0.00  0.00      A     
ATOM     17  HE1 LYS A   1       7.347  25.505  12.475  0.00  0.00      A    

或者因此您也可以看到链B:

ATOM   3802  N   TYR B 240      -9.050 -41.325  16.074  0.00  0.00      B     
ATOM   3803  HN  TYR B 240      -8.672 -40.404  16.021  0.00  0.00      B     
ATOM   3804  CA  TYR B 240     -10.166 -41.491  15.204  0.00  0.00      B     
ATOM   3805  HA  TYR B 240      -9.685 -41.605  14.243  0.00  0.00      B     
ATOM   3806  CB  TYR B 240     -10.940 -42.818  15.365  0.00  0.00      B     
ATOM   3807  HB1 TYR B 240     -10.241 -43.631  15.078  0.00  0.00      B     
ATOM   3808  HB2 TYR B 240     -11.241 -43.061  16.407  0.00  0.00      B     
ATOM   3809  CG  TYR B 240     -12.233 -42.972  14.454  0.00  0.00      B     
ATOM   3810  CD1 TYR B 240     -12.102 -43.272  13.086  0.00  0.00      B     
ATOM   3811  HD1 TYR B 240     -11.100 -43.348  12.692  0.00  0.00      B     
ATOM   3812  CE1 TYR B 240     -13.248 -43.404  12.343  0.00  0.00      B     
ATOM   3813  HE1 TYR B 240     -13.093 -43.818  11.358  0.00  0.00      B     

如果需要有关.pdb文件格式的更多信息,则here是链接。

[首先,我首先要说这是我作为Python练习来做的,并且不允许我使用Biopython。我正在编写一个脚本,该脚本将帮助我解析从轨迹生成的任何.pdb文件。 ...

python bioinformatics biopython pdb pdb-files
1个回答
0
投票

我的解决方法如下:

© www.soinside.com 2019 - 2024. All rights reserved.