Python包与Clara平台服务器API交互
claraclient的Python项目详细描述
Clara部署Python客户端
一个直观的python3软件包,用于使用NVIDIA Clara Deploy开发应用程序。利用nvidia_clara包中的客户机来管理作业、管道、有效负载和模型。每个客户端都有一组关联的对象,这些对象在单独的“类型”模块中定义(也可以在nvidia_clara中找到)。看看下面的例子,了解更多关于每个客户机的入门知识!在
有关Clara Deploy
客户端先决条件
- Python 3.6或更高版本
- Clara部署0.7.0或更高版本
所需Pypi包
入门
组件安装
可从Pypi获得
$ python3 -m pip install claraclient
作业客户端示例
^{pr2}$管道客户端示例
>>>frompathlibimportPath>>>fromnvidia_clara.pipelines_clientimportPipelinesClient>>>importnvidia_clara.pipeline_typesaspipeline_types# Client Creation with IP and Port of running instance of Clara>>>clara_ip_address="10.0.0.1">>>clara_port="30031">>>pipeline_client=PipelinesClient(target=clara_ip_address,port=clara_port)# Create list of pipeline_types.PipelineDefinition with local path to pipeline .yaml>>>file_path="./liver-tumor-pipeline.yaml">>>definitions=[pipeline_types.PipelineDefinition(name=file_path,content=Path(file_path).read_text())]# Create Pipeline with definition list created>>>pipeline_id=pipeline_client.create_pipeline(definition=definitions)<pipeline_types.PipelineIdobjectat0x05369B78>>>>pipeline_id.value'3fd032fcb1a441a1936654b58b1df43b'# Get List of Created Pipelines PipelinesClient.list_pipelines()>>>pipelines=[(pipe_info.pipeline_id.value,pipe_info.name)forpipe_infoinpipeline_client.list_pipelines()][('3fd032fcb1a441a1936654b58b1df43b','liver-tumor-pipeline'),('a4ea69a01a434ad09d05d2e6bf362e70','dicom-io-example'),('e62b8d0207aa4d20b1e4aedd629902c7','dicom-io-example')]# Get Details of Pipeline with PipelinesClient.pipeline_details()>>>pipeline_details=pipeline_client.pipeline_details(pipeline_id=pipeline_id)<pipeline_types.PipelineDetailsobjectat0x05CB6F88># Remove Pipeline>>>pipeline_client.remove_pipeline(pipeline_id=pipeline_id)
有效载荷客户端示例
>>>frompayloads_clientimportPayloadsClient>>>importnvidia_clara.payload_typesaspayload_types# Client Creation with IP and Port of running instance of Clara>>>clara_ip_address="10.0.0.1">>>clara_port="30031">>>payload_client=PayloadsClient(target=clara_ip_address,port=clara_port)# Create static Payload>>>payload_details=payload_client.create_payload()<payload_types.PayloadDetailsobjectat0x05F2CF28>>>>payload_details.payload_id.value'a27b8ab967f04582855b7cc4a702e6d3'# Delete Payload>>>payload_client.delete_payload(payload_id=payload_details.payload_id)# Create BinaryIO stream object with write permissions and download from payload identifier: example_payload_identifier>>>withopen('output.dcm','wb')aswb:...payload_client.download_from(payload_id=payload_types.PayloadId(example_payload_identifier),...blob_name='./input/I114.dcm',...dest_obj=wb)# Uploading BinaryIO stream to a new blob# Create BinaryIO stream with read permissions (for sake of example: reading previous output stream)>>>withopen('output.dcm','rb')asrb:...payload_client.upload(payload_id=payload_types.PayloadId(example_payload_identifier),...blob_name='./test/new_blob.dcm',file_object=rb)# Get Details (including List of Files) of a Payload>>>get_details=payload_client.get_details(payload_id=payload_types.PayloadId(example_payload_identifier))<payload_types.PayloadDetailsobjectat0x0573DF28>>>>file_details=get_details.file_details[<clara_client.payload_types.PayloadFileDetailsobjectat0x05AFFF88>,<clara_client.payload_types.PayloadFileDetailsobjectat0x05AF1FE8>,...]>>>file_details[0].mode0>>>file_details[0].name'/input/I101.dcm'>>>file_details[0].size525414
脾脏分割组合示例-创建管道/作业和上载/下载有效负载
>>>fromnvidia_clara.jobs_clientimportJobsClient>>>fromnvidia_clara.pipelines_clientimportPipelinesClient>>>fromnvidia_clara.payloads_clientimportPayloadsClient>>>importnvidia_clara.pipeline_typesaspipeline_types>>>importos>>>frompathlibimportPath# Clients creation>>>clara_ip_address="10.0.0.1">>>clara_port="30031">>>jobs_client=JobsClient(target=clara_ip_address,port=clara_port)>>>payloads_client=PayloadsClient(target=clara_ip_address,port=clara_port)>>>pipelines_client=PipelinesClient(target=clara_ip_address,port=clara_port)# Create list of pipeline_types.PipelineDefinition with local path to pipeline .yaml>>>file_path="./spleen_pipeline.yaml">>>definitions=[pipeline_types.PipelineDefinition(name=file_path,content=Path(file_path).read_text())]# Create Pipeline with definition list created>>>pipeline_id=pipelines_client.create_pipeline(definition=definitions)# Create Job with newly created Pipeline>>>job_info=jobs_client.create_job(job_name="spleenjob",pipeline_id=pipeline_types.PipelineId(pipeline_id.value))>>>job_id=job_info.job_id>>>payload_id=job_info.payload_id# Local path to directory of files to upload to the job's payload on the Server>>>input_path="./app_spleen-input_v1/dcm"# Go through files in directory and upload to the job using the payload identifier>>>forfileinos.listdir(input_path):...file_path=input_path+"/"+str(file)...withopen(file_path,'rb')asfp:...payloads_client.upload(payload_id=payload_id,blob_name=file,file_object=fp)# Get a List of the jobs>>>job_list=jobs_client.list_jobs()# Start Job>>>job_token=jobs_client.start_job(job_id=job_id)# Loop until job completes>>>job_status=jobs_client.get_status(job_id=job_id)>>>whilejob_status.job_state!=3:...job_status=jobs_client.get_status(job_id=job_id)# Get Payload Details - Used to get list of payload files>>>payload_details=payloads_client.get_details(payload_id=payload_id)# Download files from payload if pertaining to output payload directory (ex. "/operators)>>>forfileinpayload_details.file_details:......# Get file path on Server (ex. /operators/dicom-reader/example_file.raw")...file_name=file.name......# Split file path name (ex. ['','operators','dicom-reader','example_file.raw'])...name=file_name.split('/')......# Check if file pertains to output directory (ex. "/operators")...ifname[1]=='operators':......# Download file to a local results directory to a file with same name on server (ex. example_file.raw)...withopen("./results/"+name[-1],'wb+')aswb:...payloads_client.download_from(payload_id=payload_id,blob_name="."+file_name,dest_obj=wb)# Gets list of operator logs from job>>>jobs_logs=jobs_client.job_logs(job_id=job_id,operator_name="dicom-reader")
运行Pytests
$ pip3 install grpcio-testing
$ pip3 install pytest
$ export PYTHONPATH="${PYTHONPATH}:<INSERT PATH TO /clara-platform-python-client>"
$ pytest <INSERT PATH TO /clara-platform-python-client>
- 项目
标签: