Running a Python Code Object using the Rhino FCP UI
Navigate to the Code Page
Use the left-hand navigation menu to click the Code (formerly Models) menu item
Run Your Code Object
Run your model by pressing the Run button in the specific row of the Code & Version your would like to run
Enter your Code Run Details
Fill in the following fields within the new Code Run configuration window (these steps are the same for the Python Snippet, Standalone File, and Upload File(s) options):
- Input Dataset(s): One or more Datasets to be used as input to your Code Run. If multiple Datasets are selected, each will be run separately. If a Dataset happens to be a collaborator's Dataset, the code will be run on that collaborator's Rhino Client. In other words, the data never moves outside your collaborator's Rhino Client
- Output Dataset Name Suffix: A suffix that is appended onto the name of each input Dataset to define the name of the output Dataset that will be created during your Code Run
- Timeout in Seconds: The number of seconds that must elapse before a Code Run is automatically halted. This is to avoid zombie tasks that run perpetually within a Rhino client.
-
Run Parameters (Optional): Here you can paste a JSON object that defines additional parameters to be provided to your Code Run. This can be used for specifying hyper-parameters for model validation or any parameter provided to the code. Run parameters are made available to the container code in a file located at
/input/run_params.json
When you have completed adding all your Code Run details, click the Run button to run your code.
Running a Python Code Object using the Rhino SDK
Prerequisites
Before starting this process, you should have already:
- Created a Project using the Rhino SDK or UI
- Created 1 or more Datasets using the Rhino SDK or UI
- Created a Code Object using the Rhino SDK or UI
Import your Python Dependencies
import rhino_health as rh from rhino_health.lib.endpoints.code.code_object_dataclass import ( CodeObject, CodeObjectRunInput ) import getpass
Remember to change all lines with CHANGE_ME comments above them in all the blocks below!
Log into the Rhino SDK using your FCP Credentials
Your username will be the email address you log into the Rhino FCP platform with.
print("Logging In") # CHANGE_ME: MY_USERNAME my_username = "MY_USERNAME" session = rh.login(username=my_username, password=getpass.getpass()) print("Logged In")
Get Supporting FCP Information Needed to Run Your Code
At this point, you will need the name of your Project, any Dataset's name you would like to use as input, and your previously created Code Object's name. You can also retrieve each object's UUID by following the instructions here: How do I retrieve a Project's, Collaborator's, Data Schema's, Dataset's, Code's, or Code Run's' UUID?
# CHANGE_ME: YOUR_FCP_PROJECT_NAME project = session.project.get_project_by_name('YOUR_FCP_PROJECT_NAME') # CHANGE_ME: DATASET_NAME_1 & DATASET_NAME_2 & Possibly Version Number too dataset1 = session.dataset.get_dataset_by_name("DATASET_NAME_1", project_uid=project.uid, version=1) dataset2 = session.dataset.get_dataset_by_name("DATASET_NAME_2", project_uid=project.uid, version=1) # Repeat the above for as many Datasets you would like to run as input to your Code # CHANGE_ME: CODE_OBJECT_NAME & Possibly Version Number too code_object = session.code.get_code_object_by_name("CODE_OBJECT_NAME:, project_uid=project.uid, version=1)
Run your Code
To run your Code you will need to supply the Code Object with the input Datasets you would like to run the Code over and an output Dataset names suffix. The suffix will be appended to each input Dataset name so you can view the results of the Code Run once the output has been re-imported into the system as a Dataset.
code_object_params = CodeObjectRunInput( code_object_uid = code_object.uid, # CHANGE_ME: Add/Delete Dataset variables based on how many you want as input input_cohort_uids = [dataset1.uid, dataset2.uid], # CHANGE_ME: OUTPUT_SUFFIX output_dataset_names_suffix = "OUTPUT_SUFFIX", run_params: {}, # Optional - The run params code you want to run on the Datasets timeout_seconds: 600, # Optional - The time before a timeout is declared for the run sync: False # Optional - If True wait for run to end if False let it run in the background ) code_run = session.code.run_code_object(code_object_params) run_result = code_run.wait_for_completion() print("Finished running code") print(f"Result status is '{run_result.status.value}', errors={run_result.result_info.get('errors') if run_result.result_info else None}")
If you have received an error or run into any issues throughout the process, please check out our community forums, or reach out to support@rhinohealth.com for more assistance.