Python 脚本:按长度排序 FASTA 文件并写入新文件
以下 Python 脚本演示了如何读取 FASTA 文件,按序列长度对其进行排序,并将排序后的结果写入名为 'C.fasta' 的新文件:
def sort_fasta_by_length(filename):
seq_dict = {}
with open(filename, 'r') as file:
lines = file.readlines()
for i in range(0, len(lines), 2):
seq_id = lines[i].strip()
sequence = lines[i+1].strip()
seq_dict[seq_id] = sequence
sorted_seqs = sorted(seq_dict.items(), key=lambda x: len(x[1]))
with open('C.fasta', 'w') as output_file:
for i, seq in enumerate(sorted_seqs):
if i % 2 == 0:
output_file.write(seq[0] + '\n')
output_file.write(seq[1] + '\n')
# 使用示例
sort_fasta_by_length('output97b.fasta')
该脚本首先使用 with open(filename, 'r') as file: 读取输入 FASTA 文件,并将内容存储在 lines 列表中。然后,它使用循环遍历 lines 列表,每两个元素对应一个序列标识符 (seq_id) 和序列 (sequence),并将它们存储在字典 seq_dict 中。
接下来,使用 sorted(seq_dict.items(), key=lambda x: len(x[1])) 按序列长度对字典进行排序,并将排序后的结果存储在 sorted_seqs 列表中。
最后,使用 with open('C.fasta', 'w') as output_file: 打开名为 'C.fasta' 的输出文件,并使用循环遍历 sorted_seqs 列表,将排序后的序列标识符和序列写入文件。
通过以上步骤,您就可以将排序后的 FASTA 序列写入新的文件 'C.fasta' 中。
原文地址: https://www.cveoy.top/t/topic/pdzb 著作权归作者所有。请勿转载和采集!