首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从python词典中计算蛋白质组的起始位置和结束位置

从python词典中计算蛋白质组的起始位置和结束位置
EN

Stack Overflow用户
提问于 2020-06-05 16:41:58
回答 1查看 75关注 0票数 1

我正在使用python来分析和编辑来自蛋白质数据库的一些信息。有一个具有此输出的字典:

代码语言:javascript
运行
复制
NC_018142.1_1102_ID=1_1102  (**1277003**, 1279534, 4, 'CAS-II-C 0.64')
NC_018142.1_1103_ID=1_1103  (1279648, 1280793, 4, 'CAS-II-C 0.64')
NC_018142.1_1104_ID=1_1104  (1280954, 1282252, 4, 'CAS-II-C 0.64')
NC_018142.1_1458_ID=1_1458  (1650240, 1651379, 4, 'CAS-II-C 0.64')
NC_018142.1_1459_ID=1_1459  (1651731, 1651955, 4, 'CAS-II-C 0.64')
NC_018142.1_1460_ID=1_1460  (1651976, 1652779, 4, 'CAS-II-C 0.64')
NC_018142.1_1461_ID=1_1461  (1652848, **1653054**, 4, 'CAS-II-C 0.64')

NC_018142.1_1906_ID=1_1906  (**2167100**, 2169223, 5, 'CAS-III-D 0.61')
NC_018142.1_1907_ID=1_1907  (2169220, 2171208, 5, 'CAS-III-D 0.61')
NC_018142.1_1908_ID=1_1908  (2171205, **2172977**, 5, 'CAS-III-D 0.61')

其中键显示一个蛋白质id,值的第一列显示dna字符串中的开始,第二列显示结束,第三列显示蛋白质的数目,最后一列显示一种免疫系统类型。我想要做的是得到如下的输出:

代码语言:javascript
运行
复制
NC_018142  (1277003, 1653054, 4, 'CAS-II-C 0.64')
NC_018142  (2171205, 2172977, 5, 'CAS-III-D 0.61')

开始是dna串的开始,末端是字符串中关于蛋白质组的最后一个位置。因此,开始是从第一行开始,结束是从最后一行开始的关于蛋白质组的开始。蛋白质组4开始: 1277003,结束: 1653054。有谁能告诉我一些想法,并帮助我如何做到这一点?谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-05 17:55:15

试试这个,如果这是你想要的,让我知道,这样我就可以评论每一行都在做什么。

代码语言:javascript
运行
复制
import pandas as pd

d ={'NC_018142.1_1102_ID=1_1102':('**1277003**', 1279534, 4, 'CAS-II-C 0.64'),
'NC_018142.1_1103_ID=1_1103':(1279648, 1280793, 4, 'CAS-II-C 0.64'),
'NC_018142.1_1104_ID=1_1104':(1280954, 1282252, 4, 'CAS-II-C 0.64'),
'NC_018142.1_1458_ID=1_1458':(1650240, 1651379, 4, 'CAS-II-C 0.64'),
'NC_018142.1_1459_ID=1_1459':(1651731, 1651955, 4, 'CAS-II-C 0.64'),
'NC_018142.1_1460_ID=1_1460':(1651976, 1652779, 4, 'CAS-II-C 0.64'),
'NC_018142.1_1461_ID=1_1461':(1652848, '**1653054**', 4, 'CAS-II-C 0.64'),

'NC_018142.1_1906_ID=1_1906':('**2167100**', 2169223, 5, 'CAS-III-D 0.61'),
'NC_018142.1_1907_ID=1_1907':(2169220, 2171208, 5, 'CAS-III-D 0.61'),
'NC_018142.1_1908_ID=1_1908':(2171205, '**2172977**', 5, 'CAS-III-D 0.61')
}


df = pd.DataFrame(d).T.reset_index()
col_names = ['proteinID', 'start', 'end', 'group', 'type']
df.columns = col_names
df['proteinID'] = df['proteinID'].str.split('.').str[0]
df['start'] = df['start'].astype(str).str.replace('*', '')
df['end'] = df['end'].astype(str).str.replace('*', '')

df = df.groupby(['proteinID', 'group']).agg({'start':'first', 'end':'last','type':'first'}).reset_index()

df = df[col_names]
df

最终的结果将是熊猫的数据:

代码语言:javascript
运行
复制
    proteinID   start   end     group   type
0   NC_018142   1277003 1653054   4     CAS-II-C 0.64
1   NC_018142   2167100 2172977   5     CAS-III-D 0.61
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62220264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档