用于与pacbio pbsmrtpipe工作流引擎接口的库和工具。

pbcommand的Python项目详细描述


PBcommand高级概述
==


共同所有者:


[natechols](https://github.com/natechols)


[完整文档](http://pbcommand.readthedocs.org/en/latest/)

[![循环ci](https://circleci.com/gh/pacificbiosciences/pbcommand.svg?style=svg)(https://circleci.com/gh/pacificbiosciences/pbcommand)


pacbio库,用于与pbsmrtpipe工作流引擎接口的常用实用程序、模型和工具。

若要与pbsmrtpipe工作流引擎集成,必须能够生成**工具合同**,并且能够从**解析的工具契约**运行。

a**工具契约**包含EXE的元数据,例如输入、输出和选项的文件类型。

tract.json)(和[avro schema](https://github.com/pacificbiosciences/pbcommand/blob/master/pbcommand/schemas/tool廑contract.avsc))


示例[解析工具契约json](https://github.com/pacificbiosciences/pbcommand/blob/master/tests/data/resolved廑tool廑contract廑dev app.json)(和[avro schema](https://github.com/pacificbiosciences/pbcommand/blob/master/pbcommand/schemas/resolved_tool_contract.avsc))


有两种主要用例,第一种是包装/调用外部python包中定义的python函数,或者脚本。其次,创建一个支持发出工具契约、运行解析工具契约和完成argparse样式的cli的cli工具。


example from**pbcommand.cli.examples**

``python


import sys
import logging

from pbcommand.models import filetype
from pbccommand.cli导入registry_builder,registry_runner

log=logging.getlogger(u name_u)



它应该从库代码中导入
编写模拟输出文件以进行测试,否则,如果ISinstance(output_files,(list,tuple))否则端到端测试将失败
xs=output_files否则,[output_files]
for x in xs:
以open(x,'w')作为writer:
writer.write("mock data\n")
返回0


@registry("dev_qhello_world","0.2.1",filetypes.fasta,filetypes.fasta,nproc=1,options=dict(alpha=1234))
def run_rtc(rtc):
返回"example_main"(rtc.task.input_files[0],rtc.task.output_files[0],nproc=rtc.task.nproc)



>
@registry(dev'u fastq fastq fasta","0.1.0",filetypes.fastq,filetypes.fasta)
>def run_rtc(rtc):
return _example_main(rtc.task.inpu_文件[0],rtc.task.outpu_文件[0])


















sys sys sys runner(registrunner(registristry,sys)

```

驱动程序是工作流引擎将调用的命令行接口。


将使用"${exe}/path/to/resolved_tool_contract.json"调用驱动程序

ipe)。

`` bash
$>;python-m pbcommand.cli.examples.dev_quick_hello_world-o/path/to/my tool contracts
```




/>-define parser
-add running from argparse and running from resolved toolcontract funcs to call your main
-add call to driver


导入或定义主函数。

`` python
def run懔my懔main(fasta懔in,fasta懔out,min懔length):
做些事情。main应该返回一个int出口code
return 0
```

ypes.fasta,"fasta-in","fasta-file","pacbio-spec'ed fasta-file")
AME,description
对于argparse,读取长度将转换为--read length,并(通过args.read_length访问)
p.add_int("pbcommand.task_options.dev_u read_length","read length",25,"length filter","min sequence length filter")
返回p
````

define parser

`` python
从pbcommand.models导入tasktypes、symboltypes、get-pbparser


def get-contract-parser():
tool-id="example-namespace.tasks.my-id"
version="0.1.0"或重用version-o对于要使用的处理器,也可以是symboltypes.max_nproc
nproc=1
日志文件、tmp目录、tmp文件。请参阅模型中的resource types,resourcetypes.tmp_dir
resource廑types=()
commandline exe调用"{exe}"path/to/resolved tool contract.json
driver廑exe="python-m pbcommand.cli.example.dev廑app--resolved tool contract"
desc="dev app用于支持em的测试itting tool contracts"
如果要将任务提交给工作流引擎,则将其设置为true如果要将任务提交给群集管理器(例如sge)。
p=get_pbparser(tool_id,version,display_name,desc,driver_exe,is_distributed=is_distributed,nproc=nproc,resource_types=resource_types)
add_args_and_options(p)
return p
`````



定义一个包装层,从工具协定和原始argparse io层调用mainparser.parse_args()
参数的属性在add_args_and_options函数中定义为"labels"。
返回run_my_main(args.fasta_in,args.fasta_out,args.read_length)



def_resolved_tool_contract_runner(resolved_tool_contract):
"
:type resolved_tool_contract:pbcommand.models.resolvedtoolcontract"
rtc=resolved_tool_contract
所有选项都由全局命名空间id引用。这允许工具使用其他工具选项
例如,pbalign使用blasr定义的选项。
返回run_my_main(rtc.task.input_files[0],rtc.task.outputs[0],rtc.task.options["pbcommand.task_options.dev_read_length_"])
`````






add running layer

``python
import sys
import logging
from pbcommand.utils import setup logg
from pbcommand.cli import pbparser_runner

log=logging.getlogger(u name_u)



def main(argv=sys.argv):
:],
get_contract_parser(),
u args_runner,argparse runner func
u resolved_tool_contract_runner,tool contract runner func
log,log instance
安装日志(setup log func)
t;python-m'pbcommand.cli.examples.dev廑app'--emit tool contract
```


,您可以从**解析的工具契约**

``sh
>;python-m pbcommand.cli.example.dev廑app--resolved tool contract/path/to/resolved廑contract.json
````


请参阅["pbcommand.cli.examples"中的开发应用程序(https://github.com/pacificbiosciences/pbcommand/blob/master/pbcommand/cli/examples/dev_app.py)对于一个完整的应用程序(它们需要安装pbcore)。


除了对tc/rtc的支持外,还对任务选项提供了完整的argparse支持。下面是**帮助**的一个示例。

```sh
(pbcommand\u test)pbcommand$>;python-m'pbcommand.cli.examples.dev_app'--help
用法:dev_app.py[-h][-v][--versions][--emit tool contract]
[--解析的工具契约解析的工具契约]
[--日志级别的日志日志级别][--debug]
[--读取长度读取长度]
fasta-u-in-fasta-u-out


dev-app用于测试,支持发出工具契约


positional参数:
pacbio-spec'ed fasta文件中的fasta-u
fasta-out-filtered fasta文件

消息和退出
-v,--版本显示程序的版本号,退出
--版本显示单个组件的版本(默认值:无)
--将工具合约发送到stdout(默认值:false)
--解析工具合约解析工具合约
直接从pacbio解析的工具协定
(默认值:无)
--日志级别日志级别
设置日志级别(默认值:10)
--调试到stdout(默认值:false)
--读取长度读取长度
最小序列长度筛选器(默认值:25)
```

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

推荐PyPI第三方库


热门话题
java无法启动应用程序:JNLP错误   java根据用户输入在PreparedStatement中使用setTime()或setNull()   java EJB与同步   java以object为键通过hashmap进行搜索   java中的模10^9+7   针对包含其他对象的对象的java OOP最佳实践   如何将字符串作为HTML代码从Java文件读取到JSP页面?   java我的POM怎么了?“解析表达式..检测到递归表达式循环”   用于Hbase的Mapreduce的java NoSuchMethodError   JAVAlang.SecurityException:权限拒绝:启动意图{act=安卓.Intent.action.MAIN cat=[安卓.Intent.category.LAUNCHER]   数组初始化谜语Java   通过arraylist搜索时的java句柄关联