基于doit的软件工作流管理系统
judi的Python项目详细描述
judi-生物信息学管道:只要做就行了
judi源于将{em1}$doit的能力和效率 在多种参数设置组合下执行任何类型的任务。
示例代码
来自tutorial的片段,将其另存为dodo.py
。
fromjudiimportFile,Task,add_param,combine_csvsadd_param('100 101 102 103'.split(),'sample')add_param('1 2'.split(),'group')REF='hg_refs/hg19.fa'path_gen=lambdax:'{}_{}.fq'.format(x['sample'],x['group'])classAlignFastq(Task):inputs={'reads':File('orig_fastq',path=path_gen)}targets={'sai':File('aln.sai')}actions=[('bwa aln {}{} > {}',[REF,'$reads','$sai'])]classCreateBam(Task):mask=['group']inputs={'reads':AlignFastq.inputs['reads'],'sai':AlignFastq.targets['sai']}targets={'bam':File('aln.bam',mask=mask)}actions=[('bwa sampe {}{}{} | samtools view -Sbh - | samtools sort - > {}',[REF,'$sai','$reads','$bam'])]classGetCoverage(Task):mask=['group']inputs={'bam':CreateBam.targets['bam']}targets={'cov':File('cov.csv',mask=mask)}actions=[('(echo val; samtools rmdup {} - | samtools mpileup - | cut -f4) > {}',['$bam','$cov'])]classCombineCoverage(Task):mask=['group','sample']inputs={'cov':GetCoverage.targets['cov']}targets={'csv':File('combined.csv',mask=mask),'pdf':File('pltcov.pdf',mask=mask,root='.')}actions=[(combine_csvs,['#cov','#csv']),("""echo "library(ggplot2); pdf('{}') ggplot(read.csv('{}'), aes(x = val)) + geom_density(aes(color = factor(sample)))"\ | R --vanilla""",['$pdf','$csv'])]
从终端运行:
$ doit list AlignFastqCombineCoverageCreateBamGetCoverage$ doit . AlignFastq:group~1,sample~100. AlignFastq:group~2,sample~100. AlignFastq:group~1,sample~101. AlignFastq:group~2,sample~101. AlignFastq:group~1,sample~102. AlignFastq:group~2,sample~102. AlignFastq:group~1,sample~103. AlignFastq:group~2,sample~103. CreateBam:sample~100. CreateBam:sample~102. CreateBam:sample~103. CreateBam:sample~101. GetCoverage:sample~100. GetCoverage:sample~102. GetCoverage:sample~103. GetCoverage:sample~101. CombineCoverage:
项目详细信息
- 网站和文档-https://pyjudi.readthedocs.io
- github上的项目管理-https://github.com/ncbi/JUDI
许可证
麻省理工学院的执照 版权所有(c)2019-2020 Soumitra Pal
请参见许可文件
安装
judi在python 3.6上测试。
$ pip install judi
依赖关系
- doit
文档
docs
文件夹包含基于sphinx的rest文档。
$ make html
贡献
在github上,使用命名的功能分支创建拉取请求。