Сбор, очистка и обрезка последовательностей производились при помощи кода ниже. Он получает на вход запись в формате gb (full) и выдает два fasta файла (см. ниже).
from Bio import SeqIO
from Bio.Seq import Seq
genome = SeqIO.read('sequence.gb', 'genbank')
seqs = []
for record in genome.features:
if record.type == 'CDS' and record.qualifiers['product'] != ['hypothetical protein']:
try:
prot_id = record.qualifiers['protein_id'][0]
except:
continue
if record.location.strand == 1:
start = record.location.start-25
end = record.location.start+3
seq = genome.seq[start:end]
else:
start = record.location.end-3
end = record.location.end+25
seq = genome.seq[start:end].reverse_complement()
if record.location.end-record.location.start > 400:
seqs.append(SeqIO.SeqRecord(seq, id = prot_id, description = f'{record.qualifiers["product"][0]}'))
meme = []
fimo = []
clear_seqs = [i for i in seqs if i.seq[25:28] == 'ATG']
for i in clear_seqs[:40]:
meme.append(i)
for i in clear_seqs[40:]:
fimo.append(i)
meme.append(SeqIO.SeqRecord(seq = Seq('TTTGAGAAGGCAGGGGACTCTAGAAATG'), id = '16s_rRNA', description = ''))
SeqIO.write(meme, 'meme.fasta', 'fasta')
SeqIO.write(fimo, 'fimo.fasta', 'fasta') + 40
1413
meme.fasta (n=40+1), fimo.fasta (n=1373)
Была использована веб-версия meme на meme.fasta (содержит 40 последовательностей + 16S РНК). После запуска сервер выдал команду, которую он использовал. В ней перечислены все параметры запуска:
meme meme.fasta -dna -oc . -nostatus -time 14400 -mod zoops -nmotifs 2 -minw 6 -maxw 10 -objfun classic -revcomp -markov_order 0
Результатом является мотив AAAGGAGG
, который похож на последовательность Шайна-Дальгарно. DAAGGAGG_fasta.txt содержит мотив для каждой последовательности. DAAGGAGG.meme хранит в себе матрицы.
Судя по лого, мотив немного грязноват, но, думаю, что это связано с тем, что последовательность Шайна-Дальгарно в некоторых последовательностях находится немного дальше/ближе от/к ATG.
Далее в программе FIMO (с порогом p < 0.001) был произведен поиск мотивов по файлу fimo.fasta с матрицей DAAGGAGG.meme. Всего было найдено 733 мотива.
!jupyter nbconvert --to html sd.ipynb
[NbConvertApp] Converting notebook sd.ipynb to html [NbConvertApp] Writing 579037 bytes to sd.html