我有两个文件 文件 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')