Releases: gimli-org/gimli
Releases · gimli-org/gimli
v1.4.0
What's Changed
- add support for Mac OS (Apple Silicon chips) again by @carsten-forty2, @andieie & @florian-wagner
- update gimliuses.bib by @aurorec in #495 and other new papers
- separat VES related stuff from physics.ERT as own module physics.VES
- switch several tutorials (VES, Polyfit, DC+EM joint inversion) to modern (pg>1.2) framework styles
- new example additional Constraints (example layer interface in VES)
- three new ERT examples on 2D crosshole, 3D surface and 3D crosshole geometries
- new function
extract2dSlice
for slicing 3D models into 2D meshes by using PyVista - widely avoid use of pg.core functions by sorting them into math, matrix etc.
- simplify passing keyword arguments to inversion (e.g. C=, Ctype=)
- extended docstrings and doctests, improvements of webpage
- lots of bug fixes (e.g. loading duplicate sensors) and new tests to prevent bugs
- fix error in FDEM modelling for small distances and large elevations
New Contributors
Full Changelog: v1.3.1...v1.4.0
v1.3.1
What's Changed
- Add scooby-report as pg.Report() by @prisae in #445
- update of CSS styles and sphinx themes for website
- add 3D magnetics modelling and inversion with example
- new tutorials on meshes, datacontainers, regularization, region control and prior data (from Transform 2022)
- re-structure examples, e.g. induced polarization in own section
- update of several examples to modern styles
- add some 3D slicing functions by using pyVista
- fix matplotlib>3.5 bugs by enabling Vector[np.newaxis
- lots of bug fixes
- improvement of documentation and test coverage
New Contributors
Full Changelog: v1.3.0...v1.3.1
v1.3.0
What's Changed
- change release schedule (version numbering) so that core updates are MAJOR.MINOR.0 and pure Python updates are counting the patch number
- add jupyter backend
panel
for 3D pyvista plots in Jupyter Notebook by @andieie in #364 - add several logical matrices: TransposeMatrix, SquaredMatrix, SquaredTransposeMatrix additionally to horizontally, vertically or diagonally combined matrices
- add Python-based inverse solvers such as LSQR, CGLS, RRLS
- introduce LSQR-based inversion framework for including parameter constraints (Wagner et al. 2019)
- cleanup frameworks to follow v1.2 API
- improve traveltime manager for gradient models under topography and extracting raypaths
- add more functionality for 3D mesh generation using
pg.meshtool.createParaMeshPLC3D
- add more synthetic sugar like
pg.show(mesh, "property")
, - add more examples, particularly involving 3D plots, improve and cleanup existing examples
- improve docstrings and test coverage
- fix lots of minor and some major bugs
- improve code readability
Full Changelog: v1.2.6...v1.3.0
v1.2.6
General
- lots of bug fixes and minor improvements
- extend documentation and test coverage
- fix problems with matplotlib versions >= 3.5
- allow negative indices into pg Vectors
- symlog transformation
pg.trans.TransSymLog
(for signed logarithmically distributed data)
Inversion
- clearer starting model behavious
- clarify reference model behaviour by
invert(isReference=True)
(by default False! before accidentially True) - regularization API:
inv.setRegularization()
- geostatistical regularization by using
correlationLengths=[Ix, Iy, Iz]
(so far only global) regularization
Modelling
PriorModelling
class for both demonstration purposes and incorporation of prior dataLinearModelling
based onpg.Modelling
for linearized problems
Matrices
RepeatVMatrix
,RepeatHMatrix
,RepeatDMatrix
for vertically/horizontally/diagonally repeated block matricesFrameConstraintMatrix
for regularizing (spatially, temporally or spectrally) constraints in frame (multiple models) inversion
Frameworks
- Multi-frame (e.g. timelapse) framework
pg.frameworks.MultiFrameModelling
SIPSpectrum: double Coule-Cole fit with various options (resistivity/Pelton vs. conductivity, tau definition, add vs. mult)
ERT: generateDataPDF
Full Changelog: v1.2.5...v1.2.6
Version used at Transform2021
v1.2.1 Version presented at Transform 21
v1.1.1
API change
- [API change] Restructuring / API / default changes for 1.1 #124
- [API change] Move pg.mplviewer to pg.viewer.mpl #121
building and distribution
- [building and distribution][documentation] Python 3.6 Win64 1.0.12 Wheel missing #214
- [building and distribution][testing] New structure for testdata #62
closed
- [closed] Save results of seismic tomography inversion #264
- [closed] traveltime tomography with close geometry #258
- [closed] how to display pseudosection and phiM and phiD curves and tikhonov curves in ERT #257
- [closed] Jacobian matrix for homogeneous model in ERT #252
- [closed] petrophysical joint inversion of ERT and SRT #251
- [closed] error installing pyBERT on python notebook #249
- [closed] Pygimli and seismic reflection #248
- [closed] [QUESTION] complex resistivity inversion #247
- [closed] ERT inversion with geostatistical regularization #246
- [closed] Missing Method in Update to 1.1 #244
- [closed] Cannot add data to VTK export #242
- [closed] [Question] ERT simulate - values in the data container #240
- [closed] Is it possible to use the c++ core in c++ programming #238
- [closed] how to set b as a velocity field in the solveFiniteElements module #237
- [closed] ERT Field Data With Topography #236
- [closed] New to Git Hub: Issues with Update from 1.0 to 1.1 #235
- [closed] Trivel-time / distance plot #234
- [closed] Refraction Result to pyqtgraph #233
- [closed] pygimli.viewer.mpl not found #231
- [closed] TravelTimeManager in pg1.1 #230
- [closed] Data not shown #229
- [closed] Conda packages for Mac OS? #201
- [closed] not able to import gmsh file in pygimli #197
enhancement
- [enhancement][feature request] Basic pg.viewer support for 3D visualizations #15
v1.1.0
Release presented at EGU2020: https://doi.org/10.5194/egusphere-egu2020-18751
conda install -c gimli -c conda-forge pygimli=1.1.0 # Win, Linux and Mac!
Main changes:
- repository restructuring (Python part now at root level)
- improved API documentation and website
- improved and cleaned frameworks: https://www.pygimli.org/pygimliapi/_generated/pygimli.frameworks.html
- 3D viewer based on PyVista: https://www.pygimli.org/pygimliapi/_generated/pygimli.viewer.pv.html
API renaming & namespace clean-up
pg.mplviewer
- >pg.viewer.mpl
pg.RVector
->pg.Vector
pg.RMatrix
->pg.Matrix
- new module
pg.math
(cos, cot, sin, det, exp10, median, randn, rms, etc.) - new module
pg.matrix
(Vector, BlockMatrix, etc.) - core (C++) members now explicitly in
pg.core.coreMember
instead ofpg.coreMember
Default changes in viewer
logScale=False
colorBar=True
New syntactic sugar
pg.physics.ert.simulate
pg.physics.ert.createGeometricFactors
pg.fit
: run curvefit with ParameterInversion.
Provide function for a curve, data and dataspace and the curve will be fitted with some automagic- expose
abs
to pg.core objects. e.g.abs(pg.Vector), abs(CVector), abs(R3Vector)
pg.x(obj), pg.y(obj)
, returns x coordinates for obj (Mesh, DataContainer, R3Vector .. everywhere where we think it can be useful)
Meshtools
- Spline interpolation in
createPolygon
- support for 3D PLC (may replace bert.polytools (out-of-core))
e.g.,meshtools.polytools.createCube, createCyinder, extrude, createFacet, createMesh(3dplc)
- mergePLC works with 3D objects too .. only touching a smaller on a bigger object for now
- nice pyVista target if calling
pg.show
with 3D objects (mesh, PLC) - object conversion from meshio meshes (https://pypi.org/project/meshio/)
Frameworks
- base classes
pg.Inversion
andpg.Modelling
are now pure Python. - main inversion loop now in Python
- rewritten
Refraction
asTravelTimeManager
- rewritten
ERTManager
to replacepybert.Resistivity
Config
- pg.rc dictionary for global-user specific settings
- basic support for appearance support:
pg.unit()
,pg.cmap()
gives default names and default color maps for your desired physical parameters
only res and vel for now ... will grow on demand
Logging
- colored terminal output
pg.debug(), pg.info(), pg.error() and pg.critical()
, the latter throws an exception, the other give colored output based on python logger class- debug level can be set on command line argument
--debug
or-d
Caching
- on-disk cache for single functions with decorator
@pg.cache
e.g.:
@pg.cache
def func(args, **kwargs):
return result
- cache hash depends on function body,
pg.version
, and hashable args and kwargs - cached values are either single-returned hashable
pg.core
objects or multiple numpy objects - hash values for some Python and
pg.core
objects - you can turn off caching with command line
--noCache
FE solver
- support for complex values and anisotropy matrix
- boundary conditions are now provided as dictionary
Misc
print(Datacontainer)
gives more outputDataContainer
andMesh
data values can and should be accessed with index operator
e.g.t = data['t']
ormesh['resistivity'] = model
- renamed all cmap arguments to
cMap
pg.wait()
is obsolete at end of script, any pending MPL figures will be opened
automatically if using a non-interactive backend based on qt or wx
Tests
- many new tests available
v1.0.12
v1.0.11
v1.0.10
Changes
- improved handling of region markers during mesh creation (PR #157 by @m-weigand)
- fixed marker bug for coverage mapping (145dbad)
- Matplotlib 3.0 support
Closed issues
bug
- [bug] drawField does not work for very small values #136
- [bug] potential wrong reference to const & RMatrix() const in python bindings #61
closed
- [closed] Parameter check in createRectangle #158
- [closed] Mesh creation: marker parameter not always honored #152
feature request
- [feature request] Support vtk STRUCTURED_GRID Dataset #87
Misc
fixes
- polyCreate* that does not use leftDirection.
- wrong Neumann BC scaling,
adds
- dataContainerERT.addFourPointData accept now also values
- pygimli/core/datacontainer.py for easy extentions
- createCylinder(OOC: polytools), createMesh() accecpt 3D PLC and now tries a systemcall for tetgen
- dataIndex(), dataContainer.sortSensorIndex() returns now sorting indieces.
- isGeometry flag for core.Mesh. If set meshtool automatic check for duplicated nodes.
- BlockMatrix to sparseMap conversion
- argument for solver.linSolver to change solving backend
doc
- slight changes to interpolation api docs