序言
本篇文章主要介绍了如何使用Python合并RepeatMasker预测分析效果中染色体的overlap区域,以及完成实例分析。RepeatMasker是一款重复序列注解的主要软件,能够根据已有数据库系统预测分析重复序列。

难题
如何清除重复序列中的overlap区域并将遗传基因间隔低于50个bp的也视作overlap,并用Python实现新的预测分析效果。
构思
首先,需要对文档进行预处理,只保留结果文件的前三列,并使用awk命令获取。然后按照排序规则对同性染色体编码序列进行归并排序。接下来,使用滑动窗口思路进行双指针核对,注意gap=50。最后将处理结果保存为输出文件。
完整代码如下:
a=[]
b=[]
with open('pretreatment.txt','r') as f:
for i in f.readlines():
if i.strip()=='//':
continue
c=i.strip().split('\t')
b.append(c[0])
a.append((c[0],int(c[1]),int(c[2])))
print("全部染色体数量:"+str(len(a)))
b_set=set(b)
result=[]
c=[i for i in b_set if b.count(i)==1]
for i in a:
if i[0] not in c:
continue
a.remove(i)
result.append((i[0],int(i[1]),int(i[2])))
print("去重后染色体数量:"+str(len(a)))
a.sort(key=lambda x:(x[0],x[1],x[2]))
q=''
start=0
end=0
tem1=[]
tem2=[]
gap=50
for i in a:
if i[0]!=q:
if tem1:
if tem1 not in tem2:
tem2.append(tem1)
tem1=[]
q=i[0]
start=int(i[1])
end=int(i[2])
continue
if int(i[1])<end or int(i[1])-endend:
end=int(i[2])
continue
else:
continue
tem1.append([q,start,end])
start=int(i[1])
end=int(i[2])
with open('new_result.txt','w') as f:
for i in tem2:
for o in i:
print(o[0],o[1],o[2],file=f)
for i in result:
print(i[0],i[1],i[2],file=f)
以上就是本文的全部内容,希望对大家有所帮助。
原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/6933.html
