mirror of
https://github.com/wassname/simpeg.git
synced 2026-10-29 13:40:11 +08:00
Updated notebooks and added plotDataTypes used for plotting MTdata
This commit is contained in:
1 parent
33d76346d1
commit
c78d5beef8
9 files changed
+1182
-230
No files matched your search
@@ -31,26 +31,30 @@
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"## Setup the modelling\n",
|
||||
"# Setting up 1D mesh and conductivity models to forward model data.\n",
|
||||
"\n",
|
||||
"# Frequency\n",
|
||||
"nFreq = 31\n",
|
||||
"freqs = np.logspace(3,-3,nFreq)\n",
|
||||
"# Set mesh parameters\n",
|
||||
"ct = 10\n",
|
||||
"air = simpeg.Utils.meshTensor([(ct,25,1.3)])\n",
|
||||
"core = np.concatenate( ( np.kron(simpeg.Utils.meshTensor([(ct,5,-1.2)]),np.ones((3,))) , simpeg.Utils.meshTensor([(ct,5)]) ) )\n",
|
||||
"bot = simpeg.Utils.meshTensor([(core[0],25,-1.3)])\n",
|
||||
"ct = 20\n",
|
||||
"air = simpeg.Utils.meshTensor([(ct,16,1.4)])\n",
|
||||
"core = np.concatenate( ( np.kron(simpeg.Utils.meshTensor([(ct,10,-1.3)]),np.ones((5,))) , simpeg.Utils.meshTensor([(ct,5)]) ) )\n",
|
||||
"bot = simpeg.Utils.meshTensor([(core[0],10,-1.4)])\n",
|
||||
"x0 = -np.array([np.sum(np.concatenate((core,bot)))])\n",
|
||||
"# Make the model\n",
|
||||
"m1d = simpeg.Mesh.TensorMesh([np.concatenate((bot,core,air))], x0=x0)\n",
|
||||
"\n",
|
||||
"# Setup model varibles\n",
|
||||
"active = m1d.vectorCCx<0.\n",
|
||||
"layer1 = (m1d.vectorCCx<-200.) & (m1d.vectorCCx>=-600.)\n",
|
||||
"layer2 = (m1d.vectorCCx<-2000.) & (m1d.vectorCCx>=-4000.)\n",
|
||||
"layer1 = (m1d.vectorCCx<-500.) & (m1d.vectorCCx>=-800.)\n",
|
||||
"layer2 = (m1d.vectorCCx<-3500.) & (m1d.vectorCCx>=-5000.)\n",
|
||||
"# Set the conductivity values\n",
|
||||
"sig_half = 2e-3\n",
|
||||
"sig_air = 1e-8\n",
|
||||
"sig_layer1 = 1\n",
|
||||
"sig_layer2 = .1\n",
|
||||
"sig_layer1 = .2\n",
|
||||
"sig_layer2 = .2\n",
|
||||
"# Make the true model\n",
|
||||
"sigma_true = np.ones(m1d.nCx)*sig_air\n",
|
||||
"sigma_true[active] = sig_half\n",
|
||||
@@ -63,8 +67,7 @@
|
||||
"sigma_0[active] = sig_half\n",
|
||||
"m_0 = np.log(sigma_0[active])\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"# Set the mapping# Set the mapping\n",
|
||||
"# Set the mapping\n",
|
||||
"actMap = simpeg.Maps.ActiveCells(m1d, active, np.log(1e-8), nC=m1d.nCx)\n",
|
||||
"mappingExpAct = simpeg.Maps.ExpMap(m1d) * actMap"
|
||||
]
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -38,23 +38,23 @@
|
||||
"nFreq = 31\n",
|
||||
"freqs = np.logspace(3,-3,nFreq)\n",
|
||||
"# Set mesh parameters\n",
|
||||
"ct = 10\n",
|
||||
"air = simpeg.Utils.meshTensor([(ct,25,1.3)])\n",
|
||||
"core = np.concatenate( ( np.kron(simpeg.Utils.meshTensor([(ct,5,-1.2)]),np.ones((3,))) , simpeg.Utils.meshTensor([(ct,5)]) ) )\n",
|
||||
"bot = simpeg.Utils.meshTensor([(core[0],25,-1.3)])\n",
|
||||
"ct = 20\n",
|
||||
"air = simpeg.Utils.meshTensor([(ct,16,1.4)])\n",
|
||||
"core = np.concatenate( ( np.kron(simpeg.Utils.meshTensor([(ct,10,-1.3)]),np.ones((5,))) , simpeg.Utils.meshTensor([(ct,5)]) ) )\n",
|
||||
"bot = simpeg.Utils.meshTensor([(core[0],10,-1.4)])\n",
|
||||
"x0 = -np.array([np.sum(np.concatenate((core,bot)))])\n",
|
||||
"# Make the model\n",
|
||||
"m1d = simpeg.Mesh.TensorMesh([np.concatenate((bot,core,air))], x0=x0)\n",
|
||||
"\n",
|
||||
"# Setup model varibles\n",
|
||||
"active = m1d.vectorCCx<0.\n",
|
||||
"layer1 = (m1d.vectorCCx<-200.) & (m1d.vectorCCx>=-600.)\n",
|
||||
"layer2 = (m1d.vectorCCx<-2000.) & (m1d.vectorCCx>=-4000.)\n",
|
||||
"layer1 = (m1d.vectorCCx<-500.) & (m1d.vectorCCx>=-800.)\n",
|
||||
"layer2 = (m1d.vectorCCx<-3500.) & (m1d.vectorCCx>=-5000.)\n",
|
||||
"# Set the conductivity values\n",
|
||||
"sig_half = 2e-3\n",
|
||||
"sig_air = 1e-8\n",
|
||||
"sig_layer1 = 1\n",
|
||||
"sig_layer2 = .1\n",
|
||||
"sig_layer1 = .2\n",
|
||||
"sig_layer2 = .2\n",
|
||||
"# Make the true model\n",
|
||||
"sigma_true = np.ones(m1d.nCx)*sig_air\n",
|
||||
"sigma_true[active] = sig_half\n",
|
||||
@@ -123,14 +123,14 @@
|
||||
"# Assign the datas to the survey object\n",
|
||||
"survey.dtrue = d_true\n",
|
||||
"survey.dobs = d_obs\n",
|
||||
"survey.std = survey.dobs*0 + std\n",
|
||||
"survey.std = np.abs(survey.dobs*std) + 0.01*np.linalg.norm(survey.dobs) #survey.dobs*0 + std\n",
|
||||
"# Assign the data weight\n",
|
||||
"survey.Wd = 1/(abs(survey.dobs)*survey.std)"
|
||||
"survey.Wd = 1/survey.std #(abs(survey.dobs)*survey.std)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 23,
|
||||
"execution_count": 5,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -149,13 +149,15 @@
|
||||
"dmis = simpeg.DataMisfit.l2_DataMisfit(survey)\n",
|
||||
"# Regularization\n",
|
||||
"# Note: We want you use a mesh the corresponds to the domain we want to solve, the active cells.\n",
|
||||
"if False:\n",
|
||||
"if True:\n",
|
||||
" regMesh = simpeg.Mesh.TensorMesh([m1d.hx[problem.mapping.sigmaMap.maps[-1].indActive]],m1d.x0)\n",
|
||||
" reg = simpeg.Regularization.Tikhonov(regMesh)\n",
|
||||
"else:\n",
|
||||
" reg = simpeg.Regularization.Tikhonov(m1d,mapping=mappingExpAct)\n",
|
||||
"reg.alpha_s = 1e-8\n",
|
||||
"reg.smoothModel = True\n",
|
||||
"reg.alpha_s = 1e-9\n",
|
||||
"reg.alpha_x = 1.\n",
|
||||
"# reg.alpha_xx = 0.001\n",
|
||||
"# Inversion problem\n",
|
||||
"invProb = simpeg.InvProblem.BaseInvProblem(dmis, reg, opt)\n",
|
||||
"invProb.counter = C\n",
|
||||
@@ -163,17 +165,17 @@
|
||||
"beta = simpeg.Directives.BetaSchedule()\n",
|
||||
"betaest = simpeg.Directives.BetaEstimate_ByEig(beta0_ratio=0.75)\n",
|
||||
"saveModel = simpeg.Directives.SaveModelEveryIteration()\n",
|
||||
"saveModel.fileName = 'Inversion_NoStopping'\n",
|
||||
"saveModel.fileName = 'Inversion_NoStoppingregMesh_smoothTrue'\n",
|
||||
"# Create an inversion object\n",
|
||||
"inv = simpeg.Inversion.BaseInversion(invProb, directiveList=[beta,betaest,saveModel]) \n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 24,
|
||||
"execution_count": 6,
|
||||
"metadata": {
|
||||
"collapsed": false,
|
||||
"scrolled": false
|
||||
"scrolled": true
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
@@ -184,46 +186,46 @@
|
||||
"SimPEG.InvProblem is setting bfgsH0 to the inverse of the eval2Deriv.\n",
|
||||
" ***Done using same solver as the problem***\n",
|
||||
"SimPEG.l2_DataMisfit is creating default weightings for Wd.\n",
|
||||
"SimPEG.SaveModelEveryIteration will save your models as: '###-Inversion_NoStopping.npy'\n",
|
||||
"SimPEG.SaveModelEveryIteration will save your models as: '###-Inversion_NoStoppingregMesh_smoothTrue.npy'\n",
|
||||
"============================ Inexact Gauss Newton ============================\n",
|
||||
" # beta phi_d phi_m f |proj(x-g)-x| LS Comment \n",
|
||||
"-----------------------------------------------------------------------------\n",
|
||||
" 0 3.97e+05 1.32e+06 1.77e-07 1.32e+06 3.23e+05 0 \n",
|
||||
" 1 3.97e+05 1.89e+05 3.57e-07 1.89e+05 4.74e+04 0 \n",
|
||||
" 2 3.97e+05 3.88e+04 4.77e-06 3.88e+04 1.11e+04 0 Skip BFGS \n",
|
||||
" 3 4.96e+04 3.69e+04 5.13e-06 3.69e+04 1.05e+04 0 Skip BFGS \n",
|
||||
" 4 4.96e+04 2.71e+04 8.22e-06 2.71e+04 7.80e+03 0 Skip BFGS \n",
|
||||
" 5 4.96e+04 2.34e+04 1.04e-05 2.34e+04 6.80e+03 0 Skip BFGS \n",
|
||||
" 6 6.21e+03 2.11e+04 1.23e-05 2.11e+04 6.19e+03 0 Skip BFGS \n",
|
||||
" 7 6.21e+03 1.27e+04 2.87e-05 1.27e+04 3.95e+03 0 Skip BFGS \n",
|
||||
" 8 6.21e+03 1.07e+04 3.77e-05 1.07e+04 3.41e+03 0 Skip BFGS \n",
|
||||
" 9 7.76e+02 9.53e+03 4.53e-05 9.53e+03 3.09e+03 0 Skip BFGS \n",
|
||||
" 10 7.76e+02 5.51e+03 1.06e-04 5.51e+03 1.97e+03 0 Skip BFGS \n",
|
||||
" 11 7.76e+02 4.57e+03 1.39e-04 4.57e+03 1.69e+03 0 Skip BFGS \n",
|
||||
" 12 9.70e+01 4.02e+03 1.66e-04 4.02e+03 1.53e+03 0 Skip BFGS \n",
|
||||
" 13 9.70e+01 2.27e+03 3.59e-04 2.27e+03 9.73e+02 0 Skip BFGS \n",
|
||||
" 14 9.70e+01 1.83e+03 4.62e-04 1.83e+03 8.24e+02 0 Skip BFGS \n",
|
||||
" 15 1.21e+01 1.57e+03 5.44e-04 1.57e+03 7.36e+02 0 Skip BFGS \n",
|
||||
" 16 1.21e+01 8.91e+02 1.06e-03 8.91e+02 4.57e+02 0 Skip BFGS \n",
|
||||
" 17 1.21e+01 6.95e+02 1.35e-03 6.95e+02 3.66e+02 0 Skip BFGS \n",
|
||||
" 18 1.51e+00 5.92e+02 1.57e-03 5.92e+02 3.13e+02 0 Skip BFGS \n",
|
||||
" 19 1.51e+00 3.56e+02 2.57e-03 3.56e+02 1.75e+02 0 Skip BFGS \n",
|
||||
" 20 1.51e+00 3.22e+02 3.06e-03 3.22e+02 1.53e+02 0 Skip BFGS \n",
|
||||
" 21 1.89e-01 2.75e+02 3.38e-03 2.75e+02 1.25e+02 0 \n",
|
||||
" 22 1.89e-01 1.98e+02 4.78e-03 1.98e+02 8.83e+01 0 Skip BFGS \n",
|
||||
" 23 1.89e-01 1.51e+02 5.79e-03 1.51e+02 7.53e+01 0 \n",
|
||||
" 24 2.37e-02 1.19e+02 6.62e-03 1.19e+02 6.26e+01 0 Skip BFGS \n",
|
||||
" 25 2.37e-02 8.19e+01 1.04e-02 8.19e+01 4.51e+01 0 Skip BFGS \n",
|
||||
" 26 2.37e-02 7.08e+01 1.12e-02 7.08e+01 3.79e+01 1 \n",
|
||||
" 27 2.96e-03 5.49e+01 1.16e-02 5.49e+01 3.51e+01 0 \n",
|
||||
" 28 2.96e-03 4.67e+01 1.23e-02 4.67e+01 3.03e+01 1 \n",
|
||||
" 29 2.96e-03 3.27e+01 1.32e-02 3.27e+01 3.13e+01 0 \n",
|
||||
" 30 3.70e-04 2.51e+01 1.36e-02 2.51e+01 2.30e+01 0 \n",
|
||||
" 0 2.08e+05 2.18e+05 0.00e+00 2.18e+05 4.01e+04 0 \n",
|
||||
" 1 2.08e+05 2.52e+04 2.37e-04 2.52e+04 6.20e+03 0 \n",
|
||||
" 2 2.08e+05 3.46e+03 3.27e-04 3.53e+03 1.03e+03 0 Skip BFGS \n",
|
||||
" 3 2.60e+04 1.72e+03 2.64e-04 1.73e+03 2.61e+02 0 Skip BFGS \n",
|
||||
" 4 2.60e+04 1.03e+03 1.19e-02 1.34e+03 2.44e+02 0 Skip BFGS \n",
|
||||
" 5 2.60e+04 6.85e+02 1.56e-02 1.09e+03 1.35e+02 0 \n",
|
||||
" 6 3.26e+03 5.82e+02 1.78e-02 6.40e+02 1.19e+02 0 \n",
|
||||
" 7 3.26e+03 3.67e+02 4.78e-02 5.22e+02 1.40e+02 0 \n",
|
||||
" 8 3.26e+03 2.60e+02 5.72e-02 4.46e+02 2.06e+02 0 \n",
|
||||
" 9 4.07e+02 2.10e+02 6.04e-02 2.34e+02 6.61e+01 0 \n",
|
||||
" 10 4.07e+02 1.76e+02 9.60e-02 2.15e+02 1.65e+02 0 \n",
|
||||
" 11 4.07e+02 1.56e+02 1.22e-01 2.05e+02 9.68e+01 0 \n",
|
||||
" 12 5.09e+01 1.29e+02 1.28e-01 1.35e+02 5.89e+01 0 \n",
|
||||
" 13 5.09e+01 1.24e+02 1.85e-01 1.34e+02 7.24e+01 0 \n",
|
||||
" 14 5.09e+01 1.19e+02 2.56e-01 1.32e+02 7.95e+01 0 \n",
|
||||
" 15 6.36e+00 1.10e+02 2.10e-01 1.12e+02 5.28e+01 0 \n",
|
||||
" 16 6.36e+00 7.67e+01 3.60e-01 7.89e+01 5.36e+01 0 Skip BFGS \n",
|
||||
" 17 6.36e+00 7.19e+01 3.11e-01 7.39e+01 3.66e+01 0 \n",
|
||||
" 18 7.95e-01 6.99e+01 3.06e-01 7.02e+01 3.89e+01 0 Skip BFGS \n",
|
||||
" 19 7.95e-01 6.92e+01 3.20e-01 6.94e+01 3.72e+01 0 \n",
|
||||
" 20 7.95e-01 6.21e+01 3.14e-01 6.24e+01 8.88e+01 2 Skip BFGS \n",
|
||||
" 21 9.94e-02 5.69e+01 2.69e-01 5.69e+01 3.19e+01 0 \n",
|
||||
" 22 9.94e-02 5.62e+01 2.83e-01 5.63e+01 2.62e+01 0 \n",
|
||||
" 23 9.94e-02 5.46e+01 2.44e-01 5.47e+01 4.84e+01 1 \n",
|
||||
" 24 1.24e-02 5.41e+01 2.08e-01 5.41e+01 4.43e+01 1 Skip BFGS \n",
|
||||
" 25 1.24e-02 5.36e+01 2.09e-01 5.36e+01 4.26e+01 1 \n",
|
||||
" 26 1.24e-02 5.30e+01 1.99e-01 5.30e+01 2.34e+01 0 Skip BFGS \n",
|
||||
" 27 1.55e-03 5.29e+01 1.76e-01 5.29e+01 3.42e+01 0 \n",
|
||||
" 28 1.55e-03 5.28e+01 1.81e-01 5.28e+01 3.56e+01 0 \n",
|
||||
" 29 1.55e-03 5.28e+01 1.75e-01 5.28e+01 3.75e+01 1 \n",
|
||||
" 30 1.94e-04 4.75e+01 1.49e-01 4.75e+01 8.32e+01 1 \n",
|
||||
"------------------------- STOP! -------------------------\n",
|
||||
"1 : |fc-fOld| = 7.6530e+00 <= tolF*(1+|f0|) = 1.3164e+05\n",
|
||||
"1 : |xc-x_last| = 4.1960e+00 <= tolX*(1+|x0|) = 4.2689e+00\n",
|
||||
"0 : |proj(x-g)-x| = 2.2988e+01 <= tolG = 1.0000e-01\n",
|
||||
"0 : |proj(x-g)-x| = 2.2988e+01 <= 1e3*eps = 1.0000e-02\n",
|
||||
"1 : |fc-fOld| = 5.2783e+00 <= tolF*(1+|f0|) = 2.1833e+04\n",
|
||||
"0 : |xc-x_last| = 7.4766e+00 <= tolX*(1+|x0|) = 5.1104e+00\n",
|
||||
"0 : |proj(x-g)-x| = 8.3205e+01 <= tolG = 1.0000e-01\n",
|
||||
"0 : |proj(x-g)-x| = 8.3205e+01 <= 1e3*eps = 1.0000e-02\n",
|
||||
"1 : maxIter = 30 <= iter = 30\n",
|
||||
"------------------------- DONE! -------------------------\n"
|
||||
]
|
||||
@@ -236,14 +238,14 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 21,
|
||||
"execution_count": 7,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"modList = []\n",
|
||||
"modFiles = glob('*Inversion_NoStopping.npy')\n",
|
||||
"modFiles = glob('*Inversion_NoStoppingregMesh_smoothTrue.npy')\n",
|
||||
"modFiles.sort()\n",
|
||||
"for f in modFiles:\n",
|
||||
" modList.append(np.load(f))"
|
||||
@@ -251,42 +253,119 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 22,
|
||||
"execution_count": 8,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"simpegmt.Utils.dataUtils.plotMT1DModelData(problem,modList)\n",
|
||||
"plt.show()\n"
|
||||
"# simpegmt.Utils.dataUtils.plotMT1DModelData(problem,modList)\n",
|
||||
"# plt.show()\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"execution_count": 9,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# %matplotlib qt\n",
|
||||
"# fig= simpegmt.Utils.dataUtils.plotMT1DModelData(problem,modList[-3:-1])\n",
|
||||
"# fig.suptitle('No stopping-useMref ')\n",
|
||||
"# plt.show()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 10,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"/home/gudni/anaconda/lib/python2.7/site-packages/numpy/ma/core.py:2834: FutureWarning: Numpy has detected that you (may be) writing to an array returned\n",
|
||||
"by numpy.diagonal or by selecting multiple fields in a record\n",
|
||||
"array. This code will likely break in a future numpy release --\n",
|
||||
"see numpy.diagonal or arrays.indexing reference docs for details.\n",
|
||||
"The quick fix is to make an explicit copy (e.g., do\n",
|
||||
"arr.diagonal().copy() or arr[['f0','f1']].copy()).\n",
|
||||
" if (obj.__array_interface__[\"data\"][0]\n",
|
||||
"/home/gudni/anaconda/lib/python2.7/site-packages/numpy/ma/core.py:2835: FutureWarning: Numpy has detected that you (may be) writing to an array returned\n",
|
||||
"by numpy.diagonal or by selecting multiple fields in a record\n",
|
||||
"array. This code will likely break in a future numpy release --\n",
|
||||
"see numpy.diagonal or arrays.indexing reference docs for details.\n",
|
||||
"The quick fix is to make an explicit copy (e.g., do\n",
|
||||
"arr.diagonal().copy() or arr[['f0','f1']].copy()).\n",
|
||||
" != self.__array_interface__[\"data\"][0]):\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"%matplotlib qt\n",
|
||||
"simpegmt.Utils.dataUtils.plotMT1DModelData(problem,modList)\n",
|
||||
"fig = simpegmt.Utils.dataUtils.plotMT1DModelData(problem,[m_0,mopt])\n",
|
||||
"fig.suptitle('No stopping-useMref')\n",
|
||||
"plt.show()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"execution_count": 11,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
"collapsed": true
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"%matplotlib qt\n",
|
||||
"simpegmt.Utils.dataUtils.plotMT1DModelData(problem,modList[-3:-1])\n",
|
||||
"plt.show()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 12,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"array([ 4.26403069e+01, 3.00486580e+02, 1.66374083e+02,\n",
|
||||
" 7.56749193e+00, 1.95232762e+00, 1.28591697e+01,\n",
|
||||
" 9.25428204e+01, 1.58941963e+02, 1.23328303e+02,\n",
|
||||
" 7.51647545e+01, 4.59620120e+01, 2.84873346e+01,\n",
|
||||
" 1.67854087e+01, 9.65288171e+00, 5.69417961e+00,\n",
|
||||
" 4.11415753e+00, 4.04091270e+00, 5.89702878e+00,\n",
|
||||
" 1.03685013e+01, 1.49615226e+01, 1.78450685e+01,\n",
|
||||
" 2.21298842e+01, 3.14894964e+01, 5.03867813e+01,\n",
|
||||
" 8.57783978e+01, 1.39225191e+02, 2.10683526e+02,\n",
|
||||
" 3.13430053e+02, 4.54348237e+02, 6.35619644e+02,\n",
|
||||
" 8.20077602e+02, 9.86597201e+02, 1.13311026e+03,\n",
|
||||
" 1.22681391e+03, 1.23177188e+03, 1.13462480e+03,\n",
|
||||
" 9.82900015e+02, 7.79370193e+02, 5.53800277e+02,\n",
|
||||
" 3.42690620e+02, 1.91257904e+02, 1.00287868e+02,\n",
|
||||
" 4.40936077e+01, 1.57081219e+01, 4.84819824e+00,\n",
|
||||
" 2.37649055e+00, 2.81483584e+00, 7.91239926e+00,\n",
|
||||
" 3.26193232e+01, 1.10105145e+02, 2.29971251e+02,\n",
|
||||
" 3.48665470e+02, 4.30985817e+02, 4.28578461e+02,\n",
|
||||
" 3.43909988e+02, 2.60243364e+02, 2.15181922e+02,\n",
|
||||
" 2.03527866e+02, 2.38158572e+02, 3.70346010e+02,\n",
|
||||
" 6.61570166e+02, 1.12877904e+03, 1.82064196e+03,\n",
|
||||
" 2.57897162e+03, 3.02323079e+03])"
|
||||
]
|
||||
},
|
||||
"execution_count": 12,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"1/np.exp(mopt)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
|
||||
@@ -53,8 +53,8 @@
|
||||
"# Set the conductivity values\n",
|
||||
"sig_half = 2e-3\n",
|
||||
"sig_air = 1e-8\n",
|
||||
"sig_layer1 = 1\n",
|
||||
"sig_layer2 = .1\n",
|
||||
"sig_layer1 = .2\n",
|
||||
"sig_layer2 = .2\n",
|
||||
"# Make the true model\n",
|
||||
"sigma_true = np.ones(m1d.nCx)*sig_air\n",
|
||||
"sigma_true[active] = sig_half\n",
|
||||
@@ -102,7 +102,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
"execution_count": 4,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -130,7 +130,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 7,
|
||||
"execution_count": 5,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -154,6 +154,7 @@
|
||||
" reg = simpeg.Regularization.Tikhonov(regMesh)\n",
|
||||
"# else:\n",
|
||||
"# reg = simpeg.Regularization.Tikhonov(m1d,mapping=mapAct)\n",
|
||||
"reg.smoothModel = False\n",
|
||||
"reg.alpha_s = 1e-8\n",
|
||||
"reg.alpha_x = 1.\n",
|
||||
"# Inversion problem\n",
|
||||
@@ -163,17 +164,17 @@
|
||||
"beta = simpeg.Directives.BetaSchedule()\n",
|
||||
"betaest = simpeg.Directives.BetaEstimate_ByEig(beta0_ratio=0.75)\n",
|
||||
"saveModel = simpeg.Directives.SaveModelEveryIteration()\n",
|
||||
"saveModel.fileName = 'Inversion_NoStoppingregMesh'\n",
|
||||
"saveModel.fileName = 'Inversion_NoStoppingregMesh_smoothFalse'\n",
|
||||
"# Create an inversion object\n",
|
||||
"inv = simpeg.Inversion.BaseInversion(invProb, directiveList=[beta,betaest,saveModel]) \n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 8,
|
||||
"execution_count": 6,
|
||||
"metadata": {
|
||||
"collapsed": false,
|
||||
"scrolled": false
|
||||
"scrolled": true
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
@@ -184,21 +185,48 @@
|
||||
"SimPEG.InvProblem is setting bfgsH0 to the inverse of the eval2Deriv.\n",
|
||||
" ***Done using same solver as the problem***\n",
|
||||
"SimPEG.l2_DataMisfit is creating default weightings for Wd.\n",
|
||||
"SimPEG.SaveModelEveryIteration will save your models as: '###-Inversion_NoStoppingregMesh.npy'\n",
|
||||
"SimPEG.SaveModelEveryIteration will save your models as: '###-Inversion_NoStoppingregMesh_smoothFalse.npy'\n",
|
||||
"============================ Inexact Gauss Newton ============================\n",
|
||||
" # beta phi_d phi_m f |proj(x-g)-x| LS Comment \n",
|
||||
"-----------------------------------------------------------------------------\n",
|
||||
" 0 3.07e+06 5.84e+06 2.95e-02 5.93e+06 1.45e+06 0 \n",
|
||||
" 1 3.07e+06 6.43e+05 2.81e-02 7.29e+05 1.64e+05 0 \n",
|
||||
" 2 3.07e+06 6.97e+04 2.75e-02 1.54e+05 1.99e+04 0 Skip BFGS \n",
|
||||
" 3 3.84e+05 1.01e+04 2.79e-02 2.08e+04 2.95e+03 0 Skip BFGS \n",
|
||||
" 4 3.84e+05 5.52e+03 2.97e-02 1.69e+04 3.93e+02 0 Skip BFGS \n",
|
||||
" 5 3.84e+05 5.44e+03 2.93e-02 1.67e+04 7.12e+01 0 Skip BFGS \n",
|
||||
"------------------------------------------------------------------\n",
|
||||
"0 : ft = 1.6712e+04 <= alp*descent = 1.6712e+04\n",
|
||||
"1 : maxIterLS = 10 <= iterLS = 10\n",
|
||||
"------------------------- End Linesearch -------------------------\n",
|
||||
"The linesearch got broken. Boo.\n"
|
||||
" 0 7.58e+05 5.84e+06 0.00e+00 5.84e+06 1.45e+06 0 \n",
|
||||
" 1 7.58e+05 6.42e+05 2.33e-04 6.43e+05 1.64e+05 0 \n",
|
||||
" 2 7.58e+05 6.95e+04 7.43e-04 7.00e+04 2.00e+04 0 Skip BFGS \n",
|
||||
" 3 9.47e+04 9.80e+03 1.31e-03 9.92e+03 2.87e+03 0 Skip BFGS \n",
|
||||
" 4 9.47e+04 4.94e+03 5.58e-03 5.47e+03 3.72e+02 0 Skip BFGS \n",
|
||||
" 5 9.47e+04 4.62e+03 7.58e-03 5.33e+03 3.58e+01 0 Skip BFGS \n",
|
||||
" 6 1.18e+04 4.61e+03 7.61e-03 4.70e+03 5.85e+02 0 Skip BFGS \n",
|
||||
" 7 1.18e+04 3.57e+03 3.44e-02 3.97e+03 3.49e+02 0 \n",
|
||||
" 8 1.18e+04 3.27e+03 3.71e-02 3.71e+03 3.65e+02 0 \n",
|
||||
" 9 1.48e+03 3.19e+03 3.67e-02 3.24e+03 5.87e+02 0 \n",
|
||||
" 10 1.48e+03 3.11e+03 5.52e-02 3.19e+03 5.02e+02 0 \n",
|
||||
" 11 1.48e+03 3.10e+03 5.75e-02 3.18e+03 5.14e+02 2 \n",
|
||||
" 12 1.85e+02 3.09e+03 5.75e-02 3.10e+03 5.39e+02 3 \n",
|
||||
" 13 1.85e+02 3.06e+03 7.96e-02 3.07e+03 4.75e+02 0 \n",
|
||||
" 14 1.85e+02 3.06e+03 8.25e-02 3.07e+03 4.80e+02 3 \n",
|
||||
" 15 2.31e+01 3.05e+03 8.50e-02 3.05e+03 4.82e+02 4 \n",
|
||||
" 16 2.31e+01 3.04e+03 1.39e-01 3.04e+03 4.80e+02 2 \n",
|
||||
" 17 2.31e+01 3.01e+03 1.59e-01 3.01e+03 4.72e+02 2 \n",
|
||||
" 18 2.89e+00 3.01e+03 1.26e-01 3.01e+03 4.87e+02 1 \n",
|
||||
" 19 2.89e+00 2.45e+03 1.96e-01 2.45e+03 5.42e+02 1 \n",
|
||||
" 20 2.89e+00 2.11e+03 4.55e-01 2.12e+03 8.59e+02 0 Skip BFGS \n",
|
||||
" 21 3.61e-01 1.95e+03 5.59e-01 1.95e+03 4.88e+02 0 \n",
|
||||
" 22 3.61e-01 1.72e+03 5.09e-01 1.72e+03 3.32e+02 0 \n",
|
||||
" 23 3.61e-01 1.56e+03 6.15e-01 1.56e+03 2.82e+02 0 Skip BFGS \n",
|
||||
" 24 4.52e-02 1.49e+03 7.06e-01 1.49e+03 2.61e+02 1 \n",
|
||||
" 25 4.52e-02 1.45e+03 8.86e-01 1.45e+03 2.72e+02 3 Skip BFGS \n",
|
||||
" 26 4.52e-02 1.41e+03 7.88e-01 1.41e+03 3.08e+02 0 \n",
|
||||
" 27 5.64e-03 1.41e+03 7.02e-01 1.41e+03 2.64e+02 0 \n",
|
||||
" 28 5.64e-03 1.27e+03 7.59e-01 1.27e+03 3.48e+02 0 \n",
|
||||
" 29 5.64e-03 9.93e+02 1.47e+00 9.93e+02 4.30e+02 1 \n",
|
||||
" 30 7.05e-04 8.33e+02 3.08e+00 8.33e+02 5.44e+02 1 Skip BFGS \n",
|
||||
"------------------------- STOP! -------------------------\n",
|
||||
"1 : |fc-fOld| = 1.5990e+02 <= tolF*(1+|f0|) = 5.8433e+05\n",
|
||||
"0 : |xc-x_last| = 3.4554e+01 <= tolX*(1+|x0|) = 4.2689e+00\n",
|
||||
"0 : |proj(x-g)-x| = 5.4392e+02 <= tolG = 1.0000e-01\n",
|
||||
"0 : |proj(x-g)-x| = 5.4392e+02 <= 1e3*eps = 1.0000e-02\n",
|
||||
"1 : maxIter = 30 <= iter = 30\n",
|
||||
"------------------------- DONE! -------------------------\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -209,7 +237,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"execution_count": 7,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -224,7 +252,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 9,
|
||||
"execution_count": 8,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -251,13 +279,15 @@
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"simpegmt.Utils.dataUtils.plotMT1DModelData(problem,[m_0,mopt])\n",
|
||||
"plt.show()\n"
|
||||
"%matplotlib inline\n",
|
||||
"fig = simpegmt.Utils.dataUtils.plotMT1DModelData(problem,[m_0,mopt])\n",
|
||||
"fig.supplot\n",
|
||||
"plt.show()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"execution_count": 9,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -270,7 +300,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"execution_count": 10,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -283,7 +313,29 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 10,
|
||||
"execution_count": 11,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"78.694562868192662"
|
||||
]
|
||||
},
|
||||
"execution_count": 11,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"np.linalg.norm(mopt - reg.mref)\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 12,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -302,7 +354,7 @@
|
||||
" -6.2146081, -6.2146081, -6.2146081, -6.2146081, -6.2146081])"
|
||||
]
|
||||
},
|
||||
"execution_count": 10,
|
||||
"execution_count": 12,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
@@ -313,37 +365,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 11,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"array([-6.2146081, -6.2146081, -6.2146081, -6.2146081, -6.2146081,\n",
|
||||
" -6.2146081, -6.2146081, -6.2146081, -6.2146081, -6.2146081,\n",
|
||||
" -6.2146081, -6.2146081, -6.2146081, -6.2146081, -6.2146081,\n",
|
||||
" -6.2146081, -6.2146081, -6.2146081, -6.2146081, -6.2146081,\n",
|
||||
" -6.2146081, -6.2146081, -6.2146081, -6.2146081, -6.2146081,\n",
|
||||
" -6.2146081, -6.2146081, -6.2146081, -6.2146081, -6.2146081,\n",
|
||||
" -6.2146081, -6.2146081, -6.2146081, -6.2146081, -6.2146081,\n",
|
||||
" -6.2146081, -6.2146081, -6.2146081, -6.2146081, -6.2146081,\n",
|
||||
" -6.2146081, -6.2146081, -6.2146081, -6.2146081, -6.2146081])"
|
||||
]
|
||||
},
|
||||
"execution_count": 11,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"m_0"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 12,
|
||||
"execution_count": 13,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -369,7 +391,7 @@
|
||||
" -5.82076609e-11])"
|
||||
]
|
||||
},
|
||||
"execution_count": 12,
|
||||
"execution_count": 13,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
@@ -414,6 +436,160 @@
|
||||
"m1d.gridN[active]"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 15,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"self = reg\n",
|
||||
"r1 = self.W * ( self.mapping * (m_0) )\n",
|
||||
"r2 = self.Ws * ( self.mapping * (self.mref) )"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 16,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"array([-6.2146081, -6.2146081, -6.2146081, -6.2146081, -6.2146081,\n",
|
||||
" -6.2146081, -6.2146081, -6.2146081, -6.2146081, -6.2146081,\n",
|
||||
" -6.2146081, -6.2146081, -6.2146081, -6.2146081, -6.2146081,\n",
|
||||
" -6.2146081, -6.2146081, -6.2146081, -6.2146081, -6.2146081,\n",
|
||||
" -6.2146081, -6.2146081, -6.2146081, -6.2146081, -6.2146081,\n",
|
||||
" -6.2146081, -6.2146081, -6.2146081, -6.2146081, -6.2146081,\n",
|
||||
" -6.2146081, -6.2146081, -6.2146081, -6.2146081, -6.2146081,\n",
|
||||
" -6.2146081, -6.2146081, -6.2146081, -6.2146081, -6.2146081,\n",
|
||||
" -6.2146081, -6.2146081, -6.2146081, -6.2146081, -6.2146081])"
|
||||
]
|
||||
},
|
||||
"execution_count": 16,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"( self.mapping * (m_0) )"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 17,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"<45x45 sparse matrix of type '<type 'numpy.float64'>'\n",
|
||||
"\twith 45 stored elements in Compressed Sparse Row format>"
|
||||
]
|
||||
},
|
||||
"execution_count": 17,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"self.Ws"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 18,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"<SimPEG.Maps.IdentityMap at 0x7f7c7b890390>"
|
||||
]
|
||||
},
|
||||
"execution_count": 18,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"self.mapping"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 19,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"-1.7347234759768071e-18"
|
||||
]
|
||||
},
|
||||
"execution_count": 19,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"0.5*(r1.dot(r1)-r2.dot(r2))"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 20,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"0.029467074824486239"
|
||||
]
|
||||
},
|
||||
"execution_count": 20,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"r1.dot(r1)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 21,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"0.029467074824486243"
|
||||
]
|
||||
},
|
||||
"execution_count": 21,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"r2.dot(r2)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
|
||||
@@ -30,23 +30,23 @@
|
||||
"nFreq = 31\n",
|
||||
"freqs = np.logspace(3,-3,nFreq)\n",
|
||||
"# Set mesh parameters\n",
|
||||
"ct = 10\n",
|
||||
"air = simpeg.Utils.meshTensor([(ct,25,1.3)])\n",
|
||||
"core = np.concatenate( ( np.kron(simpeg.Utils.meshTensor([(ct,5,-1.2)]),np.ones((3,))) , simpeg.Utils.meshTensor([(ct,5)]) ) )\n",
|
||||
"bot = simpeg.Utils.meshTensor([(core[0],25,-1.3)])\n",
|
||||
"ct = 20\n",
|
||||
"air = simpeg.Utils.meshTensor([(ct,16,1.4)])\n",
|
||||
"core = np.concatenate( ( np.kron(simpeg.Utils.meshTensor([(ct,10,-1.3)]),np.ones((5,))) , simpeg.Utils.meshTensor([(ct,5)]) ) )\n",
|
||||
"bot = simpeg.Utils.meshTensor([(core[0],10,-1.4)])\n",
|
||||
"x0 = -np.array([np.sum(np.concatenate((core,bot)))])\n",
|
||||
"# Make the model\n",
|
||||
"m1d = simpeg.Mesh.TensorMesh([np.concatenate((bot,core,air))], x0=x0)\n",
|
||||
"\n",
|
||||
"# Setup model varibles\n",
|
||||
"active = m1d.vectorCCx<0.\n",
|
||||
"layer1 = (m1d.vectorCCx<-200.) & (m1d.vectorCCx>=-600.)\n",
|
||||
"layer2 = (m1d.vectorCCx<-2000.) & (m1d.vectorCCx>=-4000.)\n",
|
||||
"layer1 = (m1d.vectorCCx<-500.) & (m1d.vectorCCx>=-800.)\n",
|
||||
"layer2 = (m1d.vectorCCx<-3500.) & (m1d.vectorCCx>=-5000.)\n",
|
||||
"# Set the conductivity values\n",
|
||||
"sig_half = 2e-3\n",
|
||||
"sig_air = 1e-8\n",
|
||||
"sig_layer1 = 1\n",
|
||||
"sig_layer2 = .1\n",
|
||||
"sig_layer1 = .2\n",
|
||||
"sig_layer2 = .2\n",
|
||||
"# Make the true model\n",
|
||||
"sigma_true = np.ones(m1d.nCx)*sig_air\n",
|
||||
"sigma_true[active] = sig_half\n",
|
||||
@@ -109,19 +109,19 @@
|
||||
"else:\n",
|
||||
" d_true = survey.dpred(m_true)\n",
|
||||
" np.save('MT1D_dtrue.npy',d_true)\n",
|
||||
" d_obs = std*abs(d_true)*np.random.randn(*d_true.shape)\n",
|
||||
" d_obs = d_true + std*abs(d_true)*np.random.randn(*d_true.shape)\n",
|
||||
" np.save('MT1D_dobs.npy',d_obs)\n",
|
||||
"# Assign the dobs\n",
|
||||
"survey.dtrue = d_true\n",
|
||||
"survey.dobs = d_obs\n",
|
||||
"survey.std = survey.dobs*0 + std\n",
|
||||
"survey.std = np.abs(survey.dobs*std) + 0.01*np.linalg.norm(survey.dobs) #survey.dobs*0 + std\n",
|
||||
"# Assign the data weight\n",
|
||||
"survey.Wd = 1/(abs(survey.dobs)*survey.std)"
|
||||
"survey.Wd = 1/survey.std #(abs(survey.dobs)*survey.std)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 12,
|
||||
"execution_count": 5,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -140,12 +140,13 @@
|
||||
"dmis = simpeg.DataMisfit.l2_DataMisfit(survey)\n",
|
||||
"# Regularization\n",
|
||||
"# Either have to use \n",
|
||||
"if False:\n",
|
||||
"if True:\n",
|
||||
" regMesh = simpeg.Mesh.TensorMesh([m1d.hx[problem.mapping.sigmaMap.maps[-1].indActive]],m1d.x0)\n",
|
||||
" reg = simpeg.Regularization.Tikhonov(regMesh)\n",
|
||||
"else:\n",
|
||||
" reg = simpeg.Regularization.Tikhonov(m1d,mapping=mappingExpAct)\n",
|
||||
"reg.alpha_s = 1e-6\n",
|
||||
"reg.smoothModel = True\n",
|
||||
"reg.alpha_s = 1e-7\n",
|
||||
"reg.alpha_x = 1.\n",
|
||||
"\n",
|
||||
"# Inversion problem\n",
|
||||
@@ -156,14 +157,14 @@
|
||||
"betaest = simpeg.Directives.BetaEstimate_ByEig(beta0_ratio=0.75)\n",
|
||||
"targmis = simpeg.Directives.TargetMisfit()\n",
|
||||
"saveModel = simpeg.Directives.SaveModelEveryIteration()\n",
|
||||
"saveModel.fileName = 'Inversion_TargMisEqnD'\n",
|
||||
"saveModel.fileName = 'Inversion_TargMisEqnD_smoothTrue'\n",
|
||||
"# Create an inversion object\n",
|
||||
"inv = simpeg.Inversion.BaseInversion(invProb, directiveList=[beta,betaest,targmis,saveModel]) \n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 13,
|
||||
"execution_count": 6,
|
||||
"metadata": {
|
||||
"collapsed": false,
|
||||
"scrolled": false
|
||||
@@ -177,53 +178,166 @@
|
||||
"SimPEG.InvProblem is setting bfgsH0 to the inverse of the eval2Deriv.\n",
|
||||
" ***Done using same solver as the problem***\n",
|
||||
"SimPEG.l2_DataMisfit is creating default weightings for Wd.\n",
|
||||
"SimPEG.SaveModelEveryIteration will save your models as: '###-Inversion_TargMisEqnD.npy'\n",
|
||||
"SimPEG.SaveModelEveryIteration will save your models as: '###-Inversion_TargMisEqnD_smoothTrue.npy'\n",
|
||||
"============================ Inexact Gauss Newton ============================\n",
|
||||
" # beta phi_d phi_m f |proj(x-g)-x| LS Comment \n",
|
||||
"-----------------------------------------------------------------------------\n",
|
||||
" 0 7.52e+05 1.32e+06 4.79e-07 1.32e+06 3.23e+05 0 \n",
|
||||
" 1 7.52e+05 1.91e+05 1.61e-06 1.91e+05 4.88e+04 0 \n",
|
||||
" 2 7.52e+05 8.47e+04 3.06e-06 8.47e+04 2.41e+04 0 Skip BFGS \n",
|
||||
" 3 9.41e+04 7.39e+04 3.58e-06 7.39e+04 2.12e+04 0 Skip BFGS \n",
|
||||
" 4 9.41e+04 4.00e+04 7.90e-06 4.00e+04 1.19e+04 0 Skip BFGS \n",
|
||||
" 5 9.41e+04 3.37e+04 1.00e-05 3.37e+04 1.02e+04 0 Skip BFGS \n",
|
||||
" 6 1.18e+04 3.00e+04 1.18e-05 3.00e+04 9.10e+03 0 Skip BFGS \n",
|
||||
" 7 1.18e+04 1.71e+04 2.61e-05 1.71e+04 5.44e+03 0 Skip BFGS \n",
|
||||
" 8 1.18e+04 1.41e+04 3.38e-05 1.41e+04 4.61e+03 0 Skip BFGS \n",
|
||||
" 9 1.47e+03 1.25e+04 4.02e-05 1.25e+04 4.12e+03 0 Skip BFGS \n",
|
||||
" 10 1.47e+03 6.91e+03 8.84e-05 6.91e+03 2.48e+03 0 Skip BFGS \n",
|
||||
" 11 1.47e+03 5.65e+03 1.15e-04 5.65e+03 2.09e+03 0 Skip BFGS \n",
|
||||
" 12 1.84e+02 4.93e+03 1.36e-04 4.93e+03 1.87e+03 0 Skip BFGS \n",
|
||||
" 13 1.84e+02 2.73e+03 2.85e-04 2.73e+03 1.14e+03 0 Skip BFGS \n",
|
||||
" 14 1.84e+02 2.22e+03 3.66e-04 2.22e+03 9.55e+02 0 Skip BFGS \n",
|
||||
" 15 2.30e+01 1.95e+03 4.32e-04 1.95e+03 8.48e+02 0 Skip BFGS \n",
|
||||
" 16 2.30e+01 1.16e+03 8.20e-04 1.16e+03 5.20e+02 0 Skip BFGS \n",
|
||||
" 17 2.30e+01 9.61e+02 1.03e-03 9.61e+02 4.28e+02 0 Skip BFGS \n",
|
||||
" 18 2.87e+00 8.51e+02 1.19e-03 8.51e+02 3.75e+02 0 Skip BFGS \n",
|
||||
" 19 2.87e+00 5.60e+02 2.03e-03 5.60e+02 2.24e+02 0 Skip BFGS \n",
|
||||
" 20 2.87e+00 4.64e+02 2.44e-03 4.64e+02 1.82e+02 0 Skip BFGS \n",
|
||||
" 21 3.59e-01 4.09e+02 2.74e-03 4.09e+02 1.59e+02 0 Skip BFGS \n",
|
||||
" 22 3.59e-01 2.75e+02 3.99e-03 2.75e+02 1.10e+02 0 Skip BFGS \n",
|
||||
" 23 3.59e-01 2.28e+02 4.59e-03 2.28e+02 8.98e+01 0 \n",
|
||||
" 24 4.48e-02 1.85e+02 4.88e-03 1.85e+02 8.62e+01 0 Skip BFGS \n",
|
||||
" 25 4.48e-02 1.26e+02 6.70e-03 1.26e+02 7.39e+01 0 Skip BFGS \n",
|
||||
" 26 4.48e-02 8.27e+01 7.76e-03 8.27e+01 5.01e+01 0 \n",
|
||||
" 27 5.61e-03 6.54e+01 8.37e-03 6.54e+01 5.22e+01 1 \n",
|
||||
" 0 2.78e+05 2.18e+05 0.00e+00 2.18e+05 4.01e+04 0 \n",
|
||||
" 1 2.78e+05 2.52e+04 3.34e-05 2.52e+04 6.20e+03 0 \n",
|
||||
" 2 2.78e+05 3.46e+03 1.32e-04 3.50e+03 1.03e+03 0 Skip BFGS \n",
|
||||
" 3 3.48e+04 1.76e+03 6.52e-04 1.78e+03 2.62e+02 0 Skip BFGS \n",
|
||||
" 4 3.48e+04 1.12e+03 8.86e-03 1.43e+03 1.98e+02 0 Skip BFGS \n",
|
||||
" 5 3.48e+04 8.39e+02 1.18e-02 1.25e+03 1.18e+02 0 \n",
|
||||
" 6 4.35e+03 6.98e+02 1.46e-02 7.61e+02 1.46e+02 0 \n",
|
||||
" 7 4.35e+03 4.05e+02 4.96e-02 6.20e+02 1.60e+02 0 \n",
|
||||
" 8 4.35e+03 2.67e+02 5.64e-02 5.12e+02 1.81e+02 0 \n",
|
||||
" 9 5.43e+02 2.25e+02 5.88e-02 2.56e+02 7.07e+01 0 \n",
|
||||
" 10 5.43e+02 1.96e+02 7.46e-02 2.37e+02 1.23e+02 0 \n",
|
||||
" 11 5.43e+02 1.63e+02 7.82e-02 2.05e+02 5.88e+01 0 \n",
|
||||
" 12 6.79e+01 1.21e+02 1.32e-01 1.30e+02 1.24e+02 0 Skip BFGS \n",
|
||||
" 13 6.79e+01 1.16e+02 1.57e-01 1.27e+02 1.15e+02 0 \n",
|
||||
" 14 6.79e+01 1.04e+02 1.99e-01 1.17e+02 8.66e+01 1 \n",
|
||||
" 15 8.49e+00 9.98e+01 1.83e-01 1.01e+02 8.00e+01 1 \n",
|
||||
" 16 8.49e+00 9.88e+01 2.31e-01 1.01e+02 8.13e+01 0 \n",
|
||||
" 17 8.49e+00 9.59e+01 2.05e-01 9.76e+01 9.01e+01 0 \n",
|
||||
" 18 1.06e+00 6.64e+01 2.03e-01 6.66e+01 5.84e+01 0 Skip BFGS \n",
|
||||
"------------------------- STOP! -------------------------\n",
|
||||
"1 : |fc-fOld| = 0.0000e+00 <= tolF*(1+|f0|) = 1.3164e+05\n",
|
||||
"0 : |xc-x_last| = 5.4748e+00 <= tolX*(1+|x0|) = 4.2689e+00\n",
|
||||
"0 : |proj(x-g)-x| = 5.2197e+01 <= tolG = 1.0000e-01\n",
|
||||
"0 : |proj(x-g)-x| = 5.2197e+01 <= 1e3*eps = 1.0000e-02\n",
|
||||
"0 : maxIter = 50 <= iter = 28\n",
|
||||
"1 : |fc-fOld| = 0.0000e+00 <= tolF*(1+|f0|) = 2.1833e+04\n",
|
||||
"1 : |xc-x_last| = 2.2460e+00 <= tolX*(1+|x0|) = 5.1104e+00\n",
|
||||
"0 : |proj(x-g)-x| = 5.8352e+01 <= tolG = 1.0000e-01\n",
|
||||
"0 : |proj(x-g)-x| = 5.8352e+01 <= 1e3*eps = 1.0000e-02\n",
|
||||
"0 : maxIter = 50 <= iter = 19\n",
|
||||
"------------------------- DONE! -------------------------\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"%timeit\n",
|
||||
"# Run the inversion, given the background model as a start.\n",
|
||||
"mopt = inv.run(m_0)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 9,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0x7f6941f051d0>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"%matplotlib inline\n",
|
||||
"fig = simpegmt.Utils.dataUtils.plotMT1DModelData(problem,[m_0,mopt])\n",
|
||||
"fig.suptitle('Target - smooth true')\n",
|
||||
"plt.show()\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 10,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"reg.alpha_xx = 0.001\n",
|
||||
"saveModel.fileName = 'Inversion_TargMisEqnD_smoothTrue_Wxx'"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 11,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"SimPEG.InvProblem is setting bfgsH0 to the inverse of the eval2Deriv.\n",
|
||||
" ***Done using same solver as the problem***\n",
|
||||
"SimPEG.SaveModelEveryIteration will save your models as: '###-Inversion_TargMisEqnD_smoothTrue_Wxx.npy'\n",
|
||||
"============================ Inexact Gauss Newton ============================\n",
|
||||
" # beta phi_d phi_m f |proj(x-g)-x| LS Comment \n",
|
||||
"-----------------------------------------------------------------------------\n",
|
||||
" 0 2.00e+05 2.18e+05 0.00e+00 2.18e+05 4.01e+04 0 \n",
|
||||
" 1 2.00e+05 2.52e+04 3.34e-05 2.52e+04 6.20e+03 0 \n",
|
||||
" 2 2.00e+05 3.46e+03 1.33e-04 3.49e+03 1.03e+03 0 Skip BFGS \n",
|
||||
" 3 2.49e+04 1.72e+03 8.63e-04 1.74e+03 2.61e+02 0 Skip BFGS \n",
|
||||
" 4 2.49e+04 1.02e+03 1.30e-02 1.35e+03 2.51e+02 0 Skip BFGS \n",
|
||||
" 5 2.49e+04 6.65e+02 1.68e-02 1.08e+03 1.37e+02 0 \n",
|
||||
" 6 3.12e+03 5.70e+02 1.88e-02 6.28e+02 1.17e+02 0 \n",
|
||||
" 7 3.12e+03 3.62e+02 4.82e-02 5.13e+02 1.38e+02 0 \n",
|
||||
" 8 3.12e+03 2.61e+02 5.68e-02 4.38e+02 1.98e+02 0 \n",
|
||||
" 9 3.90e+02 2.09e+02 6.09e-02 2.33e+02 6.57e+01 0 \n",
|
||||
" 10 3.90e+02 1.77e+02 9.89e-02 2.15e+02 1.73e+02 0 \n",
|
||||
" 11 3.90e+02 1.50e+02 1.15e-01 1.95e+02 1.29e+02 1 \n",
|
||||
" 12 4.87e+01 1.34e+02 1.32e-01 1.41e+02 7.79e+01 0 \n",
|
||||
" 13 4.87e+01 1.16e+02 1.58e-01 1.24e+02 7.38e+01 1 \n",
|
||||
" 14 4.87e+01 9.60e+01 2.56e-01 1.08e+02 1.22e+02 0 \n",
|
||||
" 15 6.09e+00 9.18e+01 2.69e-01 9.34e+01 8.58e+01 0 \n",
|
||||
" 16 6.09e+00 6.21e+01 3.72e-01 6.44e+01 6.72e+01 0 \n",
|
||||
"------------------------- STOP! -------------------------\n",
|
||||
"1 : |fc-fOld| = 0.0000e+00 <= tolF*(1+|f0|) = 2.1833e+04\n",
|
||||
"1 : |xc-x_last| = 5.7707e-01 <= tolX*(1+|x0|) = 5.1104e+00\n",
|
||||
"0 : |proj(x-g)-x| = 6.7181e+01 <= tolG = 1.0000e-01\n",
|
||||
"0 : |proj(x-g)-x| = 6.7181e+01 <= 1e3*eps = 1.0000e-02\n",
|
||||
"0 : maxIter = 50 <= iter = 17\n",
|
||||
"------------------------- DONE! -------------------------\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"array([ -4.14711455, -8.48909373, -7.52827336, -3.49932909,\n",
|
||||
" -1.00331819, -2.70007482, -3.1711545 , -3.00405765,\n",
|
||||
" -2.7650382 , -2.66048875, -2.66349897, -2.71130228,\n",
|
||||
" -2.77717345, -2.7947959 , -2.66720877, -2.36129372,\n",
|
||||
" -1.99640404, -1.65920128, -1.57027047, -1.94765493,\n",
|
||||
" -2.75336364, -3.7261836 , -4.91018688, -6.25134639,\n",
|
||||
" -7.7042116 , -9.04768822, -10.22631443, -11.38316489,\n",
|
||||
" -12.47719857, -13.45601604, -14.16107916, -14.62352295,\n",
|
||||
" -14.8899775 , -14.90719522, -14.61381454, -14.01919889,\n",
|
||||
" -13.24084833, -12.17168104, -10.79110293, -9.09917198,\n",
|
||||
" -7.36420672, -5.75429753, -4.14109747, -2.68084574,\n",
|
||||
" -1.58271625, -1.1145424 , -1.14047311, -1.70470304,\n",
|
||||
" -2.80682095, -4.11322574, -5.17550422, -5.9471688 ,\n",
|
||||
" -6.43756507, -6.50919184, -6.12669826, -5.55246011,\n",
|
||||
" -5.10992856, -4.95756043, -5.27203799, -6.08576941,\n",
|
||||
" -7.12571201, -8.10996496, -9.02794122, -9.72407268, -10.05187723])"
|
||||
]
|
||||
},
|
||||
"execution_count": 11,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"moptWxx = inv.run(m_0)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 13,
|
||||
"metadata": {
|
||||
"collapsed": true
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"moptWxx = Out[11]"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 14,
|
||||
@@ -233,9 +347,9 @@
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAn0AAAIBCAYAAAA8kwl3AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd8VFX6+PHPSQ8EklBDk9CRDoIoqAQUleaKilh2lQW7\nLmv76nd/u+vJ2XWLLqKyurt2/OqCWLCDitKlF0VpoiRIkU4goaSe3x93EpPMTTJJJjOT5Hm/XvNi\n5t5z731uws195txTlLUWIYQQQghRt4UFOwAhhBBCCFHzJOkTQgghhKgHJOkTQgghhKgHJOkTQggh\nhKgHJOkTQgghhKgHJOkTQgghhKgHJOkTQgghhKgHJOkTQgghhKgHJOkToo5RSiUqpf6mlLpfKRWt\nlPqPUuobpdQrSqkmwY5PCCFEcEjSJ0Td8woQBXQDFgLHgeuANGBGEOMSQggRREqmYROiblFKbbLW\n9lFKhQH7gSRrbYFn3dfW2r7BjVAIIUQwSE2fEHVPAYAn0VtXmPAJIYSo3yKCHYAQ9ZlSqkEVNz1t\ny66mP66UamStzbTWji52rJZAdhWPJ4QQopqMMVEAWuucYBxfHu8KEURKqarUwllgkLV2QyWPlQAk\nWmvTqnBMIYQQVWSMiQEuBB4ATgBztNbvBDoOSfqECCJP0vcosNPHTcKAF4GBlU36hBBCBJ4xJhG4\nEbgMmAvsAF4CrtBabw9kLPJ4V4jg+8hau8aXgkqpCJykr9KUUo2AYTi9ehM9i48B24Al1tqsquxX\nCCGEO8/j3BuAvsDjWutlnuV7gIAPoSVJnxDB1RHY52tha22eUqojsNfXbTy9eA1wPxALnMJJ9sBJ\n/hoAp5RS0wFdTltBIYQQlTMUGAf8VWu9zBgTDozH+bu/LtDBSO9dIYLIWpturfW5Qa9SqinwLrBG\nKfWTUmqPUmqjUmqDpxbQjQbuA1KBZGttnLW2necVB7T3rCssU3iseKXUnVU6sQBRSg1TSp1f7PNM\npdTVFWxTo+fl+X309byPUEplKaVuLLZ+vVKqX00d34f4LldKbVNK7VBKPVxOuRmeMl8rpfpXtL1S\naoJSarNSKl8pNaCmz0OIUGeMiQBuB+ZqrZd6Pl8ADMZJ+AqMMQHNwyTpEyIEeZKFBqVf1toj1tr+\n1tr+wH+A6Z7PA6y1eWXs7hbgQWvtP6y1P5Zeaa3dba2dhtPA+JZiqxKBu/x9bn42HBhS7LMvtZRl\nnlc5iXNlLC8WU19ge+FnpVRDnNrdr/1wnEpTSoUDzwCXAz2A65VSZ7uUGw10ttZ2AW4D/u3D9t/g\n1GAsrenzEKKWsMAZoPCL/URgrOfzTK11vta6qDOfMabGH/dK0idEiFBKJSil/q2U2o8ztEpWqVem\n+2bqFqXUGqXUV0qpt5VSsZ4VM5VS/wGSgBFKqU5KqVVKqU1KqUeVUpnFdvI/OI9/WymlUj2L/w50\n8tRcPVaJ8+iplFrt2e5rz3GTPbVDryiltiul/quUulQp9aVS6jul1CDPtk2UUu95tluplOpd1nKl\nVDLOt+j7PDWdF3hCuMiz3x/KqPUrfl6Pe2oLlyml3ge+VUq1V0p9W+x8HlRKac/7Tkqp+UqpdUqp\npUqpbi77X8HPSd/5OMl5Yc3euThjJ1ql1FNKqT969nuZUmqJcrynlPqVZ/ntSqnXXX7G4zy/yw1K\nqQVKqRae5cM851VY+xtXatNzge89Ncy5wBvAL1zO4QrgVQBr7WogQSmVVN721tpt1trvXPYlRL2k\ntc7HmQXpf4wxi4ExOJ32/qG1Pu6p+cMYM9kY8yTwvjHmspqMqdb23lVK1c7ARZ1jrVX+2I9Sai6Q\nArwA/MDP3w6LH2tmsfIaJxl8xVp71LPsz8ABa+0zSqmZOA2FGwL5ntdMa+0cpdTtwDRrbSOl1KU4\n30DbAeE4bf4eB37E6WTS2yVWuf6EEMKjvPuAMSYJiAfStdZeY6UaY/4CHML5m/sYMEVrXSM15rW6\nps9aW+ZLa13uMrf3bv8WvuRYciy3Y/nZxcA91tqHrbXPW2tnln6VsV1vT03VJpxhAXoUXiLAW8Bv\ngF44wwX8Qin1CNAYiPTUND0NTMJ5VNoKp3dvZ6DcZLasn9WsWbNo3rw5jz32GDt27MBay29/+1u6\ndOlSVLZv377MmjULay0//PAD/fr1Q2tN//79SUtLKyrXrl07Tpw4QVJSkuvy1NRUpk2bVrS8X79+\nRfu11tKoUSOv33VaWhq9evUq+rxo0SKGDx9edA5paWm0aNGiaP3IkSNJTU0lKyuLiIgI+vXrV/Rq\n3ry56/+jtm3bsn//fvr374/WmoceeojPP/+cMWPG8OmnnxaVnzx5MuHh4TzzzDMl9jNr1iwiIiL4\n6KOPXP/Pbtq0iZEjR9K7d2+6devGqFGjsNby97//ncGDBzNjxgz27NnjFdeECRO45ZZbipa99tpr\n3HPPPV7779q1K8uXLy/63KFDB9atW8fbb7/tun3xbVNSUrjtttvKvQbLuxYr8yp9XZb33pfPFcXk\na7xyXnXvvPLz8zl+/Di7d+9my5YtbN++vWhdRbTW+z1Ds1xpjClqg2yMmWqMuR+4BFihtZ6LMzqD\n1xdtf6mzvXdTUlLKXeb2vqx/Fy9eLMeSY7n+a4wp91iVtBenlq2yXgF+Ya39Ril1M05tYaFT1tot\nSqmewB6gLU5ymQhEAvfg1Ci+D0y21mYUbuh5fFqm/v37c/LkSe644w6SkpKKfibXX389AIcPH2b0\n6NE899xznHfeeXzxxRdF27Zq1YqoqCgAwsLCyMvLIyUlhQ8++MD1j2hh8laRpKSkov0CPm0D0LBh\nw6L3ERERxMbGFn1u164dSikKCgqIj49n48aNResWL15Mfn4+AwcOBKBvX2da4yFDhvDmm2/SqlUr\nUlJSOHbsGMuXL2fNmjWcf37R33zi4+Np3rw5e/eW7Iy9adMmmjVrVrS89P/Z3/zmNzz44IOMHTuW\nJUuWkJqaCsDDDz/M2LFj+fjjjxk6dCiffvop3br9/AS68Gdc+H7lypW0bduWwYMHl9h/t27d2L17\nd9HnvLw82rZtS25ubtHy4tuXds4557j9mL24XYtVUdH16+vnimLyNV45L9/3E+rn9dNPPzF79mxO\nnjxJgwYNaNSoEY0bN6Zdu3Z07drVp/0XsxQYAGCMSQWScZqDLAAWGGMeBv4GlNsZrVqqk7UH8+WE\nHhhaazmWHMuV5/+hv/5PXwFsANr7WF7jdL44CDTHSeIWAC971r8CXF2s/EfAtZ73twGZnvcjgVVA\nQ8/nNp79NQXSyzi21VrbRYsWef1Mdu7cWfT+wQcftE8//bRNT0+3vXr1Klo+adIk+/bbb1trrU1L\nSytaN3XqVPvnP//ZWmvtokWL7IABA8pd/sQTT5T4fRffr7XWxsXFecV3+PBh2759+6LPixYtsmPH\njrXWOv93cnJybLNmzeyRI0fsmTNn7ODBg60xxlpr7ZAhQ+xbb71lrbW2oKDAfv311177t9bap556\nynbs2NE++uij1lprf/rpJ9uxY0fbp0+fojLp6em2a9eu9qeffrL9+vWzq1evttZau3r1atuvXz+7\nb98+26VLF5uWlua1//79+9v169cXnXNKSoq11trvv/++qMw111xj33///aLzstba3Nxc27FjR5uW\nlmazs7Nt37597ZYtW7z2//HHH9tRo0ZZa61duXKlHTx4sM/bp6Sk2HXr1rn+XPwtkNd6IMl51bz8\n/Hy7f/9+u379evvhhx/aN99807VcTk6OzcjIsHl5eWXuqyr3gdTU1CdSU1OvSE1NjfR8npmamnp9\namrqmMruqzKvOlvT50/++nYjx6p7x/Ina+0HSqlRwPdKqTQgA+cRqy3811p7rsumjwCrcdqErAaK\nN94vXtV1L/C6Uur/AZ8Cxz3HXeDpgbnK03v1GHCjtTbN0yHiG2CetbbE8B6FtUulvfnmm7z22mtE\nRkbSqlUrfv/735ORkYFSJZ8WF/9c+D41NZXJkyfTt29fGjZsyKuvvlru8nHjxnHNNdfwwQcfMGPG\njDL3W1zTpk0ZOnQovXv3ZvTo0YwePbqoXEpKCpGRkTzyyCOce+65tGnThh49ehRt+9///pc777yT\nRx99lNzcXK6//nr69OnjdYwhQ4Zw//33F9XqJSUlUVBQwJAhTv8Oay233HILTzzxBElJSbz00ktM\nmjSJ5cuXc9tttzFz5kxatWrFE088weTJk1m4cGGJ/aempjJhwgQSExMZMWIEu3btAuDpp59m0aJF\nhIWF0atXL0aNGlV0XuDUYj7zzDNcdtll5OfnM2XKFM4+2+l8+9xzzwFw++23M3r0aObNm0fnzp1p\n2LAhr7zySoXbv/vuu0ydOpXDhw8zZswY+vfvz/z5871+Nv5UW6/1ish51Zzc3Fxee+019u/fT+PG\njWnTpg2tW7emTZs2ruUjIyOJj4/32/GNMQpnvNRuwA9a61xjTE9gBPBPrfV6vx3MRa3uyFFbYxd1\nh1IK67+OHE/gjJW3FveOHNZa++tq7D/WWnva8/46YKK1dnyx9dcAc6y14T7sS64/IUStlJ6eTlJS\nEjExMX7ZX1XuA8aYHjhjrr6P8zj3Oa31434JqByS9AlRDX5O+jKAx621f/XH/lz2fwHOGGsKpzZv\nsrV2Z7H11wBvWmsr7OCllLJaa1JSUkLi27sQQpRmrXWt7fe3qt4HjDGdcdr4ndRaf+z/yLxJ0idE\nNfg56fsJuNla+5k/9ldsv4vwbdDiFsDZUtMnhKjNcnJyWLJkCVlZWYwfP77iDarJn/eBmiZt+oQI\nHU8DtymlFvg5o7oIZ1aILRWUi61gvRBChCxrLVu3buXTTz8lOTmZkSNHBjukkCNJnLine truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0x7fef773ac550>"
|
||||
"<matplotlib.figure.Figure at 0x7f69426eacd0>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
@@ -244,19 +358,11 @@
|
||||
],
|
||||
"source": [
|
||||
"%matplotlib inline\n",
|
||||
"simpegmt.Utils.dataUtils.plotMT1DModelData(problem,[m_0,mopt])\n",
|
||||
"plt.show()\n"
|
||||
"fig = simpegmt.Utils.dataUtils.plotMT1DModelData(problem,[m_0,moptWxx])\n",
|
||||
"fig.suptitle('Target - smooth true-Wxx as 0.001')\n",
|
||||
"plt.show()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 11,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"execution_count": 1,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -17,7 +17,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"execution_count": 2,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -30,23 +30,23 @@
|
||||
"nFreq = 31\n",
|
||||
"freqs = np.logspace(3,-3,nFreq)\n",
|
||||
"# Set mesh parameters\n",
|
||||
"ct = 10\n",
|
||||
"air = simpeg.Utils.meshTensor([(ct,25,1.3)])\n",
|
||||
"core = np.concatenate( ( np.kron(simpeg.Utils.meshTensor([(ct,5,-1.2)]),np.ones((3,))) , simpeg.Utils.meshTensor([(ct,5)]) ) )\n",
|
||||
"bot = simpeg.Utils.meshTensor([(core[0],25,-1.3)])\n",
|
||||
"ct = 20\n",
|
||||
"air = simpeg.Utils.meshTensor([(ct,16,1.4)])\n",
|
||||
"core = np.concatenate( ( np.kron(simpeg.Utils.meshTensor([(ct,10,-1.3)]),np.ones((5,))) , simpeg.Utils.meshTensor([(ct,5)]) ) )\n",
|
||||
"bot = simpeg.Utils.meshTensor([(core[0],10,-1.4)])\n",
|
||||
"x0 = -np.array([np.sum(np.concatenate((core,bot)))])\n",
|
||||
"# Make the model\n",
|
||||
"m1d = simpeg.Mesh.TensorMesh([np.concatenate((bot,core,air))], x0=x0)\n",
|
||||
"\n",
|
||||
"# Setup model varibles\n",
|
||||
"active = m1d.vectorCCx<0.\n",
|
||||
"layer1 = (m1d.vectorCCx<-200.) & (m1d.vectorCCx>=-600.)\n",
|
||||
"layer2 = (m1d.vectorCCx<-2000.) & (m1d.vectorCCx>=-4000.)\n",
|
||||
"layer1 = (m1d.vectorCCx<-500.) & (m1d.vectorCCx>=-800.)\n",
|
||||
"layer2 = (m1d.vectorCCx<-3500.) & (m1d.vectorCCx>=-5000.)\n",
|
||||
"# Set the conductivity values\n",
|
||||
"sig_half = 2e-3\n",
|
||||
"sig_air = 1e-8\n",
|
||||
"sig_layer1 = 1\n",
|
||||
"sig_layer2 = .1\n",
|
||||
"sig_layer1 = .2\n",
|
||||
"sig_layer2 = .2\n",
|
||||
"# Make the true model\n",
|
||||
"sigma_true = np.ones(m1d.nCx)*sig_air\n",
|
||||
"sigma_true[active] = sig_half\n",
|
||||
@@ -66,7 +66,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 4,
|
||||
"execution_count": 3,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -94,7 +94,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 5,
|
||||
"execution_count": 4,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -109,19 +109,19 @@
|
||||
"else:\n",
|
||||
" d_true = survey.dpred(m_true)\n",
|
||||
" np.save('MT1D_dtrue.npy',d_true)\n",
|
||||
" d_obs = std*abs(d_true)*np.random.randn(*d_true.shape)\n",
|
||||
" d_obs = d_true + std*abs(d_true)*np.random.randn(*d_true.shape)\n",
|
||||
" np.save('MT1D_dobs.npy',d_obs)\n",
|
||||
"# Assign the dobs\n",
|
||||
"survey.dtrue = d_true\n",
|
||||
"survey.dobs = d_obs\n",
|
||||
"survey.std = survey.dobs*0 + std\n",
|
||||
"survey.std = np.abs(survey.dobs*std) + 0.01*np.linalg.norm(survey.dobs) #survey.dobs*0 + std\n",
|
||||
"# Assign the data weight\n",
|
||||
"survey.Wd = 1/(abs(survey.dobs)*survey.std)"
|
||||
"survey.Wd = 1/survey.std #(abs(survey.dobs)*survey.std)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
"execution_count": 5,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -132,7 +132,7 @@
|
||||
"# Define a counter\n",
|
||||
"C = simpeg.Utils.Counter()\n",
|
||||
"# Set the optimization\n",
|
||||
"opt = simpeg.Optimization.InexactGaussNewton(maxIter = 50)\n",
|
||||
"opt = simpeg.Optimization.InexactGaussNewton(maxIter = 30)\n",
|
||||
"opt.counter = C\n",
|
||||
"opt.LSshorten = 0.5\n",
|
||||
"opt.remember('xc')\n",
|
||||
@@ -145,9 +145,10 @@
|
||||
" reg = simpeg.Regularization.Tikhonov(regMesh)\n",
|
||||
"else:\n",
|
||||
" reg = simpeg.Regularization.Tikhonov(m1d,mapping=mappingExpAct)\n",
|
||||
"reg.alpha_s = 1e-6\n",
|
||||
"reg.smoothModel = False\n",
|
||||
"reg.alpha_s = 1e-7\n",
|
||||
"reg.alpha_x = 1.\n",
|
||||
"\n",
|
||||
"# reg.alpha_xx = .001\n",
|
||||
"# Inversion problem\n",
|
||||
"invProb = simpeg.InvProblem.BaseInvProblem(dmis, reg, opt)\n",
|
||||
"invProb.counter = C\n",
|
||||
@@ -156,14 +157,14 @@
|
||||
"betaest = simpeg.Directives.BetaEstimate_ByEig(beta0_ratio=0.75)\n",
|
||||
"targmis = simpeg.Directives.TargetMisfit()\n",
|
||||
"saveModel = simpeg.Directives.SaveModelEveryIteration()\n",
|
||||
"saveModel.fileName = 'Inversion_TargMisEqnDregMesh'\n",
|
||||
"saveModel.fileName = 'Inversion_TargMisEqnDregMesh_smoothFalse'\n",
|
||||
"# Create an inversion object\n",
|
||||
"inv = simpeg.Inversion.BaseInversion(invProb, directiveList=[beta,betaest,targmis,saveModel]) \n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 7,
|
||||
"execution_count": 6,
|
||||
"metadata": {
|
||||
"collapsed": false,
|
||||
"scrolled": false
|
||||
@@ -177,18 +178,35 @@
|
||||
"SimPEG.InvProblem is setting bfgsH0 to the inverse of the eval2Deriv.\n",
|
||||
" ***Done using same solver as the problem***\n",
|
||||
"SimPEG.l2_DataMisfit is creating default weightings for Wd.\n",
|
||||
"SimPEG.SaveModelEveryIteration will save your models as: '###-Inversion_TargMisEqnDregMesh.npy'\n",
|
||||
"SimPEG.SaveModelEveryIteration will save your models as: '###-Inversion_TargMisEqnDregMesh_smoothFalse.npy'\n",
|
||||
"============================ Inexact Gauss Newton ============================\n",
|
||||
" # beta phi_d phi_m f |proj(x-g)-x| LS Comment \n",
|
||||
"-----------------------------------------------------------------------------\n",
|
||||
" 0 5.15e+05 1.32e+06 2.95e+00 2.83e+06 3.23e+05 0 \n",
|
||||
" 1 5.15e+05 1.66e+05 2.77e+00 1.59e+06 3.93e+04 0 \n",
|
||||
" 2 5.15e+05 2.22e+04 2.75e+00 1.44e+06 7.05e+03 0 Skip BFGS \n",
|
||||
"------------------------------------------------------------------\n",
|
||||
"0 : ft = 1.4405e+06 <= alp*descent = 1.4405e+06\n",
|
||||
"1 : maxIterLS = 10 <= iterLS = 10\n",
|
||||
"------------------------- End Linesearch -------------------------\n",
|
||||
"The linesearch got broken. Boo.\n"
|
||||
" 0 1.40e+05 2.18e+05 0.00e+00 2.18e+05 4.01e+04 0 \n",
|
||||
" 1 1.40e+05 2.50e+04 2.22e-03 2.53e+04 5.66e+03 0 \n",
|
||||
" 2 1.40e+05 3.35e+03 4.89e-03 4.04e+03 9.84e+02 0 Skip BFGS \n",
|
||||
" 3 1.75e+04 1.58e+03 6.55e-03 1.69e+03 2.60e+02 0 Skip BFGS \n",
|
||||
" 4 1.75e+04 7.68e+02 2.89e-02 1.28e+03 2.85e+02 0 \n",
|
||||
" 5 1.75e+04 7.29e+02 2.02e-02 1.08e+03 1.38e+02 0 \n",
|
||||
" 6 2.19e+03 6.63e+02 2.30e-02 7.13e+02 1.47e+02 0 \n",
|
||||
" 7 2.19e+03 4.87e+02 7.57e-02 6.52e+02 2.24e+02 0 \n",
|
||||
" 8 2.19e+03 4.93e+02 7.29e-02 6.52e+02 2.84e+02 0 \n",
|
||||
" 9 2.74e+02 4.39e+02 6.85e-02 4.57e+02 2.08e+02 1 \n",
|
||||
" 10 2.74e+02 2.65e+02 3.60e-01 3.63e+02 3.83e+02 0 \n",
|
||||
" 11 2.74e+02 1.77e+02 4.10e-01 2.89e+02 2.70e+02 1 \n",
|
||||
" 12 3.42e+01 1.33e+02 4.04e-01 1.47e+02 8.75e+01 0 \n",
|
||||
" 13 3.42e+01 1.13e+02 4.75e-01 1.30e+02 1.15e+02 2 \n",
|
||||
" 14 3.42e+01 1.00e+02 5.68e-01 1.20e+02 4.64e+01 0 \n",
|
||||
" 15 4.27e+00 9.00e+01 6.16e-01 9.27e+01 1.41e+02 1 \n",
|
||||
" 16 4.27e+00 8.35e+01 8.42e-01 8.71e+01 1.65e+02 1 Skip BFGS \n",
|
||||
" 17 4.27e+00 7.62e+01 7.55e-01 7.94e+01 1.48e+02 2 \n",
|
||||
"------------------------- STOP! -------------------------\n",
|
||||
"1 : |fc-fOld| = 0.0000e+00 <= tolF*(1+|f0|) = 2.1833e+04\n",
|
||||
"1 : |xc-x_last| = 4.2045e+00 <= tolX*(1+|x0|) = 5.1104e+00\n",
|
||||
"0 : |proj(x-g)-x| = 1.4824e+02 <= tolG = 1.0000e-01\n",
|
||||
"0 : |proj(x-g)-x| = 1.4824e+02 <= 1e3*eps = 1.0000e-02\n",
|
||||
"0 : maxIter = 30 <= iter = 18\n",
|
||||
"------------------------- DONE! -------------------------\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -199,7 +217,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 8,
|
||||
"execution_count": 7,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -226,9 +244,9 @@
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0x7f0bd6798710>"
|
||||
"<matplotlib.figure.Figure at 0x7ff3ef333810>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
@@ -238,16 +256,171 @@
|
||||
"source": [
|
||||
"%matplotlib inline\n",
|
||||
"simpegmt.Utils.dataUtils.plotMT1DModelData(problem,[m_0,mopt])\n",
|
||||
"plt.suptitle('Target misfit-smooth False')\n",
|
||||
"plt.show()\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"execution_count": 8,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"reg.alpha_xx = 0.001\n",
|
||||
"saveModel.fileName = 'Inversion_TargMisEqnDregMesh_smoothFalseWxx'"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 9,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"SimPEG.InvProblem is setting bfgsH0 to the inverse of the eval2Deriv.\n",
|
||||
" ***Done using same solver as the problem***\n",
|
||||
"SimPEG.SaveModelEveryIteration will save your models as: '###-Inversion_TargMisEqnDregMesh_smoothFalseWxx.npy'\n",
|
||||
"============================ Inexact Gauss Newton ============================\n",
|
||||
" # beta phi_d phi_m f |proj(x-g)-x| LS Comment \n",
|
||||
"-----------------------------------------------------------------------------\n",
|
||||
" 0 2.39e+05 2.18e+05 0.00e+00 2.18e+05 4.01e+04 0 \n",
|
||||
" 1 2.39e+05 2.50e+04 2.21e-03 2.55e+04 5.64e+03 0 \n",
|
||||
" 2 2.39e+05 3.36e+03 4.76e-03 4.50e+03 9.90e+02 0 Skip BFGS \n",
|
||||
" 3 2.99e+04 1.75e+03 5.04e-03 1.91e+03 2.80e+02 0 Skip BFGS \n",
|
||||
" 4 2.99e+04 9.62e+02 1.78e-02 1.49e+03 2.24e+02 0 Skip BFGS \n",
|
||||
" 5 2.99e+04 7.14e+02 1.93e-02 1.29e+03 1.09e+02 0 \n",
|
||||
" 6 3.74e+03 5.87e+02 2.24e-02 6.71e+02 1.34e+02 0 Skip BFGS \n",
|
||||
" 7 3.74e+03 3.16e+02 5.95e-02 5.38e+02 2.60e+02 0 \n",
|
||||
" 8 3.74e+03 3.28e+02 4.17e-02 4.84e+02 1.11e+02 0 \n",
|
||||
" 9 4.67e+02 2.99e+02 4.41e-02 3.19e+02 1.06e+02 1 \n",
|
||||
" 10 4.67e+02 2.23e+02 1.46e-01 2.91e+02 3.71e+02 0 \n",
|
||||
" 11 4.67e+02 2.34e+02 1.10e-01 2.85e+02 1.88e+02 0 \n",
|
||||
" 12 5.84e+01 1.71e+02 1.24e-01 1.78e+02 1.36e+02 0 \n",
|
||||
" 13 5.84e+01 7.84e+01 1.68e-01 8.82e+01 8.21e+01 0 \n",
|
||||
" 14 5.84e+01 6.37e+01 2.01e-01 7.54e+01 6.83e+01 1 \n",
|
||||
"------------------------- STOP! -------------------------\n",
|
||||
"1 : |fc-fOld| = 0.0000e+00 <= tolF*(1+|f0|) = 2.1833e+04\n",
|
||||
"1 : |xc-x_last| = 3.0163e+00 <= tolX*(1+|x0|) = 5.1104e+00\n",
|
||||
"0 : |proj(x-g)-x| = 6.8281e+01 <= tolG = 1.0000e-01\n",
|
||||
"0 : |proj(x-g)-x| = 6.8281e+01 <= 1e3*eps = 1.0000e-02\n",
|
||||
"0 : maxIter = 30 <= iter = 15\n",
|
||||
"------------------------- DONE! -------------------------\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"moptWxx = inv.run(m_0)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 10,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0x7ff3e63afe50>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"%matplotlib inline\n",
|
||||
"simpegmt.Utils.dataUtils.plotMT1DModelData(problem,[mopt,moptWxx])\n",
|
||||
"plt.suptitle('Target misfit-smooth False-Wxx included')\n",
|
||||
"plt.show()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 11,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"array([ 1.56364893e+00, 1.62641903e+00, 9.96327507e-01,\n",
|
||||
" 1.44424654e+00, 6.30578509e-01, 1.23401217e+00,\n",
|
||||
" 3.24085433e-01, 8.22697458e-01, 1.76735724e-01,\n",
|
||||
" 6.03074990e-01, 9.58662944e-02, 4.08215049e-01,\n",
|
||||
" 5.98116441e-02, 2.51972974e-01, 3.54653904e-02,\n",
|
||||
" 1.75450200e-01, 2.56228377e-02, 1.08572300e-01,\n",
|
||||
" 2.02929041e-02, 7.36028696e-02, 1.64620388e-02,\n",
|
||||
" 4.35752349e-02, 1.80228828e-02, 3.00269993e-02,\n",
|
||||
" 1.63486779e-02, 2.07561568e-02, 1.48651221e-02,\n",
|
||||
" 1.54284013e-02, 1.44530319e-02, 1.33959072e-02,\n",
|
||||
" 1.19683391e-02, 9.92609378e-03, 7.65168460e-03,\n",
|
||||
" 1.02732372e-02, 6.00068131e-03, 7.50916027e-03,\n",
|
||||
" 4.18767716e-03, 5.42181442e-03, 3.25257531e-03,\n",
|
||||
" 4.05629002e-03, 2.68596740e-03, 3.42401859e-03,\n",
|
||||
" 1.90915942e-03, 2.59005940e-03, 1.43069528e-03,\n",
|
||||
" 1.94836445e-03, 1.18442707e-03, 1.55686635e-03,\n",
|
||||
" 9.44647001e-04, 1.12579572e-03, 6.95558685e-04,\n",
|
||||
" 8.43305256e-04, 4.93088025e-04, 5.98123170e-04,\n",
|
||||
" 3.83781524e-04, 5.17427666e-04, 3.07601634e-04,\n",
|
||||
" 3.64609780e-04, 2.55739400e-04, 2.83916829e-04,\n",
|
||||
" 2.10645694e-04, 2.29281320e-04])"
|
||||
]
|
||||
},
|
||||
"execution_count": 11,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 12,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"array([ -4.30174521e-02, -2.82476125e-02, -1.12416190e-02,\n",
|
||||
" 1.16416209e-01, -6.26268459e-02, -1.72987726e-02,\n",
|
||||
" 3.33927883e-03, -1.28190065e-01, -1.99208335e-02,\n",
|
||||
" 5.43972252e-03, 7.85202615e-03, 6.20311032e-03,\n",
|
||||
" 2.04136058e-03, 9.56190481e-03, -1.09499039e-04,\n",
|
||||
" -1.03789061e-02, 9.53663363e-04, -4.19335702e-05,\n",
|
||||
" -1.64251310e-04, -2.59815192e-03, -6.75066243e-04,\n",
|
||||
" -1.49936092e-03, -3.33456950e-04, 2.44076361e-03,\n",
|
||||
" -7.33153707e-04, -9.61669258e-04, 5.97912054e-04,\n",
|
||||
" -6.83894797e-04, 7.26002326e-04, -3.60787807e-04,\n",
|
||||
" 1.68289077e-04, 3.31670038e-04, 9.45753316e-05,\n",
|
||||
" 3.30271734e-04, -2.26943406e-04, 2.11135875e-04,\n",
|
||||
" 6.80321836e-05, 1.62860800e-04, -1.84990894e-04,\n",
|
||||
" -5.71275809e-05, 1.37379585e-04, -1.99667211e-04,\n",
|
||||
" 7.01025135e-05, -1.01077045e-04, -2.60300325e-05,\n",
|
||||
" 9.37896779e-05, 2.50865054e-05, 2.79492481e-05,\n",
|
||||
" -1.02976226e-05, -4.30700509e-05, 1.40579045e-06,\n",
|
||||
" 7.82098221e-05, 1.95325111e-06, -1.45440569e-05,\n",
|
||||
" -2.50424982e-07, 1.63473288e-05, 6.79494048e-06,\n",
|
||||
" -8.75565310e-06, -1.09645580e-05, 1.46704211e-05,\n",
|
||||
" -1.28231535e-05, 1.07621173e-05])"
|
||||
]
|
||||
},
|
||||
"execution_count": 12,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": []
|
||||
},
|
||||
{
|
||||
|
||||
@@ -65,7 +65,6 @@ def plotMT1DModelData(problem,models,symList=None):
|
||||
|
||||
# if not symList:
|
||||
# symList = ['x']*len(models)
|
||||
sys.path.append('/home/gudni/Dropbox/code/python/MTview')
|
||||
import plotDataTypes as pDt
|
||||
# Loop through the models.
|
||||
modelList = [problem.survey.mtrue]
|
||||
|
||||
@@ -0,0 +1,416 @@
|
||||
from matplotlib import pyplot as plt, colors, numpy as np
|
||||
|
||||
|
||||
def rec2nd(structArray):
|
||||
""" Converts a structured/record array to ndarray to do operations on."""
|
||||
return structArray.view((np.float,len(structArray.dtype.names)))
|
||||
|
||||
def plotIsoFreqNSimpedance(ax,freq,array,flag,par='abs',colorbar=True,colorNorm='SymLog',cLevel=True,contour=True):
|
||||
|
||||
indUniFreq = np.where(freq==array['freq'])
|
||||
|
||||
|
||||
x, y = array['x'][indUniFreq],array['y'][indUniFreq]
|
||||
if par == 'abs':
|
||||
zPlot = np.abs(array[flag][indUniFreq])
|
||||
cmap = plt.get_cmap('OrRd_r')#seismic')
|
||||
level = np.logspace(0,-5,31)
|
||||
clevel = np.logspace(0,-4,5)
|
||||
plotNorm = colors.LogNorm()
|
||||
elif par == 'real':
|
||||
zPlot = np.real(array[flag][indUniFreq])
|
||||
cmap = plt.get_cmap('RdYlBu')
|
||||
if cLevel:
|
||||
level = np.concatenate((-np.logspace(0,-10,31),np.logspace(-10,0,31)))
|
||||
clevel = np.concatenate((-np.logspace(0,-8,5),np.logspace(-8,0,5)))
|
||||
else:
|
||||
level = np.linspace(zPlot.min(),zPlot.max(),100)
|
||||
clevel = np.linspace(zPlot.min(),zPlot.max(),10)
|
||||
if colorNorm=='SymLog':
|
||||
plotNorm = colors.SymLogNorm(1e-10,linscale=2)
|
||||
else:
|
||||
plotNorm = colors.Normalize()
|
||||
elif par == 'imag':
|
||||
zPlot = np.imag(array[flag][indUniFreq])
|
||||
cmap = plt.get_cmap('RdYlBu')
|
||||
level = np.concatenate((-np.logspace(0,-10,31),np.logspace(-10,0,31)))
|
||||
clevel = np.concatenate((-np.logspace(0,-8,5),np.logspace(-8,0,5)))
|
||||
plotNorm = colors.SymLogNorm(1e-10,linscale=2)
|
||||
if cLevel:
|
||||
level = np.concatenate((-np.logspace(0,-10,31),np.logspace(-10,0,31)))
|
||||
clevel = np.concatenate((-np.logspace(0,-8,5),np.logspace(-8,0,5)))
|
||||
else:
|
||||
level = np.linspace(zPlot.min(),zPlot.max(),100)
|
||||
clevel = np.linspace(zPlot.min(),zPlot.max(),10)
|
||||
if colorNorm=='SymLog':
|
||||
plotNorm = colors.SymLogNorm(1e-10,linscale=2)
|
||||
elif colorNorm=='Lin':
|
||||
plotNorm = colors.Normalize()
|
||||
if contour:
|
||||
cs = ax.tricontourf(x,y,zPlot,levels=level,cmap=cmap,norm=plotNorm)#,extend='both')
|
||||
else:
|
||||
uniX,uniY = np.unique(x),np.unique(y)
|
||||
X,Y = np.meshgrid(np.append(uniX-25,uniX[-1]+25),np.append(uniY-25,uniY[-1]+25))
|
||||
cs = ax.pcolor(X,Y,np.reshape(zPlot,(len(uniY),len(uniX))),cmap=cmap,norm=plotNorm)
|
||||
if colorbar:
|
||||
plt.colorbar(cs,cax=ax.cax,ticks=clevel,format='%1.2e')
|
||||
ax.set_title(flag+' '+par,fontsize=8)
|
||||
return cs
|
||||
|
||||
def plotIsoFreqNSDiff(ax,freq,arrayList,flag,par='abs',colorbar=True,cLevel=True,mask=None,contourLine=True,useLog=False):
|
||||
|
||||
indUniFreq0 = np.where(freq==arrayList[0]['freq'])
|
||||
indUniFreq1 = np.where(freq==arrayList[1]['freq'])
|
||||
seicmap = plt.get_cmap('RdYlBu')#seismic')
|
||||
x, y = arrayList[0]['x'][indUniFreq0],arrayList[0]['y'][indUniFreq0]
|
||||
if par == 'abs':
|
||||
if useLog:
|
||||
zPlot = (np.log10(np.abs(arrayList[0][flag][indUniFreq0])) - np.log10(np.abs(arrayList[1][flag][indUniFreq1])))/np.log10(np.abs(arrayList[1][flag][indUniFreq1]))
|
||||
else:
|
||||
zPlot = (np.abs(arrayList[0][flag][indUniFreq0]) - np.abs(arrayList[1][flag][indUniFreq1]))/np.abs(arrayList[1][flag][indUniFreq1])
|
||||
if mask:
|
||||
maskInd = np.logical_or(np.abs(arrayList[0][flag][indUniFreq0])< 1e-3,np.abs(arrayList[1][flag][indUniFreq1]) < 1e-3)
|
||||
zPlot = np.ma.array(zPlot)
|
||||
zPlot[maskInd] = mask
|
||||
if cLevel:
|
||||
level = np.arange(-200,201,10)
|
||||
clevel = np.arange(-200,201,25)
|
||||
else:
|
||||
level = np.linspace(zPlot.min(),zPlot.max(),100)
|
||||
clevel = np.linspace(zPlot.min(),zPlot.max(),10)
|
||||
elif par == 'real':
|
||||
if useLog:
|
||||
zPlot = (np.log10(np.real(arrayList[0][flag][indUniFreq0])) -np.log10(np.real(arrayList[1][flag][indUniFreq1])))/np.log10(np.abs((np.real(arrayList[1][flag][indUniFreq1]))))
|
||||
else:
|
||||
zPlot = (np.real(arrayList[0][flag][indUniFreq0]) -np.real(arrayList[1][flag][indUniFreq1]))/np.abs((np.real(arrayList[1][flag][indUniFreq1])))
|
||||
if mask:
|
||||
maskInd = np.logical_or(np.abs(np.real(arrayList[0][flag][indUniFreq0])) < 1e-3,np.abs(np.real(arrayList[1][flag][indUniFreq1])) < 1e-3)
|
||||
zPlot = np.ma.array(zPlot)
|
||||
zPlot[maskInd] = mask
|
||||
if cLevel:
|
||||
level = np.arange(-200,201,10)
|
||||
clevel = np.arange(-200,201,25)
|
||||
else:
|
||||
level = np.linspace(zPlot.min(),zPlot.max(),100)
|
||||
clevel = np.linspace(zPlot.min(),zPlot.max(),10)
|
||||
elif par == 'imag':
|
||||
if useLog:
|
||||
zPlot = (np.log10(np.imag(arrayList[0][flag][indUniFreq0])) -np.log10(np.imag(arrayList[1][flag][indUniFreq1])))/np.log10(np.abs((np.imag(arrayList[1][flag][indUniFreq1]))))
|
||||
else:
|
||||
zPlot = (np.imag(arrayList[0][flag][indUniFreq0]) -np.imag(arrayList[1][flag][indUniFreq1]))/np.abs((np.imag(arrayList[1][flag][indUniFreq1])))
|
||||
if mask:
|
||||
maskInd = np.logical_or(np.abs(np.imag(arrayList[0][flag][indUniFreq0])) < 1e-3,np.abs(np.imag(arrayList[1][flag][indUniFreq1])) < 1e-3)
|
||||
zPlot = np.ma.array(zPlot)
|
||||
zPlot[maskInd] = mask
|
||||
if cLevel:
|
||||
level = np.arange(-200,201,10)
|
||||
clevel = np.arange(-200,201,25)
|
||||
else:
|
||||
level = np.linspace(zPlot.min(),zPlot.max(),100)
|
||||
clevel = np.linspace(zPlot.min(),zPlot.max(),10)
|
||||
cs = ax.tricontourf(x,y,zPlot*100,levels=level*100,cmap=seicmap,extend='both') #,norm=colors.SymLogNorm(1e-2,linscale=2))
|
||||
if contourLine:
|
||||
csl = ax.tricontour(x,y,zPlot*100,levels=clevel*100,colors='k')
|
||||
plt.clabel(csl, fontsize=7, inline=1,fmt='%1.1e',inline_spacing=10)
|
||||
if colorbar:
|
||||
cb = plt.colorbar(cs,cax=ax.cax,ticks=clevel*100,format='%1.1e')
|
||||
for t in cb.ax.get_yticklabels():
|
||||
t.set_rotation(60)
|
||||
t.set_fontsize(8)
|
||||
|
||||
ax.set_title(flag+' '+par,fontsize=8)
|
||||
|
||||
def plotIsoFreqNStipper(ax,freq,array,flag,par='abs',colorbar=True,colorNorm='SymLog',cLevel=True,contour=True):
|
||||
|
||||
indUniFreq = np.where(freq==array['freq'])
|
||||
|
||||
x, y = array['x'][indUniFreq],array['y'][indUniFreq]
|
||||
if par == 'abs':
|
||||
cmap = plt.get_cmap('OrRd_r')#seismic')
|
||||
zPlot = np.abs(array[flag][indUniFreq])
|
||||
if cLevel:
|
||||
level = np.logspace(-4,0,33)
|
||||
clevel = np.logspace(-4,0,5)
|
||||
else:
|
||||
level = np.linspace(zPlot.min(),zPlot.max(),100)
|
||||
clevel = np.linspace(zPlot.min(),zPlot.max(),10)
|
||||
if colorNorm=='SymLog':
|
||||
plotNorm = colors.LogNorm()
|
||||
else:
|
||||
plotNorm = colors.Normalize()
|
||||
elif par == 'real':
|
||||
cmap = plt.get_cmap('RdYlBu')
|
||||
zPlot = np.real(array[flag][indUniFreq])
|
||||
if cLevel:
|
||||
level = np.concatenate((-np.logspace(0,-4,33),np.logspace(-4,0,33)))
|
||||
clevel = np.concatenate((-np.logspace(0,-4,5),np.logspace(-4,0,5)))
|
||||
else:
|
||||
level = np.linspace(zPlot.min(),zPlot.max(),100)
|
||||
clevel = np.linspace(zPlot.min(),zPlot.max(),10)
|
||||
if colorNorm=='SymLog':
|
||||
plotNorm = colors.SymLogNorm(1e-4,linscale=2)
|
||||
else:
|
||||
plotNorm = colors.Normalize()
|
||||
elif par == 'imag':
|
||||
cmap = plt.get_cmap('RdYlBu')
|
||||
zPlot = np.imag(array[flag][indUniFreq])
|
||||
if cLevel:
|
||||
level = np.concatenate((-np.logspace(0,-4,33),np.logspace(-4,0,33)))
|
||||
clevel = np.concatenate((-np.logspace(0,-4,5),np.logspace(-4,0,5)))
|
||||
else:
|
||||
level = np.linspace(zPlot.min(),zPlot.max(),100)
|
||||
clevel = np.linspace(zPlot.min(),zPlot.max(),10)
|
||||
if colorNorm=='SymLog':
|
||||
plotNorm = colors.SymLogNorm(1e-4,linscale=2)
|
||||
else:
|
||||
plotNorm = colors.Normalize()
|
||||
if contour:
|
||||
cs = ax.tricontourf(x,y,zPlot,levels=level,cmap=cmap,norm=plotNorm)#,extend='both')
|
||||
else:
|
||||
uniX,uniY = np.unique(x),np.unique(y)
|
||||
X,Y = np.meshgrid(np.append(uniX-25,uniX[-1]+25),np.append(uniY-25,uniY[-1]+25))
|
||||
cs = ax.pcolor(X,Y,np.reshape(zPlot,(len(uniY),len(uniX))),levels=level,cmap=cmap,norm=plotNorm,edgecolors='k', linewidths=0.5)
|
||||
if colorbar:
|
||||
plt.colorbar(cs,cax=ax.cax,ticks=clevel,format='%1.2e')
|
||||
ax.set_title(flag+' '+par,fontsize=8)
|
||||
|
||||
def plotIsoStaImpedance(ax,loc,array,flag,par='abs',pSym='s',pColor=None):
|
||||
|
||||
appResFact = 1/(8*np.pi**2*10**(-7))
|
||||
treshold = 1.0 # 1 meter
|
||||
indUniSta = np.sqrt(np.sum((rec2nd(array[['x','y']])-loc)**2,axis=1)) < treshold
|
||||
freq = array['freq'][indUniSta]
|
||||
|
||||
if par == 'abs':
|
||||
zPlot = np.abs(array[flag][indUniSta])
|
||||
elif par == 'real':
|
||||
zPlot = np.real(array[flag][indUniSta])
|
||||
elif par == 'imag':
|
||||
zPlot = np.imag(array[flag][indUniSta])
|
||||
elif par == 'res':
|
||||
zPlot = (appResFact/freq)*np.abs(array[flag][indUniSta])**2
|
||||
elif par == 'phs':
|
||||
zPlot = np.arctan2(array[flag][indUniSta].imag,array[flag][indUniSta].real)*(180/np.pi)
|
||||
|
||||
if not pColor:
|
||||
if 'xx' in flag:
|
||||
lab = 'XX'
|
||||
pColor = 'g'
|
||||
elif 'xy' in flag:
|
||||
lab = 'XY'
|
||||
pColor = 'r'
|
||||
elif 'yx' in flag:
|
||||
lab = 'YX'
|
||||
pColor = 'b'
|
||||
elif 'yy' in flag:
|
||||
lab = 'YY'
|
||||
pColor = 'y'
|
||||
|
||||
ax.plot(freq,zPlot,color=pColor,marker=pSym,label=flag)
|
||||
|
||||
|
||||
def plotPsudoSectNSimpedance(ax,sectDict,array,flag,par='abs',colorbar=True,colorNorm='None',cLevel=None,contour=True):
|
||||
|
||||
indSect = np.where(sectDict.values()[0]==array[sectDict.keys()[0]])
|
||||
|
||||
# Define the plot axes
|
||||
if 'x' in sectDict.keys()[0]:
|
||||
x = array['y'][indSect]
|
||||
else:
|
||||
x = array['x'][indSect]
|
||||
y = array['freq'][indSect]
|
||||
|
||||
if par == 'abs':
|
||||
zPlot = np.abs(array[flag][indSect])
|
||||
cmap = plt.get_cmap('OrRd_r')#seismic')
|
||||
if cLevel:
|
||||
level = np.logspace(0,-5,31,endpoint=True)
|
||||
clevel = np.logspace(0,-4,5,endpoint=True)
|
||||
else:
|
||||
level = np.linspace(zPlot.min(),zPlot.max(),100,endpoint=True)
|
||||
clevel = np.linspace(zPlot.min(),zPlot.max(),10,endpoint=True)
|
||||
|
||||
elif par == 'ares':
|
||||
zPlot = np.abs(array[flag][indSect])**2/(8*np.pi**2*10**(-7)*array['freq'][indSect])
|
||||
cmap = plt.get_cmap('RdYlBu')#seismic)
|
||||
if cLevel:
|
||||
zMax = np.log10(cLevel[1])
|
||||
zMin = np.log10(cLevel[0])
|
||||
else:
|
||||
zMax = (np.ceil(np.log10(np.abs(zPlot).max())))
|
||||
zMin = (np.floor(np.log10(np.abs(zPlot).min())))
|
||||
level = np.logspace(zMin,zMax,(zMax-zMin)*8+1,endpoint=True)
|
||||
clevel = np.logspace(zMin,zMax,(zMax-zMin)*2+1,endpoint=True)
|
||||
plotNorm = colors.LogNorm()
|
||||
|
||||
elif par == 'aphs':
|
||||
zPlot = np.arctan2(array[flag][indSect].imag,array[flag][indSect].real)*(180/np.pi)
|
||||
cmap = plt.get_cmap('RdYlBu')#seismic)
|
||||
if cLevel:
|
||||
zMax = cLevel[1]
|
||||
zMin = cLevel[0]
|
||||
else:
|
||||
zMax = (np.ceil(zPlot).max())
|
||||
zMin = (np.floor(zPlot).min())
|
||||
level = np.arange(zMin,zMax+.1,1)
|
||||
clevel = np.arange(zMin,zMax+.1,10)
|
||||
plotNorm = colors.Normalize()
|
||||
|
||||
elif par == 'real':
|
||||
zPlot = np.real(array[flag][indSect])
|
||||
cmap = plt.get_cmap('Spectral') #('RdYlBu')
|
||||
if cLevel:
|
||||
zMax = np.log10(cLevel[1])
|
||||
zMin = np.log10(cLevel[0])
|
||||
else:
|
||||
zMax = (np.ceil(np.log10(np.abs(zPlot).max())))
|
||||
zMin = (np.floor(np.log10(np.abs(zPlot).min())))
|
||||
level = np.concatenate((-np.logspace(zMax,zMin-.125,(zMax-zMin)*8+1,endpoint=True),np.logspace(zMin-.125,zMax,(zMax-zMin)*8+1,endpoint=True)))
|
||||
clevel = np.concatenate((-np.logspace(zMax,zMin,(zMax-zMin)*1+1,endpoint=True),np.logspace(zMin,zMax,(zMax-zMin)*1+1,endpoint=True)))
|
||||
plotNorm = colors.SymLogNorm(np.abs(level).min(),linscale=0.1)
|
||||
elif par == 'imag':
|
||||
zPlot = np.imag(array[flag][indSect])
|
||||
cmap = plt.get_cmap('Spectral') #('RdYlBu')
|
||||
|
||||
if cLevel:
|
||||
zMax = np.log10(cLevel[1])
|
||||
zMin = np.log10(cLevel[0])
|
||||
else:
|
||||
zMax = (np.ceil(np.log10(np.abs(zPlot).max())))
|
||||
zMin = (np.floor(np.log10(np.abs(zPlot).min())))
|
||||
level = np.concatenate((-np.logspace(zMax,zMin-.125,(zMax-zMin)*8+1,endpoint=True),np.logspace(zMin-.125,zMax,(zMax-zMin)*8+1,endpoint=True)))
|
||||
clevel = np.concatenate((-np.logspace(zMax,zMin,(zMax-zMin)*1+1,endpoint=True),np.logspace(zMin,zMax,(zMax-zMin)*1+1,endpoint=True)))
|
||||
plotNorm = colors.SymLogNorm(np.abs(level).min(),linscale=0.1)
|
||||
|
||||
if colorNorm=='SymLog':
|
||||
plotNorm = colors.SymLogNorm(np.abs(level).min(),linscale=0.1)
|
||||
elif colorNorm=='Lin':
|
||||
plotNorm = colors.Normalize()
|
||||
elif colorNorm=='Log':
|
||||
plotNorm = colors.LogNorm()
|
||||
if contour:
|
||||
cs = ax.tricontourf(x,y,zPlot,levels=level,cmap=cmap,norm=plotNorm)#,extend='both')
|
||||
else:
|
||||
uniX,uniY = np.unique(x),np.unique(y)
|
||||
X,Y = np.meshgrid(np.append(uniX-25,uniX[-1]+25),np.append(uniY-25,uniY[-1]+25))
|
||||
cs = ax.pcolor(X,Y,np.reshape(zPlot,(len(uniY),len(uniX))),cmap=cmap,norm=plotNorm)
|
||||
if colorbar:
|
||||
csB = plt.colorbar(cs,cax=ax.cax,ticks=clevel,format='%1.2e')
|
||||
# csB.on_mappable_changed(cs)
|
||||
ax.set_title(flag+' '+par,fontsize=8)
|
||||
return cs, csB
|
||||
return cs,None
|
||||
|
||||
|
||||
def plotPsudoSectNSDiff(ax,sectDict,arrayList,flag,par='abs',colorbar=True,colorNorm='SymLog',cLevel=None,contour=True,mask=None,useLog=False):
|
||||
|
||||
def sortInArr(arr):
|
||||
return np.sort(arr,order=['freq','x','y','z'])
|
||||
# Find the index for the slice
|
||||
indSect0 = np.where(sectDict.values()[0]==arrayList[0][sectDict.keys()[0]])
|
||||
indSect1 = np.where(sectDict.values()[0]==arrayList[1][sectDict.keys()[0]])
|
||||
# Extract and sort the mats
|
||||
arr0 = sortInArr(arrayList[0][indSect0])
|
||||
arr1 = sortInArr(arrayList[1][indSect1])
|
||||
|
||||
# Define the plot axes
|
||||
if 'x' in sectDict.keys()[0]:
|
||||
x0 = arr0['y']
|
||||
x1 = arr1['y']
|
||||
else:
|
||||
x0 = arr0['x']
|
||||
x1 = arr1['x']
|
||||
y0 = arr0['freq']
|
||||
y1 = arr1['freq']
|
||||
|
||||
|
||||
if par == 'abs':
|
||||
if useLog:
|
||||
zPlot = (np.log10(np.abs(arr0[flag])) - np.log10(np.abs(arr1[flag])))/np.log10(np.abs(arr1[flag]))
|
||||
else:
|
||||
zPlot = (np.abs(arr0[flag]) - np.abs(arr1[flag]))/np.abs(arr1[flag])
|
||||
if mask:
|
||||
maskInd = np.logical_or(np.abs(arr0[flag])< 1e-3,np.abs(arr1[flag]) < 1e-3)
|
||||
zPlot = np.ma.array(zPlot)
|
||||
zPlot[maskInd] = mask
|
||||
cmap = plt.get_cmap('RdYlBu')#seismic)
|
||||
elif par == 'ares':
|
||||
arF = 1/(8*np.pi**2*10**(-7))
|
||||
if useLog:
|
||||
zPlot = (np.log10((arF/arr0['freq'])*np.abs(arr0[flag])**2) - np.log10((arF/arr1['freq'])*np.abs(arr1[flag])**2))/np.log10((arF/arr1['freq'])*np.abs(arr1[flag])**2)
|
||||
else:
|
||||
zPlot = ((arF/arr0['freq'])*np.abs(arr0[flag])**2 - (arF/arr1['freq'])*np.abs(arr1[flag])**2)/((arF/arr1['freq'])*np.abs(arr1[flag])**2)
|
||||
if mask:
|
||||
maskInd = np.logical_or(np.abs(arr0[flag])< 1e-3,np.abs(arr1[flag]) < 1e-3)
|
||||
zPlot = np.ma.array(zPlot)
|
||||
zPlot[maskInd] = mask
|
||||
cmap = plt.get_cmap('Spectral')#seismic)
|
||||
|
||||
elif par == 'aphs':
|
||||
if useLog:
|
||||
zPlot = (np.log10(np.arctan2(arr0[flag].imag,arr0[flag].real)*(180/np.pi)) - np.log10(np.arctan2(arr1[flag].imag,arr1[flag].real)*(180/np.pi)) )/np.log10(np.arctan2(arr1[flag].imag,arr1[flag].real)*(180/np.pi))
|
||||
else:
|
||||
zPlot = ( np.arctan2(arr0[flag].imag,arr0[flag].real)*(180/np.pi) - np.arctan2(arr1[flag].imag,arr1[flag].real)*(180/np.pi) )/(np.arctan2(arr1[flag].imag,arr1[flag].real)*(180/np.pi))
|
||||
if mask:
|
||||
maskInd = np.logical_or(np.abs(arr0[flag])< 1e-3,np.abs(arr1[flag]) < 1e-3)
|
||||
zPlot = np.ma.array(zPlot)
|
||||
zPlot[maskInd] = mask
|
||||
cmap = plt.get_cmap('Spectral')#seismic)
|
||||
elif par == 'real':
|
||||
if useLog:
|
||||
zPlot = (np.log10(arr0[flag].real) - np.log10(arr1[flag].real))/np.log10(arr1[flag].real)
|
||||
else:
|
||||
zPlot = (arr0[flag].real - arr1[flag].real)/arr1[flag].real
|
||||
if mask:
|
||||
maskInd = np.logical_or(arr0[flag].real< 1e-3,arr1[flag].real < 1e-3)
|
||||
zPlot = np.ma.array(zPlot)
|
||||
zPlot[maskInd] = mask
|
||||
cmap = plt.get_cmap('Spectral') #('Spectral')
|
||||
|
||||
elif par == 'imag':
|
||||
if useLog:
|
||||
zPlot = (np.log10(arr0[flag].imag) - np.log10(arr1[flag].imag))/np.log10(arr1[flag].imag)
|
||||
else:
|
||||
zPlot = (arr0[flag].imag - arr1[flag].imag)/arr1[flag].imag
|
||||
if mask:
|
||||
maskInd = np.logical_or(arr0[flag].imag< 1e-3,arr1[flag].imag < 1e-3)
|
||||
zPlot = np.ma.array(zPlot)
|
||||
zPlot[maskInd] = mask
|
||||
cmap = plt.get_cmap('Spectral') #('RdYlBu')
|
||||
|
||||
if cLevel:
|
||||
zMax = np.log10(cLevel[1])
|
||||
zMin = np.log10(cLevel[0])
|
||||
else:
|
||||
zMax = (np.ceil(np.log10(np.abs(zPlot).max())))
|
||||
zMin = (np.floor(np.log10(np.abs(zPlot).min())))
|
||||
|
||||
|
||||
if colorNorm=='SymLog':
|
||||
level = np.concatenate((-np.logspace(zMax,zMin-.125,(zMax-zMin)*8+1,endpoint=True),np.logspace(zMin-.125,zMax,(zMax-zMin)*8+1,endpoint=True)))
|
||||
clevel = np.concatenate((-np.logspace(zMax,zMin,(zMax-zMin)*1+1,endpoint=True),np.logspace(zMin,zMax,(zMax-zMin)*1+1,endpoint=True)))
|
||||
plotNorm = colors.SymLogNorm(np.abs(level).min(),linscale=0.1)
|
||||
elif colorNorm=='Lin':
|
||||
if cLevel:
|
||||
level = np.arange(cLevel[0],cLevel[1]+.1,(cLevel[1] - cLevel[0])/50.)
|
||||
clevel = np.arange(cLevel[0],cLevel[1]+.1,(cLevel[1] - cLevel[0])/10.)
|
||||
else:
|
||||
level = np.arange(zPlot.min(),zPlot.max(),(zPlot.max() - zPlot.min())/50.)
|
||||
clevel = np.arange(zPlot.min(),zPlot.max(),(zPlot.max() - zPlot.min())/10.)
|
||||
plotNorm = colors.Normalize()
|
||||
elif colorNorm=='Log':
|
||||
level = np.logspace(zMin-.125,zMax,(zMax-zMin)*8+1,endpoint=True)
|
||||
clevel = np.logspace(zMin,zMax,(zMax-zMin)*2+1,endpoint=True)
|
||||
plotNorm = colors.LogNorm()
|
||||
if contour:
|
||||
cs = ax.tricontourf(x0,y0,zPlot*100,levels=level*100,cmap=cmap,norm=plotNorm,extend='both')#,extend='both')
|
||||
else:
|
||||
uniX,uniY = np.unique(x0),np.unique(y0)
|
||||
X,Y = np.meshgrid(np.append(uniX-25,uniX[-1]+25),np.append(uniY-25,uniY[-1]+25))
|
||||
cs = ax.pcolor(X,Y,np.reshape(zPlot,(len(uniY),len(uniX))),cmap=cmap,norm=plotNorm)
|
||||
if colorbar:
|
||||
csB = plt.colorbar(cs,cax=ax.cax,ticks=clevel*100,format='%1.2e')
|
||||
# csB.on_mappable_changed(cs)
|
||||
ax.set_title(flag+' '+par + ' diff',fontsize=8)
|
||||
return cs, csB
|
||||
return cs,None
|
||||
Reference in new issue
Block a user