BioX-Workflow-Plugin-Drake
view release on metacpan or search on metacpan
lib/BioX/Workflow/Plugin/Drake.pm view on Meta::CPAN
package BioX::Workflow::Plugin::Drake;
our $VERSION = '0.12';
use Data::Dumper;
use Data::Pairs;
use Moose::Role;
use Interpolation E => 'eval';
=head1 NAME
BioX::Workflow::Plugin::Drake - A very opinionated template based bioinformatics workflow writer for Drake.
=head1 SYNOPSIS
The main documentation for this module is at L<BioX::Workflow>. This module extends Workflow in order to add functionality for outputing workflows in drake format.
biox-workflow.pl --workflow workflow.yml > workflow.drake
drake --workflow workflow.drake #with other functionality such as --jobs for asynchronous output, etc.
List your plugins in your workflow.yml file
---
plugins:
- Drake
global:
- indir: /home/user/gemini
- outdir: /home/user/gemini/gemini-wrapper
- file_rule: (.vcf)$|(.vcf.gz)$
- infile:
- min: 1 ##IF USING MIN
#So On and So Forth
More information about Drake can be found here L<https://github.com/Factual/drake>.
=head2 Default Variables
BioX::Workflow::Plugin::Drake assumes your INPUT/OUTPUT and indir/outdirs are
linked.
This means the output from step1 is the input for step2.
You can override this behavior by either declaring any of these values, or in the global
variables set auto_input: 0, disable automatic indir/outdir naming with
auto_name: 0, and disable automatically naming outdirectories by rule names with
enforce_struct: 0.
=head2 Example
=head3 workflow.yml
---
plugins:
- Drake
global:
- indir: /home/user/workflow
- outdir: /home/user/workflow/output
- file_rule: (.csv)$
rules:
- backup:
local:
- INPUT: "{$self->indir}/{$sample}.csv"
- OUTPUT: "{$self->outdir}/{$sample}.csv"
- thing: "other thing"
process: |
cp $INPUT $OUTPUT
- grep_VARA:
local:
- OUTPUT: "{$self->outdir}/{$sample}.grep_VARA.csv"
process: |
echo "Working on {$self->{indir}}/{$sample.csv}"
grep -i "VARA" {$self->indir}/{$sample}.csv >> {$self->outdir}/{$sample}.grep_VARA.csv \
|| touch {$self->OUTPUT}
- grep_VARB:
local:
- OUTPUT: "{$self->outdir}/{$sample}.grep_VARA.grep_VARB.csv"
process: |
grep -i "VARB" {$self->indir}/{$sample}.grep_VARA.csv >> {$self->outdir}/{$sample}.grep_VARA.grep_VARB.csv || touch {$self->OUTPUT}
( run in 0.903 second using v1.01-cache-2.11-cpan-39bf76dae61 )