1. 需要一个.obo文件,为了获得现在所有蛋白质的功能GO

官网http://geneontology.org/docs/download-ontology/


http://purl.obolibrary.org/obo/go.obo,右键点击该链接

选择’链接另存为’,即可下载最新版的go.obo文件

2.需要目标蛋白质的.text压缩包

我随机选中HSPA8基因的4个,然后 Download得到一个压缩包。

3.对得到的压缩包进行数据处理,生成蛋白质数据的dataframe

import gzip
import numpy as np
import pandas as pd
import pickle#生成蛋白质数据的dataframe,得到train_data_train.pkl
def load_data(swissprot_file):proteins = list()accessions = list()sequences = list()annotations = list()interpros = list()orgs = list()with gzip.open(swissprot_file, 'rt') as f:prot_id = ''prot_ac = ''seq = ''org = ''annots = list()ipros = list()for line in f:items = line.strip().split('   ')if items[0] == 'ID' and len(items) > 1:if prot_id != '':proteins.append(prot_id)accessions.append(prot_ac)sequences.append(seq)annotations.append(annots)interpros.append(ipros)orgs.append(org)prot_id = items[1]annots = list()ipros = list()seq = ''elif items[0] == 'AC' and len(items) > 1:prot_ac = items[1]elif items[0] == 'OX' and len(items) > 1:if items[1].startswith('NCBI_TaxID='):org = items[1][11:]end = org.find(' ')org = org[:end]else:org = ''elif items[0] == 'DR' and len(items) > 1:items = items[1].split('; ')if items[0] == 'GO':go_id = items[1]code = items[3].split(':')[0]annots.append(go_id)#(go_id + '|' + code)if items[0] == 'InterPro':ipro_id = items[1]ipros.append(ipro_id)elif items[0] == 'SQ':seq = next(f).strip().replace(' ', '')while True:sq = next(f).strip().replace(' ', '')if sq == '//':breakelse:seq += sqproteins.append(prot_id)accessions.append(prot_ac)sequences.append(seq)annotations.append(annots)interpros.append(ipros)orgs.append(org)return proteins, accessions, sequences, annotations, interpros, orgsswissprot_file="test1.txt.gz"
proteins, accessions, sequences, annotations, interpros, orgs = load_data(swissprot_file)df=[]
df=pd.DataFrame()df["proteins"]=proteins
df["sequences"]=sequences
df["annotations"]=annotations
df.to_pickle('data.pkl')

4. 处理得到最新的GO字典,并生成功能标签

import pandas as pd
import numpy as np#处理得到go信息的字典,再得到仅有keys的字典
def load(filename, with_rels):ont = dict()obj = Nonewith open(filename, 'r') as f:for line in f:line = line.strip()if not line:continueif line == '[Term]':if obj is not None:ont[obj['id']] = objobj = dict()obj['is_a'] = list()obj['part_of'] = list()obj['regulates'] = list()obj['alt_ids'] = list()obj['is_obsolete'] = Falsecontinueelif line == '[Typedef]':if obj is not None:ont[obj['id']] = objobj = Noneelse:if obj is None:continuel = line.split(": ")if l[0] == 'id':obj['id'] = l[1]elif l[0] == 'alt_id':obj['alt_ids'].append(l[1])elif l[0] == 'namespace':obj['namespace'] = l[1]elif l[0] == 'is_a':obj['is_a'].append(l[1].split(' ! ')[0])elif with_rels and l[0] == 'relationship':it = l[1].split()# add all types of relationshipsobj['is_a'].append(it[1])elif l[0] == 'name':obj['name'] = l[1]elif l[0] == 'is_obsolete' and l[1] == 'true':obj['is_obsolete'] = Trueif obj is not None:ont[obj['id']] = objfor term_id in list(ont.keys()):for t_id in ont[term_id]['alt_ids']:ont[t_id] = ont[term_id]if ont[term_id]['is_obsolete']:del ont[term_id]for term_id, val in ont.items():if 'children' not in val:val['children'] = set()for p_id in val['is_a']:if p_id in ont:if 'children' not in ont[p_id]:ont[p_id]['children'] = set()ont[p_id]['children'].add(term_id)return ontgodict = load('go.obo', with_rels=True)#处理得到go信息的字典
go_dict = dict()
for i,key in enumerate(godict.keys()):go_dict[key] = i#得到仅有keys的字典
df = pd.read_pickle('data.pkl')#读取蛋白质信息
labels = np.zeros((len(df), 46894), dtype=np.int32)#生成空标签,46894为keys的个数
for i, row in enumerate(df.itertuples()):#遍历for t_id in row.annotations:if t_id in go_dict:#go_dict为仅有goid字典labels[i, go_dict[t_id]] = 1

Python + Uniprot获取蛋白质的功能向量相关推荐

  1. 根据Uniprot ID/PDB ID批处理获取蛋白质.pdb文件

    1.根据Uniprot ID批处理获取蛋白质.pdb文件 由于Uniprot的ID号可能对应多个NCBI的ID,但是根据Alphafold可以获取其唯一的PDB文件,所以用代码批处理获得.pdb文件如 ...

  2. python实现软件的注册功能(机器码+注册码机制)

    sklearn实战-乳腺癌细胞数据挖掘 https://study.163.com/course/introduction.htm?courseId=1005269003&utm_campai ...

  3. c# typescript_在任何IDE中从C#,Java或Python代码获取TypeScript接口的简单方法

    c# typescript by Leonardo Carreiro 莱昂纳多·卡雷罗(Leonardo Carreiro) 在任何IDE中从C#,Java或Python代码获取TypeScript接 ...

  4. Python爬虫获取文章的标题及你的博客的阅读量,评论量。所有数据写入本地记事本。最后输出你的总阅读量!

    Python爬虫获取文章的标题及你的博客的阅读量,评论量.所有数据写入本地记事本.最后输出你的总阅读量!还可以进行筛选输出!比如阅读量大于1000,之类的! 完整代码在最后.依据阅读数量进行降序输出! ...

  5. 【python gensim使用】word2vec词向量处理中文语料

    word2vec介绍 word2vec官网:https://code.google.com/p/word2vec/ word2vec是google的一个开源工具,能够根据输入的词的集合计算出词与词之间 ...

  6. 新手必看:Python 3.8六大新功能

    2020-01-30 12:10:38 全文共2372字,预计学习时长7分钟 来源:Pexels IT业日新月异,落后的Python 2将在2020年逐渐被淘汰. 2019年,随着数据科学的兴起,Py ...

  7. 文件不能断点 webstorm_详解python使用金山词霸的翻译功能(调试工具断点的使用)...

    这篇文章主要介绍了详解python使用金山词霸的翻译功能(调试工具断点的使用),本文给大家介绍得非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 今天试着用python获取金山 ...

  8. python random模块中的指令_10分钟让你掌握python编程中random模块功能使用,非常详细...

    原标题:10分钟让你掌握python编程中random模块功能使用,非常详细 python作为一门高级编程语言,它的定位是优雅.明确和简单.阅读Python编写的代码感觉像在阅读英语一样,这让使用者可 ...

  9. python爬虫获取url_Python爬虫如何获取页面内所有URL链接?本文详解

    如何获取一个页面内所有URL链接?在Python中可以使用urllib对网页进行爬取,然后利用Beautiful Soup对爬取的页面进行解析,提取出所有的URL. 什么是Beautiful Soup ...

最新文章

  1. 沈阳药科大学计算机基础网址,2016年沈阳药科大学药学信息学1016计算机技术基础之C程序设计复试笔试最后押题五套卷...
  2. JQuery/JS select标签动态设置选中值、设置禁止选择 button按钮禁止点击 select获取选中值...
  3. STM32F030控制蜂鸣器定时响和控制LED亮
  4. python3字典写入excel_python3:excel操作之读取数据并返回字典 + 写入的案例
  5. 一文读懂云原生一体化数仓
  6. [paper reading] YOLO v1
  7. [iOS]学习笔记3(动态性)
  8. linux 命令缺失安装,Redhat7没有安装ifconfig命令的解决方法
  9. java 图片线条_JAVA 关于JFrame的问题,我的图片会被线条给覆盖住,怎样让图片在上面呢...
  10. 《动森》为何流行:“我就是想找个地方待着”
  11. 『CPU飙高』在开发环境中,.NET如何排查CPU飙高原因
  12. opencv之subtract
  13. 机器学习笔记(一)-局部加权回归(Locally weighted regression)LWR
  14. 展望:2021年程序员业界趋势与生存指南
  15. 被踢出局!贾跃亭真栽了
  16. Easyrecovery2022硬盘磁盘U盘免费数据恢复软件
  17. 华为云正式推出区块链服务!区块链技术将在数字经济时代大放异彩
  18. python如何读取csv文件的某两行_Python 读取csv的某行
  19. flowiz库中遇到 ValueError: buffer is smaller than requested size报错
  20. 【攻破html系列——第四天】图片标签和超链接

热门文章

  1. 计算机网络-奈氏准则
  2. Linux内核机制总结内存管理之每处理器内存分配器(十七)
  3. Unity 关卡数据的实现
  4. 全球与中国环氧固化剂市场现状及未来发展趋势
  5. 【大数据】利用Python进行Hbase查询的简易指南
  6. Java面试题库,Java大厂高频面试题解析
  7. 基于AudioManager实现的音频控制器
  8. Android平台签名证书(.keystore)生成指南及高德地图配置
  9. 简化办公,云上助力!
  10. 钢琴瀑布流 Piano-MIDI(接入电钢琴等设备MIDI接口 通过钢琴的弹奏实时显示瀑布流线条)程序发布