1. 本际云推荐 - 专业推荐VPS、服务器,IDC点评首页
  2. 云主机运维
  3. VPS运维

python合拼RepeatMasker预测分析效果中染色体的overlap区域

序言

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

python合拼RepeatMasker预测分析效果中染色体的overlap区域

难题

如何清除重复序列中的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