Python包与Clara平台服务器API交互

claraclient的Python项目详细描述


LicenseClara Deploy Platform

NVIDIA

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>

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java中不同http客户端超时时间单位的重要性   java数据[i++]=data[i++]*2结果令我惊讶   java Quartz在使用spring的hibernate中执行事务时发生异常   java如何将我的对象传递给另一个类   java嵌套布局奇怪的问题   当使用javax时,有一种方法可以通过策略定义自定义订单。坚持不懈OrderBy注释?   xml Java DOM getElementByID   java使用intent将视图列表传递给另一个片段   带构造函数的Java枚举。通过构造函数参数获取值的最佳方法   java为什么不在单线程中执行此通量?   如何将JavaScript字符串传递给Nashorn引擎而不是Java字符串?   java二进制XML文件行#17:膨胀类片段时出错   java如何使用Seekbar值作为int变量?   java我想从数据存储中进行选择,但它不起作用   java如何处理幻灯片中的多分辨率图像?   java这意味着什么?类型不匹配:无法从列表<对象和可比<?>&可序列化>以列出<对象>“   java我如何让这个猜谜游戏发挥作用?   java将ZipInputStream传递给DocumentBuilder。parse()   java后添加maven依赖项,org。阿帕奇。卡塔琳娜。过滤器。当前错误消息   java有没有一种方法可以使用安卓通过按下便利键触发方法?