sequence_list = ['atgttttgatggATGTTTGATTAG','atggggtagatggggATGGGGTGA','atgaaataatggggATGAAATAA']
Я беру каждый элемент (fdna) из sequence_list и ищу последовательности, начинающиеся с ATG, а затем читаю по 3, пока не достигну TAA, TGA или TAG.
Каждый элемент в sequence_list состоит из двух последовательностей. первая последовательность будет строчной, а вторая — прописной. строка результатов состоит из строчных букв + ПРОПИСНЫХ
Сбор CDS Starts & Upper()
cds_start_positions = []
cds_start_positions.append(re.search("[A-Z]", fdna).start())
fdna = fdna.upper()
Итак, после того, как я найду, где начинается последовательность в верхнем регистре, я записываю номер индекса в cds_start_positions, а затем преобразую всю строку (fdna) в верхний регистр.
Этот оператор собирает все ATG-xxx-xxx-, за которыми следует либо TAA|TAG|TGA
Сбор uORF
ORF_sequences = re.findall(r'ATG(?:...)*?(?:TAA|TAG|TGA)',fdna)
Поэтому я пытаюсь собрать все случаи, когда за ATG-xxx-xxx следует TAA, TGA или TAG.
Мои входные данные состоят из 2 последовательностей (нижний регистрUPPERCASE), и я хочу найти эти последовательности, когда:
1: за ATG следует TAA|TGA|TAG в нижнем регистре (теперь они в верхнем регистре, но значение, в котором они становятся в верхнем регистре, сохраняется в cds_start_positions)
2: ATG находится в нижнем регистре (меньше, чем значение cds_start_position), а следующий за ним TAA|TGA|TAG — в верхнем регистре.
ПРИМЕЧАНИЕ. Теперь он настроен так, что ATG, который был в исходной части верхнего регистра (больше, чем значение cds_start_position), сохраняется в списке
Что делает Gathering CDS Starts & Upper(), так это находит, где начинается последовательность верхнего регистра.
Есть ли способ наложить ограничения на часть Gathering uORF, чтобы она распознавала ATG только в позиции перед соответствующим элементом в списке cds_start_positions?
Я хочу поместить оператор в строку ORF_sequences, где он находит только «ATG» перед каждым элементом в списке «cds_start_positions».
Пример того, как будет выглядеть cds_start_positions
cds_start_positions = [12, 15, 14] #where each value indicates where the uppercase portion starts in the sequence_list elements (fdna)
для первой последовательности в sequence_list я хотел бы получить такой результат:
#input
fdna = 'atgttttgatggATGTTTGATTAG'
#what i want for the output
ORF_sequences = ['ATGTTTTGA','ATGGATGTTTGA']
#what i'm getting for the output
ORF_sequences = ['ATGTTTTGA','ATGGATGTTTGA','ATGTTTGATTAG']
эта третья запись находится после значения 12 (соответствующее значение в списке cds_start_positions), и мне это не нужно. Однако 2-я запись имеет начальный ATG до этого значения 12 и TAA|TGA|TAG после значения 12, что должно быть разрешено.
***Обратите внимание, у меня есть еще одна строка кода, которая просто берет начальные позиции, где встречаются эти ATG-xxx-xxx-TAA|TGA|TAG, а именно:
start_positions = [i for i in start_positions if i < k-1]
Есть ли способ использовать этот принцип в re.findall?
дайте мне знать, если мне нужно что-то уточнить
findall
, похоже, возвращает значения, но я не знаю, в чем проблема с ними. - person sotapme   schedule 14.02.2013