如何快速了解自己研究物种的同属或者同科都有哪些物种做了基因组测序?
今天遇到了这个问题,首先想到NCBI数据库有专门的地方存储都有哪些物种做了基因组测序
image.png
打开NCBI首页直接点击Genome
image.png
然后点击Browse by genome
image.png
能够获取这个表格
但是这个表格里有物种拉丁名,但是好像没有这个物种的具体是哪个科哪个属这些信息
想到之前写过的推文,好像可以借助拉丁名直接获取这些信息,通过python的ete3模块
这个模块可以直接通过pip进行安装 -i 指定国内镜像会快一点
pip install ete3 -i https://pypi.tuna.tsinghua.edu.cn/simple
通过物种拉丁名获取科属这些信息简单小例子
from ete3 import NCBITaxa
ncbi = NCBITaxa()
name2taxid = ncbi.get_name_translator(names=["Punica granatum"])
t_dict = ncbi.get_taxid_translator(ncbi.get_lineage(name2taxid['Punica granatum'][0]))
t_dict
第一次运行ncbi = NCBITaxa()
这行代码会下载一些内容,
image.png
这一步我们等就行了
有了这个功能,加上NCBI获取的测序物种的拉丁名 我们就写一个简单的循环,然后依次获取每个物种的所有信息,然后判断这个物种是不是和我们自己研究物种同科同属
python代码
import click
from ete3 import NCBITaxa
import pandas as pd
@click.command()
@click.option("--species_list")
@click.option("--your_species")
def get_species_placement_in_NCBI(species_list,your_species):
ncbi = NCBITaxa()
df = pd.read_csv(species_list)
for index,row in df.iterrows():
if "Land Plants" in row['Organism Groups']:
species_name = row['#Organism Name']
name2taxid = ncbi.get_name_translator(names = [species_name])
#print(name2taxid)
if len(name2taxid) == 0:
print(species_name)
else:
t_dict = ncbi.get_taxid_translator(ncbi.get_lineage(name2taxid[species_name][0]))
#print(t_dict)
if your_species in t_dict.values():
print(species_name,"_".join(t_dict.values()))
if __name__ == "__main__":
get_species_placement_in_NCBI()
使用方法
python get_species_placement_in_NCBI.py --species_list genomes.csv --your_species Myrtales > abc.txt
第一个参数--species_list 是把NCBI的那个信息下载下来生成的csv文件
第二个参数--your_species 是你感兴趣的 科 属的名字
输出结果里每个物种有很多信息
image.png
暂时不知道怎么把有效的信息提取出来
欢迎大家关注我的公众号
小明的数据分析笔记本
小明的数据分析笔记本 公众号 主要分享:1、R语言和python做数据分析和数据可视化的简单小例子;2、园艺植物相关转录组学、基因组学、群体遗传学文献阅读笔记;3、生物信息学入门学习资料及自己的学习笔记!
image.png