溶剂可及性(二)Protein Data Bank

一、Protein Data Bank

蛋白质数据库Protein Data Bank,简称PDB)是一个专门收录蛋白质及核酸的三维构资料的数据库。由Worldwide Protein Data Bank监管。PDB可以经由网络免费访问,是结构生物学研究中的重要资源。为了确保PDB资料的完备与权威,各个主要的科学杂志、基金组织会要求科学家将自己的研究成果提交给PDB。在PDB的基础上,还发展出来若干依据不同原则对PDB结构数据进行分类的数据库,例如GO将PDB中的数据按基因进行了分类。这些资料和数据一般是世界各地的结构生物学家经由X射线晶体学或NMR光谱学验所得,并释放到公有领域供公众免费使用。

protein data bank将每一个结构信息保存为一个pdb文件,每个pdb文件有一个唯一的id号,由四位字母加数字组成,如1a1x.pdb,字母的大小写并不会影响最后的查询结果。目前为止,protein data bank收录了19万条结构信息,其中蛋白质结构信息17万条。由于实验手段的不同,同一个蛋白质会有多种不同的结构,换而言之,就是不同的pdb文件可能对应相同的蛋白质,经过筛选发现,无重复蛋白的结构信息为9万条。

以下是protein data bank的常用网站:

http://www.wwpdb.org/

jja8rF.png

https://www.rcsb.org/

jjaM80.png

https://www.ebi.ac.uk/pdbe/

jjaVbQ.png

https://pdbj.org/

jjan5n.png

二、数据下载

RCSB 网站上查询下载,根据id号查询,选择下载格式即可。

jjaQ2V.png

jjalvT.png

根据需要还可选择下载其他格式的文件。

倘若下载大量的pdb文件,WWpdb 提供了完整的pdb的id信息,根据id信息去爬取pdb文件,PDBePISA 网站提供了爬取数据的一些规则说明。

jjaGb4.png

例如爬取3gcb.pdb文件,访问的网址为:

http://www.ebi.ac.uk/pdbe/pisa/cgi-bin/multimer.pdb?3gcb:1,1

这里贴一下博主编写的爬取脚本,可能效率不太高,仅供参考:

# 创建logger对象
logger = logging.getLogger('test_logger')

# 设置日志等级
logger.setLevel(logging.DEBUG)

# 追加写入文件a ,设置utf-8编码防止中文写入乱码
test_log = logging.FileHandler('test.log', 'a', encoding='utf-8')

# 向文件输出的日志级别
test_log.setLevel(logging.DEBUG)

# 向文件输出的日志信息格式
formatter = logging.Formatter('%(asctime)s - %(filename)s - line:%(lineno)d - %(levelname)s - %(message)s -%(process)s')

test_log.setFormatter(formatter)

# 加载文件到logger对象中
logger.addHandler(test_log)

def craw_PDB(id):
    url = "http://www.ebi.ac.uk/pdbe/pisa/cgi-bin/multimer.pdb?{}:1,1".format(id)
    filename = filepath + "{}.pdb".format(id)

    try:
        logger.debug("开始爬取{}".format(id))
        logger.debug(url)
        response = requests.get(url, timeout=60)
        # response = requests.post(url, data=url, timeout=60)
        logger.info(response.status_code)
        time.sleep(random.randint(1, 1))  # 暂停0~3秒的整数秒,时间区间:[0,3]

        # if response.text[0] == " " or response.text[0] == "*":
        #     return 0
        if response.status_code == 200:
            with open(filename, "w") as f:
                f.write(response.text)
                # print("{}爬取成功".format(id))
                return 1
        else:
            print("{}爬取失败".format(id))
            logger.warning("{}出错".format(id))
            return 0

    except Exception as e:
        logger.error("{}爬取失败".format(id))
        print(e)
        return 0

if __name__ == "__main__":
    pis = pd.read_csv("pisces_base.csv")  # 包含id信息

    """
    多线程爬取pdb文件
    """
    threads = []

    for index, row in tqdm(pis.iterrows()):
        id = row.values[0].lower()
        # craw_PDB(id)

        if not os.path.exists("../data/pdb/{}.pdb".format(id)):
            th = threading.Thread(target=craw_PDB, args=(id,))
            th.start()
            threads.append(th)

        if len(threads) > 10:
            for th in threads:
                th.join()
            threads = []

需要注意的是从PDBePISA 网站上爬取的pdb文件存在无效文件,即不包含结构信息,经过统计发现, 无重复蛋白的9万条结构信息中成功爬取到结构信息的id只有5万个。

三、pdb文件格式

pdb文件的主体结构信息为:

jjaFv8.png

另外更详细的格式解析可以参考如下链接:

有关PDB的文件格式,博主也还在学习过程中,有新的收获也会及时补充。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇