.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "gallery/upward_derivative.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note Click :ref:`here ` to download the full example code .. rst-class:: sphx-glr-example-title .. _sphx_glr_gallery_upward_derivative.py: Upward derivative of a regular grid =================================== .. GENERATED FROM PYTHON SOURCE LINES 11-96 .. image-sg:: /gallery/images/sphx_glr_upward_derivative_001.png :alt: Magnetic anomaly, Upward derivative :srcset: /gallery/images/sphx_glr_upward_derivative_001.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out Out: .. code-block:: none Upward derivative: array([[ 0.08118127, 0.04840311, 0.04986904, ..., -0.04998174, -0.04946451, -0.08324109], [ 0.04715736, 0.00822274, 0.00748728, ..., -0.02351687, -0.02195097, -0.06526992], [ 0.04793475, 0.00739243, 0.00510616, ..., -0.03223078, -0.03044794, -0.07926779], ..., [-0.15958524, -0.04712847, -0.05012313, ..., 0.09228404, 0.08211778, 0.26426587], [-0.14767232, -0.04100584, -0.04493305, ..., 0.08538301, 0.07280294, 0.24507784], [-0.22975479, -0.14307243, -0.15089174, ..., 0.28623612, 0.25756289, 0.38850882]]) Coordinates: * northing (northing) float64 4.175e+06 4.176e+06 ... 4.253e+06 4.253e+06 * easting (easting) float64 -3.24e+05 -3.235e+05 ... -2.774e+05 -2.769e+05 | .. code-block:: default import matplotlib.pyplot as plt import numpy as np import pyproj import verde as vd import xrft import harmonica as hm # Fetch the sample total-field magnetic anomaly data from Great Britain data = hm.datasets.fetch_britain_magnetic() # Slice a smaller portion of the survey data to speed-up calculations for this # example region = [-5.5, -4.7, 57.8, 58.5] inside = vd.inside((data.longitude, data.latitude), region) data = data[inside] # Since this is a small area, we'll project our data and use Cartesian # coordinates projection = pyproj.Proj(proj="merc", lat_ts=data.latitude.mean()) easting, northing = projection(data.longitude.values, data.latitude.values) coordinates = (easting, northing, data.altitude_m) # Grid the scatter data using an equivalent layer eql = hm.EquivalentSources(depth=1000, damping=1).fit( coordinates, data.total_field_anomaly_nt ) grid_coords = vd.grid_coordinates( region=vd.get_region(coordinates), spacing=500, extra_coords=1500 ) grid = eql.grid(grid_coords, data_names=["magnetic_anomaly"]) grid = grid.magnetic_anomaly # Pad the grid to increase accuracy of the FFT filter pad_width = { "easting": grid.easting.size // 3, "northing": grid.northing.size // 3, } grid = grid.drop_vars("upward") # drop extra coordinates due to bug in xrft.pad grid_padded = xrft.pad(grid, pad_width) # Compute the upward derivative of the grid deriv_upward = hm.derivative_upward(grid_padded) # Unpad the derivative grid deriv_upward = xrft.unpad(deriv_upward, pad_width) # Show the upward derivative print("\nUpward derivative:\n", deriv_upward) # Plot original magnetic anomaly and the upward derivative fig, (ax1, ax2) = plt.subplots( nrows=1, ncols=2, figsize=(9, 8), sharex=True, sharey=True ) # Plot the magnetic anomaly grid grid.plot( ax=ax1, cmap="seismic", cbar_kwargs={"label": "nT", "location": "bottom", "shrink": 0.8, "pad": 0.08}, ) ax1.set_title("Magnetic anomaly") # Plot the upward derivative scale = np.quantile(np.abs(deriv_upward), q=0.98) # scale the colorbar deriv_upward.plot( ax=ax2, vmin=-scale, vmax=scale, cmap="seismic", cbar_kwargs={"label": "nT/m", "location": "bottom", "shrink": 0.8, "pad": 0.08}, ) ax2.set_title("Upward derivative") # Scale the axes for ax in (ax1, ax2): ax.set_aspect("equal") # Set ticklabels with scientific notation ax1.ticklabel_format(axis="x", style="sci", scilimits=(-2, 2)) ax1.ticklabel_format(axis="y", style="sci", scilimits=(-2, 2)) plt.tight_layout() plt.show() .. rst-class:: sphx-glr-timing **Total running time of the script:** ( 0 minutes 10.893 seconds) .. _sphx_glr_download_gallery_upward_derivative.py: .. only :: html .. container:: sphx-glr-footer :class: sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: upward_derivative.py ` .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: upward_derivative.ipynb ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_