Поиск самой длинной ORF (открытой рамки считывания) в кадре считывания 2 в нескольких последовательностях в файле FASTA - PullRequest
0 голосов
/ 14 апреля 2020

Я видел несколько вопросов, касающихся проблем в этой области, но не смог использовать их для своей проблемы, несмотря на попытки понять методы Bio python в течение многих часов.

Я могу сделать это с logi c но я думаю, что предпочтительнее использовать Bio python.

Я пытался использовать код, который нашел:

f = open(r"C:\Users\97254\Downloads\dna2.fasta")
sequences = {}
count = 0
for line in f:
    line = line.rstrip()
    if line[0] == '>':
        count += 1
        first_row = line.split()
        name = first_row[0][1:]
        sequences[name] = ''
    else:
        sequences[name] = sequences[name] + line

startP = re.compile('ATG')
for sequence in sequences.values():
    sequence = squence[1:]
    longest = (0,)
    for m in startP.finditer(sequence):
        if len(Seq.Seq(sequence)[m.start():].translate(to_stop=True)) > longest[0]:
            pro = Seq.Seq(sequence)[m.start():].translate(to_stop=True)
            longest = (len(sequence[m.start():m.start()+len(pro)*3+3]), 
            m.start(), 
            sequence[m.start():m.start()+len(pro)*3+3])

Должен ли я использовать logi c, такой как a для l oop, который перебирает последовательности в прыжках по 3, или есть способ Biopythoni c, чтобы сделать это?

Спасибо!

1 Ответ

1 голос
/ 15 апреля 2020

Учебное пособие и поваренная книга Bio Python содержит следующий код для поиска открытых рамок чтения :

from Bio import SeqIO
record = SeqIO.read("NC_005816.fna", "fasta")
table = 11
min_pro_len = 100

for strand, nuc in [(+1, record.seq), (-1, record.seq.reverse_complement())]:
    for frame in range(3):
        length = 3 * ((len(record)-frame) // 3) #Multiple of three
        for pro in nuc[frame:frame+length].translate(table).split("*"):
            if len(pro) >= min_pro_len:
                print("%s...%s - length %i, strand %i, frame %i" \
                      % (pro[:30], pro[-3:], len(pro), strand, frame))

Вывод:

GCLMKKSSIVATIITILSGSANAASSQLIP...YRF - length 315, strand 1, frame 0
KSGELRQTPPASSTLHLRLILQRSGVMMEL...NPE - length 285, strand 1, frame 1
GLNCSFFSICNWKFIDYINRLFQIIYLCKN...YYH - length 176, strand 1, frame 1
VKKILYIKALFLCTVIKLRRFIFSVNNMKF...DLP - length 165, strand 1, frame 1
NQIQGVICSPDSGEFMVTFETVMEIKILHK...GVA - length 355, strand 1, frame 2
RRKEHVSKKRRPQKRPRRRRFFHRLRPPDE...PTR - length 128, strand 1, frame 2
TGKQNSCQMSAIWQLRQNTATKTRQNRARI...AIK - length 100, strand 1, frame 2
QGSGYAFPHASILSGIAMSHFYFLVLHAVK...CSD - length 114, strand -1, frame 0
IYSTSEHTGEQVMRTLDEVIASRSPESQTR...FHV - length 111, strand -1, frame 0
WGKLQVIGLSMWMVLFSQRFDDWLNEQEDA...ESK - length 125, strand -1, frame 1
RGIFMSDTMVVNGSGGVPAFLFSGSTLSSY...LLK - length 361, strand -1, frame 1
WDVKTVTGVLHHPFHLTFSLCPEGATQSGR...VKR - length 111, strand -1, frame 1
LSHTVTDFTDQMAQVGLCQCVNVFLDEVTG...KAA - length 107, strand -1, frame 2
RALTGLSAPGIRSQTSCDRLRELRYVPVSL...PLQ - length 119, strand -1, frame 2

Поскольку это Прямо из учебника я бы посчитал, что это самый лучший способ найти ORF от Biopythoni c. Он также перебирает последовательности в «прыжках 3», но использует функцию Bio Python SeqIO.read() для анализа файла fasta.

...