Ensembl.的位置和复制信息

布拉德查普曼生物照片 经过 布拉德查普曼 评论

了解在线娱乐家族的进化历史可能会对其活动的机制提供一些洞察力。在这里,我们将看看有趣的真核在线娱乐列表的两个特征:

  • 共同位于染色体上的群体。
  • 通过重复进化相关(帕拉洛斯)。

通过扩大在一个中完成的工作 早些时候的帖子,我们将使用来自的信息识别共同定位和重复的在线娱乐 Ensembl. genome browser.

使用我们以前的屏幕方法刮擦 美丽的汤,我们扩展了我们的Ensembl rest-like类以包含两个新功能。位置表示为染色体名称列表,开始和结束,并从Gene摘要页面解析:

[Sourcecode语言=“Python”]
def位置(自我,生物,gene_id):
使用self._get_open_handle(“在线娱乐”,“摘要”,
有机体,gene_id)作为in_handle:
汤= leyendsoup(in_handle)
loc_tab = soup.find(“dd”,id =“tab_location”)
链接= loc_tab.find(“a”)
路径,attrs = Urllib2.splitattr(链接[“href”])
for attr in attrs:
如果attr.find(“r =”)== 0:
key,val = attr.split(“=”)
Chrom,Location = Val.Split(“:”)
开始,结束=位置.Split(“ - ”)
Return Chrom,Int(start),int(结束)
提高ValueError(“未找到位置:%s”%链接)
[/源代码]

同样,我们可以从在线娱乐的Ensembl比较页面中检索对副歌曲的细节。通过这两个功能,感兴趣的蛋白质ID列表,以及包含物种和Ensembl ID引用的字典,我们将所有位置和重复信息收集到Python词典中。与此同时,我们维护Ensembl ID的倒置映射到我们的原始ID:

[Sourcecode语言=“Python”]
ensembl_retriever = ensemblcompararest(cache_dir)
loc_info = dict()
dup_info = dict()
ensembl_to_uniprot = dict()
for all_id中的cur_id:
cur_rec = db[cur_id]
cur_ensembl_org = cur_rec [“org_scientific_name”]。替换(“”,“_”)
for for rembl_id在cur_rec.get中(“db_refs_ensembl”,[]):
ParaLogs = EnsemBl_Retriever.Paralogs(cur_ensembl_org,ensembl_id)
染色体,开始,end = ensembl_retriever.location(
cur_ensembl_org,ensembl_id)
dup_info [ensembl_id] = paralogs
loc_info [ensembl_id] =(cur_rec [“org_scientific_name”,
染色体,开始,结束)
Ensembl_to_uniprot [ensembl_id] = cur_id
[/源代码]

现在我们希望将Parayog字典压平到复制相关联的组的列表中。这是通过使用Python集完成的;组合具有共享在线娱乐的任何组,返回结果唯一列表:

[Sourcecode语言=“Python”]
def insid_paralogs(dup_info,ensembl_to_uniprot):
cur_groups = []
all_base = dup_info.keys()
对于base_id,dup_info.items()中的dup_ids:
重叠= set(dup_ids)和set(all_base)
if len(overlap) > 0:
new_group = set([eNEMBL_TO_UNIPROT [X] X中的x in重叠
set([base_id])])
is_unique = True
for ential_i,inumerate(cur_groups)中的存在_group:
if len(new_group & exist_group) > 0:
update_group = new_group&sents_group
cur_groups [存在_i] = update_group
is_unique = False
break
if is_unique:
cur_groups.append(new_group)
在cur_groups中返回g的[l列表(g)]
[/源代码]

We use two functions to similarly group together genes by location. The first function calculates the actual distance given the previously retrieved location information list of (organism, 染色体,开始,结束). Two items in different organisms or on different chromosomes are placed maximally far apart since they can't be co-located.

[Sourcecode语言=“Python”]
def location_distance(loc_one,loc_two):
如果loc_one [:2]!= loc_two [:2]或loc_one == loc_two:
return sys.maxint
else:
return max(abs(loc_one [3] - loc_two [2]),
abs(loc_two [3] - loc_one [2]))
[/源代码]

这 next function creates a dictionary of genes co-located based on our threshold, and then uses the examine_paralogs flattening function we defined above to generate groups from this dictionary. The variable distance_thresh defines the distance in which two genes are considered co-located. For the example script, 1 megabase is used, but this can be adjusted according to your own personal definition of close.

[Sourcecode语言=“Python”]
def insid_location(loc_info,ensembl_to_uniprot,tempert_thresh):
loc_close = collections.defaultdict(lambda:[])
for uniprot_id,loc_one在loc_info.items()中:
for cmp_id,loc_two在loc_info.items()中:
如果location_distance(loc_one,loc_two) <= distance_thresh:
loc_close [uniprot_id] .append(cmp_id)
返回审查_paralogs(loc_close,ensembl_to_uniprot)
[/源代码]

完整脚本 使用每行的文件输入是单尺寸的ID和在线娱乐名称,并且还需要一个像我们这样的Uniprot Shelve数据库 早先开发。该搁置数据库将基本ID提供给Ensembl ID映射和生物信息,可以从Uniprot XML文件中解析。

得到的共同位置和重复组是可以共享有趣的进化史的在线娱乐组。副病剂已经基于序列相似性和它们的组成来计算地确定与进化相关 在线娱乐家谱树。共同定位的在线娱乐可以在进化期间共同选择,是通过广泛的序列变化模糊的局部在线娱乐重复的结果,或者仅基于机会紧密地结合在一起。根据这些信息进一步检查您的在线娱乐家族,可以帮助确定哪些假设有利。

评论支持 反驳