Редактирование FASTA: Как изменить заголовки FASTA, используя regex и list, и заменить файл - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть FASTA, который выглядит следующим образом:

'> NZ_UARI01000011.1 Штамм Cronobacter sakazakii NCTC11467, последовательность всего дробовика всего генома GCGCATTTCTTATTACGGAGAAATACAGCAGCGTTGTGTGTTGTGTTGTGTTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTGTTTTA 1 штамм Cronobacter sakazakii NCTC11467, весь геном последовательность дробовика CAATTTTACTTGTTGATATAACAATCACGCTAACTATTCAGCCAATAGCTCCCGCATTAAAACCAGCTACTTCAGCCAAA ...

И я хочу, чтобы изменить заголовки на это:

'> Cronobacter sakazakii напрягать NCTC11467_1 GCGCATTTCTTATTACGGAGAAATACAGCAGCGTGTCTGTTTCAATTTTCAGCTTGTTCCGGATTGTTAAAGAGCAAATA СТТ ... '> Штамм Cronobacter sakazakii NCTC11467_2 CAATTTTACTTGTTGATATAACAATCACGCTAACTATTCAGCCAATAGCTCCCGCATTAAAACCAGCTACTTCAGCCAAA ... (и т. Д.) (Игнорировать' в начале заголовка)

* *, затем сохранить имя в 1011 * *1013* *, а затем добавить 1011 *1013* * имя, например, с таким именем, которое я бы назвал, с таким именем, как 1011 * *1013* *, в котором я могу сохранить это имя с 1014 *, а затем 1011 *, например, с таким именем, как I1, можно сохранить имя в 1011 * *1013* *, например, с таким именем, как I1, и 1014 заголовка. В идеале я не хотел бы делать новый fastta, но просто заменил файл на корректирующий: Cronobacter_sakazakii_strain NCTC11467.fasta

Теперь это будет легко сделать по отдельности, но у меня более 600 файлов. Так что идея делать каждого человека - не тот путь, по которому я хотел бы пойти. Я написал здесь скрипт, в котором я выделяю секцию заголовка, которую я хочу, используя regex, и сохраняю ее в списке с именем new_new. Затем я хочу сопоставить эти значения и заменить каждой строкой, начинающейся с '>', а затем добавить _1 / 2/3 / ... или # (как показано выше). Можете ли вы помочь мне с этой задачей? Если предоставленный мною сценарий не стоит продолжать, и у вас есть лучшее решение, пожалуйста, дайте мне знать.

#usr/bin/python
import sys
import os
import re
import csv
#sys.argv[1] =fasta 
#sys.argv[2] = list of header names (mass) 
#Gather existing headers to list (new_new)
with open(sys.argv[1], "r+") as text_file:
    lines = text_file.readlines()[1:]
    mylist = []
    new_new = []
    for i in lines:
        if '.' in i:
            mylist.append(i)
    pattern = r">*Cronobacter +\w* +\w* +.*[,]" 
    regex = re.compile(pattern, re.IGNORECASE)
    for j in mylist: 
        for match in regex.finditer(j): 
            value = match.group(0)
            new_new.append(value)
            for k in lines: 
                if '>' in k:
                    k= k.replace('.*',new_new[value])
text_file.close()
'''


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...