Salvus 0.11.26
This release focusses on quality of life improvements for solving the inverse problem. It includes a bunch of bug fixes as well as new features.
A new tab has been added to the inversion dashboard showing some details about model updates and the evolution of the trust-region algorithm. This grants insights into how an ongoing inversion is doing.
SalvusProject and SalvusFlow can now recover more gracefully from partially failed job arrays where only a few jobs did not finish.
Furthermore the window picking for seismological full waveform inversions is now a lot faster.
Note that plotly >= 4.12.0 is required to display the new widgets properly. To update the python environment, check the installation instructions or run
wget https://mondaic.com/environment.yml -O salvus-0.11.26.yml
conda env update -n salvus -f salvus-0.11.26.yml
.
Changes
If a few jobs in a Salvus job array failed for some reason, the output for the successfully completed jobs can now be retrieved in a much simpler way:
SalvusJobArray.copy_output(..., copy_partial_results=True)
copy_partial_results defaults to True.
The same parameter is exposed to the salvus.flow.functions.run_many() command
and also defaults to True there.
Changes to Experimental Features
Expose more parameters to steer the adaptive adjustment of the trust-region radius.
Bug fix for the gradient widget of the inversion dashboard, where previously some event-dependent gradients were not displayed correctly.
Bug fix in the SimulationConfiguration to ensure the
extra_output_configuration passed to launch overwrites additional output
values defined in the WaveformSimulationConfiguration. The output options
in the WaveformSimulationConfiguration will be deprecated in a future
release.
Add a new tab to the inversion dashboard to visualize the progress of model updates and trust-region radius.
Add a toggle button to the misfit widget to switch between absolute and relative misfits - normalized per iteration or event, respectively.
Much faster seismological window picking for some cases. Additionally it is now a bit more conservative and will not pick some sketchy windows it did not pick before. All in all the picked windows should be very similar to results from the previous version of this algorithm but a few less windows will be picked.
The p.waveforms.has_data() method now also works for synthetic data.
The partial copy of the Salvus job array results has been integrated into all parts of SalvusProject. If one or more jobs fail for a forward or an adjoint simulation, it will still raise an exception but copy all successfully completed jobs to the project folder. Any subsequent simulations launched will be aware of this and not submit the already run ones.
This makes it much easier to recover from sporadic cluster failures without having to directly modify the project directory.