Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,32 @@
Changelog
=========

# 2.5.0
* Added `cuda` engine to `pylops.waveeqprocessing.Kirchhoff`
operator
* Added `Opbasis` and `optimal_coeff` to
`pylops.optimization.cls_sparsity.OMP`
* Added `solver` to the input parameters of the `_oneshot`
internal methods of `pylops.waveeqprocessing.AcousticWave2D`
to avoid recreating it for every shot
* Added `kwargs_fft` to `pylops.signalprocessing.FFT`,
`pylops.signalprocessing.FFT2D`, and
`pylops.signalprocessing.FFTND`
* Fix bug in `pylops.waveeqprocessing.MDD` when using
CuPy arrays for `G` and `d` with `twosided=True` and `add_negative=True`
* Fix bug in `pylops.signalprocessing.FourierRadon3D`
in the default choice of `num_threads_per_blocks`
* Fix bug in `pylops.signalprocessing.Convolve1D`
in the definition of `pad` and `padd` when applying the
operator to a CuPy array
* Fix bug in `pylops.optimization.cls_sparsity.OMP` avoiding
passing `explicit` in the creation of `_ColumnLinearOperator`
* Fix bug in `pylops.optimization.cls_sparsity.OMP` callback
method as `cols` was not passed not allowing ``x`` to be
properly reconstructed
* Fix bug in `pylops.waveeqprocessing.SeismicInterpolation`
in calculation of `sampling` when not passed

# 2.4.0
* Added `pylops.signalprocessing.FourierRadon2d` and
`pylops.signalprocessing.FourierRadon3d` operators
Expand Down
35 changes: 33 additions & 2 deletions docs/source/changelog.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,37 @@
Changelog
=========

Version 2.5.0
-------------

*Released on: 21/06/2025*

* Added `cuda` engine to :py:class:`pylops.waveeqprocessing.Kirchhoff`
operator
* Added `Opbasis` and `optimal_coeff` to
:py:class:`pylops.optimization.cls_sparsity.OMP`
* Added `solver` to the input parameters of the `_oneshot`
internal methods of :py:class:`pylops.waveeqprocessing.AcousticWave2D`
to avoid recreating it for every shot
* Added `kwargs_fft` to `pylops.signalprocessing.FFT`,
:py:class:`pylops.signalprocessing.FFT2D`, and
:py:class:`pylops.signalprocessing.FFTND`
* Fix bug in :py:func:`pylops.waveeqprocessing.MDD` when using
CuPy arrays for `G` and `d` with `twosided=True` and `add_negative=True`
* Fix bug in :py:class:`pylops.signalprocessing.FourierRadon3D`
in the default choice of `num_threads_per_blocks`
* Fix bug in :py:class:`pylops.signalprocessing.Convolve1D`
in the definition of `pad` and `padd` when applying the
operator to a CuPy array
* Fix bug in :py:class:`pylops.optimization.cls_sparsity.OMP` avoiding
passing `explicit` in the creation of `_ColumnLinearOperator`
* Fix bug in :py:class:`pylops.optimization.cls_sparsity.OMP` callback
method as `cols` was not passed not allowing ``x`` to be
properly reconstructed
* Fix bug in :py:func:`pylops.waveeqprocessing.SeismicInterpolation`
in calculation of `sampling` when not passed


Version 2.4.0
-------------

Expand Down Expand Up @@ -189,7 +220,7 @@ Version 1.18.0
* Extended :py:func:`pylops.Laplacian` to N-dimensional arrays
* Added `forward` kind to :py:class:`pylops.SecondDerivative` and
:py:func:`pylops.Laplacian`
* Added `chirp-sliding` kind to :py:class:`pylops.waveeqprocessing.seismicinterpolation.SeismicInterpolation`
* Added `chirp-sliding` kind to :py:func:`pylops.waveeqprocessing.SeismicInterpolation`
* Fixed bug due to the new internal structure of `LinearOperator` submodule introduced in `scipy1.8.0`


Expand Down Expand Up @@ -389,7 +420,7 @@ Version 1.9.1
:py:class:`pylops.signalprocessing.FFT2D` to ensure that the type of the input
vector is retained when applying forward and adjoint.
* Added ``dtype`` parameter to the ``FFT`` calls in the definition of the
:py:class:`pylops.waveeqprocessing.MDD` operation. This ensure that the type
:py:func:`pylops.waveeqprocessing.MDD` operation. This ensure that the type
of the real part of ``G`` input is enforced to the output vectors of the
forward and adjoint operations.

Expand Down
271 changes: 271 additions & 0 deletions docs/source/sg_execution_times.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,271 @@

:orphan:

.. _sphx_glr_sg_execution_times:


Computation times
=================
**00:00.703** total execution time for 79 files **from all galleries**:

.. container::

.. raw:: html

<style scoped>
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.3.0/css/bootstrap.min.css" rel="stylesheet" />
<link href="https://cdn.datatables.net/1.13.6/css/dataTables.bootstrap5.min.css" rel="stylesheet" />
</style>
<script src="https://code.jquery.com/jquery-3.7.0.js"></script>
<script src="https://cdn.datatables.net/1.13.6/js/jquery.dataTables.min.js"></script>
<script src="https://cdn.datatables.net/1.13.6/js/dataTables.bootstrap5.min.js"></script>
<script type="text/javascript" class="init">
$(document).ready( function () {
$('table.sg-datatable').DataTable({order: [[1, 'desc']]});
} );
</script>

.. list-table::
:header-rows: 1
:class: table table-striped sg-datatable

* - Example
- Time
- Mem (MB)
* - :ref:`sphx_glr_tutorials_jaxop.py` (``../../tutorials/jaxop.py``)
- 00:00.703
- 0.0
* - :ref:`sphx_glr_gallery_plot_avo.py` (``../../examples/plot_avo.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_bayeslinearregr.py` (``../../examples/plot_bayeslinearregr.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_bilinear.py` (``../../examples/plot_bilinear.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_blending.py` (``../../examples/plot_blending.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_causalintegration.py` (``../../examples/plot_causalintegration.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_cgls.py` (``../../examples/plot_cgls.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_chirpradon.py` (``../../examples/plot_chirpradon.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_conj.py` (``../../examples/plot_conj.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_convolve.py` (``../../examples/plot_convolve.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_dct.py` (``../../examples/plot_dct.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_derivative.py` (``../../examples/plot_derivative.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_describe.py` (``../../examples/plot_describe.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_diagonal.py` (``../../examples/plot_diagonal.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_dtcwt.py` (``../../examples/plot_dtcwt.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_fft.py` (``../../examples/plot_fft.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_flip.py` (``../../examples/plot_flip.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_fourierradon.py` (``../../examples/plot_fourierradon.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_identity.py` (``../../examples/plot_identity.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_imag.py` (``../../examples/plot_imag.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_ista.py` (``../../examples/plot_ista.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_l1l1.py` (``../../examples/plot_l1l1.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_linearregr.py` (``../../examples/plot_linearregr.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_matrixmult.py` (``../../examples/plot_matrixmult.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_mdc.py` (``../../examples/plot_mdc.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_multiproc.py` (``../../examples/plot_multiproc.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_nmo.py` (``../../examples/plot_nmo.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_nonstatconvolve.py` (``../../examples/plot_nonstatconvolve.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_nonstatfilter.py` (``../../examples/plot_nonstatfilter.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_pad.py` (``../../examples/plot_pad.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_patching.py` (``../../examples/plot_patching.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_phaseshift.py` (``../../examples/plot_phaseshift.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_prestack.py` (``../../examples/plot_prestack.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_radon.py` (``../../examples/plot_radon.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_real.py` (``../../examples/plot_real.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_regr.py` (``../../examples/plot_regr.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_restriction.py` (``../../examples/plot_restriction.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_roll.py` (``../../examples/plot_roll.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_seislet.py` (``../../examples/plot_seislet.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_seismicevents.py` (``../../examples/plot_seismicevents.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_shift.py` (``../../examples/plot_shift.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_sliding.py` (``../../examples/plot_sliding.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_slopeest.py` (``../../examples/plot_slopeest.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_smoothing1d.py` (``../../examples/plot_smoothing1d.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_smoothing2d.py` (``../../examples/plot_smoothing2d.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_spread.py` (``../../examples/plot_spread.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_stacking.py` (``../../examples/plot_stacking.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_sum.py` (``../../examples/plot_sum.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_symmetrize.py` (``../../examples/plot_symmetrize.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_tapers.py` (``../../examples/plot_tapers.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_tndarray.py` (``../../examples/plot_tndarray.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_transpose.py` (``../../examples/plot_transpose.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_tvreg.py` (``../../examples/plot_tvreg.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_twoway.py` (``../../examples/plot_twoway.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_wavelet.py` (``../../examples/plot_wavelet.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_wavest.py` (``../../examples/plot_wavest.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_wavs.py` (``../../examples/plot_wavs.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_gallery_plot_zero.py` (``../../examples/plot_zero.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_tutorials_bayesian.py` (``../../tutorials/bayesian.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_tutorials_classsolvers.py` (``../../tutorials/classsolvers.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_tutorials_ctscan.py` (``../../tutorials/ctscan.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_tutorials_deblending.py` (``../../tutorials/deblending.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_tutorials_deblurring.py` (``../../tutorials/deblurring.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_tutorials_deghosting.py` (``../../tutorials/deghosting.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_tutorials_dottest.py` (``../../tutorials/dottest.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_tutorials_ilsm.py` (``../../tutorials/ilsm.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_tutorials_interpolation.py` (``../../tutorials/interpolation.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_tutorials_linearoperator.py` (``../../tutorials/linearoperator.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_tutorials_lsm.py` (``../../tutorials/lsm.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_tutorials_marchenko.py` (``../../tutorials/marchenko.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_tutorials_mdd.py` (``../../tutorials/mdd.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_tutorials_poststack.py` (``../../tutorials/poststack.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_tutorials_prestack.py` (``../../tutorials/prestack.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_tutorials_radonfiltering.py` (``../../tutorials/radonfiltering.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_tutorials_realcomplex.py` (``../../tutorials/realcomplex.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_tutorials_seismicinterpolation.py` (``../../tutorials/seismicinterpolation.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_tutorials_solvers.py` (``../../tutorials/solvers.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_tutorials_torchop.py` (``../../tutorials/torchop.py``)
- 00:00.000
- 0.0
* - :ref:`sphx_glr_tutorials_wavefielddecomposition.py` (``../../tutorials/wavefielddecomposition.py``)
- 00:00.000
- 0.0