File size: 1,256 Bytes
feb41b4 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | import csv
import argparse
def generate_point_mutations(fasta_file, output_csv):
with open(fasta_file, 'r') as f:
lines = f.readlines()
sequence = ''.join(line.strip() for line in lines[1:]) # 跳过标题行
# 定义氨基酸字母表
amino_acids = 'ACDEFGHIKLMNPQRSTVWY'
# 存储突变结果
mutations = []
# 生成单点突变
for i, original in enumerate(sequence):
for mutant in amino_acids:
if mutant != original:
mutation = f"{original}{i+1}{mutant}"
mutations.append((mutation, 0))
with open(output_csv, 'w', newline='') as csvfile:
csv_writer = csv.writer(csvfile)
csv_writer.writerow(['mutant', 'DMS_score'])
for mutation, score in mutations:
csv_writer.writerow([mutation, score])
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='Generate point mutations from FASTA file')
parser.add_argument('--fasta_file', type=str, required=True, help='Path to the FASTA file')
parser.add_argument('--output_csv', type=str, required=True, help='Path to the output CSV file')
args = parser.parse_args()
generate_point_mutations(args.fasta_file, args.output_csv)
|