0

我有两个文件 文件 1

chr1:4847593-4847993 TGCCGGAGGGGGTTTCGATGGAACTCGTAGCA

文件 2

PBSN|X|75083240|75098962| TTTACTACTTAGTAACACAGTAAGCTAAACAACCAGTGCCATGGTAGGCTTGAGTCAGCT CTTTCAGGTTCATGTCCATCAAAGATCTACATCTCTCCCCTGGTAGCTTAAGAGAAGCCA TGGTGGTTGGTATTTCCTACTGCCAGACAGCTGGTTGTTAAGTGAATATTTTGAAGTCC

文件 1 有大约 8000 多行,下面有不同的标题和序列。我首先想匹配从文件 1 到文件 2 的开始和结束坐标,或者看看它是否彼此接近,如果是,则用 +- 100 说,然后匹配文件 2 中的序列,然后打印出文件 2 的标题信​​息和匹配的序列。我的方法使用区间树(在 python 中我仍在尝试掌握它),存储坐标?
我尝试使用 re.match 但它没有给我准确的结果。任何提示将不胜感激。谢谢。

我的第一次尝试,现在我遇到了另一个路障,所以对于我的第二个第二个文件,如果我的开始和结束分别是 5000 和 8000,我想通过减去 2000 来改变它,所以我的新开始和停止是 3000 和 5000 这是我的代码

from intervaltree import IntervalTree
from collections import defaultdict
binding_factor = some.txt
genome = dict()
with open('file2', 'r') as rows:
     for row in rows:
     #print row
     if row.startswith('>'):
        row = row.strip().split('|')
        chrom_name = row[5]
        start = int[row[3]
        end = int(row[3])
        # one interval tree per chromosome
        if chrom_name not in genome:
           genome[chrom_name] = IntervalTree()                
            # first time we've encountered this chromosome, createtree                    
            # index the feature
           genome[chrom_name].addi(start,end,row[2])
           #for key,value in genome.iteritems():
           #print key, ":", value

mast = defaultdict(list)
with open(file1', 'r') as f:
     for row in f:
     row = row.strip().split()
     row[0] = row[0].replace('chr', '') if row[0].startswith('chr') else row[0]
     row[0] = 'MT' if row[0] == 'M' else row[0]
     #print row[0]
     mast[row[0]].append({
     'start':int(row[1]),
     'end':int(row[2])
     })
     #for k,v in mast.iteritems():
     #print k, ":", v  

with open(binding_factor, 'w') as f :
     for k,v in mast.iteritems():
         for i in v:
             g = genome[k].search(i['start'],i['end'])
             if g:
                 print g
                 l = gene
                 f.write(str(l)`enter code here` + '\n')
4

0 回答 0