如何快速瞭解自己研究物種的同屬或者同科都有哪些物種做了基因組測序?
今天遇到了這個問題,首先想到NCBI數據庫有專門的地方存儲都有哪些物種做了基因組測序
打開NCBI首頁直接點擊Genome
然後點擊Browse by genome
能夠獲取這個表格
但是這個表格裏有物種拉丁名,但是好像沒有這個物種的具體是哪個科哪個屬這些信息
想到之前寫過的推文,好像可以藉助拉丁名直接獲取這些信息,通過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()
這行代碼會下載一些內容,
這一步我們等就行了
有了這個功能,加上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 是你感興趣的 科 屬的名字
輸出結果裏每個物種有很多信息
暫時不知道怎麼把有效的信息提取出來
歡迎大家關注我的公衆號
小明的數據分析筆記本
小明的數據分析筆記本 公衆號 主要分享:1、R語言和python做數據分析和數據可視化的簡單小例子;2、園藝植物相關轉錄組學、基因組學、羣體遺傳學文獻閱讀筆記;3、生物信息學入門學習資料及自己的學習筆記!