Я хотел бы извлечь начальную и конечную информацию о сайте, которая указана заглавной буквой. При подсчете длины последовательности с помощью приведенного ниже кода невозможно точно вернуть информацию о последовательности. Результат P-match, который мне нужно обработать с учетом начального сайта, основан на первом алфавите, но начальный сайт, который мне действительно нужен, — это первая заглавная буква, встречающаяся на каждом сайте. Как я могу получить точный начальный и конечный сайт? Кто-нибудь может мне помочь?
Текстовый файл A.txt
Scanning sequence ID: BEST1_HUMAN
150 (-) 1.000 0.997 GGAAAggccc R05891
354 (+) 0.988 0.981 gtgtAGACAtt R06227
V$CREL_01c-RelV$EVI1_05Evi-1
Scanning sequence ID: 4F2_HUMAN
365 (+) 1.000 1.000 gggacCTACA R05884
789 (-) 1.000 1.000 gcgCGAAA R05828; R05834; R05835; R05838; R05839
V$CREL_01c-RelV$E2F_02E2F
Ожидаемый результат:
Идентификатор последовательности начало конец
BEST1_HUMAN 150 155
BEST1_HUMAN 358 363
4F2_HUMAN 370 370
4F2_HUMAN 792 797
Файл B.txt
Scanning sequence ID: hg17_ct_ER_ER_142
512 (-) 0.988 0.981 taTAGCTaagc Evi-1 R06227
V$EVI1_05
Scanning sequence ID: hg17_ct_ER_ER_1
213 (-) 1.000 0.989 aggggcaggGGTCA COUP-TF, HNF-4 R07445
V$COUP_01
Ожидаемый результат:
hg17_ct_ER_ER_142 514 519
hg17_ct_ER_ER_1 222 227
Пример кода:
output_file = open('output.bed','w')
with open('A.txt') as f:
text = f.read()
chunks = text.split('Scanning sequence ID:')
for chunk in chunks:
if chunk:
lines = chunk.split('\n')
sequence_id = lines[0].strip()
for line in lines:
if line.startswith(' '):
start = int(line.split()[0].strip())
sequence = line.split()[-2].strip()
stop = start + len(sequence)
#print sequence_id, start, stop
seq='%s\t%i\t%i\n' % \
(sequence_id,start,stop)
output_file.write(seq)
output_file.close()