Loading...
Loading...
Run molecular dynamics (MD) simulations via the FastFold Workflows API. Today supports the CALVADOS+OpenMM workflow (calvados_openmm_v1) from either an existing fold job (AF structure + PAE auto-resolved) or manual PDB+PAE upload, then waits for completion, fetches metrics/plots/CSV artifacts, and extracts trajectory frames as PDB files. Use when running an MD simulation with FastFold, CALVADOS + OpenMM, reading MD metrics/plots, extracting frames, or scripting submit → wait → results for an MD run.
npx skill4agent add fastfold-ai/skills md_openmm_calvadoscalvados_openmm_v1single_af_gosourceType: fold_jobworkflow_input.filesmetricsmetricsJsonresult_raw_jsonPOST /v1/workflows/openmm/<workflow_id>/extract-frameFASTFOLD_API_KEY.env~/.fastfold-cli/config.jsonapi.fastfold_cloud_key.envFASTFOLD_API_KEY.envexport FASTFOLD_API_KEY="sk-...".envFASTFOLD_API_KEY.env.envreferences/.env.examplefastfold setupfastfold config set api.fastfold_cloud_key <key>calvados_openmm_v1scripts/python scripts/<name>.py ...FASTFOLD_API_KEY.envfindcduv tool dirpython scripts/submit_from_fold_job.py <fold_job_id> [--name "OpenMM via fold"] [--simulation-name my_run] [--preset single_af_go] [--sim-length-ns 0.2] [--step-size-ns 0.01] [--temperature 293.15] [--ionic 0.15] [--ph 7.5] [--box-length 20] [--force-field calvados3] [--charged-n-terminal-amine|--no-charged-n-terminal-amine] [--charged-c-terminal-carboxyl|--no-charged-c-terminal-carboxyl] [--charged-histidine|--no-charged-histidine] [--public]python scripts/fetch_uniprot.py <UNIPROT_ID> --out-dir <dir> [--json]AF-<ID>.pdbAF-<ID>.json--out-dirpython scripts/submit_manual_af_pae.pypython scripts/submit_manual_af_pae.py --pdb path/to/structure.pdb --pae path/to/pae.json [--name "OpenMM manual"] [--simulation-name my_run] [--sim-length-ns 0.2] [--step-size-ns 0.01] [--temperature 293.15] [--ionic 0.15] [--ph 7.5] [--box-length 20] [--force-field calvados3] [--charged-n-terminal-amine|--no-charged-n-terminal-amine] [--charged-c-terminal-carboxyl|--no-charged-c-terminal-carboxyl] [--charged-histidine|--no-charged-histidine] [--public]/openmm/results/<workflow_id>python scripts/submit_from_workflow.py <workflow_id> [--name "OpenMM copy"] [--simulation-name my_run] [--component-name FUSRGG3] [--sim-length-ns 10] [--step-size-ns 0.01] [--temperature 293.15] [--ionic 0.15] [--ph 7.5] [--box-length 50] [--force-field calvados3] [--topology center] [--box-eq|--no-box-eq] [--pressure 0.1,0,0] [--periodic|--no-periodic] [--charged-n-terminal-amine|--no-charged-n-terminal-amine] [--charged-c-terminal-carboxyl|--no-charged-c-terminal-carboxyl] [--charged-histidine|--no-charged-histidine] [--json]input_payloadpython scripts/submit_from_yml_refs.py --config-yaml ./config.yaml --components-yaml ./components.yaml --residues-csv ./residues.csv --fasta ./input.fasta [--simulation-name my_run] [--component-name FUSRGG3] [--topology center] [--box-length 50] [--json]python scripts/submit_from_yml_refs.py --config-yaml ./config.yaml --components-yaml ./components.yaml --residues-csv ./residues.csv --pdb ./structure.pdb --pae ./pae.json [...]python scripts/wait_for_workflow.py <workflow_id> [--timeout 1800] [--metrics-timeout 900] [--poll-interval 5] [--json] [--public]python scripts/fetch_results.py <workflow_id> [--json] [--public]python scripts/extract_frame.py <workflow_id> --time-ns 5.0 [--selection "protein or resname LIG"] [--dt-in-ps 0] [--download ./frame.pdb] [--json]sim_length_nspython scripts/toggle_public.py <workflow_id> --public--privatehttps://cloud.fastfold.ai/openmm/results/<workflow_id>?shared=true--force-fieldworkflow_input.residue_profile--profileforce_field_familycalvadosresidue_profilecalvados3c2rnarequestswhich pythonuv tool dirpython scripts/<name>.py ...pip listwhich pythonuv tool dirfindlocatelsrequestsurllib/v1/workflowspython scripts/submit_from_yml_refs.py--public--publicpython scripts/submit_from_fold_job.pypython scripts/submit_manual_af_pae.py?shared=trueFASTFOLD_API_KEY.env/tmppython scripts/wait_for_workflow.py--timeout--metrics-timeoutpython scripts/wait_for_workflow.pysubmit-from-fold-jobsubmit-manual-af-paesubmit-from-workflowworkflow_idpython scripts/wait_for_workflow.py <workflow_id> ...workflow_idworkflow_idworkflow_idfindlocatels /tmpworkflow_idPOST /v1/workflowsworkflow_name: calvados_openmm_v1workflow_inputGET /v1/workflows/status/<workflow_id>INITIALIZEDQUEUEDRUNNINGCOMPLETEDFAILEDSTOPPEDGET /v1/workflows/task-results/<workflow_id>isPublic: trueGET /v1/workflows/public/<workflow_id>input_payloadtasks[-1].result_raw_jsonmetricsmetricsJsonImportant: on successful runs,,metrics, and artifact URLs populate insidemetricsJsonof the last task. Allow a short settle window after terminal status.result_raw_json
sourceType: fold_jobGET /v1/jobs/<JOB_ID>/resultsjobRunIdjob.jobRunIdsequenceIdsequences[].idtype == "protein"{
"workflow_name": "calvados_openmm_v1",
"name": "OpenMM AF+PAE via fold job",
"workflow_input": {
"preset": "single_af_go",
"name": "af_pae_run",
"force_field_family": "calvados",
"residue_profile": "calvados3",
"temp": 293.15,
"ionic": 0.15,
"pH": 7.5,
"step_size_ns": 0.01,
"sim_length_ns": 0.2,
"box_length": 20,
"files": {},
"sourceType": "fold_job",
"sourceJobId": "<JOB_ID>",
"sourceJobRunId": "<JOB_RUN_ID>",
"sourceSequenceId": "<SEQUENCE_ID>",
"isPublic": true
}
}files.pdbfiles.paesubmit_from_fold_job.pdb.jsonPOST /v1/library/create{ "name": "...", "type": "file", "fileType": "protein" | "json", "origin": "USER_UPLOAD", "metadata": {} }201idlibraryItemIdPOST /v1/library/<item_id>/upload-filesmultipart/form-datafiles=@<path>GET /v1/library/<item_id>metadata.files[0].file_name{
"workflow_name": "calvados_openmm_v1",
"name": "OpenMM AF+PAE manual upload",
"workflow_input": {
"preset": "single_af_go",
"name": "manual_af_pae_run",
"force_field_family": "calvados",
"residue_profile": "calvados3",
"temp": 293.15,
"ionic": 0.15,
"pH": 7.5,
"step_size_ns": 0.01,
"sim_length_ns": 0.2,
"box_length": 20,
"files": {
"pdb": { "libraryItemId": "<PDB_ITEM_ID>", "fileName": "<PDB_STORED_FILE_NAME>" },
"pae": { "libraryItemId": "<PAE_ITEM_ID>", "fileName": "<PAE_STORED_FILE_NAME>" }
},
"isPublic": true
}
}submit_manual_af_pae/openmm/results/<workflow_id>input_payloadPOST /v1/workflowsworkflow_input.component_namesingle_idr_fastacomponent_name--component-namepython scripts/submit_from_workflow.py--box-eq/--no-box-eq--pressure X,Y,Z--periodic/--no-periodicworkflow_input.config.box_eqworkflow_input.config.pressureworkflow_input.component_defaults.periodic--charged-n-terminal-amine/--no-charged-n-terminal-amine--charged-c-terminal-carboxyl/--no-charged-c-terminal-carboxyl--charged-histidine/--no-charged-histidinepython scripts/submit_from_workflow.py <workflow_id> \
--sim-length-ns 10 \
--component-name FUSRGG3 \
--box-eq \
--pressure 0.1,0,0 \
--periodic \
--charged-n-terminal-amine \
--no-charged-c-terminal-carboxyl \
--no-charged-histidine \
--step-size-ns 0.01 \
--temperature 293.15 \
--ionic 0.15 \
--ph 7.5 \
--box-length 50 \
--force-field calvados3 \
--topology centerpython scripts/wait_for_workflow.py <new_workflow_id> --timeout 3700 --metrics-timeout 900 --poll-interval 5
python scripts/fetch_results.py <new_workflow_id>input_payload.filescloud.fastfold.aipython scripts/submit_manual_af_pae.pypython scripts/fetch_uniprot.pypython scripts/submit_manual_af_pae.pypython scripts/submit_from_fold_job.pyP00698/openmm/newpython scripts/fetch_uniprot.py <UNIPROT_ID> --out-dir /tmp/uniprot --jsonhttps://alphafold.ebi.ac.uk/api/prediction/<UNIPROT_ID>pdbUrlpaeDocUrlAF-<id>.pdbAF-<id>.jsonpython scripts/submit_manual_af_pae.py --pdb /tmp/uniprot/AF-<UNIPROT_ID>.pdb --pae /tmp/uniprot/AF-<UNIPROT_ID>.json ...single_af_gopython scripts/submit_from_yml_refs.pyconfig.yamlcomponents.yamlfilesworkflow_input.yml_referenceyml_referencepython scripts/submit_from_fold_job.pypython scripts/submit_manual_af_pae.pypython scripts/submit_from_workflow.pytasks[-1].result_raw_jsonartifacts{ path, sizeBytes, url? }analysis/metrics.jsonanalysis/<name>_fel.pnganalysis/<name>_fel.csvanalysis/<name>_rg.svganalysis/<name>_rg.csvmetricsrmsdrmsfradius_of_gyrationfree_energy_landscapebinding_energyprotein_ligand_distanceligand_detected: trueanalysis_nameanalysis_parametersoutput_filesmetricsJsonanalysis/metrics.jsonpython scripts/fetch_results.py <workflow_id>top.pdb.dcd/openmm/results/<workflow_id>python scripts/extract_frame.py <workflow_id> --time-ns <time_ns>--selection "protein or resname LIG"--dt-in-ps 00--download ./frame.pdb--json--time-nssim_length_nsframeIndexactualTimeNsatomCountpdbUrl[title](url)fastfoldhttps://cloud.fastfold.ai/openmm/results/<workflow_id>isPublic: truehttps://cloud.fastfold.ai/openmm/results/<workflow_id>?shared=trueTrajectory is available for this run to visualize simulation, generate animations, and use playback controls in Py2DMol.
https://cloud.fastfold.ai/py2dmol/new?from=openmm_workflow&workflow_id=<workflow_id>artifacts[].url.png.svg.csv.jsonrmsd.png: https://…wait_for_workflowfetch_resultsINITIALIZEDQUEUEDRUNNINGCOMPLETEDFAILEDSTOPPEDartifactsmetricsmetricsJsonCOMPLETED--publicsubmit_from_fold_jobsubmit_manual_af_paeworkflow_input.isPublic = truePOST /v1/workflowspython scripts/toggle_public.py <workflow_id> --public--privatePATCH /v1/workflows/<workflow_id>/public{ "isPublic": true | false }https://cloud.fastfold.ai/openmm/results/<workflow_id>isPublic: truehttps://cloud.fastfold.ai/openmm/results/<workflow_id>?shared=trueworkflow_idFAILEDSTOPPED--timeoutwait_for_workflowCOMPLETED--metrics-timeoutwait_for_workflow5xx4xx401 Unauthorized/v1/library/{item_id}/upload-filesworkflow_idworkflow_idjob_iditem_idcalvados2calvados3.env