Заголовки моего файла fasta выглядят так:
>ref|NC_001133| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=I]
>ref|NC_001134| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=II]
>ref|NC_001135| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=III]
>ref|NC_001136| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=IV]
>ref|NC_001137| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=V]
>ref|NC_001138| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=VI]
>ref|NC_001139| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=VII]
>ref|NC_001140| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=VIII]
>ref|NC_001141| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=IX]
>ref|NC_001142| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=X]
>ref|NC_001143| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=XI]
>ref|NC_001144| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=XII]
>ref|NC_001145| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=XIII]
>ref|NC_001146| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=XIV]
>ref|NC_001147| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=XV]
>ref|NC_001148| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [chromosome=XVI]
>ref|NC_001224| [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [location=mitochondrion] [top=circular]
Мне нужно заменить каждый соответствующий >ref|NC_001133|
для соответствующего местоположения, например, '[chromosome = I]', потому что я хочу получить правильное формат для предстоящих прогонов, но сначала я хочу сгруппировать каждый раздел заголовка, используя регулярные выражения; однако в последней строке раздел митохондрии усложняет мне правильную группировку каждого элемента. Я действительно надеюсь, что вы могли бы помочь группировке с помощью регулярных выражений.
Это часть моего кода, которую я пытался сделать:
#!/usr/bin/env python
import re
import subprocess
from sys import argv
def get_fasta_rec(input_fasta):
"""Find all FASTA entries in a FASTA file, change the headers and return them in a dictionary.
input_fasta -- FASTA file name
record_dict -- dict, {header:seq}
"""
entries = input_fasta.split(">")[1:]
dict_entry = {}
for entry in entries:
header, x, seq = entry.partition("\n")
m = re.search("(.+) (.+\s.+) (.+) (.+) (.+|('[location=mitochondrion] [top=circular]'))", header)
if m:
ref = m.group(1)
org = m.group(2)
strain = m.group(3)
moltype = m.group(4)
location = m.group(5)
if __name__ == '__main__':
input_fasta = open(argv[1]).read()
get_fasta_rec(input_fasta)
Вывод, который я хотел бы получить для каждого заголовка:
> [chromosome=I] [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [ref|NC_001133|]
> [location=mitochondrion] [top=circular] [org=Saccharomyces cerevisiae] [strain=S288C] [moltype=genomic] [ref|NC_001224|]
Спасибо заранее за вашу помощь.