code: def run(ctx):
      num_tree = 3
      max_depth = 3
      if ctx.is_on_guest:
          data = csv_to_df(ctx, "../data/breast_hetero_guest.csv")
          bst = train(
              ctx, data, num_trees=num_tree, max_depth=max_depth
          )
          model_dict = bst.get_model()
          pred = predict(ctx, data, model_dict)
          print(pred.as_pd_df())
      else:
          data = csv_to_df(
              ctx, "../data/breast_hetero_host.csv", has_label=False
          )
          bst = train(
              ctx, data, num_trees=num_tree, max_depth=max_depth
          )
          model_dict = bst.get_model()
          predict(ctx, data, model_dict)
  
file_path: FATE/examples/launchers/secureboost_launcher.py
imports: import pandas
  from fate.arch import Context
  from fate.arch.dataframe import DataFrame
  from fate.arch.dataframe import PandasReader
  from fate.arch.launchers.multiprocess_launcher import launch
  from fate.ml.ensemble.algo.secureboost.hetero.guest import HeteroSecureBoostGuest
  from fate.ml.ensemble.algo.secureboost.hetero.host import HeteroSecureBoostHost
label_desc: Use image node_id 4 for calling a global function with example usage: run(ctx) without return types