如何统计PDB文件二级结构的多少及位置并和作图

 很多时候我们想要展示蛋白质二级结构的多少和位置,如下简单介绍了两种可以实现此要求的方法。

一、在pymol中输出含有蛋白二级结构信息的文件


load AB.pdb
select all
open("potein.txt","w").writelines( ["Residue %s: %s\n"%(a.resi,a.ss) for a in cmd.get_model("AB" +" and n. ca").atom] )
delete all

打开生成txt文本,每行(每个氨基酸)最后一个字符表示不同二级结构的简写,其中H表示alpha-helix,L表示loop (coil),S表示 beta-sheet。

二、获取所有的二级结构并整理成如{'L': '1-5,10-11,16-18', 'S': '6-9,12-15'}样式


f = open("protein.txt","r")
lst = []
for a in f.readlines():
  lst.append(a[-3:-1])

def format_list(lst):
    output = {}
    start = None
    prev_char = None
    for i, char in enumerate(lst):
        if char != prev_char:
            if prev_char is not None:
                end = i - 1
                if start < end:
                    output[prev_char] = output.get(prev_char, []) + [(start, end)]
                else:
                    output[prev_char] = output.get(prev_char, []) + [start]
            start = i
        prev_char = char
    # handle the last character sequence
    if start is not None:
        end = len(lst) - 1
        if start < end:
            output[prev_char] = output.get(prev_char, []) + [(start, end)]
        else:
            output[prev_char] = output.get(prev_char, []) + [start]
    # format the output as a string
    result = {}
    for k, v in output.items():
        s = ""
        for seq in v:
            if isinstance(seq, tuple):
                s += f"{seq[0]+1}-{seq[1]+1},"
            else:
                s += f"{seq+1},"
        result[k] = s.rstrip(",")
    return result

三、将上述字典结果复制到在线网站作蛋白质序列和二级结构图

打开在线网站:https://www.novopro.cn/tools/fancy-ss.html

四、其他在线网站

在上图1中添加含有蛋白质序列比对结果格式的文件,在图2添加任意一个蛋白质的PDB文件,可以两次分别输入不同的蛋白以获得两个蛋白的二级结构。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值