Biopython和访问存储在计算机上的fasta文件

-1 投票
1 回答
50 浏览
提问于 2025-04-14 16:48

写一个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

撰写回答