【Python实现】解析Drugbank文件中的XML

这篇博客介绍了如何处理DrugBank的XML数据,包括使用Python的xml sax模块直接提取信息和将XML转换为JSON格式。样例代码展示了提取drug-target信息的过程,生成的CSV文件便于后续分析。此外,还提供了后续将要提取的drug-ATCcode和drug-druginteractions信息的预告。

1 样例一:xml直接提取

  在做Drugbank数据处理时,发现的一个能够解决我问题的开源代码:项目地址以及Test文件,都在:

https://github.com/Deshan-Zhou/deal_DrugBank

  但是直接上手处理xml格式的文件,对于xml数据的组织形式不熟悉的同志来讲很头疼,并不能够随心所欲的提取自己想提取的各种关联信息。在样例二中我提供一种能够方便提取数据的方法。

from xml.sax.handler import ContentHandler
from xml.sax import parse
import pandas as pd
"""
简写:
dbid : DrugBank id
dbname : DrugBank name
chid : ChEMBL id
ptid : protein id
"""
class ExtractData(ContentHandler):

    def __init__(self):
        #各个简写的映射关系
        self.dbid_chid = {
   
   }
        self.dbid_dbname = {
   
   }
        self.dbid_dbid = {
   
   }
        self.dbid_ptid = {
   
   }
        #当前的药物id和遍历区域的限定
        self.curr_id = ""
        self.limit = 0

    #可以自动获取遍历到的元素里面的内容,如<ele>content.....</ele>
    def characters(self,content):
        if self.limit == 2:
            self.curr_id = content
            self.limit = 3

        elif self.limit == 4:
            self.dbid_dbname[self.curr_id] = content
            self.limit = 0

        elif self.limit == 6:
            self.dbid_dbid.setdefault(self.curr_id,set()).add(content)
            self.limit = 5

        elif self.limit == 8:
            if content == "ChEMBL":
                self.limit = 9

        elif self
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值