mpl.figure() mpl.title('L-curve: triangle marks the best solution') tomo.plot_lcurve() print "Estimated regularization parameter: %g" % (tomo.regul_param_) # Calculate and print the standard deviation of the residuals # Should be close to the data error if the inversion was able to fit the data residuals = tomo.residuals() print "Assumed error: %g" % (error) print "Standard deviation of residuals: %g" % (np.std(residuals)) mpl.figure(figsize=(14, 5)) mpl.subplot(1, 2, 1) mpl.axis('scaled') mpl.title('Vp model') mpl.squaremesh(model, prop='vp', cmap=mpl.cm.seismic) cb = mpl.colorbar() cb.set_label('Velocity') mpl.points(src_loc, '*y', label="Sources") mpl.points(rec_loc, '^r', label="Receivers") mpl.legend(loc='lower left', shadow=True, numpoints=1, prop={'size': 10}) mpl.m2km() mpl.subplot(1, 2, 2) mpl.axis('scaled') mpl.title('Tomography result') mpl.squaremesh(mesh, prop='vp', vmin=4000, vmax=10000, cmap=mpl.cm.seismic) cb = mpl.colorbar() cb.set_label('Velocity') mpl.m2km() mpl.figure() mpl.grid()
mpl.figure() mpl.title('L-curve: triangle marks the best solution') tomo.plot_lcurve() print "Estimated regularization parameter: %g" % (tomo.regul_param_) # Calculate and print the standard deviation of the residuals # Should be close to the data error if the inversion was able to fit the data residuals = tomo.residuals() print "Assumed error: %g" % (error) print "Standard deviation of residuals: %g" % (np.std(residuals)) mpl.figure(figsize=(14, 5)) mpl.subplot(1, 2, 1) mpl.axis('scaled') mpl.title('Vp model') mpl.squaremesh(model, prop='vp', cmap=mpl.cm.seismic) cb = mpl.colorbar() cb.set_label('Velocity') mpl.points(src_loc, '*y', label="Sources") mpl.points(rec_loc, '^r', label="Receivers") mpl.legend(loc='lower left', shadow=True, numpoints=1, prop={'size': 10}) mpl.m2km() mpl.subplot(1, 2, 2) mpl.axis('scaled') mpl.title('Tomography result') mpl.squaremesh(mesh, prop='vp', vmin=4000, vmax=10000, cmap=mpl.cm.seismic) cb = mpl.colorbar() cb.set_label('Velocity') mpl.m2km() mpl.figure()
# non-linear. So we need to configure fit to use the Levemberg-Marquardt # algorithm, a gradient descent method, that requires an initial estimate tomo.config('levmarq', initial=0.0005*numpy.ones(mesh.size)).fit() residuals = tomo.residuals() mesh.addprop('vp', tomo.estimate_) # Calculate and print the standard deviation of the residuals # it should be close to the data error if the inversion was able to fit the data print "Assumed error: %f" % (error) print "Standard deviation of residuals: %f" % (numpy.std(residuals)) mpl.figure(figsize=(14, 5)) mpl.subplot(1, 2, 1) mpl.axis('scaled') mpl.title('Vp synthetic model of the Earth') mpl.squaremesh(model, prop='vp', vmin=vmin, vmax=vmax, cmap=mpl.cm.seismic) cb = mpl.colorbar() cb.set_label('Velocity') mpl.points(src_loc, '*y', label="Sources") mpl.points(rec_loc, '^r', label="Receivers") mpl.legend(loc='lower left', shadow=True, numpoints=1, prop={'size':10}) mpl.m2km() mpl.subplot(1, 2, 2) mpl.axis('scaled') mpl.title('Tomography result (sharp)') mpl.squaremesh(mesh, prop='vp', vmin=vmin, vmax=vmax, cmap=mpl.cm.seismic) cb = mpl.colorbar() cb.set_label('Velocity') mpl.m2km() mpl.figure()
""" Meshing: Generate a SquareMesh and get the physical properties from an image """ import urllib from fatiando import logger, mesher from fatiando.vis import mpl log = logger.get() log.info(logger.header()) log.info(__doc__) # Make a square mesh mesh = mesher.SquareMesh((0, 5000, 0, 5000), (150, 150)) # Fetch the image from the online docs urllib.urlretrieve( 'http://fatiando.readthedocs.org/en/latest/_static/logo.png', 'logo.png') # Load the image as the P wave velocity (vp) property of the mesh mesh.img2prop('logo.png', 5000, 10000, 'vp') mpl.figure() mpl.title('P wave velocity model of the Earth') mpl.squaremesh(mesh, prop='vp') cb = mpl.colorbar() cb.set_label("Vp (km/s)") mpl.show()
""" Meshing: Generate a SquareMesh and get the physical properties from an image """ import urllib from fatiando import mesher from fatiando.vis import mpl # Make a square mesh mesh = mesher.SquareMesh((0, 5000, 0, 5000), (150, 150)) # Fetch the image from the online docs urllib.urlretrieve( 'http://fatiando.readthedocs.org/en/latest/_static/logo.png', 'logo.png') # Load the image as the P wave velocity (vp) property of the mesh mesh.img2prop('logo.png', 5000, 10000, 'vp') mpl.figure() mpl.title('P wave velocity model of the Earth') mpl.squaremesh(mesh, prop='vp') cb = mpl.colorbar() cb.set_label("Vp (km/s)") mpl.show()