替换fasta文件中几个序列的header行,并替换为列表(.txt)中存储的物种名称
replace the header line of several sequences in a fasta file and replace them with the species names stored in a list (.txt)
我有一个包含多个序列的 fasta 文件,但所有序列的第一行都以相同的字符串 (ABI) 开头,我想更改它并将其替换为存储在不同文本文件中的物种名称.
我的 fasta 文件看起来像
>ABI
AGCTAGTCCCGGGTTTATCGGCTATAC
>ABI
ACCCCTTGACTGACATGGTACGATGAC
>ABI
ATTTCGACTGGTGTCGATAGGCAGCAT
>ABI
ACGTGGCTGACATGTATGTAGCGATGA
spp 列表如下所示:
Alsophila cuspidata
Bunchosia argentea
Miconia cf.gracilis
Meliosma frondosa
我如何更改我的序列的那些 ABI headers 并使用准确的顺序将它们替换为我的物种名称。
所需输出:
>Alsophila cuspidata
AGCTAGTCCCGGGTTTATCGGCTATAC
>Bunchosia argentea
ACCCCTTGACTGACATGGTACGATGAC
>Miconia cf.gracilis
ATTTCGACTGGTGTCGATAGGCAGCAT
>Meliosma frondosa
ACGTGGCTGACATGTATGTAGCGATGA
我使用的是:
awk '
FNR==NR{
a[]=
next
}
( in a) && /^>/{
print ">"a[]
next
}
1
' spp_list.txt FS="[> ]" all_spp.fasta
这不起作用,请有人指导我。
你好,我不是开发者所以不要无礼。
希望对您有所帮助:
我创建了一个文件 fasta.txt,其中包含:
>ABI
AGCTAGTCCCGGGTTTATCGGCTATAC
>ABI
ACCCCTTGACTGACATGGTACGATGAC
>ABI
ATTTCGACTGGTGTCGATAGGCAGCAT
>ABI
ACGTGGCTGACATGTATGTAGCGATGA
我还创建了一个文件 spplist.txt,其中包含:
Alsophila cuspidata
Bunchosia argentea
Miconia cf.gracilis
Meliosma frondosa
然后我创建了一个名为 fasta.py 的 python 脚本,这里是:
#!/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
要执行脚本,打开一个shell,在目录中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
希望对您有所帮助。
bguess.
我有一个包含多个序列的 fasta 文件,但所有序列的第一行都以相同的字符串 (ABI) 开头,我想更改它并将其替换为存储在不同文本文件中的物种名称.
我的 fasta 文件看起来像
>ABI
AGCTAGTCCCGGGTTTATCGGCTATAC
>ABI
ACCCCTTGACTGACATGGTACGATGAC
>ABI
ATTTCGACTGGTGTCGATAGGCAGCAT
>ABI
ACGTGGCTGACATGTATGTAGCGATGA
spp 列表如下所示:
Alsophila cuspidata
Bunchosia argentea
Miconia cf.gracilis
Meliosma frondosa
我如何更改我的序列的那些 ABI headers 并使用准确的顺序将它们替换为我的物种名称。
所需输出:
>Alsophila cuspidata
AGCTAGTCCCGGGTTTATCGGCTATAC
>Bunchosia argentea
ACCCCTTGACTGACATGGTACGATGAC
>Miconia cf.gracilis
ATTTCGACTGGTGTCGATAGGCAGCAT
>Meliosma frondosa
ACGTGGCTGACATGTATGTAGCGATGA
我使用的是:
awk '
FNR==NR{
a[]=
next
}
( in a) && /^>/{
print ">"a[]
next
}
1
' spp_list.txt FS="[> ]" all_spp.fasta
这不起作用,请有人指导我。
你好,我不是开发者所以不要无礼。
希望对您有所帮助:
我创建了一个文件 fasta.txt,其中包含:
>ABI
AGCTAGTCCCGGGTTTATCGGCTATAC
>ABI
ACCCCTTGACTGACATGGTACGATGAC
>ABI
ATTTCGACTGGTGTCGATAGGCAGCAT
>ABI
ACGTGGCTGACATGTATGTAGCGATGA
我还创建了一个文件 spplist.txt,其中包含:
Alsophila cuspidata
Bunchosia argentea
Miconia cf.gracilis
Meliosma frondosa
然后我创建了一个名为 fasta.py 的 python 脚本,这里是:
#!/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
要执行脚本,打开一个shell,在目录中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
希望对您有所帮助。 bguess.