ワンクリックで
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.