Разбор фаста с указанием c имен в шапке - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть текстовый файл, содержащий несколько быстрых последовательностей (и я готов проанализировать последовательности вместе с именами генов, особенно. Не могли бы вы помочь с выбором последовательностей с указанными c именами в заголовке. Спасибо

Исходные данные в текстовом файле.

lcl | NC_045512.2_gene_6 [gene = ORF6] [locus_tag = GU280_gp06] [db_xref = GeneID: 43740572] [location = 27202..27387] [gbkey = Gene] ATGTTTCATCTCGTTGACTTTCAGGTTACTATAGCAGAGATATTACTAATTATTATGAGGACTTTTAAAG

Ожидаемые данные после обработки в python 1009

1011 * orf6 ATGTTTCATCTCGTTGACTTTCAGGTTACTATAGCAGAGATATTACTAATTATTATGAGGACTTTTAAAG

Я использовал это, и я был удалось получить

***from Bio import SeqIO
for record in SeqIO.parse("mytext.txt", 'fasta'):
    print(record.name) 
    print(record.seq)***

Полученные результаты были такими:

lcl | NC_045512.2_gene_6 ATGTTTCATCTCGTTGACTTTCAGGTTACTATAGCAGAGATATTACTAATTATTATGAGGACTTTTAAAG

Ответы [ 2 ]

0 голосов
/ 17 апреля 2020

Я все еще не понимаю ваш вопрос, так как я не изучал биологию.

Этот ответ чисто для souce_text == expected_text

from io import StringIO
from Bio import SeqIO  # pip install biopython  # https://biopython.org/wiki/Download
import re

source_text = """\
>lcl|NC_045512.2_gene_6 [gene=ORF6] [locus_tag=GU280_gp06][db_xref=GeneID:43740572] [location=27202..27387] [gbkey=Gene]
ATGTTTCATCTCGTTGACTTTCAGGTTACTATAGCAGAGATATTACTAATTATTATGAGGACTTTTAAAG
"""

expected_text = """\
ORF6
ATGTTTCATCTCGTTGACTTTCAGGTTACTATAGCAGAGATATTACTAATTATTATGAGGACTTTTAAAG
"""

regex = re.compile("\[gene=[\w]*\] ")  # \w: [a-zA-Z0-9_]
result = ''
for record in SeqIO.parse(StringIO(source_text), 'fasta'):
    # print(record.name)
    gene_name = regex.search(record.description).group()  # [ORF6]
    gene_name = gene_name[gene_name.find('=')+1: -2]  # ORF6
    print(gene_name)
    print(record.seq)
    result += gene_name + '\n' + record.seq + '\n'

if result == expected_text:
    print('ok')
ORF6
ATGTTTCATCTCGTTGACTTTCAGGTTACTATAGCAGAGATATTACTAATTATTATGAGGACTTTTAAAG
ok

ССЫЛКА

ниже приводится справка для людей, которые не знакомы с biopython.


0 голосов
/ 09 апреля 2020

здесь я попробовал это в python регулярном выражении ....

здесь я сгруппировал ген и последовательность для двух последовательностей .....

import re
f=open('seq',"r")
input=(f.readlines())
print(input)
patt=".+?\[gene=(.+?)]\s\[locus_tag=.+?]\s\[db_xref=GeneID:.+?]\s\ 
[location=.+?]\s\[gbkey=.+?]\s(.+)"
for i in input:
    x=re.search(patt.decode('utf-8'),i.decode('utf- 
    8'),re.DOTALL|re.MULTILINE|re.IGNORECASE|re.UNICODE)
    print x.groups()

the вывод будет ....

group1=(u'ORF6',u'ATGTTTCATCTCGTTGACTTTCAGGTTACTATAGCAGAGATATTACTAATTATTATGAGG
 ACTTTTAAAG\n')
 group2=(u'ORF6',u'ATGTTTCATCTCGTTGACTTTCAGGTTACTATAGCAGAGATATTACTAATTATTAT
 GAGGACTTTTAAAG\n')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...