You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+68Lines changed: 68 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,3 +1,71 @@
1
+
# 2.0.0
2
+
PyLops has undergone significant changes in this release, including new ``LinearOperator``s, more features, new examples and bugfixes.
3
+
To aid users in navigating the breaking changes, we provide the following document [MIGRATION_V1_V2.md](https://github.com/PyLops/pylops/blob/dev/MIGRATION_V1_V2.md).
4
+
5
+
### New Features
6
+
7
+
* Multiplication of linear operators by N-dimensional arrays is now supported via the new ``dims``/``dimsd`` properties.
8
+
Users do not need to use ``.ravel`` and ``.reshape`` as often anymore. See the migration guide for more information.
9
+
* Typing annotations for several submodules (``avo``, ``basicoperators``, ``signalprocessing``, ``utils``, ``optimization``, ``waveeqprocessing``)
10
+
* New [pylops.TorchOperator](https://pylops.readthedocs.io/en/latest/api/generated/pylops.TorchOperator.html#pylops.TorchOperator)
11
+
wraps a Pylops operator into a PyTorch function
12
+
* New [pylops.signalprocessing.Patch3D](https://pylops.readthedocs.io/en/latest/api/generated/pylops.signalprocessing.Patch3D.html)
13
+
applies a linear operator repeatedly to patches of the model vector
14
+
* Each of [Sliding1D](https://pylops.readthedocs.io/en/latest/api/generated/pylops.signalprocessing.Sliding1D.html),
* New [pylops.waveeqprocessing.AcousticWave2D](https://pylops.readthedocs.io/en/latest/api/generated/pylops.waveeqprocessing.AcousticWave2D.html) wraps the [Devito](https://www.devitoproject.org/)
28
+
acoutic wave propagator providing a wave-equation based Born modeling operator with a reverse-time migration adjoint
29
+
* Solvers can now be implemented via the [pylops.optimization.basesolver.Solver](https://pylops.readthedocs.io/en/latest/api/generated/pylops.optimization.basesolver.Solver.html) class.
30
+
They can now be used through a functional interface with lowercase name (e.g., [splitbregman](https://pylops.readthedocs.io/en/latest/api/generated/pylops.optimization.sparsity.splitbregman.html))
31
+
or via class interface with CamelCase name (e.g., [SplitBregman](https://pylops.readthedocs.io/en/latest/api/generated/pylops.optimization.cls_sparsity.SplitBregman.html)).
32
+
Moreover, solvers now accept callbacks defined by the [Callbacks](https://pylops.readthedocs.io/en/latest/api/generated/pylops.optimization.callback.Callbacks.html)
33
+
interface (see e.g., [MetricsCallback](https://pylops.readthedocs.io/en/latest/api/generated/pylops.optimization.callback.MetricsCallback.html)).
34
+
*[Metrics](https://pylops.readthedocs.io/en/latest/api/others.html#metrics) such as [mean absolute error (mae)](https://pylops.readthedocs.io/en/latest/api/generated/pylops.utils.metrics.mae.html#pylops.utils.metrics.mae), [mean squared error (mse)](https://pylops.readthedocs.io/en/latest/api/generated/pylops.utils.metrics.mse.html#pylops.utils.metrics.mse) and others
35
+
* New [pylops.utils.signalprocessing.dip_estimate](https://pylops.readthedocs.io/en/latest/api/generated/pylops.utils.signalprocessing.dip_estimate.html)
36
+
estimates local dips in an image (measured in radians) in a stabler way than [pylops.utils.signalprocessing.dip_estimate](https://pylops.readthedocs.io/en/latest/api/generated/pylops.utils.signalprocessing.slope_estimate.html) did for slopes.
37
+
* New [pylops.utils.tapers.tapernd](https://pylops.readthedocs.io/en/latest/api/generated/pylops.utils.tapers.tapernd.html) for N-dimensional tapers
38
+
* New wavelets [Klauder](https://pylops.readthedocs.io/en/latest/api/generated/pylops.utils.wavelets.klauder.html) and [Ormsby](https://pylops.readthedocs.io/en/latest/api/generated/pylops.utils.wavelets.ormsby.html)
39
+
40
+
### Documentation
41
+
42
+
*[Installation](https://pylops.readthedocs.io/en/latest/installation.html) has been revamped
43
+
* Revamped guide on how to [implement a new `LinearOperator` from scratch](https://pylops.readthedocs.io/en/latest/adding.html)
44
+
* New guide on how to [implement a new solver from scratch](https://pylops.readthedocs.io/en/latest/addingsolver.html)
Copy file name to clipboardExpand all lines: CONTRIBUTING.md
+45-23Lines changed: 45 additions & 23 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,10 +2,17 @@
2
2
3
3
Contributions are welcome and greatly appreciated!
4
4
5
+
The best way to get in touch with the core developers and maintainers is to
6
+
join the [PyLops slack channel](https://pylops.slack.com/) as well as
7
+
open new *Issues* directly from the GitHub repo.
5
8
6
-
## Types of Contributions
9
+
Moreover, take a look at the [Roadmap](https://pylops.readthedocs.io/en/stable/roadmap.html)
10
+
page for a list of current ideas for improvements and additions to the PyLops library.
7
11
8
-
### Report Bugs
12
+
13
+
## Welcomed contributions
14
+
15
+
### Bug reports
9
16
10
17
Report bugs at https://github.com/PyLops/pylops/issues
11
18
@@ -16,7 +23,7 @@ reporting it including:
16
23
* Any details about your Python environment.
17
24
* Detailed steps to reproduce the bug.
18
25
19
-
### Propose New Operators or Features
26
+
### New operators and features
20
27
21
28
The best way to send feedback is to open an issue at
22
29
https://github.com/PyLops/pylops/issues
@@ -27,52 +34,57 @@ If you are proposing a new operator or a new feature:
27
34
* Explain in detail how it should work.
28
35
* Keep the scope as narrow as possible, to make it easier to implement.
29
36
30
-
### Implement Operators or Features
31
-
Look through the Git issues for operator or feature requests.
32
-
Anything tagged with *enhancement* is open to whoever wants to
33
-
implement it.
37
+
### Fix issues
38
+
There is always a backlog of issues that need to be dealt with.
39
+
Look through the GitHub Issues for operator/feature requests or bugfixes.
34
40
35
-
### Add Examples or improve Documentation
41
+
### Add examples or improve documentation
36
42
Writing new operators is not the only way to get involved and
37
43
contribute. Create examples with existing operators as well as
38
44
improving the documentation of existing operators is as important
39
45
as making new operators and very much encouraged.
40
46
41
47
42
-
## Getting Started to contribute
48
+
## Step-by-step instructions for contributing
43
49
44
50
Ready to contribute?
45
51
46
-
1.Fork the `PyLops` repo.
52
+
1.Follow all installation instructions in the [Step-by-step installation for developers](https://pylops.readthedocs.io/en/stable/installation.html#step-by-step-installation-for-developers) section of the documentation.
47
53
48
-
2.Clone your fork locally:
54
+
2.Create a branch for local development, usually starting from the dev branch:
3. Follow the installation instructions for *developers* that you find
54
-
in the README.md or in the online documentation.
55
-
Ensure that you are able to *pass all the tests before moving forward*.
56
-
57
-
4. Create a branch for local development:
60
+
3. When you're done making changes, check that your code follows the guidelines for [Implementing new operators](https://pylops.readthedocs.io/en/stable/adding.html) and
61
+
that the both old and new tests pass successfully:
58
62
```
59
-
git checkout -b name-of-your-branch
63
+
make tests
60
64
```
61
-
Now you can make your changes locally.
62
65
63
-
5. When you're done making changes, check that old and new tests pass
64
-
succesfully:
66
+
4. Run flake8 to check the quality of your code:
65
67
```
66
-
make tests
68
+
make lint
67
69
```
70
+
Note that PyLops does not enforce full compliance with flake8, rather this is used as a
71
+
guideline and will also be run as part of our CI.
72
+
Make sure to limit to a minimum flake8 warnings before making a PR.
73
+
74
+
5. Update the docs
75
+
```
76
+
make docupdate
77
+
```
68
78
69
-
6. Commit your changes and push your branch to GitLab::
79
+
6. Commit your changes and push your branch to GitHub:
70
80
```
71
81
git add .
72
82
git commit -m "Your detailed description of your changes."
73
83
git push origin name-of-your-branch
74
84
```
75
85
Remember to add ``-u`` when pushing the branch for the first time.
86
+
We recommend using [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/#summary)
87
+
to format your commit messages, but this is not enforced.
76
88
77
89
7. Submit a pull request through the GitHub website.
78
90
@@ -83,3 +95,13 @@ Before you submit a pull request, check that it meets these guidelines:
83
95
84
96
1. The pull request should include new tests for all the core routines that have been developed.
85
97
2. If the pull request adds functionality, the docs should be updated accordingly.
98
+
3. Ensure that the updated code passes all tests.
99
+
100
+
## Project structure
101
+
This repository is organized as follows:
102
+
* **pylops**: Python library containing various linear operators and auxiliary routines
103
+
* **pytests**: set of pytests
104
+
* **testdata**: sample datasets used in pytests and documentation
105
+
* **docs**: Sphinx documentation
106
+
* **examples**: set of python script examples for each linear operator to be embedded in documentation using sphinx-gallery
107
+
* **tutorials**: set of python script tutorials to be embedded in documentation using sphinx-gallery
0 commit comments