Problem
As a use of the solvis library I want a simple, intuitive way to change rupture rates of an InversionSolution. Uses cases include:
- Scaling rates of all rutpures. Currently implemented as
InversionSolution.scale_rupture_rates(...)
- Creating a new solution that has the mean rates of two or more solutions. This requires adding rates from each solution and then scaling by the inverse of the number of input solutions.
Proposal
Follow the Pandas and Numpy convention for arithemetic operations on pandas.DataFrame pandas.Series numpy.ndarray.e.g.
import pandas as pd
>>> ds = pd.Series(data=[1.0 ,2.0])
>>> ds
0 1.0
1 2.0
dtype: float64
>>> ds2 = pd.Series(data=[2.0 ,4.0])
>>> ds2
0 2.0
1 4.0
dtype: float64
>>> ds + 5.5
0 6.5
1 7.5
dtype: float64
>>> ds * 2.0
0 2.0
1 4.0
dtype: float64
>>> ds + ds2
0 3.0
1 6.0
dtype: float64
>>> ds * ds2
0 2.0
1 8.0
dtype: float64
>>> ds / ds2
0 0.5
1 0.5
dtype: float64
Having specific methods for every operation requires more documentation, is harder for users to discover, and requires a new version release to implement new operations of this type.
solivs rate operations would then look like:
>>> solution1 = solvis.InversionSolution.from_archive(filename1)
>>> solution2 = solvis.InversionSolution.from_archive(filename2)
>>> solution3 = solution1 + solution2
>>> solution4 = solution3 * 0.5
Done Criteria
We would implement the following magic methods on InversionSolution:
Questions
- what happens if a call with two
InversionSolution operands do not have the same number of rutprues? Raise an exception? Union the ruptures?
- do we worry about protecting users from combining
InversionSolution objects with the same number of ruptures, but those ruptures are not identical? This is unlikely, though technically possible.
Problem
As a use of the solvis library I want a simple, intuitive way to change rupture rates of an
InversionSolution. Uses cases include:InversionSolution.scale_rupture_rates(...)solvis/solvis/solution/inversion_solution/inversion_solution.py
Line 179 in 69a69f4
Proposal
Follow the Pandas and Numpy convention for arithemetic operations on
pandas.DataFramepandas.Seriesnumpy.ndarray.e.g.Having specific methods for every operation requires more documentation, is harder for users to discover, and requires a new version release to implement new operations of this type.
solivsrate operations would then look like:Done Criteria
We would implement the following magic methods on
InversionSolution:__add____sub____mul____truediv__Questions
InversionSolutionoperands do not have the same number of rutprues? Raise an exception? Union the ruptures?InversionSolutionobjects with the same number of ruptures, but those ruptures are not identical? This is unlikely, though technically possible.