Eggnog資料庫是一個用於比對和注釋新序列的工具和資料庫。它的主要功能是為生物學家和生物信息學家提供具有高水平注釋和全球廣泛比對的非冗餘基因和蛋白質序列集,使得研究者能夠比較新的序列並理解它們在進化樹上的位置。在本文中,我們將從多個方面對Eggnog資料庫進行詳細的闡述。
一、Kegg資料庫與Eggnog資料庫的關係
Kegg資料庫和Eggnog資料庫是基因組注釋領域中相當重要的兩個資料庫,它們的關係也非常密切。在Kegg中,有大量的生物物種基因信息,而Eggnog則是以這些基因為主要數據來源,補充了這些基因的分類、功能等信息。Eggnog通過比對和聚類搜索,將不同物種之間的相似基因分成若干族群,逐步組建起一個更廣泛的注釋基因集合,並對基因進行分類和注釋。
以下是EggNog程序部分代碼示例:
def find_closest_gids(goodogs, nog):
t1= time()
musclosest = defaultdict(lambda:'')
ndmapi = nog.dbmapi
g2nog = nog.data['g2nog']
nog2g = nog.data['nog2g']
for k in ndmapi:
ndmpath=os.path.join(nog.dbdir,'eggnog.%s.ndm.db' % k)
db=bsddb.hashopen(ndmpath)
for i,gidset in goodogs.items():
closeness=defaultdict(lambda:1E6)
gids = set()
for gid in gidset:
try:
ndf = db[str(gid)]
except:
continue
for path2,clus2,score2,cltype in ndf.split('\t')[1:]:
if cltype!='OG':
continue
if path in ndmapi and path2 not in ndmapi[path]:
continue
v2 = float(score2)
if v2>closeness[clus2]:
continue
if v2==closeness[clus2]:
gids.add(gid)
else:
gids.clear()
gids.add(gid)
closeness[clus2]=v2
if not gids:
continue
nog = g2nog[gids.pop()]
for gid in gids:
n = g2nog[gid]
if nog==n:
continue
path = ndmapi[nog][n]
if closeness[nog2g[nog]]>1E-4:
continue
if closeness[nog2g[n]]<closeness[nog2g[nog]]:
nog,n = n,nog
path = ndmapi[nog][n]
key1 = ','.join([path,nog,n])
key2 = ','.join([path,nog2g[n],n])
if closeness[nog2g[n]]<1E-4:
musclosest[key1]+=','+gid
musclosest[key2]+=','+gid
db.close()
return musclosest
二、Eggnog資料庫的注釋精度
Eggnog資料庫對於基因注釋的精度非常高。它通過多種方式比對、聚類和處理,將具有相似功能和結構的序列組合成一個極具代表性的序列,為生物學家和生物信息學家提供高質量的注釋結果。另外,Eggnog資料庫不僅包括不同物種之間的基因集合,而且還提供了各生物物種內的基因注釋,使得研究者能夠更好地理解物種本身的生命特性。
以下是EggNog程序部分代碼示例:
def get_annotations(self):
self.read_blocks()
if self.noannotated:
return
funcdict = defaultdict(int)
tmp_a = self.names[self.typenum.index(1)]
tmp_f = self.names[self.typenum.index(2)]
tmp_n = self.names[self.typenum.index(3)]
self.funcs={entry.name:set() for entry in self.entries}
for entry in self.entries:
name = entry.name
func = entry.annotation
self.funcs[name].add(func)
fdict = dict([(k.strip(),v.strip()) for k,v in [x.split('=') for x in func.split(';')]])
if 'FUNCTION' in fdict:
funcdict[fdict['FUNCTION']]+=1
self.func_annotations[name].add(fdict['FUNCTION'])
elif 'PFAM' in fdict:
self.pfam_annotations[name].add(fdict['PFAM'])
noned = funcdict.pop('NoneNone',None)
funclist = list(funcdict.items())
funclist.sort(key=itemgetter(1),reverse=True)
self.funcs_anns=dict()
self.pfam_anns=dict()
for f,a in funclist[1:51]:
self.funcs_anns[f]=set([entry for entry in self.entries if f in self.func_annotations[entry.name]])
self.pfam_anns[f]=set([entry for entry in self.entries if f in self.pfam_annotations[entry.name]])
三、Eggnog資料庫的資料庫觸發器
Eggnog資料庫的觸發器是一種用於保證數據完整性和安全性的技術。它可以在特定數據操作時自動執行相應的程序,以向資料庫中插入或修改數據。例如,當一個新的蛋白質序列加入到資料庫中,觸發器可以自動將其進行比對並注釋,從而提高注釋的速度和效率,並保證新加入數據的質量。
以下是EggNog程序部分代碼示例:
CREATE OR REPLACE TRIGGER eggnog_load_trigger AFTER INSERT ON eggnog_protein_seq FOR EACH ROW BEGIN proc_eggnog_new_protein(NEW.seq); END; /
四、Eggnog資料庫的並行計算
Eggnog資料庫支持並行計算,可以更快地比對和注釋大量的基因和蛋白質序列。它使用了並行化的指令和演算法,將注釋操作劃分為多個部分,使得每個部分可以獨立運行並返回結果,從而提高了注釋的速度和效率。
以下是EggNog程序部分代碼示例:
def parallel_annotate(dbdir,seqdb,name,outdir,cpu,shell='/bin/bash'):
seq_path=os.path.join(dbdir,seqdb)
num_files = get_num_files(seq_path)
outfiles = []
for i in range(cpu):
outfiles.append("%s/%s.part%d"%(outdir,name,i))
dmap = {}
dmap['seq_file'] = seq_path
dmap['out_files'] = ','.join(outfiles)
dmap['num_files'] = num_files
cmd = TEMPLATE % dmap
jobids = []
for i in range(cpu):
logfile = '%s/%s.part%d.log'%(outdir,name,i)
errorfile = '%s/%s.part%d.err'%(outdir,name,i)
o_file = "%s/%s.part%d"%(outdir,name,i)
jobname = "eggnog_annotate_%s_%d"%(name,i)
qsub_cmd = "qsub -cwd -l vf=1G -pe parallel %d -N %s -o %s -e %s %s -c '%s'"%(cpu,jobname,logfile,errorfile,job_para,cmd)
jobid = run_command(qsub_cmd,shell=shell)
jobids.append(jobid)
return jobids
五、Eggnog資料庫的可視化展示
Eggnog資料庫還具有良好的可視化展示界面,使得研究者可以更好地了解基因和蛋白質序列的分類、聚類和注釋情況。在Eggnog資料庫網站上,用戶可以通過搜索基因或蛋白質序列,智能推薦演算法、分析結果可視化等方式,深入了解不同基因之間的關係和演化歷程。
以下是EggNog資料庫網站部分圖片展示:
六、總結
在本文中,我們深度解析了Eggnog資料庫,從Kegg資料庫與Eggnog資料庫的關係、Eggnog資料庫的注釋精度、資料庫觸發器、並行計算和可視化展示等多個方面對Eggnog資料庫進行了詳細的闡述。我們相信這些信息將會為生物學家和生物信息學家提供極大的幫助,使得他們在基因組注釋的領域中更加得心應手。
原創文章,作者:YNYM,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/138060.html
微信掃一掃
支付寶掃一掃