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文件。

代码解释:

  1. 导入必要的库:Bio.SeqIO用于读取FASTA文件,pandas用于创建和操作数据框。
  2. 定义一个名为extract_features的函数,该函数接受一个SeqRecord对象作为输入,并返回一个字典,其中包含提取的特征。
  3. extract_features函数中,计算GC含量、二核苷酸频率、反向互补序列和氨基酸序列。
  4. 使用SeqIO.parse函数读取FASTA文件,并使用一个循环迭代每个SeqRecord对象。
  5. 对于每个SeqRecord对象,调用extract_features函数提取特征,并将特征添加到一个名为df的数据框中。
  6. 最后,使用df.to_csv函数将数据框保存到一个名为features.csv的CSV文件中。

使用方法:

  1. 将FASTA文件命名为CP015849.fasta并将其放在与代码相同的目录中。
  2. 运行代码。
  3. 代码将创建一个名为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官方网站

提取FASTA序列特征并保存到CSV文件

原文地址: https://www.cveoy.top/t/topic/lNlV 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录