Changes for Bpipe Version 0.9.9.3 =================================== TODO Changes for Bpipe Version 0.9.9.2 =================================== This release has focused primarily on performance, especially for pipelines involving high concurrency and large numbers of inputs and outputs. To achieve this, Bpipe now depends on new Java APIs available in Java 1.7. This means that Bpipe now requires Java 1.7 and will not work any longer with Java 1.6. Additionally, a range of small bugs have been fixed and smaller features added. ## Backwards Compatibility Of note, there is one change that can affect backwards compatibility. This relates to use of the 'transform' construct when multiple files of the same type are transformed to multiple files of a different type. In the past you could write a single transform such as: ``` transform('.txt') to('.csv') { ... } ``` Previously this would transform every text file in the inputs to a corresponding CSV file as output. From 0.9.9.2 forward this will only transform a single input file. For multiple files, the transform must now be specified as: ``` transform('*.txt') to('.csv') { ... } ``` This change has been made to resolve ambiguity, since there was no way previously to specify that a stage transforms exactly 1 input file of a given type. ## Change list - Large scale refactoring for performance with large numbers of inputs / outputs. Bpipe now requires Java 1.7! - Issue #180: bpipe doesn't allow empty branch list - Issue #184: chr not passed to nested parallel pipeline - fix wrong output referenced for 2nd double ext in produce eg: $output.bar.txt - support for modules in TorqueCommandExecutor - fix potential failure to cleanup files on error - Issue #175: Check state can be confused b/w branches - Handle errors in log init so that log fail doesn't prevent ability to run Bpipe (java logging tries to obtain exclusive locks which aren't supported on some file systems. - Update to groovy 2.4.6 (helps performance) - Fix ambiguous behavior of transform() when multiple inputs match transform pattern. New behavior requires transform('*.ext') to match upstream multiple files ending with .ext (minor possibilty for backwards incompatibility) - Fix output resolved as input for produce+double ext + numbered input - Fix exception when check saved without pass/fail set - Fix leak of tail / sed processes under OSX in some situations - Fix bootstrap theme for docs not recognised - Support to open a debugger Groovy console at any point in a pipeline using debug() function - Add settings.gradle to stop build failing if checked out to directory other than 'bpipe' - Fix possible hang when multi command used inside produce(...) - support for "mem_param" for torque executor this allows to choose which parameter Bpipe should use between "mem", "pvmem", etc. by setting mem_param="mem" in a command config - Issue #176: support multiple commands per config in multi - Various documentation fixes and cleanups - fix double file extension on input not resolving second and later input (eg: when referenced in form $input2.foo.bar) Changes for Bpipe Version 0.9.9 ============================== **NOTE:** see 0.9.9_beta_1 changes for further changes since previous release - SGE: Merge branch 'sge_fixes', including: * Fix #156, #142, Bpipe may hang or ignore job cancel / delete using SGE executor * add -terse to sge default command options * change to support separate options: 'sge_pe' and 'procs' rather than combined. (Old combined form still supported for back compat.) * jobs are created using user modifiable command template, specified via jobTemplate configuration parameter which can be object with string value of path to template, or a closure which will be executed dynamically to obtain the path * fix incorrect reporting that stop command failed in sge * use Bpipe resolved working directory instead of $PWD since it is not guaranteed to be defined * fix cases of failure due to string procs variable getting overridden with integer (dynamic calculation of $threads variable) * fix incorrectly sending slots as well as pe for some configurations * support individual parameters for SGE options instead of compiling them into 'additional_options' - Fix choosing "terminate" not working for some executors (issue #162) - PBS-pro: combine multiple resource limits into single statement, add support for procs, memory requests - Experimental option for some executors to disable buffering of standard output, applies to torque, slurm, pbs-pro. Set "stdbuf" as option to have bpipe run commands using 'stdbuf' command to disable output buffering, when output from commands is delayed in appearing in Bpipe log. - Performance optimisations for large / complex pipelines: * Cache output graph in serialised form to avoid reading property files at startup * Reduce massive logging of outputs when large number of inputs and outputs in single stage - Add 'bpipe errors' and 'bpipe log -e' command to show output for failed commands - Add support to display per command output using the bpipe log -c - Fix 'bpipe test' printing exceptions and hanging on 'multi' statement - Fix regression causing possible failure when stage has outputs but no inputs - update gradle wrapper script, include changes omitted from 2.0 upgrade - Fix files in subdirectory not resolved when whole file name matches input extension - Fix variable specified with 'using' not overriding global value - Fix 'check' results possibly leaking between branches - Fix reading output.dir causing potential modification of output directory =========== Changes for Bpipe Version 0.9.9_beta_1 ============ - Fix content type not set causing errors with some smtp connections - Issue #155: Update to gradle 2.0 to avoid compile failure with JDK9 - Performance optimisations for large numbers of inputs / outputs - Should report error if is referenced and finds no inputs - Give a hint about which 'from' clause pattern did not find a match in error message - Fix typo causing exception while logging error message - Fix: setting branch name from within stage causes incorrect branches downstream - Fix input resolved as output in rare circumstances - Fix transform ... to followed by double output variable extensions (.foo.bar) failing with confusing error message - Fix procs not set in torque job when using variable - Make bpipe return exit code reflecting whether pipeline succeeded or failed - Fix: bpipe may fail to cleanup files created in subdirectories - Fix hang / exception when using multi command (regression) - Fix regression caused by incorrect synchronization on wrong object. Refactored Concurrency resource auctions for clarity - Fix regression / failure when no inputs specify any fixed thread requirements - Better / fairer scheduling for dynamically allocated $thread variables - Support for ranges in procs parameter, eg: procs = 1..10, or uses(threads:1..10) { ... } - Fix: failure to parallelize stages inside a list added to another list, eg: [foo, bar] + [fubar,fug] - Added explicit license file for clarity of licensing - Issue #148: bpipe parsing commandline memory specification incorrectly - Issue #150: Cannot pass blank parameter via command line - Various documentation fixes - Fix: junit tests were not executed - Additional SGE options, SGE options moved inside script - fix: commands run using torque / pbs not using -e flag for bash, thus only treated as failed if last command fails - support for aliasing inputs to outputs via 'forward to ' to allow an input to be virtually treated as a named output within the pipeline - fix: bpipe terminating if ssh session terminates while showing bpipe log in foreground directly after initial launch - save output from LSF (to assist in debugging failed LSF commands) - fix stages not found when defined in bpipe lib folder and referenced in segment declaration if used after load - Switch to use html format for emails by default - allow user to configure email format with 'format' attribute in configuration - allow multiple templates per notification type with different formats - fix problems in using 'send' and 'file' to send explicit files based on templates - Fix high thread concurrency used when large number of concurrent branches created by one pipeline branch - Explicitly destroy process after waiting until streams closed to ensure file handles not leaked - fix some cases where Bpipe could report file as missing when created in slow syncing distributed file system - Allow more screen width when using 'bpipe checks', better formatting of check display - Add option to list checks rather than enter interactive mode - fix some cases where commands might not be stopped, and outputs not cleaned up when using bpipe stop. Update saved command info after cleanup. - ensure stop time is always set for commands - close possible file handle leak in (undocumented) capture command - more robust checking for file existance - refactor file existance checking into common utils method, to allow wider application - Avoid misleading termination message when user deliberately stops pipeline - Incorrect input used as basis for output file name in transforms inside 'from', if competing input available from previous stage - fix: rare deadlocks - use dedicated thread pool per pipeline tier to avoid possibility of deadlocks in heavily nested pipelines =========== Changes for Bpipe Version 0.9.8.7 ============ - check /proc on linux rather than relying on kill 0 to see if pipeline is running (enables cross user support for "bpipe log") - Addition of documentation to Bpipe distro - fix failure to cleanup files with no parent directory (regression) - Add __future__ import for Python 2 and 3 compatibility (fix failure on Mac when Python3 is default) - switch to HTML format for default email. to switch back to text, use notifications { smtp { format="text" } } in bpipe.config. - Fix presence of subdirectory in bpipe output meta data folder causing bpipe to spew errors - Fix files sometimes not cleaned up on distributd file system where lag exists in synchronizing b/w nodes - Issue #128: use qsub -N to name job according to stage/filename - support for overriding a stage with an alternative implementation within a particular branch - fix: authentication failures on passwordless SMTP server - fix failure in cleanup if output properties file did not get optional canonicalPath property added - comment out verbose log message creating large bpipe logfiles for long runs - avoid encoding whole directory path into internal property file names (fix 'file path too long errors' on file systems allowing only 256 chars in file names) - fix parent branches not visible in children via branch property - fix method missing error when multiplying by map by list - Reformatting and summarizing of errors at end of pipeline to make it easier to see where & why pipelines failed - Aggregating identical errors from multiple branches together in output so that failures from many branches are less verbose - Support for 'load' within a pipeline stage. Loads into the context of current branch rather than global. Pipeline stages not supported, only variables. - prevent error if files used by Bpipe are not writable but are deletable - prevent premature wildcard expansion of quoted arguments passed to Bpipe - support for cleanup as command in pipeline stage - prevent error if files used by Bpipe are not writable but are deletable - attempt to ensure log messages written even if exit due to outofmemory error - log message if file is not cleaned up because it doesn't exist: help to diagnose problems with files not cleaned up - better log info about where config files are - allow memory to be integer for torque/slurm/etc, fix error querying status in torque/slurm/etc, include queuing system command id in bpipe status output - show pending and waiting jobs with bpipe status, don't throw ugly error if no commands ever run - Fix: downstream references to inputs by index throwing "expected more inputs" error incorrectly - avoid confusing stack overflow when user defines branch variable with same name as pipeline stage - accept 'MB' or 'GB' in command line option for memory, cache runtime directory instead of creating new File objects all the time to figure it out - prevent null pointer exception when list containing null provided to 'from' - fix multiple inputs not forwarding correctly when referenced using "$inputs" - Bug fixes for lsf, added walltime option for Lsf - caching of DAG lookups by canonical path to speed up large, complex pipelines - caching of canonical path with check of basePath to ensure consistency - fix dependency issues after cleanup when non-default output directory used - Performance optimisations for systems where canonicalPath is very slow, better logging to resolve dependency issues =========== Changes for Bpipe Version 0.9.8.6 ============ - fix: errors may printed about files not existing when attempting to move to trash - fix bpipe jobs not printing jobs after user ctrl-c's out of run command - fix incorrect default for procs_mode variable for torque - fix ugly stack trace error when transform called without arguments - fix failing to escape trailing . in split patterns - branch.dir now ha a default value so that it is easier to put in reusable pipeline stages - Ensure walltime gets interpreted as integer even if passed as String / BigDecimal / Long etc - fix trash option not working in bpipe cleanup - Fix default output directory not applied to second produce argument if first specifies a directory - fix produce() with reference only to output.dir causing retry test to incorrectly indicate commands would run again - Fix incorrect file reported for errors when multiple external files loaded, added some comments, removed hard tabs - fix branch variable not overriding default value of variable specified with var - Fix files not checked after 'produce' if previously output and then removed outside of bpipe - Fix files not checked after 'produce' if previously output and then removed outside of bpipe - fix 'inputs' variable with double file extension not always resolving only files matching both extensions - fix output() function causing spurious errors about incompatible inputs when combined with output variable extensions - fix command not running when explicitly specified by produce() if another implicit output referenced by command - Support for produce using wildcard based on regex (via ~) - Add information about total run time to report and command log - support to specify branch filter on command line, to limit running to a specific branch (for testing, usually) - fix explicit output() combined with produce(...) resulting in inconsistent behavior - Fix stack traces printed out when errors occur to use actual name of user scripts instead of groovy generated ones - fix build.gradle not working with existing gradle wrapper - Implement default behavior for transform with more to() values than from() values instead of failing - Fix output referenced inside check causing check to be skipped / behave incorrectly =========== Changes for Bpipe Version 0.9.8.6_rc2 ============ - Issue 100: report does not accurately reflect repeated and parallel stages - fix: inputs passed in wrong order to parallel stage after 'produce' when lexical sorting differs to input order - enhance: migrated all of Bpipe to use groovy 2.3.4 for JDK1.8 compatibility - Refactoring of basis for pipeline diagrams to solve longstanding bugs - fix: commands not appearing in html report - fix: bad log statement causing error if log file fails to appear, better behavior for distributed file systems where command may finish before output file becomes visible on remote node - fix: transform() from() to() form can result in Bpipe not detecting command failure - fix: pipeline fails if pipeline stage is referenced both with and without 'using' - fix: internal errors (eg: outofmemeory) possibly leaving the Pipeline in corrupted internal state - enhance: Make it possible to set custom R executable via bpipe.config - fix: some status codes from PBS/torque occasionally causing errors in logs - fix: local commands don't show pid with bpipe status - fix: status command showing old jobs and / or failing in situations where command objects are missing / corrupt - enhance: add thread id to log file (debug) - fix: not all outputs from branches split by file pattern forwarded to downstream stage when number of files differs in each branch - fix: take into account whole parent hierarchy in calculating total parallelism for computing variable - enhance: support for sending proc_mode config param to custom executors and CUSTOM executor config attribute - enhance: Torque/PBS: support for sending procs request using nodes/ppn attribute instead of procs - fix: 'forward' failing with cryptic errors when attempting to forward multiple files - enhance: enabled matching of directory name in split pattern when directory present in pattern - fix: second and later outputs possibly not cleaned up in some situations of command failure - fix: branch variables not accepted as required parameters - fix: output does not include branch if no input as base and output extension syntax used - fix: R aborting when user hits control-c in some situations - fix: some complex pipelines starting with list failing with errors - fix: fixes for PBS Pro executor from Davide - enhance: support for PBS Pro thanks to Davide Rambaldi =========== Changes for Bpipe Version 0.9.8.6_rc ============ - support for 'load' to work with URLs for loading scripts remotely - fix chr variable created by chr() not considered as satisfying requires chr:... - start and stop time not set by local command exector - restrict use of auto filter to cases where chr actually in operation - file() construct sometimes returning paths with .. in them - Add pipeline stage name to printout in bpipe query - support for multiple file extensions when using $output variable ($output.foo.bar.gz, etc) - fix incorrect outputs resolved for filter when inputs are resolved from a relative path leading with "." character - fix preserve not resolving files specified by different absolute / relative paths to Bpipe's form, (thx Anthony) - Not serializable exception on legacy directories - Remove legacy feature where output may be inferred from created files: does not behave reliably in parallelized pipelines - support for multiple "preserve" patterns - fix preserved status not displayed correctly by bpipe query - support for grouping commands in tool database into 'modules' - fix syntax errors in tool database - added igv tools, fix GATK probe, add VEP to tools database - fix binary report files copied as text causing corruption - add stage name to meta data properties saved for each output file - fix filter sometimes expecting wrong input when file extension supplied - fix "bpipe run" leaking a tail process each time on OSX - support for generating reports using arbitrary groovy code in a separate script - add tools and versions to meta data stored in output properties - fix status for SLURM displaying Torque in output - fix possible conflicting output names on multiple branches when nested branches cascade without intervening stages - add support for referencing output graph in reports - transform should be able to match whole file name, fix incorrect input can be resolved inside transform() to() construct - display running time and pending output in response to bpipe query - Add procs to LSF executor - refactored a lot of executor stuff to remove duplicated code, plus to allow for recording start of execution time separate to start of queuing time - fix GB ignored as key for memory - support to use ${output(...)} in commands instead of produce - support for adding jars to classpath via bpipe.config (libs="foo.jar:bar.jar...") - fix requires at pipeline stage level no longer working because overriden by top level requires function - experimental: multithread startup to ammeliorate long delays when file system is slow - make it possible to remove the cwd option from lsf executor (see google group) - use -e instead of -eo for LSF since it is compatible with OpenLava - ability to use multiple extensions for 'input' variable file extensions, eg: $input.foo.bar.csv returns files ending in '.foo.bar.csv' - fix input with file extension not requiring match on first character in some cases - fix problem in some weird cases where object has null class - prevent errors when running in test mode with explicit notifications sent in pipeline to 'file' channel - switch to SimpleTemplateEngine because GStringTemplateEngine is not observing classpath of added libraries, only core groovy libraries - fix output directory set by command line resulting in inputs not correctly recognised in 2nd and later stages of pipeline - fix required inputs using exact path instead of file name ========== Changes for Bpipe Version 0.9.8.6_beta_3 ============ - support for setting check message without failing or succeeding - explicitly (check.message = "...." in otherwise clause) - new check report to send / write a summary of all checks as HTML (bpipe run -R checks ..., send report('checks.html') ...) - documentation now available to reports based on user templates - "utils" now provided to templates for generic utilities (escape, todo: documentation) - Ensure full stack trace is logged in bpipe log when missing function encountered - make produce() with directory use that directory rather than coerce to default output dir - added new supported commands to default help display - fix parameters passed in by command line not resolvable in templates - support 'send report(...) to file: ' syntax - fix subject line used incorrect in SMTP notifications - inputs not being correctly checked to be provided when specified at root level - don't display exception info when failure is due to value missing from specified inputs via 'inputs ...' statement - support for 'requires' at top level outside of pipeline definition - improve wording and display of error when required value is missing - fix templates not able to see all classes available on classpath - removed all forms of throttling of R sessions (should now be unnecessary) as it can form a bottleneck in certain scenarios ========== Changes for Bpipe Version 0.9.8.6_beta_2 ============ - avoid warnings due to project properties (thanks Davide) - refactored email functionality to use user configurable templates - fix notifications for pipeline finished saying pipeline failed when it didn't - support for displaying information about checks at end of pipeline - more information in SMTP notifications, including checks - Added option to override all checks for cases where there are very many that have failed - changed unknown communication provider to be a warning instead of a pipeline terminating exception. - fix relative symbolic link to Bpipe not resolving properly under Mac/OSX - fix possibility of commands sometimes not being cleaned up (add pause before terminating Bpipe, after terminating child processes) - Fix Slurm not returning failure exit code when job cancelled via bpipe stop (causing outputs not to be cleaned up) - Added "checks" command and "override" command to display and override checks respectively - Fix transforms sometimes applying in such a way as to add branch name with no period separating them from the rest of the file name (regression) - fix transforms producing null outputs when no period in input file name (regression) - support for rendering pipeline diagrams as SVG - support for specifying pipeline stages to ignore in diagrams via noDiagram="..." in bpipe.config (annotations to come in the future) - fix diagrams generated incorrectly if 'segment' command used - fix documentation failing to generate unless script has a relative or absolute path prefixing it - some tweaks to avoid rare cases double dots appearing in file names with transform - 'succeed' should terminate parent branch when all child branches terminated via succeed - support for running a pipeline "until" a specified stage ( -u) - support for send to use HTML templates instead of inline HTML - support for 'succeed' and 'fail' to share 'send' syntax to generate an email or IM along with the termination of the branch - fix slurm executor sometimes treating slurm stdout and stderr temp files as real outputs of pipeline - Fix space inserted when withFlag used with flags ending with "=" - fix variables and functions loaded via 'load' not available until pipeline launched (inside run { } ) - allow global resource limits (as supported by -l flag to bpipe) to be specified in bpipe.config as well - support for sending emails and instant message notifications explicitly from script, using syntax: send text 'hello' to gtalk, and more advanced forms (documentation to come) - support for using explicit regex pattern to split files to parallel paths (as opposed to simplified pattern syntax) just add ~ to pattern - fix (very rare) possibility for duplicate file names when referencing 'inputs' variable - added support for matching numbers in input splitting patterns ('#') - added support for gradle wrapper - added gradle wrapper for easier building (now just use gradlew instead - of gradle, and it self downloads) - fix custom resources not enforced when provided as map - fix default build to autodetect Gridgain jars and compile without if not found - get mail.jar from Maven so default checkout compiles - changes to allow "single" queue to handle multiple tasks (vlsci) - fix 'bpipe status' displaying incorrect command for SLURM, PBS possibly others ========== Changes for Bpipe Version 0.9.8.6_beta_1 ============ - fixed file(...) function sometimes returning file object for "/." - experimental feature: supply closure with ".using(...)" for lazy evaluation, allowing reference to runtime pipeline variables in configuration of pipeline stages - initial implementation of a 'bpipe status' command, to show exactly what is currently running - Ability to explicitly cause a branch to either fail or succeed prematurely (via "fail" and "succeed" commands) - added support to transform a single file pattern to multiple targets - ability to configure and customize reports from bpipe.config (custom names, etc.), and to send by email when email notifications configured - allow "procs" to be specified as integer in resource manager config - fix first line of log file sometimes not showing when using "bpipe log ..." - "bpipe query" not working on files in non default output directories (eg: specified with output.dir=....) - more graceful / better handling of errors that cause the script to not parse or load at all - support for finding bpipe.config in the same directory as the pipeline script (which might be different to the directory that bpipe is running in) - better handling of exception when probing tools in tool database - new feature: allow for muliply by Map to set an explicit mapping of branch names to inputs - special behavior for accompanies when dealing with transforms: always adds extension to end of file rather than replacing - allow requires to specify complete file name instead of just extension - allow resolution of 'load' files relative to the pipeline script itself so that it is easy to maintain a pipeline file and ancillary files in the same directory ========== Changes for Bpipe Version 0.9.8.5 ============ - fix output.dir not working if transform annotation used - fix silly mistake causing load external stages to fail - fix loading a pipeline stage from within a loaded pipeline stage not working - added ability to set branch level variables that are carried forward through the pipeline via branch. = "something" syntax - Fix output sometimes not fully flushed when running pipelines using resource managers - support for using arbitrary lists for parallelization over any list of items - fix msg writing output during probes (causing double output in certain situations) - when an output that is specified as an absolute / relative file that exists, fix not seeing it in dependency graph - better file names when output extension occurs in combination with introduction of branch name (foo.chr1.csv instead of foo.txt.chr1.csv) NOTE: in rare situations this might cause output file names to change, thus may cause outputs to get recomputed for existing pipelines (in rare cases) - allow command line region to override chr() within pipeline - fix command configuration sometimes not displaying name - slightly better description of command for specifying report template (see Google Group discussion) - fix R code failing when last line contains certain syntax - Enable specifying file name for reports (Patch from Ido Tamir, thank you!) - fix problems when multiple implicit outputs computed from same input file (output1.foo and output2.foo end up the same file) - handle incorrect report template much more nicely than a giant stack trace ========== Changes for Bpipe Version 0.9.8.4.1 ============ - fix middle parallel section causing spurious error if no inputs provided at start of pipeline - fix error when pipeline starts with parallel section and adds a subsequent stage (regression) - fix file splitting patterns not working properly for very specific case of a split wildcard (%) followed by 2 chars ========== Changes for Bpipe Version 0.9.8.4 ============ - fix __bpipe_lazy_resource_threads__ appearing in output when commands fail instead of real value of $threads - fix __bpipe_lazy_resource_threads__ appearing in command log instead of real value of $thread - prevented tools being probed more often than needed - moved throttling of command execution into separate class, applied throttling to tool probing so as to lessen chances of exhausting threads or file handles when running with large numbers of inputs and highly parallel pipelines - fix log.warn causing any UNKNOWN status code return from PBS/Torque to exit with error instead of retrying - fix filter transforms sometimes basing output file on wrong input - preliminary SLURM support via Andrew Lonsdale (thanks!) - when a command is configured with to use a specific number of procs, that should override the magic $threads variable value - PBS / Torque support not sending memory config for queues other than 'batch' or 'smp' - hack: add ability to put extra classes into $BPIPE_LIB/extra-lib.jar for use in pipeline script - don't convert outputs containing paths to output folder - further support for inputs that are directories - prevent checking of timestamp of directory, search the full output tree instead of just immediate inputs to stage when a directory input is requested - fix glob outputs not recognized as already created when in explicitly set output folder - fix "using" construct causing diagrams to fail - fixed diagram failure on nested parallel section, and when a parallel section is the root element in the pipeline - fix diagrams failing with exception stack trace when pipeline is split by chromosome - fix diagrams not working when only a single stage defined in pipeline - add support for transform(".xml") to(".csv") { } style syntax (experimental) - better error message for referencing undefined function - fixed branch names including directory portions of input file paths when split on files from other directory - ensure variables can be overriden from the command line - show all commands when test mode aborts a multi command - option to show only output from single thread with bpipe log -t ========== Changes for Bpipe Version 0.9.8.3 ============ - fix input not resolved by from / input ext when reference embedded in nested - fix %bin% expansion incorrect when tool command is part of the full path containing the tool itself - eg: /usr/local/bwa/bwa-0.5.9/bwa - fix possible double period in output file name (regression) - fix references to output.dir causing outputs to be inferred even when no outputs actually decided yet for stage (eg: before produce / transform / filter, etc.). - fix backslashes in file paths causing invalid output paths on Windows - fixed failures when files without extensions created as outputs / inputs - run commands using -e option with bash so that failure of any command within script results in abort - nicer error message when a filter encounters the situation that no inputs were provided - fix transform producing same output as input when output file of same type as input - add support for closure as value for variable default to compute default value at runtime, prevent referencing unless actually needed (useful eg: if the default should be an input when not provided) - attempt to fix out-of-order execution of pipelines that start with list and append stages after - support for "requires" to specify required parameters for a pipeline stage - support for multiple paths in BPIPE_LIB - support for script files in BPIPE_LIB (in addition to folders of scripts) - support for ordering of execution of modules in BPIPE_LIB - fix output files not merged correctly when multiple levels of nested parallel segments end at same point - updated to add withFlag for more stringent test case - changed build to use manually downloaded gridgain lib (GridGain pulled their repo support :-( ) ========== Changes for Bpipe Version 0.9.8.1 ============ - fix double spaced output - fix input.size() and inputs.size() throwing exceptions - fix potential incorrect output inferred in filter operation, causing 'expected output not found' error in some filter scenarios ========== Changes for Bpipe Version 0.9.8.1 ============ - Fix race condition causing occasional null pointer exception, making param_nested_parallel test fail - fix exception when using bpipe preserve - fix potential leading semicolon when executing command - fix for incorrect input inferred by filter if actual input used different to those supplied by previous stage - fixed regression causing '..' in filenames from output extension that operates like transform - fix double period in inferred output names when no explicit filter / transform present - fixed dependencies working incorrectly with produce; stage skipped even if actual inferred / used input was newer than actual inferred output - fix multiple instances of Bpipe running R scripts clashing other - support for "diagramOrientation="vertical" in bpipe.config to change orientation of diagrams - fix diagrams not generating correctly for some pipeline architectures - fix commands used to generate outputs sometimes displaying as "..." when using "bpipe query" - improvements to tool database - more links, better descriptions, etc. - to prevent some of the massive output that comes from large pipelines when re-executing, buffer messages unless a stage actually does something. - support for producing custom reports, named by command line - added source for software schedule report - fix input ext on output with index referencing wrong output - fix cleanup not removing directory - fix glob on output folder not working - fixed output explicitly specified in produce() to be in folder still remapped to default output dir - added alternative bpipe runner that runs in background - fixed filterInputs still not working right with chr() behavior now defaults based on whether the input files contain chromosome references rather than always filtering ========== Changes for Bpipe Version 0.9.8 ============ - fixed problems with quoted args becoming unquoted during launch (so eg: bpipe execute 'foo + bar' would not work) - fixed 'bpipe retry' not working with quoted arguments in commands - fixed filter sometimes incorrectly refusing to allow output files that should work basd on used inputs - fix $input1 not resolving in commands if there is only one input - fix no information about outputs printed when too many outputs - added 'withFlag' function on $inputs, $inputs. variables for easily adding multiple inputs with the same flag (eg: ${inputs.bam.withFlag("-I")}) - strip leading spaces from commands when joining lines together for execution (prevent whitespace bloat in command log) - jobid now prepended in history file - support to retry specified job from history using bpipe retry - prevent bpipe commands that fail with invalid arguments from getting logged in history - don't log full path to bpipe executable in history file (breaks if bpipe location / version changes) - fixed files failing to get cleaned up if same file was previously cleaned up + added warning if cleanup fails - fixed filter followed by from potentially resolving its own stage output as input - fix for mt issue around pipeline inputs (causing parallel_same_stage_outputs test to fail if you run it many times) - regression from beta 3/4 - support for @intermediate and @accompanies (experimental) annotations - fixed failure to cleanup outputs that are inferred from output file extensions rather than transform / filter / produce when pipeline stage fails - fixed multiple references to multiinput properties resulting in duplicated / missed outputs - fixed reference to inputs variable followed by reference to input variable returning wrong results - fixed later stages not resolving inputs from non-final stages in prior nested parallel segments =========== Changes for Bpipe Version 0.9.8_beta_5 ============ - more fixes to make config{} work properly fixed 'config' not working / failing to execute commands - fix parallel branches created from file pattern split not using split files as basis for outputs sometimes =========== Changes for Bpipe Version 0.9.8_beta_4 ============ - support for multiple split characters in input matching patterns - support for config closure to enable config across multiple commands or when using "multi" - slightly better messaging when skipping command due to existence, not based on time stamp - fix display of output to stderr when version probe command fails - send to log instead - experimental chaining of from and filter / transform - fix "from" causing original inputs not to be queried for files in some situations - fix "filter" nested in "from" failing to infer correct output when output based on input other than input in "from" clause - fix possible exception when using $output.prefix - fixed second and later stages in nested parallel segments not always resolving correct inputs - fix attempts to use "split" in input variables failing (regression) - added support for use of "region" variable without genome or chr splitting to allow generic pipeline stages that can work with or without regions specified - added command line option ("-L") to specify default value of region variable - fixed "from" to match multiple inputs if used in form from("*.txt") etc. - Added example for how to run paired end reads - fix output extension causing wrong / confusing behavior when incombination with a filter and unexpected input order - fix bpipe command leaving out eclipse folder from classpath =========== Changes for Bpipe Version 0.9.8_beta_3 ============ - Updated underlying groovy implementation to Groovy 2.1 - Add "pre-existing" label to display of outputs that weren't genereated by the current run - fix error when creating File objects from input / output - support for using numbered outputs with file extensions (eg: $output2.txt) - fixed outputs sometimes being recreated unnecessarily when multiple commands inside transform/filter - support for implicit 'thread' variable for auto allocating threads based on known concurrency - fixed duplicate output files for $output1, $output2,... if pipeline has no input files - fix jobs not always cleaned up from global job table - support for referencing a particular input with a particular extension using "$input." - fixed double period appearing in some file names when using filter - fixed order of output from "glob" depending on the vagaries of the file system or java internals by sorting it - made 'from' conform to the convention of multiple inputs of same time bumping to next actual input instead of returning the same over and over =========== Changes for Bpipe Version 0.9.8_beta_2 ============ - fixed multi not failing pipeline when an asynchronous command fails - making filter() conform to the same behavior as transform(): when a filter type is repeated, it moves to the next input (see google group discussion - https://groups.google.com/forum/?fromgroups=#!topic/bpipe-discuss/G58ExlG2Vgo - fixed error when reporting notification failures to user - fixed output extensions not working correctly with filter when multiple filters supplied - fix multi not actually parallelizing properly in some cases - fix regression in 'from' not accepting list (added test) - fixed from with multiple arguments ignoring first argument - fixed deadlock condition in using "multi" in certain cases =========== Changes for Bpipe Version 0.9.8_beta_1 ============ - More flexible model for concurrency management, enabling management of any kind of resource. Introduction of new keyword "uses" to declare resource usage for a block and command line options (-m, -l, -n) to control different aspects of concurrency - Complete re-implementation of dependency analysis so that Bpipe understands the depedency graph and can perform transitive dependency analysis to allow rerunning piplines without rebuilding unnecessary intermediate dependencies. (See Issue #2, http://code.google.com/p/bpipe/issues/detail?id=2) Includes support for new command line commands, "bpipe query", "bpipe cleanup", and "bpipe preserve" to display and manage dependencies, as well as annotations, "@preserved" to declare dependencies that should not be deleted in a "cleanup". - support for new 'glob' function available within pipeline stages to facilitate pipelines that need to use wild card matches on input files. - Annotations can be used with lower case now. Upper case still works, but some people feel @transform, @filter, etc. looks nicer. - Support for parallelizing by chromosome on existing files already split by chromosome. If your input files are split and named by chromosome, you can use filterInputs parameter to make the existing files be used for inputs to the parallelization eg. chr(1..2, filterInputs:true) - Many various bug fixes and improvements to messaging, behaviour and output.