Skip to content

v0.7.0-beta.1

Pre-release
Pre-release

Choose a tag to compare

@transientlunatic transientlunatic released this 01 Jun 17:21

This is the first beta release of asimov 0.7 — the largest architectural update since the 0.4 rewrite.
It is intended for early adopters and those migrating existing 0.6 projects.
The core feature set is stable; a release candidate will follow once any issues surfaced during beta testing are resolved.

Install from PyPI:

pip install asimov==0.7.0b1

What's new since 0.6

State machine monitor

The asimov monitor loop has been completely rewritten around a state machine pattern.
Each analysis transitions through well-defined states (waiting → running → finished / failed) with explicit hooks at each boundary.
This makes the control flow easier to reason about, enables pipeline-specific handlers, and provides a stable extension point for plugins.

Flexible dependency system

Analyses can now express complex dependencies using property-based filters and boolean logic (AND / OR / NOT), with optional staleness tracking and workflow graph integration.
The old flat needs: list still works for simple cases; the extended syntax is opt-in.

Strategy expansion

A single blueprint can now expand into a family of analyses by providing a parameter matrix under the strategies: key.
This replaces the previous pattern of duplicating blueprints by hand for parameter studies or systematic variations.

Python API

A programmatic API for project creation and management has been added, with context manager support:

from asimov import Project

with Project.open("path/to/project") as project:
    for event in project.events:
        print(event.name, event.status)

Slurm scheduler support

Asimov now ships a full Slurm backend alongside the existing HTCondor one.
Workflow DAGs are translated bidirectionally, so a blueprint written for HTCondor runs unchanged on a Slurm cluster.
End-to-end CI coverage for Slurm has been added.

Blueprint validator

Blueprints are now validated before being applied to the project, catching configuration errors early with clear error messages rather than silent misbehaviour at job submission time.

Prior handling

Prior specifications are now validated with pydantic, giving type-safe, structured prior objects with clear error messages when required fields are missing or malformed.

Enhanced HTML reports

The monitoring report now includes:

  • Graph-based workflow visualisation with interactive modal popups
  • Review status display
  • Advanced filtering by analysis state
  • Correct rendering of subject analysis summaries

PESummary as SubjectAnalysis

PESummary post-processing is now expressed as a SubjectAnalysis, giving it access to results from multiple subsidiary analyses and making its dependencies explicit and optional.

Miscellaneous

  • Logging: file logging is now lazy (no log file created for read-only commands) and thread-safe.
  • Build system: migrated from setup.py to pyproject.toml.
  • Legacy cleanup: calibration categories removed; hardcoded git branch assumptions removed.
  • Post-monitor hook errors are now logged with a full traceback rather than silently swallowed.
  • asimov apply --update robustly handles productions with null or variably-structured metadata.

Breaking changes

Waveform minimum frequency location

minimum frequency must now be placed inside the waveform block of a blueprint.
Placement under quality or likelihood was deprecated in 0.6 and is now a hard error — asimov will raise a ValueError and refuse to apply the blueprint.

# Before (0.6 — no longer accepted)
quality:
  minimum frequency:
    H1: 20
    L1: 20

# After (0.7+)
waveform:
  minimum frequency:
    H1: 20
    L1: 20

Monitor loop behaviour

The state machine refactor changes when and how pipeline handlers are called.
Projects running custom monitor hooks may need minor updates; the error message will indicate what is expected.

Dependency specification syntax

The extended dependency syntax (property:, any:, all:, not:) is new in 0.7.
Simple needs: lists are unchanged.
If you have manually constructed ledger entries that relied on undocumented internal dependency resolution behaviour, review them against the updated documentation.

Prior specification format

Priors are now validated by pydantic models.
Prior specifications that relied on undocumented fields or non-standard types may raise validation errors on first use.


What's next

The release candidate (v0.7.0-rc.1) will follow once any issues surfaced during beta are addressed.
The final release will be v0.7.0.

Please report issues at https://github.com/etive-io/asimov/issues.