You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python从UniProt获取蛋白序列并构建Colab自定义FASTA工具?

Google Colab批量生成重复序列FASTA工具

需求概述

输入参数示例

Name = protein_sequences
Proteins = 2xUniprot1, 3xUniprot2, 1xUniprot3
Directory = FASTA_directory

期望输出

生成名为protein_sequences.fasta的文件,内容如下:

> protein_sequences   sequenceUniprot1:sequenceUniprot1:sequenceUniprot2:sequenceUniprot2:sequenceUniprot2:sequenceUniprot3

核心问题解决:高效获取UniProt序列

目前获取UniProt蛋白序列最稳定高效的方式是使用官方REST API,无需额外安装复杂库,用Python的requests库即可实现:

  • 单条序列请求URL格式:https://rest.uniprot.org/uniprotkb/{uniprot_id}.fasta
  • 解析返回的FASTA文本,跳过以>开头的注释行,提取纯序列内容

完整Colab代码实现

# 挂载Google Drive
from google.colab import drive
drive.mount('/content/drive')

import requests
import os

# -------------------------- 自定义参数 --------------------------
file_name = "protein_sequences"  # FASTA文件名(无需加.fasta后缀)
proteins_input = "2xP01308, 3xP02768, 1xP60709"  # 格式:数量xUniProtID,多个用逗号分隔
save_dir = "FASTA_directory"  # Drive中保存文件的目录名
# ---------------------------------------------------------------

# 处理输入条目,去除空格并拆分
protein_list = [item.strip() for item in proteins_input.split(',')]

# 创建Drive保存目录(不存在则自动创建)
save_path = f"/content/drive/MyDrive/{save_dir}"
os.makedirs(save_path, exist_ok=True)

sequence_parts = []

for protein in protein_list:
    # 拆分重复次数与UniProt ID
    count_str, uniprot_id = protein.split('x')
    repeat_count = int(count_str)
    
    # 请求UniProt获取FASTA序列
    url = f"https://rest.uniprot.org/uniprotkb/{uniprot_id}.fasta"
    response = requests.get(url)
    response.raise_for_status()  # 请求失败时直接抛出异常
    
    # 提取纯序列内容
    fasta_lines = response.text.splitlines()
    raw_sequence = ''.join([line for line in fasta_lines if not line.startswith('>')])
    
    # 按指定次数重复序列,添加到片段列表
    sequence_parts.extend([raw_sequence] * repeat_count)

# 拼接所有序列片段,用冒号分隔
full_sequence = ':'.join(sequence_parts)

# 生成FASTA格式内容
fasta_content = f"> {file_name}   {full_sequence}\n"

# 保存文件到Drive
output_file_path = os.path.join(save_path, f"{file_name}.fasta")
with open(output_file_path, 'w') as f:
    f.write(fasta_content)

print(f"文件已成功保存至: {output_file_path}")

使用说明

  • 运行代码第一步会提示授权挂载Google Drive,按指引完成授权即可
  • 修改代码中「自定义参数」区块的内容为你的实际需求
  • 若需批量处理大量UniProt ID,建议在循环中添加time.sleep(0.5)延迟,避免触发API请求频率限制

内容的提问来源于stack exchange,提问作者Sofia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 15:12:58