Name
BioX::Workflow::Command::run::Rules::Rules
Description
Role for Rules
Command Line Options
filter_rule_keys
First option is to use --use_timestamps The user can also override the timestamps with --select_* --omit_*
Use the --select_rules and --omit_rules options to choose rules.
By default all rules are selected
set_rule_names
Iterate over the rule names and add them to our array
set_rule_keys
If we have any select_* or select_match, get those rules before we start processing
check_select
See if the the current rule_name exists in either select_* or omit_*
process_rule
This function is just a placeholder for the other functions we need to process a rule
1. Do a sanity check of the rule - it could be yaml/json friendly but not biox friendly 2. Clone the local attr 3. Check for carrying indir/outdir INPUT/OUTPUT 4. Apply the local attr - Add all the local: keys to our attr 5. Get the keys of the rule 6. Finally, process the template, or the process: key
sanity_check_rule
Check the rule to make sure it only has 1 key
template_process
Do the actual processing of the rule->process
use_iterables
This is deprecated and will be removed in the next version!
Check the global and local keys to see if we are using any iterables
use_chroms: 1
use_chunks: 1
This is still here, but its use is discouraged
Instead check out the Mustache Template for easier loops
To speed things we use mce map If, however, you do not wish to speed things, and instead be a sucker who runs things sequentially use this directly
eval_rule
Check to see if there is a custom method registered.
Otherwise process the template as normal.
print_rule
Decide if we print the rule
There are 3 main decision trees
1. User specifies --select_* 2. User specified --omit_* 3. User specified --use_timestamps
select_* and omit_* take precedence over use_timestamps
check_indir_outdir
If by_sample_outdir we pop the last dirname, append {$sample} to the base dir, and then add back on the popped value
There are 2 cases we do not do this
1. The indir of the first rule 2. If the user specifies indir/outdir in the local vars
carry_directives
At the beginning of each rule the previous outdir should be the new indir, and the previous OUTPUT should be the new INPUT
Stash should be carried over
Outdir should be global_attr->outdir/rule_name