Gimli Org Gimli Versions Save

Geophysical Inversion and Modeling Library :earth_africa:

v1.3.0

1 year ago

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 https://github.com/gimli-org/gimli/pull/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: https://github.com/gimli-org/gimli/compare/v1.2.6...v1.3.0

v1.2.6

1 year ago

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 data
  • LinearModelling based on pg.Modelling for linearized problems

Matrices

  • RepeatVMatrix, RepeatHMatrix, RepeatDMatrix for vertically/horizontally/diagonally repeated block matrices
  • FrameConstraintMatrix 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: https://github.com/gimli-org/gimli/compare/v1.2.5...v1.2.6

v1.2.1

3 years ago

v1.1.1

3 years ago

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

4 years ago

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:

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 of pg.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 and pg.Modelling are now pure Python.
  • main inversion loop now in Python
  • rewritten Refraction as TravelTimeManager
  • rewritten ERTManager to replace pybert.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 output
  • DataContainer and Mesh data values can and should be accessed with index operator e.g. t = data['t']or mesh['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

4 years ago
conda install -c gimli -c conda-forge pygimli=1.0.12 # Win & Linux!

bug

  • [bug] Problem using fatray #188
  • [bug] pg.solver.solveFiniteElements(mesh, a=1.0, b=0...) does not work if b is set as a field #181

v1.0.11

5 years ago
conda install -c gimli -c conda-forge pygimli=1.0.11 # currently Linux only

bug

  • [bug] Examples Raypaths, Layered Example not working #167

closed

  • [closed] Trying the Field data inversion (“Koenigsee”) example #164
  • [closed] Question -ModuleNotFoundError: No module named 'pygimli' #160

v1.0.10

5 years ago

Changes

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

v1.0.9

5 years ago
conda install -c gimli pygimli=1.0.9 # currently Linux only

New functionality

Other changes

v1.0.8

5 years ago

New functionality

Closed

  • [closed] pygimli.frameworks.harmfit does not work with numpy integers for nc #143

Changes

  • mt.mergePLC recognize node on edge touching (not vice versa)
  • show now checks for used 2d coordinates (x,y) or (x,z)
  • mesh.createNodeWithCheck can now check for edge touching and split the edge on hit
  • renamed: mesh.extract to mesh.createSubMesh