Releases: gimli-org/gimli
Releases · gimli-org/gimli
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
v1.0.9
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 mesh method
-
New method to visualize raypaths:
rst.showRayPaths()
(a89eb2c, API Doc)
Other changes
v1.0.8
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
bug
- [bug] Zero or one-based sensor indexing for traveltime data container? #141
closed
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