如何快速了解自己研究物種的同屬或者同科都有哪些物種做了基因組測序?
今天遇到了這個問題,首先想到NCBI數(shù)據(jù)庫有專門的地方存儲都有哪些物種做了基因組測序

打開NCBI首頁直接點(diǎn)擊Genome

然后點(diǎn)擊Browse by genome

能夠獲取這個表格
但是這個表格里有物種拉丁名,但是好像沒有這個物種的具體是哪個科哪個屬這些信息
想到之前寫過的推文,好像可以借助拉丁名直接獲取這些信息,通過python的ete3模塊
這個模塊可以直接通過pip進(jìn)行安裝 -i 指定國內(nèi)鏡像會快一點(diǎn)
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
第一次運(yùn)行ncbi = NCBITaxa()這行代碼會下載一些內(nèi)容,

這一步我們等就行了
有了這個功能,加上NCBI獲取的測序物種的拉丁名 我們就寫一個簡單的循環(huán),然后依次獲取每個物種的所有信息,然后判斷這個物種是不是和我們自己研究物種同科同屬
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
第一個參數(shù)--species_list 是把NCBI的那個信息下載下來生成的csv文件
第二個參數(shù)--your_species 是你感興趣的 科 屬的名字
輸出結(jié)果里每個物種有很多信息

暫時不知道怎么把有效的信息提取出來
歡迎大家關(guān)注我的公眾號
小明的數(shù)據(jù)分析筆記本
小明的數(shù)據(jù)分析筆記本 公眾號 主要分享:1、R語言和python做數(shù)據(jù)分析和數(shù)據(jù)可視化的簡單小例子;2、園藝植物相關(guān)轉(zhuǎn)錄組學(xué)、基因組學(xué)、群體遺傳學(xué)文獻(xiàn)閱讀筆記;3、生物信息學(xué)入門學(xué)習(xí)資料及自己的學(xué)習(xí)筆記!
