def modeltransform_start()

in src/graph_notebook/magics/ml.py [0:0]


def modeltransform_start(args: argparse.Namespace, client: Client, params):
    """
    Starts a new modeltransform job. If Params is not empty, we will attempt to parse it into JSON
    and use it as the command payload. Otherwise we will check args for the required parameters:
    """

    if params is None or params == '' or params == {}:
        data = {
            'id': args.job_id
        }
        if args.base_processing_instance_type:
            data['baseProcessingInstanceType'] = args.base_processing_instance_type
        if args.base_processing_instance_volume_size_in_gb:
            data['baseProcessingInstanceVolumeSizeInGB'] = args.base_processing_instance_volume_size_in_gb
        data = add_security_params(args, data)
        s3_output_uri = args.s3_output_uri
        data_processing_job_id = args.data_processing_job_id
        model_training_job_id = args.model_training_job_id
        training_job_name = args.training_job_name
    else:
        if type(params) is dict:
            data = params
        else:
            try:
                data = json.loads(params)
            except ValueError:
                print("Error: Unable to load modeltransform parameters. Please check that they are defined in JSON "
                      "format.")
        if 'modeltransform' in data:
            data = data['modeltransform']
        if 'modelTransformOutputS3Location' in data:
            s3_output_uri = data['modelTransformOutputS3Location']
        else:
            s3_output_uri = args.s3_output_uri
        has_dataprocessing_id = False
        has_training_id = False
        has_training_name = False
        try:
            if 'dataProcessingJobId' in data:
                data_processing_job_id = data['dataProcessingJobId']
            else:
                data_processing_job_id = args.data_processing_job_id
            has_dataprocessing_id = True
        except AttributeError:
            pass
        try:
            if 'mlModelTrainingJobId' in data:
                model_training_job_id = data['mlModelTrainingJobId']
            else:
                model_training_job_id = args.model_training_job_id
            has_training_id = True
        except AttributeError:
            pass
        try:
            if 'trainingJobName' in data:
                training_job_name = data['trainingJobName']
            else:
                training_job_name = args.training_job_name
            has_training_name = True
        except AttributeError:
            pass
        if not (has_dataprocessing_id and has_training_id) and not has_training_name:
            print("You are required to define either a) dataProcessingJobId AND mlModelTrainingJobId or "
                  "b) trainingJobName as arguments when creating a transform job.")

    res: Response = client.modeltransform_create(s3_output_uri, data_processing_job_id,
                                                 model_training_job_id, training_job_name, **data)
    res.raise_for_status()
    return res.json()