Заменить строку заголовка нескольких последовательностей в файле fasta и заменить их названиями видов, хранящимися в списке (.txt)

У меня есть файл fasta с несколькими последовательностями, но первая строка всех последовательностей начинается с одной и той же строки (ABI), и я хочу изменить и заменить ее названиями видов, хранящимися в другом текстовом файле.

Мой файл fasta выглядит так

>ABI
AGCTAGTCCCGGGTTTATCGGCTATAC
>ABI
ACCCCTTGACTGACATGGTACGATGAC
>ABI
ATTTCGACTGGTGTCGATAGGCAGCAT
>ABI
ACGTGGCTGACATGTATGTAGCGATGA

Список spp выглядит следующим образом:

Alsophila cuspidata
Bunchosia argentea
Miconia cf.gracilis
Meliosma frondosa

Как я могу изменить эти заголовки ABI моих последовательностей и заменить их названием моего вида, используя именно этот порядок.

Требуемый результат:

>Alsophila cuspidata
AGCTAGTCCCGGGTTTATCGGCTATAC
>Bunchosia argentea
ACCCCTTGACTGACATGGTACGATGAC
>Miconia cf.gracilis
ATTTCGACTGGTGTCGATAGGCAGCAT
>Meliosma frondosa
ACGTGGCTGACATGTATGTAGCGATGA

Я использовал что-то вроде:

awk '
FNR==NR{
  a[$1]=$2
  next
}
($2 in a) && /^>/{
  print ">"a[$2]
  next
}
1
' spp_list.txt FS="[> ]"  all_spp.fasta

Это не работает, может кто-нибудь помочь мне, пожалуйста.

3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
0
0
41
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Привет, я не разработчик, так что не груби.

Надеюсь, что это поможет вам:

Я создаю файл fasta.txt, который содержит:

>ABI
AGCTAGTCCCGGGTTTATCGGCTATAC
>ABI
ACCCCTTGACTGACATGGTACGATGAC
>ABI
ATTTCGACTGGTGTCGATAGGCAGCAT
>ABI
ACGTGGCTGACATGTATGTAGCGATGA

Я также создал файл spplist.txt, который содержит:

Alsophila cuspidata
Bunchosia argentea
Miconia cf.gracilis
Meliosma frondosa

Затем я создал скрипт Python с именем fasta.py, вот он:

#!/bin/python3

#import re library: https://docs.python.org/3/library/re.html
#import sys library: https://docs.python.org/3/library/sys.html
import re,sys

#saving the reference of the standard output into "original_stdout"
original_stdout = sys.stdout


with open("spplist.txt", "r") as spplist:
    x = spplist.readlines()
    with open("fasta.txt", "r") as fasta:
        output_file = open("output.txt", "w")
        #redirecting standard output to output_file
        sys.stdout = output_file

        for line in fasta:
            if re.match(r">ABI", line):
                print(x[0].rstrip())
                del x[0]
            else:
                print(line.rstrip())

        #restoring the native standard output
        sys.stdout = original_stdout

#Notify the user at the end of the work
print("job done")

(эти три файла должны находиться в одном каталоге, если вы хотите, чтобы скрипт работал как есть)

Вот мое дерево директорий:

❯ tree
.
├── fasta.py
├── fasta.txt
└── spplist.txt

Чтобы выполнить скрипт, откройте оболочку, перейдите в каталог cd и введите:

❯ python3 fasta.py
job done

Вы увидите новый файл с именем output.txt в каталоге:

❯ tree
.
├── fasta.py
├── fasta.txt
├── output.txt
└── spplist.txt

и вот его содержание:

Alsophila cuspidata
AGCTAGTCCCGGGTTTATCGGCTATAC
Bunchosia argentea
ACCCCTTGACTGACATGGTACGATGAC
Miconia cf.gracilis
ATTTCGACTGGTGTCGATAGGCAGCAT
Meliosma frondosa
ACGTGGCTGACATGTATGTAGCGATGA

Надеюсь, это поможет вам. угадай.

Другие вопросы по теме