Python + Uniprot获取蛋白质的功能向量
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获取蛋白质的功能向量相关推荐
- 根据Uniprot ID/PDB ID批处理获取蛋白质.pdb文件
1.根据Uniprot ID批处理获取蛋白质.pdb文件 由于Uniprot的ID号可能对应多个NCBI的ID,但是根据Alphafold可以获取其唯一的PDB文件,所以用代码批处理获得.pdb文件如 ...
- python实现软件的注册功能(机器码+注册码机制)
sklearn实战-乳腺癌细胞数据挖掘 https://study.163.com/course/introduction.htm?courseId=1005269003&utm_campai ...
- c# typescript_在任何IDE中从C#,Java或Python代码获取TypeScript接口的简单方法
c# typescript by Leonardo Carreiro 莱昂纳多·卡雷罗(Leonardo Carreiro) 在任何IDE中从C#,Java或Python代码获取TypeScript接 ...
- Python爬虫获取文章的标题及你的博客的阅读量,评论量。所有数据写入本地记事本。最后输出你的总阅读量!
Python爬虫获取文章的标题及你的博客的阅读量,评论量.所有数据写入本地记事本.最后输出你的总阅读量!还可以进行筛选输出!比如阅读量大于1000,之类的! 完整代码在最后.依据阅读数量进行降序输出! ...
- 【python gensim使用】word2vec词向量处理中文语料
word2vec介绍 word2vec官网:https://code.google.com/p/word2vec/ word2vec是google的一个开源工具,能够根据输入的词的集合计算出词与词之间 ...
- 新手必看:Python 3.8六大新功能
2020-01-30 12:10:38 全文共2372字,预计学习时长7分钟 来源:Pexels IT业日新月异,落后的Python 2将在2020年逐渐被淘汰. 2019年,随着数据科学的兴起,Py ...
- 文件不能断点 webstorm_详解python使用金山词霸的翻译功能(调试工具断点的使用)...
这篇文章主要介绍了详解python使用金山词霸的翻译功能(调试工具断点的使用),本文给大家介绍得非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 今天试着用python获取金山 ...
- python random模块中的指令_10分钟让你掌握python编程中random模块功能使用,非常详细...
原标题:10分钟让你掌握python编程中random模块功能使用,非常详细 python作为一门高级编程语言,它的定位是优雅.明确和简单.阅读Python编写的代码感觉像在阅读英语一样,这让使用者可 ...
- python爬虫获取url_Python爬虫如何获取页面内所有URL链接?本文详解
如何获取一个页面内所有URL链接?在Python中可以使用urllib对网页进行爬取,然后利用Beautiful Soup对爬取的页面进行解析,提取出所有的URL. 什么是Beautiful Soup ...
最新文章
- 沈阳药科大学计算机基础网址,2016年沈阳药科大学药学信息学1016计算机技术基础之C程序设计复试笔试最后押题五套卷...
- JQuery/JS select标签动态设置选中值、设置禁止选择 button按钮禁止点击 select获取选中值...
- STM32F030控制蜂鸣器定时响和控制LED亮
- python3字典写入excel_python3:excel操作之读取数据并返回字典 + 写入的案例
- 一文读懂云原生一体化数仓
- [paper reading] YOLO v1
- [iOS]学习笔记3(动态性)
- linux 命令缺失安装,Redhat7没有安装ifconfig命令的解决方法
- java 图片线条_JAVA 关于JFrame的问题,我的图片会被线条给覆盖住,怎样让图片在上面呢...
- 《动森》为何流行:“我就是想找个地方待着”
- 『CPU飙高』在开发环境中,.NET如何排查CPU飙高原因
- opencv之subtract
- 机器学习笔记(一)-局部加权回归(Locally weighted regression)LWR
- 展望:2021年程序员业界趋势与生存指南
- 被踢出局!贾跃亭真栽了
- Easyrecovery2022硬盘磁盘U盘免费数据恢复软件
- 华为云正式推出区块链服务!区块链技术将在数字经济时代大放异彩
- python如何读取csv文件的某两行_Python 读取csv的某行
- flowiz库中遇到 ValueError: buffer is smaller than requested size报错
- 【攻破html系列——第四天】图片标签和超链接