def report(params): """Handles the 'list' operation. 'params' flags are translated into query-parameter variable names.""" summaryFields = None if params["--summary"]: summaryFields = ["_id", "original_file_name", "file_type"] dsid = params.get("--dsid", "missing_id") expectedArgs = { '--catid': 'category_id', '--parentid': 'parent_id', '--sort': 'sortby', '--limit': 'limit', '--skip': 'skip' } kwargs = translate_flags(expectedArgs, params) rsp = server.files.report(dsid, **kwargs) if rsp is None: reportApiError(server, "Failure attempting to list files") else: reportSuccess(server, None, summaryFields=summaryFields)
def report(params): """Handles the 'list' operation.""" summaryFields = None if params["--summary"]: summaryFields = ["_id", "name", "file_id"] dsid = params.get("--dsid", "missing_id") fileid = params.get("--fileid", None) expected_args = {"--ids": "ids", "--tagids": "tag_ids", "--modelid": "model_id", "--gen_type": "generate_type", "--min_conf": "min_conf", "--max_conf": "max_conf", "--limit": "limit", "--skip": "skip" } kwargs = translate_flags(expected_args, params) rsp = server.object_labels.report(dsid, fileid, **kwargs) if rsp is None: reportApiError(server, "Failure attempting to list tags") else: reportSuccess(server, None, summaryFields=summaryFields)
def delete(params): """Deletes one object labels matching the input criteria.""" dsid = params.get("--dsid", "missing_id") labelid = params.get("--label_id", None) expected_args = { "--ids": "ids", "--tagids": "tag_ids", "--fileids": "file_ids", "--modelid": "model_id", "--generate_type": "generate_type", "--min_conf": "min_conf", "--max_conf": "max_conf", "--limit": "limit", "--skip": "skip" } kwargs = translate_flags(expected_args, params) rsp = server.object_labels.delete(dsid, labelid, None, kwargs) if rsp is None: reportApiError( server, f"Failure attempting to delete label(s) from dataset '{dsid}'") else: reportSuccess(server, f"Deleted object label id(s) from dataset '{dsid}'")
def change(params): """Handles the 'change' operation for the indicated model""" model = params.get("--modelid", "missing_id") expectedArgs = {'--pgid': 'pg_id', '--prodstatus': 'production_status'} kwargs = translate_flags(expectedArgs, params) rsp = server.trained_models.update(model, **kwargs) if rsp is None: reportApiError(server, f"Failure attempting to change model id '{model}'") else: reportSuccess(server)
def update(params): """Handles the 'change' operation for modifying a dataset. Expected flags in 'params' are translated to Json Field names to identify modifications to be made """ dsid = params.get("--dsid", "missing_id") expectedArgs = {'--pgid': 'project_group_id'} kwargs = translate_flags(expectedArgs, params) rsp = server.datasets.update(dsid, **kwargs) if rsp is None: reportApiError(server, f"Failure attempting to change dataset id {dsid}") else: reportSuccess(server, f"Changed dataset id {dsid}")
def report(params): """Handles the 'list' operation. 'params' flags are translated into query-parameter variable names.""" summaryFields = None if params["--summary"]: summaryFields = ["_id", "usage", "status", "nn_arch", "name"] expectedArgs = {'--sort': 'sortby'} kwargs = translate_flags(expectedArgs, params) rsp = server.deployed_models.report(**kwargs) if rsp is None: reportApiError(server, "Failure attempting to list deployed-models") else: reportSuccess(server, None, summaryFields=summaryFields)
def deploy(params): """Handles the 'deploy' operation to deploy an inferencing endpoint""" model = params.get("--modelid", "missing_id") name = params.get("--name", None) expectedArgs = { '--accel': 'accel_type', '--userdnnid': 'userdnn_id', '--dnnscriptid': 'dnnscript_id' } kwargs = translate_flags(expectedArgs, params) rsp = server.deployed_models.create(model, name, **kwargs) if rsp is None: reportApiError(server, f"Failure attempting to get model id '{model}'") else: reportSuccess(server)
def train(params): """Handles the 'train' operation to train a model from a dataset""" dsid = params.get("--dsid", "missing_id") name = params.get("--name", None) model_type = params.get("--type", None) strat_str = params.get("--hyper", None) expectedArgs = { '--assets': 'generateassets', '--modelid': 'pretrained_model', '--subtype': 'nn_arch', '--userdnn': 'userdnn_id', '--hyper': 'strategy' } kwargs = translate_flags(expectedArgs, params) # If --hyper given, must turn it into a json object before adding to kwargs if strat_str is not None: try: strat = json.loads(strat_str) kwargs["strategy"] = strat except json.JSONDecodeError as e: print(f"ERROR: invalid json found in '--hyper' ({strat_str})", file=sys.stderr) print(train_usage, file=sys.stderr) exit(1) if model_type == "cod": kwargs["action"] = "create-cod-task" if kwargs.get("nn_arch", None) is None: kwargs["nn_arch"] = "frcnn" elif model_type == "act": kwargs["action"] = "create-act-task" else: kwargs["action"] = "create" rsp = server.dl_tasks.create(name, dsid, model_type, **kwargs) if rsp is None: reportApiError(server, f"Failure attempting to train dataset '{dsid}'") else: try: taskid = server.json()["task_id"] except: taskid = "???" reportSuccess(server, f"Started training task with id {taskid}")
def report(params): """Handles the 'list' operation. 'params' flags are translated into query-parameter variable names.""" summaryFields = None if params["--summary"]: summaryFields = ["_id", "name", "total_file_count"] expectedArgs = {'--pgid': 'pg_id', '--sort': 'sortby'} kwargs = translate_flags(expectedArgs, params) rsp = server.datasets.report(**kwargs) if rsp is None: reportApiError(server, "Failure attempting to list datasets") else: reportSuccess(server, None, summaryFields=summaryFields)
def create(params): """Handles the 'create' operation for adding an object tag to a dataset. """ dsid = params.get("--ds_id", "missing_id") expected_args = {"--name": "name"} kwargs = translate_flags(expected_args, params) rsp = server.object_tags.create(dsid, **kwargs) if rsp is None: reportApiError(server, f"Failed to create object tag in dataset {dsid}") else: tagid = rsp.get("dataset_tag_id", "???") reportSuccess( server, f"Successfully created object tag with id {tagid} in dataset {dsid}" )
def report(params): """Handles the 'list' operation.""" summaryFields = None if params["--summary"]: summaryFields = ["_id", "name", "label_count"] dsid = params.get("--ds_id", "missing_id") expectedArgs = {'--sort': 'sortby'} kwargs = translate_flags(expectedArgs, params) rsp = server.object_tags.report(dsid, **kwargs) if rsp is None: reportApiError(server, "Failure attempting to list tags") else: reportSuccess(server, None, summaryFields=summaryFields)
def create(params): """Handles the 'change' operation for modifying a dataset. Expected flags in 'params' are translated to Json Field names for creation content """ expectedArgs = {'--name': 'name'} kwargs = translate_flags(expectedArgs, params) rsp = server.datasets.create(**kwargs) if rsp is None: reportApiError(server, "Failure while creating a dataset") else: try: dsid = server.json()["dataset_id"] except: dsid = "???" reportSuccess(server, f"Successfully created dataset with id {dsid}")
def update(params): """Handles the 'change' operation for modifying an object tag. """ dsid = params.get("--ds_id", "missing_id") tagid = params.get("--tag_id", "missing_id") expected_args = {'--name': 'name'} kwargs = translate_flags(expected_args, params) kwargs["action"] = "rename" rsp = server.object_tags.action(dsid, tagid, **kwargs) if rsp is None: reportApiError( server, f"Failure attempting to change tag id '{tagid}' in dataset '{dsid}'" ) else: reportSuccess(server, f"Changed tag id '{tagid}' in dataset '{dsid}'")
def update(params): """Handles the 'change' operation for modifying an object label. """ dsid = params.get("--dsid", "missing_id") labelid = params.get("--labelid", "missing_id") expected_args = { '--tagid': 'tag_id', '--generate_type': 'generate_type', } kwargs = translate_flags(expected_args, params) file_name = params.get("--label_file") data = None if file_name is not None: try: with open(file_name) as json_file: data = json.load(json_file) except Exception as e: print( f"ERROR: failed to read json data from file '{file_name}'; {e}" ) return -1 elif "<json_string>" in params.keys( ) and params["<json_string>"] is not None: try: data = json.loads(params.get("<json_string>", "")) except Exception as e: print(f"ERROR: Failed to convert label input to json; {e}") return -1 if data is not None: kwargs.update(data) rsp = server.object_labels.update(dsid, labelid, **kwargs) if rsp is None: reportApiError( server, f"Failure attempting to change label id '{labelid}' in dataset '{dsid}'" ) else: reportSuccess(server, f"Changed label id '{labelid}' in dataset '{dsid}'")
def update(params): """Handles the 'change' operation for modifying a file. Expected flags in 'params' are translated to Json Field names to identify modifications to be made""" dsid = params.get("--dsid", "missing_id") fileid = params.get("--fileid", "missing_id") expectedArgs = {'--catid': 'target_category_id'} kwargs = translate_flags(expectedArgs, params) kwargs["action"] = "change_category" rsp = server.files.action(dsid, fileid, **kwargs) if rsp is None: reportApiError( server, f"Failure attempting to change file id '{fileid}' in dataset '{dsid}'" ) else: reportSuccess(server, f"Changed file id '{fileid}' in dataset '{dsid}'")
def infer(params): """Handles the 'infer' operation to a deployed model""" modelid = params.get("--modelid", "missing_id") filepath = params.get("--file", None) annotateFile = params.get("--annotatefile") expectedArgs = { '--minconfidence': 'confthre', '--heatmap': 'containHeatMap', '--rle': 'containrle', '--polygons': 'containPolygon', 'maxclasses': 'clsnum', 'caption': 'genCaption', 'wait': 'waitForResults' } kwargs = translate_flags(expectedArgs, params) rsp = server.deployed_models.infer(modelid, filepath, **kwargs) if rsp is None: reportApiError(server, f"Failure inferring to model id '{modelid}'") else: reportSuccess(server)