模块化编程1

# 如何识别PDB文件中的特定氨基酸残基

1.PDB文件格式

ATOM   1604  C   ILE A 242      20.705 -26.318  26.653  1.00 14.92           C  
ATOM   1605  O   ILE A 242      20.152 -26.942  27.574  1.00 14.92           O  
ATOM   1606  CB  ILE A 242      19.560 -24.197  25.856  1.00 14.92           C  
ATOM   1607  CG1 ILE A 242      19.299 -22.702  26.128  1.00 24.76           C  
ATOM   1608  CG2 ILE A 242      18.303 -25.064  25.876  1.00 24.76           C  
ATOM   1609  CD1 ILE A 242      18.131 -22.226  25.235  1.00 24.76           C  
ATOM   1610  N   ALA A 243      21.439 -26.905  25.725  1.00 17.24           N  
ATOM   1611  CA  ALA A 243      21.400 -28.376  25.564  1.00 17.24           C  
ATOM   1612  C   ALA A 243      22.118 -29.051  26.721  1.00 17.24           C  
ATOM   1613  O   ALA A 243      21.805 -30.211  27.060  1.00 17.24           O  
ATOM   1614  CB  ALA A 243      22.110 -28.691  24.252  1.00 17.24           C  
ATOM   1615  N   SER A 244      22.931 -28.273  27.410  1.00 21.20           N  
ATOM   1616  CA  SER A 244      23.624 -28.860  28.537  1.00 21.20           C  
ATOM   1617  C   SER A 244      23.069 -28.457  29.888  1.00 21.20           C  
ATOM   1618  O   SER A 244      23.749 -28.808  30.883  1.00 21.20           O  
ATOM   1619  CB  SER A 244      25.120 -28.570  28.588  1.00 21.20           C  
ATOM   1620  OG  SER A 244      25.568 -27.755  27.532  1.00 37.03           O  
ATOM   1621  N   ASN A 245      22.014 -27.634  29.956  1.00 23.26           N  
ATOM   1622  CA  ASN A 245      21.491 -27.139  31.253  1.00 23.26           C  
ATOM   1623  C   ASN A 245      20.002 -27.388  31.492  1.00 23.26           C  
ATOM   1624  O   ASN A 245      19.486 -26.996  32.563  1.00 23.26           O  
ATOM   1625  CB  ASN A 245      21.630 -25.625  31.399  1.00 23.26           C  
ATOM   1626  CG  ASN A 245      23.052 -25.304  31.799  1.00 20.44           C  
ATOM   1627  OD1 ASN A 245      23.456 -25.717  32.901  1.00 20.44           O  
ATOM   1628  ND2 ASN A 245      23.863 -25.089  30.809  1.00 20.44           N  
ATOM   1629  OXT ASN A 245      19.369 -28.189  30.785  1.00 27.82           O

pdb文件说明:


2. python3版本

import struct
pdb_format = '6s5s1s4s1s3s1s1s4s1s3s8s8s8s6s6s10s2s3s'

def main(pdb_file,out_file,residues):
    pdb = open(pdb_file)
    out_file = open(out_file,'w')
    for line in pdb:
        if line[0:4] == 'ATOM':
            res_data = get_ATOM_line(line)
            res_type = bytes.decode(res_data[1])
            res_num = bytes.decode(res_data[2])
            for aa,num in residues:  ##Python3中s的Python type是bytes类型,所以当进行条件判断时需要进行decode解码。
                if res_type == aa and res_num == num:
                    out_file.write(line)
    out_file.close()


def get_ATOM_line(line):
    tmp = struct.unpack(pdb_format,bytes(line.encode('utf-8')))  ##注意struct模块是将字符串转换成元组,输出是tuple
    atom = tmp[3].strip()
    res_type = tmp[5].strip()
    chain = tmp[7].strip()
    res_num = tmp[8].strip()
    x = float(tmp[11].strip())
    y = float(tmp[12].strip())
    z = float(tmp[13].strip())
    return chain, res_type, res_num, atom, x, y, z
residues = [('ASP', '102'), ('HIS', '57'), ('SER', '195')]
main("C:\\shiyan\\honghua\\1tld.pdb", "trypsin_triad.pdb", residues)

3. python2版本

import struct
pdb_format = '6s5s1s4s1s3s1s1s4s1s3s8s8s8s6s6s10s2s3s'

def get_atom_line(line):
    '''return an ATOM line parsed to a tuple'''
    tmp = struct.unpack(pdb_format, line)
    atom = tmp[3].strip()
    res_type = tmp[5].strip()
    res_num = tmp[8].strip()
    chain = tmp[7].strip()
    x = float(tmp[11].strip())
    y = float(tmp[12].strip())
    z = float(tmp[13].strip())
    return chain, res_type, res_num, atom, x, y, z

def main(pdb_file, outfile, residues):
    '''writes residues from a PDB file to an output file'''
    pdb = open(pdb_file)
    outfile = open(outfile, "w")
    for line in pdb:
        if line.startswith('ATOM'):
            res_data = get_atom_line(line)
            for aa,num in residues:
                if res_data[1] == aa and res_data[2] == num:
                    outfile.write(line)
    outfile.close()

residues = [('ASP', '102'), ('HIS', '57'), ('SER', '195')]
main("1TLD.pdb", "trypsin_triad.pdb", residues)
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,158评论 4 370
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,600评论 1 307
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 111,785评论 0 254
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,655评论 0 220
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,075评论 3 295
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,002评论 1 225
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,146评论 2 318
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,918评论 0 211
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,671评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,838评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,318评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,636评论 3 263
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,343评论 3 244
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,187评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,982评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,126评论 2 285
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,934评论 2 279

推荐阅读更多精彩内容

  • 一,原始写法 模块就是实现特定功能的一组方法。 只要把不同的函数(以及记录状态的变量)简单地放在一起,就算是一个模...
    倔强的仙人掌阅读 190评论 0 0
  • PDB文件说明 转载自 科研路上的小曹 蛋白质数据库Protein Data Bank(PDB)是一个包含蛋白质、...
    天明豆豆阅读 6,732评论 0 10
  • 人生苦短我用 Python 注:最后附电子书地址 一、Pythonic Thinking 第1条: 确认自己所用的...
    molscar阅读 1,957评论 0 3
  • 一场秋雨一场寒,人间十月花阑珊。西风烈酒,从此渐入深秋。 回过头看看,我们的2018年,已经不足100天了。 放假...
    英雄无敌8889阅读 325评论 0 1
  • 从小我就怕他。 因为常年在外劳作,他皮肤晒得很黑,在我们面前从来不怎么笑,印象中他比包公还包公,就连跟他说话都是一...
    二丫画时光阅读 193评论 0 1