提取FASTA序列特征并保存到CSV文件
from Bio import SeqIO
import pandas as pd
def extract_features(seq_record):
features = {}
# 提取GC含量特征
gc_content = (seq_record.seq.count('G') + seq_record.seq.count('C')) / len(seq_record.seq)
features['gc_content'] = gc_content
# 提取二核苷酸频率特征
dinucleotide_freq = {}
for i in range((len(seq_record.seq))-1):
dinucleotide = seq_record.seq[i:i+2]
if dinucleotide in dinucleotide_freq:
dinucleotide_freq[dinucleotide] += 1
else:
dinucleotide_freq[dinucleotide] = 1
features['dinucleotide_freq'] = dinucleotide_freq
# 提取反向互补序列特征
reverse_complement = seq_record.seq.reverse_complement()
features['reverse_complement'] = str(reverse_complement)
# 提取氨基酸序列特征
protein_seq = seq_record.seq.translate()
features['protein_seq'] = str(protein_seq)
return features
# 读取FASTA文件并提取特征
df = pd.DataFrame()
for seq_record in SeqIO.parse('CP015849.fasta', 'fasta'):
features = extract_features(seq_record)
features['id'] = seq_record.id
df = df.append(features, ignore_index=True)
# 将数据框输出到文件
df.to_csv('features.csv', index=False)
该代码使用Biopython库从FASTA文件中提取GC含量、二核苷酸频率、反向互补序列和氨基酸序列等特征,并将结果保存到CSV文件。
代码解释:
- 导入必要的库:
Bio.SeqIO用于读取FASTA文件,pandas用于创建和操作数据框。 - 定义一个名为
extract_features的函数,该函数接受一个SeqRecord对象作为输入,并返回一个字典,其中包含提取的特征。 - 在
extract_features函数中,计算GC含量、二核苷酸频率、反向互补序列和氨基酸序列。 - 使用
SeqIO.parse函数读取FASTA文件,并使用一个循环迭代每个SeqRecord对象。 - 对于每个
SeqRecord对象,调用extract_features函数提取特征,并将特征添加到一个名为df的数据框中。 - 最后,使用
df.to_csv函数将数据框保存到一个名为features.csv的CSV文件中。
使用方法:
- 将FASTA文件命名为
CP015849.fasta并将其放在与代码相同的目录中。 - 运行代码。
- 代码将创建一个名为
features.csv的CSV文件,其中包含提取的特征。
示例:
假设CP015849.fasta文件包含以下序列:
>seq1
ATGCATGCATGC
>seq2
CGATCGATCGAT
运行代码后,features.csv文件将包含以下数据:
| id | gc_content | dinucleotide_freq | reverse_complement | protein_seq | |---|---|---|---|---| | seq1 | 0.5 | {'AT': 1, 'TG': 2, 'GC': 2, 'CA': 1, 'AT': 1, 'GC': 1} | GCATGCATGCAT | MHMHMHM | | seq2 | 0.6666666666666666 | {'CG': 3, 'GA': 3, 'TC': 3, 'CG': 3, 'AT': 3} | TAGCTAGCTAG | RDADRDAD |
注意事项:
- 代码中的
'CP015849.fasta'应替换为实际的FASTA文件名。 - 代码中的
'features.csv'应替换为要保存的CSV文件名。 - 代码假设FASTA文件只包含一个序列,如果包含多个序列,则需要修改代码以处理所有序列。
其他功能:
Biopython库提供许多其他功能,用于处理生物序列,例如:
- 解析其他序列格式,例如GenBank和EMBL。
- 计算序列的相似度和差异。
- 进行序列比对。
- 执行其他生物信息学分析。
有关Biopython的更多信息,请访问Biopython官方网站。
原文地址: https://www.cveoy.top/t/topic/lNlV 著作权归作者所有。请勿转载和采集!