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

如何用PCcli命令批量生成数百条多肽的PDB坐标文件?

批量生成多肽PDB文件的问题与解决方法

问题描述

我使用PeptideConstructor工具的PCcli命令可以单条生成多肽的.pdb文件,单条命令用法如下:

pip install PeptideConstructor
PCcli -s AaDdKSQym -o output.pdb

现在我有一个存储在PeptideSequences.csv文件中的100条多肽序列列表,序列位于Sequences列。我用pandas读取了数据:

import pandas as pd
df = pd.read_csv("PeptideSequences.csv")

尝试用循环批量生成对应PDB文件时,以下代码报语法错误:

for i in range(100):
    PCcli -s str(df.loc[i,'Sequences']) -o str(df.loc[i,'Sequences']).pdb

问题根源

Python无法直接识别代码中的PCcli命令,会将其视为未定义的变量,这就是语法错误的原因。要在Python中执行系统命令,必须借助subprocess模块。

解决方案

方法1:用subprocess调用PCcli命令

通过Python的subprocess模块执行系统命令,是最直接的适配方案:

import pandas as pd
import subprocess

df = pd.read_csv("PeptideSequences.csv")

# 遍历所有序列
for seq in df['Sequences']:
    # 跳过空序列或空白序列,避免报错
    if pd.notna(seq) and seq.strip():
        clean_seq = seq.strip()
        # 构造命令参数列表(推荐用列表形式,避免字符串拼接的安全问题)
        cmd = [
            "PCcli",
            "-s", clean_seq,
            "-o", f"{clean_seq}.pdb"
        ]
        # 执行命令,check=True会在命令出错时抛出异常
        subprocess.run(cmd, check=True)

方法2:直接使用PeptideConstructor的Python API(更高效)

该工具本身提供了Python接口,无需调用命令行,批量处理速度更快、稳定性更高:

import pandas as pd
from PeptideConstructor import PeptideBuilder

df = pd.read_csv("PeptideSequences.csv")

for seq in df['Sequences']:
    if pd.notna(seq) and seq.strip():
        clean_seq = seq.strip()
        # 初始化多肽结构
        peptide = PeptideBuilder.initialize_residue(clean_seq[0])
        # 逐个添加氨基酸残基
        for res in clean_seq[1:]:
            PeptideBuilder.add_residue(peptide, res)
        # 保存为PDB文件
        PeptideBuilder.save_pdb(peptide, f"{clean_seq}.pdb")

优化方案:避免重复序列覆盖文件

如果CSV中存在重复序列,直接用序列名作为文件名会覆盖已有文件,可以给每条序列添加编号:

import pandas as pd
import subprocess

df = pd.read_csv("PeptideSequences.csv")

# enumerate给序列加序号,start=1让编号从1开始
for idx, seq in enumerate(df['Sequences'], start=1):
    if pd.notna(seq) and seq.strip():
        clean_seq = seq.strip()
        output_filename = f"peptide_{idx}_{clean_seq}.pdb"
        cmd = ["PCcli", "-s", clean_seq, "-o", output_filename]
        subprocess.run(cmd, check=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 11:42:45