一键导入
molclaw-equiscore-docking
End-to-end docking-score ranking using EquiScore for candidate molecules against a target protein.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
End-to-end docking-score ranking using EquiScore for candidate molecules against a target protein.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Predict the ADMET (absorption, distribution, metabolism, excretion, and toxicity) properties of the input molecules.
Predict binding affinity between target protein sequence and small molecule SMILES using Boltz-2.
Predict protein structures with Chai-1 from sequence or FASTA input and return model scoring summaries.
Chroma toolkit skill covering chroma_monomer for single-chain generation, chroma_complex for multi-chain assembly generation, and chroma_symmetry for symmetry-constrained protein design.
Retrieve SMILES strings from PubChem database using compound names.
Generate new molecules de novo.
| name | molclaw-equiscore-docking |
| description | End-to-end docking-score ranking using EquiScore for candidate molecules against a target protein. |
| license | MIT license |
| metadata | {"skill-author":"PJLab"} |
Note:
molclaw-file-transfer before execution.molclaw-pdbfixer before execution.molclaw-scp-server to complete tool invocation.step 1. Retrieve target protein structure (skip if user already provides PDB).
molclaw-protein-structure-retrieve.step 2. Optional chain extraction (only if specific chains are required).
response = await client.session.call_tool(
"extract_and_save_chains",
arguments={"pdb_file_path": pdb_path, "chain_ids": chain_ids}
)
result = client.parse_result(response)
pdb_path = result["out_file"]
step 3. Fix receptor structure with PDBFixer.
response = await client.session.call_tool(
"fix_pdb",
arguments={
"input_path": pdb_path,
"add_hydrogens": True,
"ph": 7.0,
"remove_heterogens": True,
"remove_water": True,
"replace_nonstandard": True
}
)
result = client.parse_result(response)
fixed_pdb_path = result["output_file"]
step 4. Drug-likeness filtering.
QED >= 0.2 and lipinski_rule_of_5_violations <= 2.result["metrics"]; do not use manually copied values.len(metrics) == len(candidate_smiles_list) before filtering.response = await client.session.call_tool(
"calculate_mol_drug_chemistry",
arguments={"smiles_list": candidate_smiles_list}
)
result = client.parse_result(response)
metrics = result["metrics"]
filtered_smiles = [
m["smiles"] for m in metrics
if m["qed"] >= 0.2 and m["lipinski_rule_of_5_violations"] <= 2
]
step 5. Build EquiScore docking input.
Important:
equiscore_pocket.Two valid modes:
Mode A: user already provides docking_result_sdf_path -> use directly.
Mode B: only SMILES provided -> first generate docking poses using the molecule_docking_quickvina_fullprocess tool (which accepts PDB + SMILES directly and handles all format conversions internally), then convert the output docking pose file to SDF and set docking_result_sdf_path to the resulting docked file before continuing to step6. This ensures receptor-relative poses.
When converting formats, use this tool:
response = await client.session.call_tool(
"convert_smiles_to_format",
arguments={"inputs": filtered_smiles, "target_format": "sdf"}
)
result = client.parse_result(response)
convert_results = result["convert_results"]
Tool contract:
convert_smiles_to_format(inputs: List[str], target_format: str)
Args:
inputs: list of SMILES strings or .smi file paths
target_format: sdf/mol/mol2/pdb/pdbqt/xyz/cif/inchi
Return:
status, msg, convert_results[{input, output_file}]
step 6. Run EquiScore pocket extraction first.
molclaw-equiscore-tool -> equiscore_pocket.list_tools + inputSchema) if uncertain.response = await client.session.call_tool(
"equiscore_pocket",
arguments={
"docking_result": docking_result_sdf_path,
"receptor_pdb": fixed_pdb_path,
"pocket_cutoff": None,
"dry_run": False
}
)
pocket_res = client.parse_result(response)
pocket_dir = pocket_res["pocket_dir"]
If split_sdf_count == 0 or pocket_item_count == 0, fix docking input first and rerun this step.
step 7. Run EquiScore screening.
molclaw-equiscore-tool -> equiscore_screen.response = await client.session.call_tool(
"equiscore_screen",
arguments={
"pocket_dir": pocket_dir,
"ngpu": 1,
"batch_size": 128,
"num_workers": 8,
"multi_pose": False,
"pose_num": 1,
"debug": False,
"dry_run": False
}
)
screen_res = client.parse_result(response)
predictions_path = screen_res["predictions_path"]
score_field = screen_res.get("score_field")
step 8. Rank and return.
predictions_path.molclaw-file-transfer (server_file_to_base64) to fetch CSV and parse locally.ligand_to_smiles_map; do not assume CSV always has a smiles column.