This project adheres to Semantic Versioning and Keep a Changelog format.
- Migrated to new yacman API (
YAMLConfigManager.from_yaml_file(),write_lock/read_lockcontext managers); requires yacman >=0.9.5 - Migrated CLI configuration to pydantic-settings
- Improved CLI startup time by deferring heavy imports to module level
- Made signal handling thread-safe
- Replaced wildcard imports with explicit imports
- Converted docstrings to Google style
- Better shell inference for submission commands (#282)
- Updated pipestat constructor usage to classmethod format
- Separated fast unit tests from slow CLI integration tests
- HTTP API server (experimental/alpha) with FastAPI:
looper serve - Stricter looper-pipestat interface validation
- Old documentation files (moved to separate docs site)
- Remove veracitools dependency from the requirements.
- update ubiquerg>=0.8.1
This release breaks backwards compatibility for Looper versions < 2.0.0
- divvy init #520
- replaced deprecated PEPHubClient function,
_load_raw_pepwith.load_raw_pep - looper cli parameters now take priority as originally intended #518
- fix divvy inspect
- remove printed dictionary at looper finish #511
- fix #536
- fix #522
- fix #537
- fix #534
--looper-configis now--config,-c. #455- A pipeline interface now consolidates a
sample_interfaceand aproject_interface#493 - Updated documentation for Looper 2.0.0, removing previous versions pepspec PR #34
- remove position based argument for divvy config, must use --config or run as default config
looper inittutorial #466- looper config allows for
pephub_pathin pipestat config section of.looper.yaml#519 - improve error messaging for bad/malformed looper configurations #515
- add shortform argument for --package (alias is now -p)
- ensure peppy requirement peppy>=0.40.0,<=0.40.2
- user can now add cli modifiers to looper config instead of PEP project #270
- pipeline interfaces no longer must be nested under sample and project keys within looper config file #465
- var_templates can now be hierarchical #334
- looper can now gracefully halt spawned subprocesses when the user sends a keyboard interrupt #37
- added
-vand--versionto the CLI - fixed running project level with
--projectargument
- looper destroy now destroys individual results when pipestat is configured: #469
- comprehensive smoketests: #464
- allow rerun to work on both failed or waiting flags: #463
- Migrated
argparseCLI definition to a pydantic basis for all commands. See: #438 - during project load, check if PEP file path is a file first, then check if it is a registry path: #456
- Looper now uses FutureYamlConfigManager due to the yacman refactor v0.9.3: #452
- inferring project name when loading PEP from csv: #484
- fix inconsistency resolving pipeline interface paths if multiple paths are supplied: #474
- fix bug with checking for completed flags: #470
- fix looper destroy not properly destroying all related files: #468
- looper rerun now only runs failed jobs as intended: #467
- looper inspect now inspects the looper config: #462
- Load PEP from CSV: #456
- looper now works with sample_table_index #458
- pin pipestat version to be between pipestat>=0.8.0,<0.9.0 #494
--portableflag tolooper reportto create a portable version of the html report--lump-jallows grouping samples into a defined number of jobs
--lumpnis now--lump-n--lumpis now--lump-s
looper linkcreates symlinks for results grouped by record_identifier. It requires pipestat to be configured. #72- basic tab completion.
- looper now works with pipestat v0.6.0 and greater.
looper table,checknow use pipestat and therefore require pipestat configuration. #390- changed how looper configures pipestat #411
- initializing pipeline interface also writes an example
output_schema.yamlandcount_lines.shpipeline
- filtering via attributes that are integers.
- fix
looper tablefailing withoutsample.protocol
- correct
--looper_conifgto--looper-config
- ability to use PEPs from PEPhub without downloading project #341
- ability to specify pipeline interfaces inside looper config Looper Config
- divvy re-integrated in looper
- divvy inspect -p package
- Looper will now check that the command path provided in the pipeline interface is callable before submitting.
- initialization of generic pipeline interface available using subcommand
init-piface looper reportwill now use pipestat to generate browsable HTML reports if pipestat is configured.- looper now works with pipestat v0.5.0.
- Removed --toggle-key functionality.
- Allow for user to input single integer value for --sel-incl or --sel-excl
- Fix regression for var_templates expansion.
- Fix for expanding paths properly.
- preliminary support for pipestat.
- ability to skip samples using
-kor--skip#367 - ability to input a range into
limitandskip#367 limitandskipare now both usable with Destroy and Run. #367- ability to generate generic pipeline interface using
init -porinit --piface#368 - Fixed ability to use custom sample index
- Added
write_custom_template, a built-in pre-submit plugin for writing templates
- looper now returns nonzero if any samples fail submission
- various other developer changes
pathvariable will be deprecated in favor ofvar_templates#322
- Fixed bug with use_2to3 for setuptools compatibility.
- If remote schemas are not accessible, the job submission doesn't fail anymore
- Fixed a bug where looper stated "No failed flag found" when a failed flag was found
- Fixed and deprecated
looper inspect. Useeido inspectfrom now on.
- New plugin system for pre-submission hooks
- Included plugin functions:
write_sample_yaml,write_sample_yaml_prj,write_sample_yaml_cwlandwrite_submission_yaml - New
var_templatessection for defining variables in the pipeline interface
- Pipeline interface specification was updated to accommodate new
var_templatessection and pre-submission hooks
- pipeline interface sections:
dynamic_variables_command_template, which can now be more simply accomplished with a pre-submission hookpath, which is replaced by a more genericvar_templatessection
- Environment variables expansion in custom sample YAML paths; Issue 273
dynamic_variables_script_pathkey in the pipeline interface. Path, absolute or relative to the pipeline interface file; Issue 276
- Resolve project pipeline interface path by making it relative to the config not current directory; Issue 268
- Unclear error when
output_dirwas not provided in a configloopersection; Issue 286
This version introduced backwards-incompatible changes.
- Commands:
init; initializes.looper.yamlfileinspect; inspectsProjectorSampleobjectstable; writes summary stats tablerunp; runs project level pipelines
- Input schemas and output schemas
--settingsargument to specify compute resources as a YAML file- Option to preset CLI options in a dotfile
--command-extraand--command-extra-overridearguments that append specified string to pipeline commands. These functions supercede the previouspipeline_configandpipeline_argssections, which are now deprecated. The new method is more universal, and can accomplish the same functionality but more simply, using the built-in PEP machinery to selectively apply commands to samples.- Option to specify destination of sample YAML in pipeline interface
--pipeline_interfacesargument that allows pipeline interface specification via CLI
looper summarizetolooper report- Pipeline interface format changed drastically
- The PyPi name changed from 'loopercli' to 'looper'
- resources section in pipeline interface replaced with
size_dependent_attributesordynamic_variables_command_template. --computecan be used to specify arguments other than resourcesall_input_filesandrequired_input_fileskeys in pipeline interface moved to the input schema and renamed tofilesandrequired_files- pipeline interface specification
- possibility to execute library module as a script:
python -m looper ...
- in the summary page account for missing values when plotting; the value is disregarded in such a case and plot is still created
- show 50 rows in the summary table
- make links to the summary page relative
- long entries in the sample stats table are truncated with an option to see original value in a popover
- inactive jQuery dependent components in the status page
- project objects layout in the summary index page
- inactivation of popovers after Bootstrap Table events
- non-homogeneous status flags appearance
- reduce verbosity of missing options; Issue 174
- switch to Bootstrap Table in the summary index page table and sample status tables
- Ability to declare
required_executablesin aPipelineInterface, to trigger a naive "runnability" check for a sample submission - A possibility to opt out of status page inclusion in the navbar
- The status tables now use DataTables jQuery plugin to make them interactive
- Navbar links creation
- Bug in
SampleYAML naming, whereby a baseSamplewas being suffixed as a subtype would be, leading to a pipeline argument based onyaml_filethat did not exist on disk.
- Fixed various bugs related to populating derived attributes, including using attributes like
sample_nameas keys. - Fixed a bug related to singularity attributes not being passed from a pipeline interface file.
- Fixed several bugs with incorrect version requirements.
- Made
looper.Sampleinclude more specific functionality frompeppy
- Status table creation is possible outside of
looper. - In the summary index page the plottable columns list is now scrollable
- Status page relies on the
profile.tsvfile rather than*.log; Issue 159
- In HTML reporting module, do not ignore objects which are neither HTMLs nor images in the summary, e.g. CSVs
- Restore parsing and application of pipeline-level computing resource specification from a pipeline interface file; Issue 184
- Allow
ignore_flagsto properly modulate submission messaging; Issue 179 - Do not display time-like summary columns as the plottable ones; Issue 182
- First implementation of pipeline interface 'outputs', so pipeline authors can specify items of interest produced by the pipeline.
- Functions and attributes on
Projectto support "outputs" (interfaces,get_interfaces,get_outputs)
- Start "compute" --> "compute_packages" transition
get_loggermoved topeppy
- Prevent CLI option duplication in pipeline commands generated
- Make functional CLI spec of particular attribute on which to base selection of a subset of a project's samples (
peppy298)
- Improved documentation
- Improved interaction with
peppyanddivvydependencies
- Implemented
looper reruncommand. - Support use of custom
resourcesin pipeline'scomputesection - Listen for itemized compute resource specification on command-line with
--resources - Support pointing to
Projectconfig file with folder path rather than full filepath - Add
selector-attributeparameter for more generic sample selection.
- Switched to a Jinja-style templating system for summary output
- Made various UI changes to adapt to
caraveluse. - Using
attmapfor "attribute-style key-vale store" implementation - Removed Python 3.4 support.
- UI: change parameter names
in/exclude-samplestoselector-in/exclude.
PipelineInterfacenow derives frompeppy.AttributeDict.- On
PipelineInterface, iteration over pipelines now is withiterpipes. - Rename
parse_argumentstobuild_parser, which returnsargparse.ArgumentParserobject - Integers in HTML reports are made more human-readable by including commas.
- Column headers in HTML reports are now stricly for sorting; there's a separate list for plottable columns.
- More informative error messages
- HTML samples list is fully populated.
- Existence of an object lacking an anchor image is no longer problematic for
summarize. - Basic package test in Python 3 now succeeds:
python3 setup.py test.
- Fixed bugs with
looper summarizewhen no summarizers were present - Added CLI flag to force
looper destroyfor programmatic access - Fixed a bug for samples with duplicate names
- Added new display features (graphs, table display) for HTML summary output.
- Fixed several bugs with
looper summarizethat caused failure on edge cases.
- Support for custom summarizers
- Add
allow-duplicate-namescommand-line options - Allow any variables in environment config files or other
computesections to be used in submission templates. This allows looper to be used with containers. - Add nice universal project-level HTML reporting
- Minor documentation and packaging updates for first Pypi release.
- Fix a bug that incorrectly mapped protocols due to case sensitive issues
- Fix a bug with
report_figurethat made it output pandas code
- Use independent
peppypackage, replacingmodelsmodule for core data types. - Integrate
ProtocolInterfacefunctionality intoPipelineInterface.
- Correctly count successful command submissions when not using
--dry-run.
- No longer falsely display that there's a submission failure.
- Allow non-string values to be unquoted in the
pipeline_argssection.
- Add
--lumpand--lumpnoptions - Catch submission errors from cluster resource managers
- Implied columns can now be derived
- Now protocols can be specified on the command-line
--include-protocols - Add rudimentary figure summaries
- Simplifies command-line help display
- Allow wildcard protocol_mapping for catch-all pipeline assignment
- Improve user messages
- New sample_subtypes section in pipeline_interface
- Sample child classes are now defined explicitly in the pipeline interface. Previously, they were guessed based on presence of a class extending Sample in a pipeline script.
- Changed 'library' key sample attribute to 'protocol'
- Add support for implied_column section of the project config file
- Add support for Python 3
- Merges pipeline interface and protocol mappings. This means we now allow direct pointers to
pipeline_interface.yamlfiles, increasing flexibility, so this relaxes the specified folder structure that was previously used forpipelines_dir(withconfigsubfolder). - Allow URLs as paths to sample sheets.
- Allow tsv format for sample sheets.
- Checks that the path to a pipeline actually exists before writing the submission script.
- Changed LOOPERENV environment variable to PEPENV, generalizing it to generic models
- Changed name of
pipelines_dirtopipeline_interfaces(but maintained backwards compatibility for now). - Changed name of
runcolumn totoggle, sinceruncan also refer to a sequencing run. - Relaxes many constraints (like resources sections, pipelines_dir columns), making project configuration files useful outside looper. This moves us closer to dividing models from looper, and improves flexibility.
- Various small bug fixes and dev improvements.
- Require
setuptoolsfor installation, andpandas 0.20.2. Ifnumexpris installed, version2.6.2is required. - Allows tilde in
pipeline_interfaces
- Add new looper version tracking, with
--versionand-Voptions and printing version at runtime - Add support for asterisks in file paths
- Add support for multiple pipeline directories in priority order
- Revamp of messages make more intuitive output
- Colorize output
- Complete rehaul of logging and test infrastructure, using logging and pytest packages
- Removes pipelines_dir requirement for models, making it useful outside looper
- Small bug fixes related to
all_input_filesandrequired_input_filesattributes - More robust installation and more explicit requirement of Python 2.7
- New command-line interface (CLI) based on sub-commands
- New subcommand (
looper summarize) replacing thesummarizePipelineStats.Rscript - New subcommand (
looper check) replacing theflagCheck.shscript - New command (
looper destroy) to remove all output of a project - New command (
looper clean) to remove intermediate files of a project flagged for deletion - Support for portable and pipeline-independent allocation of computing resources with Looperenv.
- Removed requirement to have
pipelinesrepository installed in order to extend base Sample objects - Maintenance of sample attributes as provided by user by means of reading them in as strings (to be improved further)
- Improved serialization of Sample objects