Yesterday I pushed a new release of bruges to Python's main package repository, PyPi. Version 0.3.3 might not sound like an especially auspicious version perhaps, but I'm excited about the new things we've added recently. It has come a long way since we announced it back in 2015, so if you haven't checked it out lately, now's a good time to take another look.
What is bruges again?
Bruges is a...
In other words, nothing fancy — just equations. It is free, open source software. It's aimed at geophysicists who use Python.
How do you install it? The short answer is pip:
pip install bruges
So what's new?
Here are the highlights of what's been improved and added in the last few months:
- The reflectivity equations in
reflectionmodule now work on arrays for the Vp, Vs, and rho values, as well as the theta values. This is about 10 times faster than running a loop over elements; the Zoeppritz solution is 100× faster.
- The various Zoeppritz solutions and the Aki–Richards approximations now return the complex reflectivity and therefore show post-critical amplitudes correctly.
- A new reflection coefficient series function,
reflection.reflectivity(), makes it easier to compute offset reflectivities from logs.
- Several new linear and non-linear filters are in
median(good for seismic horizons),
mode(good for waveform classification), symmetric nearest-neighbours or
- The wavelets
sweep()(aka Klauder) and
ormsby()wavelet now all work for a sequence of frequencies, returning a wavelet bank. Also added a
sinc()wavelet, with a taper option to attenuate the sidelobes.
inverse_gardner, and other density and velocity transforms, to
transform.v_avg()(average velocity) and
transform.v_bac()(naïve Backus average). These all operate in a 'cumulative' average-down-to sense.
- Added a coordinate transformation to translate between arbitrarily oriented (x,y) and (inline, line) coordinates.