如何使用Python将含肽段序列的XLSX文件转换为FASTA格式?
如何使用Python将含肽段序列的XLSX文件转换为FASTA格式?
嗨,我来帮你搞定这个需求!你已经用pandas完成了肽段的筛选、去重并导出为XLSX文件,现在只需要把这个XLSX里的肽段序列转换成标准的FASTA格式就行。我给你两种实用方案:一种是读取已生成的XLSX文件来生成FASTA,另一种是直接在你现有的处理流程里添加FASTA生成步骤(更高效,不用绕XLSX的读写环节)。
方案一:从已有的XLSX文件生成FASTA
如果你已经导出了目标XLSX,直接读取它来生成FASTA即可,步骤非常清晰:
1. 核心代码
import pandas as pd # 替换成你之前生成的XLSX文件名 input_xlsx = "Peptides_identifiés_EnCoRe_Accession.xlsx" # 读取XLSX中的肽段数据 df = pd.read_excel(input_xlsx, sheet_name='Peptides') # 构建FASTA格式的内容 fasta_entries = [] for _, row in df.iterrows(): # FASTA头部:用Accession号作为唯一标识,你可以自定义格式补充信息 header_line = f">{row['Accession']}" # 提取纯氨基酸序列 peptide_seq = row['Peptide_Sequence'] # 将头部和序列加入列表,后续统一处理换行 fasta_entries.extend([header_line, peptide_seq]) # 把列表转为换行分隔的字符串,符合FASTA格式要求 fasta_content = '\n'.join(fasta_entries) # 写入FASTA文件,自定义输出文件名 output_fasta = "Unique_Peptides.fasta" with open(output_fasta, 'w', encoding='utf-8') as file: file.write(fasta_content) print(f"搞定!已生成FASTA文件 {output_fasta},包含 {len(df)} 条唯一肽段序列。")
2. 自定义调整技巧
- 丰富头部信息:如果想让头部更详细,比如加上序列长度,可以修改
header_line:header_line = f">{row['Accession']} | Peptide_Length: {len(peptide_seq)}" - 长序列换行:如果你的肽段序列很长,想遵循FASTA惯例每80个字符换行,可以加个小函数处理:
def split_long_sequence(sequence, chunk_len=80): return '\n'.join([sequence[i:i+chunk_len] for i in range(0, len(sequence), chunk_len)]) # 替换原有的 peptide_seq 行: peptide_seq = split_long_sequence(row['Peptide_Sequence'])
方案二:直接在现有处理流程中生成FASTA(更高效)
其实你完全可以跳过导出XLSX再读取的冗余步骤,在筛选去重完成后直接生成FASTA,节省时间和磁盘空间。把这段代码加在你现有代码的最后(print语句之前即可):
# 直接生成FASTA文件,无需先导出XLSX再读取 output_fasta = "Peptides_identifiés_EnCoRe.fasta" with open(output_fasta, 'w', encoding='utf-8') as fasta_file: for _, row in peptides_uniques.iterrows(): # 写入FASTA头部行 fasta_file.write(f">{row['Accession']}\n") # 写入纯肽段序列 fasta_file.write(f"{row['Peptide_Sequence']}\n") print(f"FASTA文件 {output_fasta} 已成功生成!")
这样你的整个流程就变成:读取原始数据 → 筛选目标肽段 → 去重 → 同时导出XLSX和FASTA,一步到位!
验证FASTA格式
生成后的FASTA文件内容应该符合标准格式,示例如下:
>P12345 AVGNEK >Q67890 LVPFTY
如果遇到列名不匹配的问题(比如你的XLSX里列名和代码里的不一致),只需要修改代码中的列名,和你的实际XLSX列名对应上就行!




