编程实现在IntAct数据集上批量查找蛋白交互对

该博客介绍使用Python提取IntAct中蛋白交互对的方法。先从指定链接下载mitab格式数据集,再提取全体蛋白对,考虑Uniprot中的蛋白,去重后得到一定数量蛋白对。输入蛋白质accession列表可查找相关蛋白对,还给出了相关代码及需考虑的accession过期问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现功能:
输入:Uniprot中的accession number
输出:与输入蛋白相关的蛋白交互对(左列是原列表中的蛋白,右侧是查询到的partner)

直接使用代码
https://github.com/JulseJiang/Code_for_blog/blob/main/Python_ExtractPartnerFromIntAct/exTMPnonTMPpiar20201201.py

或者看看处理过程:

数据下载

数据集下载链接:这里下载mitab格式,方便解析
ftp://ftp.ebi.ac.uk/pub/databases/intact/current/psimitab/

下载intact.txt或者intact.zip 自行解压都行
在这里插入图片描述

提取IntAct中的全体蛋白对

实现效果

文件中部分蛋白是Uniprot中的,部分蛋白是EBI中的,目前只考虑Uniprot中的
在这里插入图片描述

提取到103w对来自uniprot的蛋白,去重之后剩余673577对
20201201 下载的数据,也就是2020 年11月7日发布的数据,里面有673577对的蛋白来自uniprot标注
blog/blob/main/Python_ExtractPartnerFromIntAct/pair_norepeat.txt

在这里插入图片描述
输入某个蛋白质accession 列表,查找到8k条相关的蛋白对
在这里插入图片描述

相关代码

  1. 提取intact.txt中用Uniprot ID表示的蛋白对
def extractPPIFromIntAct(finPair,foutPair):
    # finPair = r'E:\data\intact\intact.txt'
    # foutPair = r'E:\data\intact\pair.txt'
    with open(finPair, 'r', encoding='UTF-8') as fi, open(foutPair, 'w') as fo:
        line = fi.readline()
        while (line):
            line = fi.readline()
            pair = line.split('\t', maxsplit=2)
            try:
                a = pair[0]
                b = pair[1]
                if 'uniprotkb:' in a and 'uniprotkb:' in b:
                    a = a.replace('uniprotkb:', '')
                    b = b.replace('uniprotkb:', '')
                    if '-' in a: a = a.split('-')[0]
                    if '-' in b: b = b.split('-')[0]
                    fo.write('%s\t%s\n' % (a, b))
                    fo.flush()
                    print(a, b)
                else:
                    continue
            except:
                print(pair)
  1. 加载蛋白列表
def readIDlist(filePath,by = '\n'):
    fo = open(filePath,'r')
    lines = fo.readlines()
    # 'P67999\n', 'P0ADV1\n', 'P0A6F5\n',
    list = []
    for line in lines:
        list.append(line.split(by)[0])
    fo.close()
    # 'P67999', 'P0ADV1', 'P0A6F5'
    return list
  1. 提取给定蛋白列表相关的蛋白对
def findPartner(finPair,foutPair,finList):
    # finPair = r'E:\data\intact\pair.txt'
    # foutPair = r'E:\data\intact\pair_related.txt'
    # finList = r'E:\githubCode\BioDataCoding\Parsers\ttd\TMP_accession_list.csv'
    TMPlist = readIDlist(finList)
    count = 0
    with open(finPair, 'r', encoding='UTF-8') as fi, open(foutPair, 'w') as fo:
        line = fi.readline()
        while (line):
            pair = line[:-1].split('\t', maxsplit=2)
            try:
                a = pair[0]
                b = pair[1]
                if a in TMPlist and b in TMPlist:
                    fo.write('%s\t%s\n' % (a, b))
                else:
                    if a in TMPlist:
                        fo.write('%s\t%s\n' % (a, b))
                    if b in TMPlist:
                        fo.write('%s\t%s\n' % (b, a))
                fo.flush()
                count = count + 1
                print(count)
            except:
                print(pair)
            line = fi.readline()

如果需要更严谨一点的话,需要考虑accession过期的现象

下面这个博客展示了根据accession Id 查询全体accesstion Id的过程,由于涉及到项目内容,这个将来再公开,先把博客地址放在这里
https://blog.youkuaiyun.com/Julse/article/details/110521589

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值