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爬虫获取外部网站搜索结果   java Bluestack未连接到eclipse   java如何从ConstraintViolationException Hibernamte获取数据库字段名   HttpResponse HttpResponse=httpClient引发java运行时错误。执行(httpPost);   Jama中矩阵的java点积和叉积   java有什么方法可以唯一地识别可扩展设备吗?   java我需要用*来写我的名字,但我不断遇到一个错误,我对编码很陌生   java变量是在内部类中访问的。需要被宣布为最终决定。但我不想宣布最终结果   java如何缩短base64图像字符串,Android?   JavaSpringMVC:计划方法不自动触发   图形学习Java 2D API的好资源是什么?   如何在java中对方法进行排队   java JavaFX多行   java Selenium无法在[链接]上找到基于CSS元素的密码字段元素http://www.cartasi.it/gtwpages/index.jsp   Java中的equals()和hashCode()契约   软删除情况下的java Hibernate二级缓存   java为什么这段代码要两次调用这些方法?