Biopython和访问存储在计算机上的fasta文件
写一个Python程序,里面要有一个函数,功能如下:
- 接收一个文件名作为输入,这个文件里存储的是蛋白质序列,格式是FastA。
- 从这个文件中读取序列,使用Biopython这个库里的合适方法,把这些序列存到一个列表里。
- 对每个蛋白质序列,使用re模块里的方法,提取出所有不重叠的匹配项,匹配的模式如下。所有不重叠的匹配结果要和对应的蛋白质ID一起写入一个结果文件。
- 要查找的模式有:
- W后面跟着任意一个氨基酸,再后面跟着P
- 连续两个S,后面跟着D或L
- Q后面跟着一个或两个A
请下载一个蛋白质序列的fasta文件,因为我不能上传我的文件。
在查找模式时,我无法调用我的fasta文件。
1 个回答
0
这是一个包含指定功能的Python程序:
这个find_patterns函数接收一个FASTA文件名和一个结果文件名作为参数,然后它会逐个查看FASTA文件中的每个序列,利用正则表达式来搜索指定的模式,并把找到的结果写入结果文件中。
import re
from Bio import SeqIO
def find_patterns(fasta_file, results_file):
"""
Finds specified patterns in protein sequences from a FASTA file and prints results to a file.
Args:
fasta_file (str): Name of the FASTA file containing protein sequences.
results_file (str): Name of the file to write the results to.
"""
patterns = [
r"W.P", # W, any amino acid, P
r"SS[DL]", # Two S, D or L
r"QAA?" # Q, one or two A
]
with open(results_file, "w") as results:
for record in SeqIO.parse(fasta_file, "fasta"):
sequence = str(record.seq)
protein_id = record.id
for pattern in patterns:
matches = re.finditer(pattern, sequence)
for match in matches:
results.write(f"{protein_id}\t{match.group()}\t{match.start()}\t{match.end()}\n")
# Example usage (replace with your actual file paths)
fasta_file = "protein_sequences.fasta" # Replace with your FASTA file name
results_file = "pattern_matches.txt" # Replace with your desired results file name
find_patterns(fasta_file, results_file)
假设蛋白质序列如下:
>FHHBHBFD_00002 hypothetical protein
MAITGRAAFIAALGSVPIGIWDPSWTGILAVNAPLAAACACDFALAAPVRRLGLTRSGDT
SARLGETADVTLTVTNPSGRPLRARLRDAWPPSSWQPGTETAASRHSLTVPAGERRRVTT
RLRPTRRGDRQADRVTIRSYGPLGLFTRQGTHRVPWTVRVLPPFTSRKHLPSKLSRLREL
DGRTSVLTRGEGTEFDSLREYVPGDDTRSIDWRATARQSTVAVRTWRPERDRHILLVLDT
GRTSAGRVGDAPRLDASMDAALLLAALASRAGDRVDLLAYDRRVRALLQGRTAGDVLPSL
VNAMATLEPELVETDARGLTATALRSAPRRSLIVLFTTLDTAPIEEGLLPVLPQLTQRHT
VLVASVADPHVAKMAEARGHTDAVYEAAAAAQAQSERRRTADQLRRHGVTVVDATPDELP
PALADAYLELKATGRL
>FHHBHBFD_00003 hypothetical protein
MMDPTTDNAGQTAAPGNARAALEALRAEIAKAVVGQDAAVTGLVVALLCRGHVLLEGVPG
VAKTLLVRTLAEATELDTKRVQFTPDLMPSDVTGSLVYDARTAEFSFQPGPVFTNLLLAD
EINRTPPKTQSSLLEAMEERQVTVDGTPRPLPEPFLVAATQNPVEYEGTYPLPEAQLDRF
LLKLTVPLPTRQDEIDVLSRHAAGFDPRDLHAAGVRPVAGAADLEAARAEAARTTVSPEI
TAYVVDICRATRESPSLTLGVSPRGATALLSTSRAWAWLTGRDYVTPDDVKALALPTLRH
RVQLRPEAEMEGVTTDSVINAILAHVPVPR
输出结果将是:
FHHBHBFD_00002 WDP 20 23
FHHBHBFD_00002 WPP 89 92
FHHBHBFD_00002 WQP 94 97
FHHBHBFD_00002 WRP 225 228
FHHBHBFD_00002 QA 130 132
FHHBHBFD_00002 QA 391 393
FHHBHBFD_00003 SSL 130 133