У меня есть файл A с идентификатором последовательности, а также информация о местоположении сайта привязки. Я хотел бы извлечь информацию о местоположении только без информации A, T, C, G. Более короткая последовательность над более длинной последовательностью показывает свое местоположение и каждое число слева, например, в файле A значение 451 — это значение местоположения слева. Я хотел бы получить расположение короткой последовательности в более длинной последовательности, которая начинается с 453 (начальный сайт), и получить длину более короткой последовательности, которая имеет размер 21, и добавить к 453, чтобы получить конечный сайт, который равен 474. Может ли кто-нибудь мне помочь ?
Файл A.txt
chr1:152806601-152807450
TTCAGCACCATGGACAGCGCC
451 GGCTTCAGCACCACGGACAGCGCCCCACCCGCGGCCCTCCCCCCGGCGGCGCGCTCCAGCCGGTGTAGGCGAGGC
TTCAGCACCATGGACAGCGCC
751 AGAGCCCCCCGGGACTGCAGAGAGCACCTGGGAGGCTGGACTGGGAACGAGACATACTCGAAGGAGTAAGTGAAG
chr10:125364276-125364825
TTCAGCACCATGGACAGCGCC
301 CAGTAATGTGGGGTTGTGGTCAGCACCATGGACAGCTCCCCTGTTGCTTCATATTGAGGAATAGGAAAGCGCCGC
TTCAGCACCATGGACAGCGCC
376 TATCTCCGGATCCTGGCTAGCTCCAGCCACTGCAGGTAACTGTCTTGAATGGGCTTAGAAACATGGTGATGTCTG
Желаемый результат
chr1:152806601-152807450 453 474
chr1:152806601-152807450 757 778
chr10:125364276-125364825 318 339
chr10:125364276-125364825 378 399
Пример кода
import re
with open("A.txt", "r") as f:
lines = f.readlines()
label_ptrn = re.compile("") # insert regular expression sequence ID
line_ptrn = re.compile("") # insert regular expression start site
inner_ptrn = re.compile("") # insert regular expression end site
all_matches = []
for line in lines:
m = label_ptrn.match(line)
if m:
label = m.groupdict().get("label")
continue
m = line_ptrn.match(line)
if m:
start = m.groupdict().get("start_value")
sequence = m.groupdict().get("sequence")
mi = inner_ptrn.search(sequence)
if not mi:
continue
span = mi.span()
all_matches.append((label, int(start)+span[0], int(start)+span[1]))
with open("A_ouput.bed", "w+b") as f:
for m in all_matches:
f.write('%s\t%i\t%i\n' % m)
Can anyone help me?
не очень конкретно. В чем проблема? - person wwii   schedule 02.07.2015