import pandas as pd
import numpy as np

table = pd.read_table('GCF_010993845.2_ASM1099384v2_feature_table.txt', sep='\t')

def find_SD(inputfilename):
    with open(inputfilename, 'r') as file:
        # читаем выходной файл выдачи программы fuzznuc
        lines = [line.strip() for line in file.readlines() if not line.startswith('#')]
        # берем только те строки, которые не начинаются на #
        lines = [line.strip() for line in lines if line]  # убираем пустые элементы списка строк
        intervalsSD = []  # список для координат SD
        for i in range(1, len(lines)-3):  # читаем файл SD
            linewithoutfalsenumbers = [line for line in lines[i].split(' ') if line]  # убираем пустые элементы
            leftinterval = int(linewithoutfalsenumbers[0].strip())  # первое число - левая граница интервала
            rightinterval = int(linewithoutfalsenumbers[1].strip())  # второе число - правая
            intervalsSD.append([leftinterval, rightinterval])
    
    coordinatesFT = np.array(table[['start']], dtype=int)
    counter = 0

    for left, right in intervalsSD:
        distances = coordinatesFT - left
        mask = (distances >= 0) & (distances <= 30)
        if mask.any():
            counter += 1
    print(f'Всего последовательностей Шайна-Дольгарно в файле {inputfilename} — {counter}')

list(map(find_SD, ['SD_1.txt', 'SD_2.txt']))

