Skip to content

Releases: gimli-org/gimli

v1.2.6

07 Jun 09:51
Compare
Choose a tag to compare

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: v1.2.5...v1.2.6

Version used at Transform2021

18 Apr 18:47
Compare
Choose a tag to compare
v1.2.1

Version presented at Transform 21

v1.1.1

01 Apr 19:11
Compare
Choose a tag to compare

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

07 May 11:52
Compare
Choose a tag to compare

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

28 Oct 17:22
9962fe8
Compare
Choose a tag to compare
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

03 Apr 12:20
Compare
Choose a tag to compare
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

04 Jan 10:59
Compare
Choose a tag to compare

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

v1.0.9

30 Oct 11:18
Compare
Choose a tag to compare
conda install -c gimli pygimli=1.0.9 # currently Linux only

New functionality

  • Support for secondary nodes in traveltime calculations (following Giroux & Larouche, 2013; http://dx.doi.org/10.1016/j.cageo.2012.12.005)

    • New mesh method mesh.createSecondaryNodes(numberOfSecNodes)
    • New argument when setting mesh in RefractionManager rst.setMesh(mesh, numberOfSecNodes)
  • New method to visualize raypaths: rst.showRayPaths() (a89eb2c, API Doc)

Other changes

  • Fix RValue conversion bug (172c31f)
  • Automatic detection of inline backend (improves pg.show() usage in Jupyter Notebooks) (207680e)
  • Allow for cmap and other kwargs in rst.showVA() (096d02d)
  • Fix compatibility issue with pytest 3.8 (ba59307)

v1.0.8

27 Sep 17:27
Compare
Choose a tag to compare

New functionality

  • automatic type conversion for Numpy scalars (34041b0)
  • automatic type conversion numpy.ndarray to BVector
  • expose abs(RVector), abs(R3Vector) and abs(CVector). No need for pg.abs anymore.
  • expose log(RVector). No need for pg.log anymore.
  • add STL reading support for multiple soldis
  • add basic operatores +/- for IVector

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

v1.0.7

04 Aug 10:48
Compare
Choose a tag to compare

bug

  • [bug] Zero or one-based sensor indexing for traveltime data container? #141

closed

  • [closed] Retrieve pyGIMLi version is 'untagged' #137
  • [closed] marker view with pg.show() #135

fixes:

  • pure singe region now build correct interregion constraints without region file
  • passive body cem problem in bert fop
  • *Vector < operator
  • mesh bounding box problem for post createNode

add:

  • repr for pg.Node.
  • pg.load for *.collect files
  • circular flag for patchValMap
  • DataContainer.remove(BVector)
  • showNodes flag to drawPLC
  • boundingbox syntax sugar

remove:

  • DataContainer.filter