Skip to content

Instantly share code, notes, and snippets.

@rowanc1
Last active January 3, 2016 14:59
Show Gist options
  • Save rowanc1/8479897 to your computer and use it in GitHub Desktop.
Save rowanc1/8479897 to your computer and use it in GitHub Desktop.
SimPEG Play - DC Resistivity Inversion

Working to incorporate DC resistivity inversions in the new SimPEG framework.

<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">
In&nbsp;[1]:
</div>
<div class="inner_cell">
<div class="input_area">
<div class="highlight"><pre><span class="kn">from</span> <span class="nn">SimPEG</span> <span class="kn">import</span> <span class="o">*</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area"><div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>
Warning: mumps solver not available.
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">
In&nbsp;[2]:
</div>
<div class="inner_cell">
<div class="input_area">
<div class="highlight"><pre><span class="c"># Create the mesh</span>
<span class="n">h1</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">ones</span><span class="p">(</span><span class="mi">100</span><span class="p">)</span>
<span class="n">h2</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">ones</span><span class="p">(</span><span class="mi">21</span><span class="p">)</span>
<span class="n">M</span> <span class="o">=</span> <span class="n">Mesh</span><span class="o">.</span><span class="n">TensorMesh</span><span class="p">([</span><span class="n">h1</span><span class="p">,</span><span class="n">h2</span><span class="p">])</span>
<span class="c"># Create some parameters for the model</span>
<span class="n">sig1</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="mf">0.001</span><span class="p">)</span>
<span class="n">sig2</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
<span class="c"># Create a synthetic model from a block in a half-space</span>
<span class="n">model</span> <span class="o">=</span> <span class="n">Model</span><span class="o">.</span><span class="n">LogModel</span><span class="p">(</span><span class="n">M</span><span class="p">)</span>
<span class="n">mSynth</span> <span class="o">=</span> <span class="n">Utils</span><span class="o">.</span><span class="n">ModelBuilder</span><span class="o">.</span><span class="n">defineBlockConductivity</span><span class="p">(</span><span class="n">M</span><span class="o">.</span><span class="n">gridCC</span><span class="p">,[</span><span class="mi">50</span><span class="p">,</span> <span class="mi">10</span><span class="p">],[</span><span class="mi">80</span><span class="p">,</span> <span class="mi">16</span><span class="p">],[</span><span class="n">sig1</span><span class="p">,</span> <span class="n">sig2</span><span class="p">])</span>
<span class="n">plt</span><span class="o">.</span><span class="n">colorbar</span><span class="p">(</span><span class="n">M</span><span class="o">.</span><span class="n">plotImage</span><span class="p">(</span><span class="n">mSynth</span><span class="p">))</span>
<span class="n">Tx</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mf">10.5</span><span class="p">,</span><span class="mi">90</span><span class="p">,</span><span class="mi">5</span><span class="p">)</span>
<span class="n">Rx</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mf">9.5</span><span class="p">,</span><span class="mi">90</span><span class="p">,</span><span class="mi">3</span><span class="p">)</span>
<span class="n">yLoc</span> <span class="o">=</span> <span class="mf">13.5</span>
<span class="n">plot</span><span class="p">(</span><span class="n">Rx</span><span class="p">,</span><span class="n">np</span><span class="o">.</span><span class="n">ones_like</span><span class="p">(</span><span class="n">Rx</span><span class="p">)</span><span class="o">*</span><span class="n">yLoc</span><span class="p">,</span><span class="s">&#39;r.&#39;</span><span class="p">,</span><span class="n">ms</span><span class="o">=</span><span class="mi">20</span><span class="p">)</span>
<span class="n">plot</span><span class="p">(</span><span class="n">Tx</span><span class="p">,</span><span class="n">np</span><span class="o">.</span><span class="n">ones_like</span><span class="p">(</span><span class="n">Tx</span><span class="p">)</span><span class="o">*</span><span class="n">yLoc</span><span class="p">,</span><span class="s">&#39;c.&#39;</span><span class="p">,</span><span class="n">ms</span><span class="o">=</span><span class="mi">20</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area"><div class="prompt output_prompt">
Out[2]:</div>
<div class="output_text output_subarea output_pyout">
<pre>
[&lt;matplotlib.lines.Line2D at 0x10f9e1510&gt;]
</pre>
</div>
</div>
<div class="output_area"><div class="prompt"></div>
<div class="output_png output_subarea ">
<img src="data:image/png;base64,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
"
>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">
In&nbsp;[3]:
</div>
<div class="inner_cell">
<div class="input_area">
<div class="highlight"><pre><span class="n">inds</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">ii</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">Rx</span><span class="o">.</span><span class="n">size</span><span class="p">):</span>
<span class="k">for</span> <span class="n">jj</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">Rx</span><span class="o">.</span><span class="n">size</span> <span class="o">-</span> <span class="n">ii</span> <span class="o">-</span> <span class="mi">1</span><span class="p">):</span>
<span class="n">inds</span><span class="o">.</span><span class="n">append</span><span class="p">([</span> <span class="n">ii</span><span class="p">,</span> <span class="n">ii</span> <span class="o">+</span> <span class="n">jj</span> <span class="o">+</span> <span class="mi">1</span> <span class="p">])</span>
<span class="n">posElectrodes</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([[</span><span class="n">Rx</span><span class="p">[</span><span class="n">ind</span><span class="p">[</span><span class="mi">0</span><span class="p">]],</span><span class="n">yLoc</span><span class="p">]</span> <span class="k">for</span> <span class="n">ind</span> <span class="ow">in</span> <span class="n">inds</span><span class="p">])</span>
<span class="n">negElectrodes</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([[</span><span class="n">Rx</span><span class="p">[</span><span class="n">ind</span><span class="p">[</span><span class="mi">1</span><span class="p">]],</span><span class="n">yLoc</span><span class="p">]</span> <span class="k">for</span> <span class="n">ind</span> <span class="ow">in</span> <span class="n">inds</span><span class="p">])</span>
<span class="n">Ppos</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">getInterpolationMat</span><span class="p">(</span><span class="n">posElectrodes</span><span class="p">,</span> <span class="s">&#39;CC&#39;</span><span class="p">)</span>
<span class="n">Pneg</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">getInterpolationMat</span><span class="p">(</span><span class="n">negElectrodes</span><span class="p">,</span> <span class="s">&#39;CC&#39;</span><span class="p">)</span>
<span class="n">P</span> <span class="o">=</span> <span class="n">Ppos</span> <span class="o">-</span> <span class="n">Pneg</span>
<span class="n">inds</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">ii</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">Tx</span><span class="o">.</span><span class="n">size</span><span class="p">):</span>
<span class="k">for</span> <span class="n">jj</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">Tx</span><span class="o">.</span><span class="n">size</span> <span class="o">-</span> <span class="n">ii</span> <span class="o">-</span> <span class="mi">1</span><span class="p">):</span>
<span class="n">inds</span><span class="o">.</span><span class="n">append</span><span class="p">([</span> <span class="n">ii</span><span class="p">,</span> <span class="n">ii</span> <span class="o">+</span> <span class="n">jj</span> <span class="o">+</span> <span class="mi">1</span> <span class="p">])</span>
<span class="n">posElectrodes</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([[</span><span class="n">Tx</span><span class="p">[</span><span class="n">ind</span><span class="p">[</span><span class="mi">0</span><span class="p">]],</span><span class="n">yLoc</span><span class="p">]</span> <span class="k">for</span> <span class="n">ind</span> <span class="ow">in</span> <span class="n">inds</span><span class="p">])</span>
<span class="n">negElectrodes</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([[</span><span class="n">Tx</span><span class="p">[</span><span class="n">ind</span><span class="p">[</span><span class="mi">1</span><span class="p">]],</span><span class="n">yLoc</span><span class="p">]</span> <span class="k">for</span> <span class="n">ind</span> <span class="ow">in</span> <span class="n">inds</span><span class="p">])</span>
<span class="n">Qpos</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">getInterpolationMat</span><span class="p">(</span><span class="n">posElectrodes</span><span class="p">,</span> <span class="s">&#39;CC&#39;</span><span class="p">)</span>
<span class="n">Qneg</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">getInterpolationMat</span><span class="p">(</span><span class="n">negElectrodes</span><span class="p">,</span> <span class="s">&#39;CC&#39;</span><span class="p">)</span>
<span class="n">Q</span> <span class="o">=</span> <span class="p">(</span><span class="n">Qpos</span> <span class="o">-</span> <span class="n">Qneg</span><span class="p">)</span><span class="o">.</span><span class="n">T</span><span class="o">.</span><span class="n">toarray</span><span class="p">()</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">
In&nbsp;[4]:
</div>
<div class="inner_cell">
<div class="input_area">
<div class="highlight"><pre><span class="n">prob</span> <span class="o">=</span> <span class="n">Examples</span><span class="o">.</span><span class="n">DC</span><span class="o">.</span><span class="n">DCProblem</span><span class="p">(</span><span class="n">M</span><span class="p">,</span> <span class="n">model</span><span class="p">)</span>
<span class="c"># Create some data</span>
<span class="n">data</span> <span class="o">=</span> <span class="n">prob</span><span class="o">.</span><span class="n">createSyntheticData</span><span class="p">(</span><span class="n">mSynth</span><span class="p">,</span> <span class="n">std</span><span class="o">=</span><span class="mf">0.05</span><span class="p">,</span> <span class="n">P</span><span class="o">=</span><span class="n">P</span><span class="p">,</span> <span class="n">RHS</span><span class="o">=</span><span class="n">Q</span><span class="p">)</span>
<span class="n">u</span> <span class="o">=</span> <span class="n">prob</span><span class="o">.</span><span class="n">field</span><span class="p">(</span><span class="n">mSynth</span><span class="p">)</span>
<span class="n">u</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">reshapeFields</span><span class="p">(</span><span class="n">u</span><span class="p">)</span>
<span class="n">M</span><span class="o">.</span><span class="n">plotImage</span><span class="p">(</span><span class="n">u</span><span class="p">[:,</span><span class="mi">2</span><span class="p">])</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area"><div class="prompt output_prompt">
Out[4]:</div>
<div class="output_text output_subarea output_pyout">
<pre>
&lt;matplotlib.collections.QuadMesh at 0x10fc77310&gt;
</pre>
</div>
</div>
<div class="output_area"><div class="prompt"></div>
<div class="output_png output_subarea ">
<img src="data:image/png;base64,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
XovPP/9cNTU1eu+993T8+HG9+eab2r17d0Jei0tGcu6XPnp1E1eBUFpaqvfff3/wfltbm8rLyz1c
Uez19vZq7dq1qqqqUmVlpaSB69Le3i5Jam9vV2lpqZdLjIk33nhDu3bt0ty5c7Vu3Tq99tprqqqq
SshrMX/+fC1cuFCrVq1Senq61q1bp8bGxoS8Fi0tLSovL9f8+fM1ffp0fe9739Prr7+ekNfiErdz
Lysr03vvvTc47/3337/sdYmrQDCL1o4fP659+/aprKzM41XFjmVZ2rBhgxYvXjz40xPSwBe2oaFB
nZ2damhoSIiQfOSRR3Ty5En997//1XPPPacbbrhBTz/9dEJeC0lasGCBmpub1d/fr7/85S/67ne/
m5DXYvny5frnP/+pM2fOqLu7W3v27NGNN96YkNfiErdzX7p0qfbu3asTJ06oqalJycnJysjICL+z
MdU5R0FTU5OVn59vzZs3z9q2bZvXy4mp119/3UpKSrKKioqs4uJiq7i42NqzZ4917tw5a/Xq1VZu
bq5VWVlpBQIBr5caU01NTdaqVassy7IS9locPnzYKisrs4qKiqwHH3zQ6ujoSNhr8eSTT1orVqyw
rr32WmvTpk1WX19fwlyL22+/3Zo1a5aVlpZm5eTkWA0NDWHP/dFHH7XmzZtnLVq0yNq/f/9l909h
GgBAUpx9ZAQA8A6BAACQRCAAAGwEAgBAEoEAALARCAAASQQCAMBGIAAAJBEIQERaW1tVVFSk7u5u
nT9/XosXLw7pEwN8HVCpDETol7/8pbq6utTZ2anc3Fz9/Oc/93pJwLgiEIAI9fb26tprr1V6erre
fPPNy7YSBiYaPjICInT69GmdP39eHR0d6uzs9Ho5wLjjHQIQodWrV+uOO+7QBx98oI8//ljbt2/3
eknAuErxegHARPDUU0/J7/fr9ttvV39/v5YtW6ampiZVVFR4vTRg3PAOAQAgie8hAABsBAIAQBKB
AACwEQgAAEkEAgDARiAAACQRCAAAG4EAAJAk/T9Aq/celh6jfAAAAABJRU5ErkJggg==
"
>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">
In&nbsp;[5]:
</div>
<div class="inner_cell">
<div class="input_area">
<div class="highlight"><pre><span class="c"># Now set up the prob to do some minimization</span>
<span class="c"># prob.dobs = dobs</span>
<span class="c"># prob.std = dobs*0 + 0.05</span>
<span class="n">m0</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">M</span><span class="o">.</span><span class="n">nC</span><span class="p">)</span> <span class="o">+</span> <span class="n">sig2</span>
<span class="n">reg</span> <span class="o">=</span> <span class="n">Regularization</span><span class="o">.</span><span class="n">Tikhonov</span><span class="p">(</span><span class="n">model</span><span class="p">)</span>
<span class="n">beta</span> <span class="o">=</span> <span class="n">Parameters</span><span class="o">.</span><span class="n">BetaEstimate</span><span class="p">(</span><span class="n">beta0_ratio</span><span class="o">=</span><span class="mf">0.5</span><span class="p">)</span>
<span class="n">obj</span> <span class="o">=</span> <span class="n">ObjFunction</span><span class="o">.</span><span class="n">BaseObjFunction</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">reg</span><span class="p">,</span> <span class="n">beta</span><span class="o">=</span><span class="n">beta</span><span class="p">)</span>
<span class="n">opt</span> <span class="o">=</span> <span class="n">Optimization</span><span class="o">.</span><span class="n">InexactGaussNewton</span><span class="p">(</span><span class="n">maxIterLS</span><span class="o">=</span><span class="mi">20</span><span class="p">,</span> <span class="n">maxIter</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span> <span class="n">maxIterCG</span><span class="o">=</span><span class="mi">3</span><span class="p">)</span>
<span class="n">inv</span> <span class="o">=</span> <span class="n">Inversion</span><span class="o">.</span><span class="n">BaseInversion</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="n">opt</span><span class="p">)</span>
<span class="c"># Check Derivative</span>
<span class="n">derChk</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">m</span><span class="p">:</span> <span class="p">[</span><span class="n">obj</span><span class="o">.</span><span class="n">dataObj</span><span class="p">(</span><span class="n">m</span><span class="p">),</span> <span class="n">obj</span><span class="o">.</span><span class="n">dataObjDeriv</span><span class="p">(</span><span class="n">m</span><span class="p">)]</span>
<span class="c"># Tests.checkDerivative(derChk, mSynth)</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">
In&nbsp;[6]:
</div>
<div class="inner_cell">
<div class="input_area">
<div class="highlight"><pre><span class="n">m</span> <span class="o">=</span> <span class="n">inv</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">m0</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area"><div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>
Regularization has not set mref. SimPEG will set it to m0.
============================ Inexact Gauss Newton ============================
# beta phi_d phi_m f |proj(x-g)-x| LS Comment
-----------------------------------------------------------------------------
0 1.80e+02 1.25e+06 0.00e+00 1.25e+06 5.24e+03 0
1 1.80e+02 1.21e+06 6.15e+00 1.21e+06 6.17e+03 0
2 1.80e+02 1.14e+06 9.45e+01 1.16e+06 6.83e+03 0
3 1.80e+02 9.87e+05 1.53e+02 1.01e+06 1.69e+04 0
4 1.80e+02 8.33e+05 1.73e+02 8.64e+05 6.31e+04 2
5 1.80e+02 6.92e+05 2.17e+02 7.31e+05 6.27e+04 1
6 1.80e+02 5.64e+05 2.30e+02 6.05e+05 3.48e+04 0
7 1.80e+02 4.35e+05 2.70e+02 4.83e+05 1.48e+05 0
8 1.80e+02 3.55e+05 2.79e+02 4.05e+05 3.84e+04 0
9 1.80e+02 2.84e+05 2.82e+02 3.34e+05 5.42e+04 0
10 1.80e+02 2.01e+05 3.24e+02 2.60e+05 6.50e+04 0
------------------------- STOP! -------------------------
1 : |fc-fOld| = 7.4684e+04 &lt;= tolF*(1+|f0|) = 1.2546e+05
0 : |xc-x_last| = 6.7408e+00 &lt;= tolX*(1+|x0|) = 1.0000e-01
0 : |proj(x-g)-x| = 6.5036e+04 &lt;= tolG = 1.0000e-01
0 : |proj(x-g)-x| = 6.5036e+04 &lt;= 1e3*eps = 1.0000e-02
1 : maxIter = 10 &lt;= iter = 10
------------------------- DONE! -------------------------
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">
In&nbsp;[7]:
</div>
<div class="inner_cell">
<div class="input_area">
<div class="highlight"><pre><span class="n">plt</span><span class="o">.</span><span class="n">colorbar</span><span class="p">(</span><span class="n">M</span><span class="o">.</span><span class="n">plotImage</span><span class="p">(</span><span class="n">m</span><span class="p">))</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area"><div class="prompt output_prompt">
Out[7]:</div>
<div class="output_text output_subarea output_pyout">
<pre>
&lt;matplotlib.colorbar.Colorbar instance at 0x111e14368&gt;
</pre>
</div>
</div>
<div class="output_area"><div class="prompt"></div>
<div class="output_png output_subarea ">
<img src="data:image/png;base64,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
AAAASUVORK5CYII=
"
>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">
In&nbsp;[7]:
</div>
<div class="inner_cell">
<div class="input_area">
<div class="highlight"><pre>
</pre></div>
</div>
</div>
</div>
</div>
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"name": ""
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "code",
"collapsed": false,
"input": [
"from SimPEG import *"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Warning: mumps solver not available.\n"
]
}
],
"prompt_number": 1
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Create the mesh\n",
"h1 = np.ones(100)\n",
"h2 = np.ones(21)\n",
"M = Mesh.TensorMesh([h1,h2])\n",
"\n",
"# Create some parameters for the model\n",
"sig1 = np.log(0.001)\n",
"sig2 = np.log(1)\n",
"\n",
"# Create a synthetic model from a block in a half-space\n",
"model = Model.LogModel(M)\n",
"mSynth = Utils.ModelBuilder.defineBlockConductivity(M.gridCC,[50, 10],[80, 16],[sig1, sig2])\n",
"plt.colorbar(M.plotImage(mSynth))\n",
"Tx = np.arange(10.5,90,5)\n",
"Rx = np.arange(9.5,90,3)\n",
"yLoc = 13.5\n",
"plot(Rx,np.ones_like(Rx)*yLoc,'r.',ms=20)\n",
"plot(Tx,np.ones_like(Tx)*yLoc,'c.',ms=20)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 2,
"text": [
"[<matplotlib.lines.Line2D at 0x10f9e1510>]"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\n",
"text": [
"<matplotlib.figure.Figure at 0x10f9e1350>"
]
}
],
"prompt_number": 2
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"inds = []\n",
"for ii in range(Rx.size):\n",
" for jj in range(Rx.size - ii - 1):\n",
" inds.append([ ii, ii + jj + 1 ])\n",
"posElectrodes = np.array([[Rx[ind[0]],yLoc] for ind in inds])\n",
"negElectrodes = np.array([[Rx[ind[1]],yLoc] for ind in inds])\n",
"\n",
"Ppos = M.getInterpolationMat(posElectrodes, 'CC')\n",
"Pneg = M.getInterpolationMat(negElectrodes, 'CC')\n",
"P = Ppos - Pneg\n",
"\n",
"inds = []\n",
"for ii in range(Tx.size):\n",
" for jj in range(Tx.size - ii - 1):\n",
" inds.append([ ii, ii + jj + 1 ])\n",
"posElectrodes = np.array([[Tx[ind[0]],yLoc] for ind in inds])\n",
"negElectrodes = np.array([[Tx[ind[1]],yLoc] for ind in inds])\n",
"\n",
"Qpos = M.getInterpolationMat(posElectrodes, 'CC')\n",
"Qneg = M.getInterpolationMat(negElectrodes, 'CC')\n",
"Q = (Qpos - Qneg).T.toarray()"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 3
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"prob = Examples.DC.DCProblem(M, model)\n",
"# Create some data\n",
"data = prob.createSyntheticData(mSynth, std=0.05, P=P, RHS=Q)\n",
"u = prob.field(mSynth)\n",
"u = data.reshapeFields(u)\n",
"M.plotImage(u[:,2])"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 4,
"text": [
"<matplotlib.collections.QuadMesh at 0x10fc77310>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\nXovPP/9cNTU1eu+993T8+HG9+eab2r17d0Jei0tGcu6XPnp1E1eBUFpaqvfff3/wfltbm8rLyz1c\nUez19vZq7dq1qqqqUmVlpaSB69Le3i5Jam9vV2lpqZdLjIk33nhDu3bt0ty5c7Vu3Tq99tprqqqq\nSshrMX/+fC1cuFCrVq1Senq61q1bp8bGxoS8Fi0tLSovL9f8+fM1ffp0fe9739Prr7+ekNfiErdz\nLysr03vvvTc47/3337/sdYmrQDCL1o4fP659+/aprKzM41XFjmVZ2rBhgxYvXjz40xPSwBe2oaFB\nnZ2damhoSIiQfOSRR3Ty5En997//1XPPPacbbrhBTz/9dEJeC0lasGCBmpub1d/fr7/85S/67ne/\nm5DXYvny5frnP/+pM2fOqLu7W3v27NGNN96YkNfiErdzX7p0qfbu3asTJ06oqalJycnJysjICL+z\nMdU5R0FTU5OVn59vzZs3z9q2bZvXy4mp119/3UpKSrKKioqs4uJiq7i42NqzZ4917tw5a/Xq1VZu\nbq5VWVlpBQIBr5caU01NTdaqVassy7IS9locPnzYKisrs4qKiqwHH3zQ6ujoSNhr8eSTT1orVqyw\nrr32WmvTpk1WX19fwlyL22+/3Zo1a5aVlpZm5eTkWA0NDWHP/dFHH7XmzZtnLVq0yNq/f/9l909h\nGgBAUpx9ZAQA8A6BAACQRCAAAGwEAgBAEoEAALARCAAASQQCAMBGIAAAJBEIQERaW1tVVFSk7u5u\nnT9/XosXLw7pEwN8HVCpDETol7/8pbq6utTZ2anc3Fz9/Oc/93pJwLgiEIAI9fb26tprr1V6erre\nfPPNy7YSBiYaPjICInT69GmdP39eHR0d6uzs9Ho5wLjjHQIQodWrV+uOO+7QBx98oI8//ljbt2/3\neknAuErxegHARPDUU0/J7/fr9ttvV39/v5YtW6ampiZVVFR4vTRg3PAOAQAgie8hAABsBAIAQBKB\nAACwEQgAAEkEAgDARiAAACQRCAAAG4EAAJAk/T9Aq/celh6jfAAAAABJRU5ErkJggg==\n",
"text": [
"<matplotlib.figure.Figure at 0x10fc48550>"
]
}
],
"prompt_number": 4
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"\n",
"# Now set up the prob to do some minimization\n",
"# prob.dobs = dobs\n",
"# prob.std = dobs*0 + 0.05\n",
"m0 = np.zeros(M.nC) + sig2\n",
"\n",
"reg = Regularization.Tikhonov(model)\n",
"beta = Parameters.BetaEstimate(beta0_ratio=0.5)\n",
"obj = ObjFunction.BaseObjFunction(data, reg, beta=beta)\n",
"opt = Optimization.InexactGaussNewton(maxIterLS=20, maxIter=10, maxIterCG=3)\n",
"inv = Inversion.BaseInversion(obj, opt)\n",
"\n",
"# Check Derivative\n",
"derChk = lambda m: [obj.dataObj(m), obj.dataObjDeriv(m)]\n",
"# Tests.checkDerivative(derChk, mSynth)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 5
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"m = inv.run(m0)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Regularization has not set mref. SimPEG will set it to m0.\n",
"============================ Inexact Gauss Newton ============================\n",
" # beta phi_d phi_m f |proj(x-g)-x| LS Comment \n",
"-----------------------------------------------------------------------------\n",
" 0 1.80e+02 1.25e+06 0.00e+00 1.25e+06 5.24e+03 0 "
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
" 1 1.80e+02 1.21e+06 6.15e+00 1.21e+06 6.17e+03 0 "
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
" 2 1.80e+02 1.14e+06 9.45e+01 1.16e+06 6.83e+03 0 "
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
" 3 1.80e+02 9.87e+05 1.53e+02 1.01e+06 1.69e+04 0 "
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
" 4 1.80e+02 8.33e+05 1.73e+02 8.64e+05 6.31e+04 2 "
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
" 5 1.80e+02 6.92e+05 2.17e+02 7.31e+05 6.27e+04 1 "
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
" 6 1.80e+02 5.64e+05 2.30e+02 6.05e+05 3.48e+04 0 "
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
" 7 1.80e+02 4.35e+05 2.70e+02 4.83e+05 1.48e+05 0 "
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
" 8 1.80e+02 3.55e+05 2.79e+02 4.05e+05 3.84e+04 0 "
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
" 9 1.80e+02 2.84e+05 2.82e+02 3.34e+05 5.42e+04 0 "
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
" 10 1.80e+02 2.01e+05 3.24e+02 2.60e+05 6.50e+04 0 "
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"------------------------- STOP! -------------------------\n",
"1 : |fc-fOld| = 7.4684e+04 <= tolF*(1+|f0|) = 1.2546e+05\n",
"0 : |xc-x_last| = 6.7408e+00 <= tolX*(1+|x0|) = 1.0000e-01\n",
"0 : |proj(x-g)-x| = 6.5036e+04 <= tolG = 1.0000e-01\n",
"0 : |proj(x-g)-x| = 6.5036e+04 <= 1e3*eps = 1.0000e-02\n",
"1 : maxIter = 10 <= iter = 10\n",
"------------------------- DONE! -------------------------\n"
]
}
],
"prompt_number": 6
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"plt.colorbar(M.plotImage(m))"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 7,
"text": [
"<matplotlib.colorbar.Colorbar instance at 0x111e14368>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\nAAAASUVORK5CYII=\n",
"text": [
"<matplotlib.figure.Figure at 0x1107f9190>"
]
}
],
"prompt_number": 7
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 7
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment