|
7 | 7 | "source": [ |
8 | 8 | "# Depth of Investigation\n", |
9 | 9 | "\n", |
10 | | - "In geophysics, \"depth of investigation\" refers to the maximum depth below the surface from which a geophysical survey can reliably measure. It depends on factors like the survey design and physical properties of the subsurface material. Several strategies have been proposed to assess uncertainties in models recovered from inversion. {cite:t}`nabighian_1989` used a skin depth approach for electromagnetic surveys, assuming a background halfspace resistivity. {cite:t}`li_1999` implemented a cut-off value based on two inverted models obtained with slightly different assumptions. {cite:t}`christiansen_2012` proposed a mask based on the sum-square of sensitivities to estimate a volume of low confidence. In the following, we discuss the algorithm and implementation of the sensitivity cutoff strategy." |
| 10 | + "This application allows users to compute a depth of investigation from model values. In geophysics, \"depth of investigation\" refers to the maximum depth below the surface from which a geophysical survey can reliably measure. It depends on factors like the survey design and physical properties of the subsurface material. \n", |
| 11 | + "\n", |
| 12 | + "\n", |
| 13 | + "\n", |
| 14 | + "Several strategies have been proposed to assess uncertainties in models recovered from inversion. {cite:t}`nabighian_1989` used a skin depth approach for electromagnetic surveys, assuming a background halfspace resistivity. {cite:t}`li_1999` implemented a cut-off value based on two inverted models obtained with slightly different assumptions. \n", |
| 15 | + "\n", |
| 16 | + "This application uses the method proposed by {cite:t}`christiansen_2012`, based on the sum-square of sensitivities to estimate a volume of low confidence." |
| 17 | + ] |
| 18 | + }, |
| 19 | + { |
| 20 | + "cell_type": "markdown", |
| 21 | + "id": "83b4ae8f-5509-40b1-98c2-39acefba438c", |
| 22 | + "metadata": { |
| 23 | + "jp-MarkdownHeadingCollapsed": true |
| 24 | + }, |
| 25 | + "source": [ |
| 26 | + "## Interface\n", |
| 27 | + "\n", |
| 28 | + "The depth of investigation methods based on sensitivity cutoffs relies on the ui.json interface. \n", |
| 29 | + "\n", |
| 30 | + "\n", |
| 31 | + "\n", |
| 32 | + "### Inputs\n", |
| 33 | + "\n", |
| 34 | + "- **Mesh**: The mesh used for inversion\n", |
| 35 | + "- **Sensitivity**: Model selector for the sensitivities at a given iteration (see [Pre-requisite](pre-requisite))\n", |
| 36 | + "- **Cut-off**: Percentage value to threshold the sentivities, relative to the **Method** used.\n", |
| 37 | + "- **Method**: One of *percentile*, *percent* or *log percent*\n", |
| 38 | + "\n", |
| 39 | + "\n", |
| 40 | + "\n", |
| 41 | + "### Output\n", |
| 42 | + "\n", |
| 43 | + "After running, the application will create a masking attribute saved on the mesh.\n", |
| 44 | + "\n", |
| 45 | + "\n", |
| 46 | + "\n", |
| 47 | + "The mask can then be applied to any of the iterations to show only the cells that exceeded the sensitivity threshold.\n", |
| 48 | + "\n", |
| 49 | + "\n", |
| 50 | + "\n", |
| 51 | + "\n", |
| 52 | + "(pre-requisite)=\n", |
| 53 | + "### Pre-requisite\n", |
| 54 | + "\n", |
| 55 | + "In order to save the sensitivities during a SimPEG inversion, the 'Save sensitivities' option must be selected from the 'Optional parameters' tab of an inversion.\n", |
| 56 | + "\n", |
| 57 | + "\n", |
| 58 | + "\n", |
| 59 | + "This will result in a new model generated and saved into the computational mesh at each iteration.\n", |
| 60 | + "\n", |
| 61 | + "" |
11 | 62 | ] |
12 | 63 | }, |
13 | 64 | { |
14 | 65 | "cell_type": "markdown", |
15 | 66 | "id": "c13ffcec-8d95-4ee9-876f-9aa92e2c534a", |
16 | 67 | "metadata": {}, |
17 | 68 | "source": [ |
18 | | - "## Sensitivities\n", |
| 69 | + "## Methodology\n", |
19 | 70 | "\n", |
20 | 71 | "The sensitivity matrix is calculated as part of the optimization problem solved by SimPEG while inverting geophysical data. The sensitivity matrix represents the degree to which each predicted datum changes with respect to a perturbation in each model cell. It is given in matrix form by\n", |
21 | 72 | "\n", |
|
28 | 79 | "The depth of investigation mask is a property of the cells of the mesh only so the rows of the sensitivity matrix (data) are sum-square normalized as follows.\n", |
29 | 80 | "\n", |
30 | 81 | "$$\n", |
31 | | - "\\mathbf{J}_{norm} = \\left[\\sum_{n=1}^{N}\\left(\\frac{\\mathbf{J}_{n:}}{w_n}\\right)^{2}\\right]^{(1/2)}\n", |
| 82 | + "\\|\\mathbf{j}\\| = \\left[\\sum_{n=1}^{N}\\left(\\frac{\\mathbf{J}_{n:}}{w_n}\\right)^{2}\\right]^{(1/2)}\n", |
32 | 83 | "$$\n", |
33 | 84 | "\n", |
34 | 85 | "where $w_n$ are the data uncertainties associated with the $n^{th}$ datum.\n", |
35 | 86 | "\n", |
36 | | - "The resulting vector $J_{norm}$ can then be thought of as the degree to which the aggregate data changes due to a small perturbation in each model cell. The depth of investigation mask is then computed by thresholding those sensitivities" |
| 87 | + "The resulting vector $\\|\\mathbf{j}\\|$ can then be thought of as the degree to which the aggregate data changes due to a small perturbation in each model cell. The depth of investigation mask is then computed by thresholding those sensitivities" |
37 | 88 | ] |
38 | 89 | }, |
39 | 90 | { |
40 | 91 | "cell_type": "markdown", |
41 | 92 | "id": "d8bb85c5-5e63-4617-ab6b-a7b6536c1d2c", |
42 | 93 | "metadata": {}, |
43 | 94 | "source": [ |
44 | | - "## Thresholding\n", |
| 95 | + "### Thresholding\n", |
45 | 96 | "\n", |
46 | 97 | "The depth of investigation can be estimated by assigning a threshold on the sum-squared sensitivity vector. This can be done as a percentile, percentage, or log-percentage. In the percentile method, the mask is formed by eliminating all cells in which the sensitivity falls below the lowest $n$% of the number of data where $n$ is the chosen cutoff. In the percent method the data are transformed into a percentage of the largest value\n", |
47 | 98 | "\n", |
|
51 | 102 | "\n", |
52 | 103 | "and the mask is formed by eliminating all cells in which the sensitivity falls below the lowest $n$% of the data values where $n$ is the chosen cutoff. Finally, the log-percent mask transforms the data into log-space before carrying out the percentage thresholding described above." |
53 | 104 | ] |
54 | | - }, |
55 | | - { |
56 | | - "cell_type": "markdown", |
57 | | - "id": "83b4ae8f-5509-40b1-98c2-39acefba438c", |
58 | | - "metadata": {}, |
59 | | - "source": [ |
60 | | - "## Usage\n", |
61 | | - "\n", |
62 | | - "The depth of investigation methods based on sensitivity cutoffs described above are exposed to Geoscience ANALYST Pro Geophysics users through a ui.json interface. In order to save the sensitivities during a SimPEG inversion, the 'Save sensitivities' option must be selected from the 'Optional parameters' tab of the SimPEG inversion ui.json window.\n", |
63 | | - "\n", |
64 | | - "\n", |
65 | | - "\n", |
66 | | - "This will result in a new model generated and saved into the computational mesh at each iteration.\n", |
67 | | - "\n", |
68 | | - "\n", |
69 | | - "\n", |
70 | | - "The ui.json interface allows the user to select a mesh from the **simpeg-drivers** result and any of the generated sensitivity models, a cutoff threshold, method, and optional name for the output.\n", |
71 | | - "\n", |
72 | | - "\n", |
73 | | - "\n", |
74 | | - "The cutoff methods are selectable in the dropdown\n", |
75 | | - "\n", |
76 | | - "\n", |
77 | | - "\n", |
78 | | - "Whatever the options, the application will create a sensitivity cutoff mask saved on the mesh\n", |
79 | | - "\n", |
80 | | - "\n", |
81 | | - "\n", |
82 | | - "which can then be applied to any of the iterations to show only the cells that exceeded the sensitivity threshold.\n", |
83 | | - "\n", |
84 | | - "\n", |
85 | | - "\n", |
86 | | - "" |
87 | | - ] |
88 | | - }, |
89 | | - { |
90 | | - "cell_type": "code", |
91 | | - "execution_count": null, |
92 | | - "id": "1079da0d-4ea2-4f00-b957-92199dd39cdb", |
93 | | - "metadata": {}, |
94 | | - "outputs": [], |
95 | | - "source": [] |
96 | | - }, |
97 | | - { |
98 | | - "cell_type": "code", |
99 | | - "execution_count": null, |
100 | | - "id": "920f0637-4028-40c7-b2c6-5976f5e90afd", |
101 | | - "metadata": {}, |
102 | | - "outputs": [], |
103 | | - "source": [] |
104 | 105 | } |
105 | 106 | ], |
106 | 107 | "metadata": { |
|
119 | 120 | "name": "python", |
120 | 121 | "nbconvert_exporter": "python", |
121 | 122 | "pygments_lexer": "ipython3", |
122 | | - "version": "3.10.16" |
| 123 | + "version": "3.10.19" |
123 | 124 | } |
124 | 125 | }, |
125 | 126 | "nbformat": 4, |
|
0 commit comments