Tools · Computational Biology
SurfDock
On this page
Prices, workflows, and method papersOpen in the app
Run it from the API
Submit with Submit a job and the job_type below. Price it first with Estimate job reservation cost: submitting reserves that amount from your wallet, and the charge settles at the actual runtime.
SurfDock surfdock
- Job type
surfdock- Hardware
t4l4a10(default)l40sa100-40gba100-80gbh100h200b200- Typical runtime
- 30 min on Nvidia A10
Payload
| Field | Type | Description |
|---|---|---|
pdb_id | string | RCSB PDB id when not uploading protein. Limits: |
protein | file_object | Uploaded protein structure. |
protein.name | string | Limits: |
protein.filename | string | Limits: |
protein.content_b64 | string | Limits: |
protein.content | any | |
protein.bytes | any | |
protein_format | string | Default: |
protein_download_format | string | Default: |
reference_ligand | file_object | 3D ligand bound in the target pocket (defines binding site). |
reference_ligand.name | string | Limits: |
reference_ligand.filename | string | Limits: |
reference_ligand.content_b64 | string | Limits: |
reference_ligand.content | any | |
reference_ligand.bytes | any | |
reference_ligand_format | string | Default: |
ligand | file_object | Ligand structure file to dock (SDF). |
ligand.name | string | Limits: |
ligand.filename | string | Limits: |
ligand.content_b64 | string | Limits: |
ligand.content | any | |
ligand.bytes | any | |
ligand_smiles | string | Ligand SMILES when not uploading a ligand file. Limits: |
ligand_format | string | Default: |
num_poses | integer | Number of docked poses to generate. Default: |
num_rescored_poses | integer | Number of top poses to energy-minimize and rescore with the SurfDock screen model. Default: |
surfdock_options | object | Optional passthrough bag for additional SurfDock CLI/flags. |
File fields take {"name": "x.pdb", "content_b64": "…"} or a stored artifact, {"$artifact": {"id": "art-…", "port": "…"}}. Files are up to 25 MiB each.
Example
from cognichem_client import CogniChem
client = CogniChem.from_env() # reads COGNICHEM_API_KEY
payload = {
"protein": {
"name": "protein.pdb",
"content_b64": "<file contents, base64>",
},
"protein_format": "pdb",
"reference_ligand": {
"name": "reference_ligand.sdf",
"content_b64": "<file contents, base64>",
},
"reference_ligand_format": "sdf",
"ligand_smiles": "CCO",
"ligand_format": "smiles",
"num_poses": 1,
"num_rescored_poses": 1,
}
estimate = client.jobs.estimate(job_type="surfdock", payload=payload, resource="a10")
print(f"Reserves ${estimate.cost:.2f}")
job = client.jobs.submit(
job_name="my-surfdock-run",
job_type="surfdock",
payload=payload,
resource="a10",
)
status = client.jobs.wait(job.process_id)
if status.status == "completed":
client.jobs.result(job.process_id, save_path=".")curl -X POST "https://api.cognichem.com/api/v1/jobs/submit" \
-H "X-Api-Key: $COGNICHEM_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"job_name": "my-surfdock-run",
"job_type": "surfdock",
"payload": {
"protein": {
"name": "protein.pdb",
"content_b64": "<file contents, base64>"
},
"protein_format": "pdb",
"reference_ligand": {
"name": "reference_ligand.sdf",
"content_b64": "<file contents, base64>"
},
"reference_ligand_format": "sdf",
"ligand_smiles": "CCO",
"ligand_format": "smiles",
"num_poses": 1,
"num_rescored_poses": 1
},
"resource": "a10"
}'{
"protein": {
"name": "protein.pdb",
"content_b64": "<file contents, base64>"
},
"protein_format": "pdb",
"reference_ligand": {
"name": "reference_ligand.sdf",
"content_b64": "<file contents, base64>"
},
"reference_ligand_format": "sdf",
"ligand_smiles": "CCO",
"ligand_format": "smiles",
"num_poses": 1,
"num_rescored_poses": 1
}Sample data from the job catalog; long values are shortened here. Each job_name must be unique among your jobs.
Workflow inputs
- Molecules · optionalSDF
- Protein structurePDB, CIF
- MoleculesSDF
Workflow outputs
- ArchiveZIP
- Docked posesSDF