吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1918|回复: 3
上一主题 下一主题
收起左侧

[Python 原创] 水稻MSU和RAP格式ID转换

[复制链接]
跳转到指定楼层
楼主
Anome 发表于 2023-5-5 22:30 回帖奖励
本帖最后由 Anome 于 2023-5-5 22:34 编辑

1.作用

如题,水稻有两种注释,分别是IRGSPRGAP,分别使用RAP和MSU两种格式的基因ID,RAP格式为“Os-Chr-g-number”,MSU格式为“LOC_Os-Chr-g-number”。有时候需要将它们互相转化。Ensembl plant数据库和RAP-DB数据库都可以在线转换,但是感觉下载不是很方便,所以自己写了一个转换用的脚本。

2.用法

  • 使用了pandas包,没有安装的需要安装一下。
  • 将需要转换的基因id复制到文件raw_id.txt里,一行一个基因ID
  • 直接运行脚本即可
  • 我是直接判断第一行是不是Os开头的,是就认为是RAP格式,不是就认为是MSU格式,所以第一行不要写其他东西,要符合RAP或者MSU的格式。代码中有注释说明

3.文件说明

  • gene_id_conversion.py 为脚本本身
  • RAP-MSU_2023-03-15.txt 为从RAP-DB数据库下载的两种ID对应的文件。里面挺多其中一种ID有而另外一种没有。如果数据库中这个有更新,可以自己去下载,然后替换掉这个文件,将代码中读取这个文件的那一行改成新文件。
  • raw_id.txt 需要将你需要转换的id复制到这里
  • result.txt 这个是转换成功的,脚本运行结束后打开这个文件copy即可。
  • result_None.txt 这个对应其中一种id存在而另外一种id不存在的情况,例如基因Os01g0100300在RAP中存在,但是对应到MSU中则没有,为None。
  • result_no_exist.txt 对应的是不存在这种ID,例如不小心写入了OOOs1323这种错误的id,或者是其他格式的ID,则会写入到这个文件里。
  • 我的压缩包里的文件里有内容,是我之前进行转换的时候存在的,可以按照raw_id.txt里的那种进行输入。

4.代码

import pandas as pd

# 读取文件
df = pd.read_csv('RAP-MSU_2023-03-15.txt', sep='\t', header=None)

# 获取用户输入。下面这些本来是手动选择转换的形式的,后来来回转换每次都选择太麻烦了,就删除了,可以直接删掉
# col_num = int(input("请输入要转换的形式(输入1或2):\n1:RAP -> MSU\n2:MSU -> RAP\n"))
# search_dir = input("请输入要转换的id所在文件路径:")
# with open(search_dir, "r") as f:
#     search_values = f.read().split()

with open("raw_id.txt", "r") as f:
    search_values = f.read().split()

# 确定要检索的列。同上,可以直接删掉
# if col_num == 1:
#     search_col = 0
#     result_col = 1
# else:
#     search_col = 1
#     result_col = 0

# 我是直接判断第一行是不是Os开头的,是就认为是RAP格式,不是就认为是MSU格式,所以第一行不要写其他东西,要符合RAP或者MSU的格式。
if search_values[0].startswith("Os"):
    search_col = 0
    result_col = 1
else:
    search_col = 1
    result_col = 0

# 将df转换为字典形式
id_dict = dict(zip(df.iloc[:, search_col], df.iloc[:, result_col]))

# 检索值并输出结果
res = []
res_n = []
no_res = []
for value in search_values:
    if value in id_dict.keys():
        result = id_dict[value]
        if result != "None":
            res.append(result)
        else:
            res_n.append(f"{value} None")
    else:
        no_res.append(f"{value} 不存在")
res = '\n'.join(res)
res_n = '\n'.join(res_n)
no_res = '\n'.join(no_res)
with open("result.txt", "w", encoding="utf-8") as f:
    f.write(res)
with open("result_None.txt", "w", encoding="utf-8") as f:
    f.write(res_n)
with open("result_no_exist.txt", "w", encoding="utf-8") as f:
    f.write(no_res)

uTools_1683296047299.png (16.8 KB, 下载次数: 9)

uTools_1683296047299.png

gene_id_conversion.zip

193.27 KB, 下载次数: 2, 下载积分: 吾爱币 -1 CB

解压使用

免费评分

参与人数 2吾爱币 +7 热心值 +2 收起 理由
苏紫方璇 + 5 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
三滑稽甲苯 + 2 + 1 不明觉厉

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

沙发
雾都孤尔 发表于 2023-5-5 22:58
支持原创,感谢分享。
3#
xixicoco 发表于 2023-5-6 06:57
4#
 楼主| Anome 发表于 2023-5-8 14:47 |楼主
xixicoco 发表于 2023-5-6 06:57
吼吼,是袁隆平搞的东西吗??

啊这,还没那么高级,哈哈,是生信分析用到的一小步,之前用其中一种ID进行的align,后来发现有的功能不能用这种id来实现,只能转成另一种来做。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 19:57

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表