{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# GEONE - DEESSE - Custom search neighborhood\n", "\n", "## Main points addressed\n", "\n", "- setting custom search ellipsoid" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Import what is required" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import time\n", "import os\n", "\n", "# import package 'geone'\n", "import geone as gn" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "sys.version_info(major=3, minor=13, micro=7, releaselevel='final', serial=0)\n", "geone version: 1.3.0\n" ] } ], "source": [ "# Show version of python and version of geone\n", "import sys \n", "print(sys.version_info)\n", "print('geone version: ' + gn.__version__)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Training image (TI)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0., 1., 2.])" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Read file \n", "data_dir = 'data'\n", "filename = os.path.join(data_dir, 'ti.txt')\n", "ti = gn.img.readImageTxt(filename)\n", "\n", "# Values in the TI\n", "ti.get_unique()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Setting for categories / colors\n", "categ_val = [0, 1, 2]\n", "categ_col = ['lightblue', 'darkgreen', 'orange']\n", "\n", "plt.figure(figsize=(5,5))\n", "gn.imgplot.drawImage2D(ti, categ=True, categVal=categ_val, categCol=categ_col, title='TI')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Custom search ellipsoid \n", "### Class `geone.deesseinterface.SearchNeighborhoodParameters`\n", "To simulate a cell in the simulation grid, the pattern made up of (at most) the `nneighboringNode` informed cells the closest to the simulated cell is retrieved. Only the cells within a search ellipsoid centered at the simulated cell are considered. The search ellipsoid is defined by\n", "\n", "- `rx`, `ry`, `rz`: radii in each direction, in number of cells,\n", "- `ax`, `ay`, `az`: anisotropy ratios (or inverse units): the distance to the central node is the Euclidean distance with cell unit: `1/ax` by `1/ay` by `1/az`\n", "- `angle1`, `angle2`, `angle3`: azimuth, dip, and plunge angles in degrees (default:`0`, `0`, `0`) to re-orient the search ellipsoid\n", "- `power`: a power (default: `0`) at which the distance to the central cell is raised, to get the weight of the pattern cells\n", "\n", "Several modes are available to set the radii (`radiusMode`), in particular:\n", "\n", "- `large_default` (default): large radii automatically computed according to the size of the simulation grid and the TI\n", "- `manual`: the parameters `rx`, `ry`, `rz` are required (set manually)\n", "\n", "Several modes are available to set the anisotropy ratios (`anisotropyRatioMode`), in particular:\n", "- `one` (default): anisotropy ratios automatically set to `ax=ay=az=1.0`\n", "- `radius`: anisotropy ratios automatically set to the corresponding radius, `ax=rx`, `ay=ry`, `az=rz`, so that the distance on the border of the search ellipsoid is equal to one\n", "- `manual`: `ax`, `ay`, `az` are required (set manually)\n", "\n", "**Notes:** \n", "\n", "- It can be useful to limit the size of the search ellipsoid (by setting the radii) in presence of a small hard data set, in order to avoid realizations with too poor variability.\n", "- It can be useful to set the anisotropy ratios manually to preferentially search in some direction(s) when retrieving the pattern for simulating a cell." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Examples using different search neigbhorhood ellipsoids" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Simulation with default search ellipsoid" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "deesseRun: DeeSse running... [VERSION 3.2 / BUILD NUMBER 20230914 / OpenMP 19 thread(s)]\n", "deesseRun: DeeSse run complete\n", "Elapsed time: 0.29 sec\n" ] } ], "source": [ "# Default search ellipsoid\n", "deesse_input1 = gn.deesseinterface.DeesseInput(\n", " nx=100, ny=100, nz=1,\n", " nv=1, varname='code',\n", " TI=ti,\n", " distanceType='categorical',\n", " nneighboringNode=24,\n", " distanceThreshold=0.02,\n", " maxScanFraction=0.25,\n", " npostProcessingPathMax=1,\n", " seed=444,\n", " nrealization=1)\n", "\n", "# Run deesse\n", "t1 = time.time() # start time\n", "deesse_output1 = gn.deesseinterface.deesseRun(deesse_input1)\n", "t2 = time.time() # end time\n", "print(f'Elapsed time: {t2-t1:.2g} sec')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Simulation with small search ellipsoid by setting the radii manually" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "deesseRun: DeeSse running... [VERSION 3.2 / BUILD NUMBER 20230914 / OpenMP 19 thread(s)]\n", "deesseRun: DeeSse run complete\n", "Elapsed time: 0.16 sec\n" ] } ], "source": [ "# Search ellipsoid with small radii\n", "snp = gn.deesseinterface.SearchNeighborhoodParameters(\n", " radiusMode='manual', rx=10, ry=10, rz=0\n", ")\n", "\n", "deesse_input2 = gn.deesseinterface.DeesseInput(\n", " nx=100, ny=100, nz=1,\n", " nv=1, varname='code',\n", " TI=ti,\n", " distanceType='categorical',\n", " searchNeighborhoodParameters = snp, # set search neighborhood parameters (ellipsoid)\n", " nneighboringNode=24,\n", " distanceThreshold=0.02,\n", " maxScanFraction=0.25,\n", " npostProcessingPathMax=1,\n", " seed=444,\n", " nrealization=1)\n", "\n", "# Run deesse\n", "t1 = time.time() # start time\n", "deesse_output2 = gn.deesseinterface.deesseRun(deesse_input2, verbose=2)\n", "t2 = time.time() # end time\n", "print(f'Elapsed time: {t2-t1:.2g} sec')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Simulation with anisotropic search ellipsoid (preferential search in one direction)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "deesseRun: DeeSse running... [VERSION 3.2 / BUILD NUMBER 20230914 / OpenMP 19 thread(s)]\n", "deesseRun: DeeSse run complete\n", "Elapsed time: 0.24 sec\n" ] } ], "source": [ "# Anisotropic search ellipsoid with preferential search in x-direction\n", "snp = gn.deesseinterface.SearchNeighborhoodParameters(\n", " anisotropyRatioMode='manual', ax=20, ay=1, az=1\n", ")\n", "\n", "deesse_input3 = gn.deesseinterface.DeesseInput(\n", " nx=100, ny=100, nz=1,\n", " nv=1, varname='code',\n", " TI=ti,\n", " distanceType='categorical',\n", " searchNeighborhoodParameters = snp, # set search neighborhood parameters (ellipsoid)\n", " nneighboringNode=24,\n", " distanceThreshold=0.02,\n", " maxScanFraction=0.25,\n", " npostProcessingPathMax=1,\n", " seed=444,\n", " nrealization=1)\n", "\n", "# Run deesse\n", "t1 = time.time() # start time\n", "deesse_output3 = gn.deesseinterface.deesseRun(deesse_input3)\n", "t2 = time.time() # end time\n", "print(f'Elapsed time: {t2-t1:.2g} sec')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Results and display" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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oBITE5WUlKSMjIwyf4fgwB24QaJx48bavHmzdu7cqQsvvNCj9xg5cqRSUlI0ceJEbdmyRfPmzVNSUpI2bdqkRo0a6Z///Kfee+89TZs2TRdeeKHuvPNOtz/jyy+/1DXXXKM6depowoQJOn36tMaPH6/k5OQy806aNEmPPfaYbr31Vt1zzz36+eefNXPmTF1xxRXasWOHkpKSNH36dL388statmyZ5syZo/j4eP3pT3+S9EfxjI+P15gxYxQfH6+1a9fq8ccfV15enqZNm+bROirp3nvv1Y8//qjVq1dr0aJF55z/yJEj9mV/5JFHlJSUpP3792vp0qVl3nfhwoUaNGiQRo0apX379un555/Xjh079Mknn9j/1cyd5fv111/Vq1cv9e/fX3/961+VnJysoqIi3XDDDVqzZo369++v+++/X0ePHtXq1au1c+dONW3a1P73ixcv1tGjR3XvvfcqIiJCU6dOVZ8+ffT9999X+K94+fn56t69uw4fPqx7771XjRo10qZNmzRu3Dj99NNPmj59uhtrvHyTJk1SRESEHn74YR05ckTTp09XWlqaPv/8c8XGxqqwsFDp6ekqKCiwb+eHDx/WihUrlJOTo8TEREnSPffco5deekn9+vXTgw8+qK1bt2ry5Mn65ptvtGzZsnI//8SJE7rqqqt08OBBjRo1SvXr19eiRYu0du1arywfgMAJlvp633336c0339SIESPUunVr/frrr9q4caO++eYbXXrppfb5fv/9d91www3q37+/brnlFs2ZM0f9+/fXq6++qtGjR+u+++7TX/7yF02bNk39+vXToUOHVL16dUnS9u3btWnTJvXv318NGjTQ/v37NWfOHPXo0UNff/11pe9YpU5SJwH4V7DUOHfrz8iRI1WjRg2NHz9e+/fv1/Tp0zVixAi9/vrr5X7G/PnzNWrUKPXr10/333+/Tp48qf/973/aunWr/vKXv0iSvvrqK3Xr1k0JCQkaO3asqlatqhdeeEE9evSw/yPoFVdcoVGjRmnGjBl69NFH1apVK0my/1f6I47i9ttv17333qvBgwerRYsWys7OVufOnZWfn69Ro0apVq1aeumll3TjjTfqzTff1M033+zQ3nMd18tz9913a+HCherVq5fuuecenT59Wh9//LG2bNmi9u3bO/0bV2uEK9fvkrRkyRLl5+dr6NChqlWrlrZt26aZM2fqhx9+0JIlSxw++/Tp00pPT1fXrl319NNP279rV5dj48aNWrp0qYYNG6bq1atrxowZ6tu3rw4ePKhatWqVu56Ki4t14403auPGjRoyZIhatWqlL7/8Uv/+97/17bffavny5eX+rTtefvllHT16VMOHD9fJkyf13HPP6corr9SXX35p7yPp27evvvrqK40cOVJNmjTRkSNHtHr1ah08eNDeGTthwgRNnDhRaWlpGjp0qHbv3q05c+Zo+/btDudGpRljdNNNN2njxo2677771KpVKy1btkwZGRleWT74mUFQ+OCDD0xUVJSJiooynTp1MmPHjjWrVq0yhYWFZeZt3LixycjIsD9fsGCBkWTS09NNcXGxfXqnTp1MRESEue++++zTTp8+bRo0aGC6d+/uUTt79+5tYmJizIEDB+zTvv76axMVFWVKbm779+83UVFRZtKkSQ5//+WXX5oqVao4TB8/fryRZH7++WeHefPz88t8/r333mvi4uLMyZMn7dNKr48zunfv7rCc+/btM5LMggUL7NOGDx9uXN1Nli1bZiSZ7du3lzvPxx9/bCSZV1991WH6ypUry0x3dfm6d+9uJJm5c+c6zPviiy8aSebZZ58t8z5ntoMzy1yrVi3z22+/2V9/++23jSTz7rvvVrjMTz75pKlWrZr59ttvHaY/8sgjJioqyhw8eNA+TZIZP368/fmZ7XLfvn0Oy1LyO1m3bp2RZM477zyTl5dnn/7GG28YSea5554zxhizY8cOI8ksWbKk3LZ+/vnnRpK55557HKb/7W9/M5LM2rVry23H9OnTjSTzxhtv2KcdP37cNGvWzEgy69atK/dzAVhbsNTXxMREM3z48ArnOVMPFi9ebJ+2a9cuI8lERkaaLVu22KevWrWqTM1zVnc2b95sJJmXX37ZPu3MsbnksS8jI8M0bty4wvZRJ8+iTgLwh2Cpca7WnzNtSktLc2jTAw88YKKiokxOTo59Wunj1E033WTatGlTYTt69+5toqOjzd69e+3TfvzxR1O9enVzxRVX2KctWbKk3GNb48aNjSSzcuVKh+mjR482kszHH39sn3b06FGTmppqmjRpYoqKiowxrh/XjSlbe9euXWskmVGjRpVpV8n1VZorNcKd63dn3+fkyZNNRESEQz9BRkaGkWQeeeQRh3ldXQ5JJjo62nz33Xf2aV988YWRZGbOnFnushhjzKJFi0xkZKTD92GMMXPnzjWSzCeffGKfVnrfcOU86Mz5Q2xsrPnhhx/s07du3WokmQceeMAYY8zvv/9uJJlp06aV29YjR46Y6Ohoc80119i3E2OMef75540k8+KLL5bbjuXLlxtJZurUqfZpp0+fNt26dStzHgjrI0IhSFx99dXavHmzbrzxRn3xxReaOnWq0tPTdd555+mdd95x6T3uvvtuhwiAjh07yhiju+++2z4tKipK7du31/fff+92G4uKirRq1Sr17t1bjRo1sk9v1aqV0tPTHeZdunSpiouLdeutt+qXX36xP1JSUtS8eXOtW7funJ9X8l8ejx49ql9++UXdunVTfn6+du3a5Xb7K+vMvziuWLFCp06dcjrPkiVLlJiYqKuvvtphudu1a6f4+HiH5XZn+Ww2mwYNGuQw7a233lLt2rUdfpzgjNJRELfddptq1Khhf96tWzdJOud2sGTJEnXr1k01atRwWJ60tDQVFRXpo48+qvDvXXXnnXfa7xCTpH79+qlevXp67733JMn+r8KrVq1Sfn6+0/c4M++YMWMcpj/44IOSVGb4Uum/rVevnvr162efFhcXpyFDhniwNACsJBjqq/RHjdm6dat+/PHHCueLj49X//797c9btGihpKQktWrVSh07dnRoo+R4nC9Zd06dOqVff/1VzZo1U1JSkkNUg6eok9RJAP4VLDXO3fozZMgQhzZ169ZNRUVFOnDgQLmfkZSUpB9++KHc+JuioiJ98MEH6t27t84//3z79Hr16ukvf/mLNm7cqLy8PJeWJzU1tcz173vvvacOHTqoa9eu9mnx8fEaMmSI9u/fr6+//tph/nMd15156623FBERYY8gLKmiKEBXaoQ71+8lv8/jx4/rl19+UefOnWWM0Y4dO8q899ChQz1ejrS0NIcRM3/605+UkJDgUn1u1aqVWrZs6bA8V155pSS51B/hit69e+u8886zP+/QoYM6duxo/x5jY2MVHR2t9evXl4mKOuPDDz9UYWGhRo8e7fBDg4MHD1ZCQsI563OVKlUc1nFUVJTTcx9YHx24QeSyyy7T0qVL9fvvv2vbtm0aN26cjh49qn79+pU54DtTslNVOnugbtiwYZnp5R08KvLzzz/rxIkTat68eZnXWrRo4fB8z549MsaoefPmqlOnjsPjm2++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unbtqoSEBEnuXSOecd1112nbtm3avHmzfdrx48c1b948NWnSRK1bt3aY/1zHdWf69u0rY4zTO4orqmuu1AhXr9+d1WdjjJ577rlyP99by+GOW2+9VYcPH9b8+fPLvHbixAkdP37cK5+zfPlyHT582P5827Zt2rp1q/17zM/P18mTJx3+pmnTpqpevbp93aelpSk6OlozZsxwWP7//Oc/ys3NPWd9Pn36tObMmWOfVlRUpJkzZ3pl+eBf3IEbJEaOHKn8/HzdfPPNatmypQoLC7Vp0ya9/vrratKkSZkf5vC2gQMH6qWXXtK+ffvK/GtRSRMnTtTKlSvVrVs3DRs2TKdPn9bMmTPVpk0b/e9//7PP17RpUz311FMaN26c9u/fr969e6t69erat2+fli1bpiFDhuhvf/tbuZ/TuXNn1ahRQxkZGRo1apQiIiK0aNEipwf0e+65R2+++aauvfZa3Xrrrdq7d69eeeUVh7Dz8rRr106SNGrUKKWnpysqKsrhx2FKeumllzR79mzdfPPNatq0qY4ePar58+crISHBflHUvXt33XvvvZo8ebI+//xzXXPNNapatar27NmjJUuW6LnnnlO/fv3cWr7y3HnnnXr55Zc1ZswYbdu2Td26ddPx48f14YcfatiwYbrppptcfq/yPPTQQ3rnnXd0ww03aODAgWrXrp2OHz+uL7/8Um+++ab279+v2rVrV/pzatasqa5du2rQoEHKzs7W9OnT1axZMw0ePFiStHbtWo0YMUK33HKLLrjgAp0+fVqLFi1SVFSU+vbtK0lq27atMjIyNG/ePPvQ223btumll15S79691bNnz3I/f/DgwXr++ed15513KjMzU/Xq1dOiRYsUFxdX6WUDEFjBUF+PHj2qBg0aqF+/fmrbtq3i4+P14Ycfavv27Q53K1XWDTfcoEWLFikxMVGtW7fW5s2b9eGHH6pWrVpeeX/qJHUSgH8FQ42TfF9/JOmaa65RSkqKunTpouTkZH3zzTd6/vnndf3119t/LOypp57S6tWr1bVrVw0bNkxVqlTRCy+8oIKCAk2dOtX+XhdffLGioqI0ZcoU5ebmymaz6corr1TdunXL/fxHHnlE//3vf9WrVy+NGjVKNWvWtK+bt956q0yMwLmO68707NlTd9xxh2bMmKE9e/bo2muvVXFxsT7++GP17NlTI0aMcPp3rtQIV6/fW7ZsqaZNm+pvf/ubDh8+rISEBL311ltu5SN7uhzuuOOOO/TGG2/ovvvu07p169SlSxcVFRVp165deuONN7Rq1Sr7neqV0axZM3Xt2lVDhw5VQUGBpk+frlq1atmjlb799ltdddVVuvXWW9W6dWtVqVJFy5YtU3Z2tr3foU6dOho3bpwmTpyoa6+9VjfeeKN2796t2bNn67LLLrPn/zvz5z//WV26dNEjjzyi/fv3q3Xr1lq6dGlAfjMIXmAQFN5//31z1113mZYtW5r4+HgTHR1tmjVrZkaOHGmys7Md5m3cuLHJyMiwP1+wYIGRZLZv3+4w3/jx440k8/PPPztMz8jIMNWqVXOY1rdvXxMbG2t+//33c7Z1w4YNpl27diY6Otqcf/75Zu7cufbPKu2tt94yXbt2NdWqVTPVqlUzLVu2NMOHDze7d+8+Zzs/+eQTc/nll5vY2FhTv359M3bsWLNq1Sojyaxbt85h3meeecacd955xmazmS5duphPP/3UdO/e3XTv3t0+z759+4wks2DBAvu006dPm5EjR5o6deqYiIgIp8twxmeffWZuv/1206hRI2Oz2UzdunXNDTfcYD799NMy886bN8+0a9fOxMbGmurVq5uLLrrIjB071vz4449uL1/37t1NmzZtnLYpPz/f/P3vfzepqammatWqJiUlxfTr18/s3bvXYZmnTZtW5m8lmfHjx5e7vGccPXrUjBs3zjRr1sxER0eb2rVrm86dO5unn37aFBYWlvt+Z7bLffv2OSxLye9k3bp1RpL573//a8aNG2fq1q1rYmNjzfXXX28OHDhgn+/77783d911l2natKmJiYkxNWvWND179jQffvihQ1tPnTplJk6caF8fDRs2NOPGjTMnT550mK90O4wx5sCBA+bGG280cXFxpnbt2ub+++83K1eudLq9AQgewVBfCwoKzEMPPWTatm1rqlevbqpVq2batm1rZs+e7TBfefWgcePG5vrrry8zXZIZPny4/fnvv/9uBg0aZGrXrm3i4+NNenq62bVrV5nlPnNsLnnsy8jIMI0bNy53GYyhTlInAfhbMNQ4Y1yvP+W1yVldKn2ceuGFF8wVV1xhatWqZWw2m2natKl56KGHTG5ursN7ffbZZyY9Pd3Ex8ebuLg407NnT7Np06YybZ4/f745//zzTVRUlMNnl1dz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7777TMOGDc2aNWvMp59+ai6//HLTuXPnALbav7Zt22aaNGli/vSnP5n777/fPj1c18tvv/1mGjdubAYOHGi2bt1qvv/+e7Nq1Srz3Xff2ef517/+ZRITE83y5cvNF198YW688UaTmppqTpw4EcCW+9akSZNMrVq1zIoVK8y+ffvMkiVLTHx8vHnuuefs84TLennvvffM3//+d7N06VIjySxbtszhdVfWw7XXXmvatm1rtmzZYj7++GPTrFkzc/vtt/t5SVARaig11BXUUEfUUOeooWdRQ8MDNZQa6gpqqCNqqHPU0LOooa4Lug7cDh06mOHDh9ufFxUVmfr165vJkycHsFWBdeTIESPJbNiwwRhjTE5OjqlatapZsmSJfZ5vvvnGSDKbN28OVDP95ujRo6Z58+Zm9erVpnv37vbCGc7r5eGHHzZdu3Yt9/Xi4mKTkpJipk2bZp+Wk5NjbDab+e9//+uPJgbE9ddfb+666y6HaX369DEDBgwwxoTveildOF1ZD19//bWRZLZv326f5/333zcRERHm8OHDfms7KkYNLYsa6ogaWhY11DlqqHPU0NBFDS2LGuqIGloWNdQ5aqhz1NCKBVWEQmFhoTIzM5WWlmafFhkZqbS0NG3evDmALQus3NxcSVLNmjUlSZmZmTp16pTDemrZsqUaNWoUFutp+PDhuv766x2WXwrv9fLOO++offv2uuWWW1S3bl1dcsklmj9/vv31ffv2KSsry2HdJCYmqmPHjiG9bjp37qw1a9bo22+/lSR98cUX2rhxo3r16iUpfNdLaa6sh82bNyspKUnt27e3z5OWlqbIyEht3brV721GWdRQ56ihjqihZVFDnaOGuoYaGhqooc5RQx1RQ8uihjpHDXUNNdRRlUA3wB2//PKLioqKlJyc7DA9OTlZu3btClCrAqu4uFijR49Wly5ddOGFF0qSsrKyFB0draSkJId5k5OTlZWVFYBW+s9rr72mzz77TNu3by/zWjivl++//15z5szRmDFj9Oijj2r79u0aNWqUoqOjlZGRYV9+Z/tWKK+bRx55RHl5eWrZsqWioqJUVFSkSZMmacCAAZIUtuulNFfWQ1ZWlurWrevwepUqVVSzZs2wWldWRg0tixrqiBrqHDXUOWqoa6ihoYEaWhY11BE11DlqqHPUUNdQQx0FVQcuyho+fLh27typjRs3BropAXfo0CHdf//9Wr16tWJiYgLdHEspLi5W+/bt9c9//lOSdMkll2jnzp2aO3euMjIyAty6wHnjjTf06quvavHixWrTpo0+//xzjR49WvXr1w/r9QKEC2roWdTQ8lFDnaOGAuGNGnoWNbR81FDnqKHwRFBFKNSuXVtRUVFlfq0xOztbKSkpAWpV4IwYMUIrVqzQunXr1KBBA/v0lJQUFRYWKicnx2H+UF9PmZmZOnLkiC699FJVqVJFVapU0YYNGzRjxgxVqVJFycnJYbleJKlevXpq3bq1w7RWrVrp4MGDkmRf/nDbtx566CE98sgj6t+/vy666CLdcccdeuCBBzR58mRJ4bteSnNlPaSkpOjIkSMOr58+fVq//fZbWK0rK6OGOqKGOqKGlo8a6hw11DXU0NBADXVEDXVEDS0fNdQ5aqhrqKGOgqoDNzo6Wu3atdOaNWvs04qLi7VmzRp16tQpgC3zL2OMRowYoWXLlmnt2rVKTU11eL1du3aqWrWqw3ravXu3Dh48GNLr6aqrrtKXX36pzz//3P5o3769BgwYYP//cFwvktSlSxft3r3bYdq3336rxo0bS5JSU1OVkpLisG7y8vK0devWkF43+fn5iox0PAxGRUWpuLhYUviul9JcWQ+dOnVSTk6OMjMz7fOsXbtWxcXF6tixo9/bjLKooX+ghjpHDS0fNdQ5aqhrqKGhgRr6B2qoc9TQ8lFDnaOGuoYaWkqAf0TNba+99pqx2Wxm4cKF5uuvvzZDhgwxSUlJJisrK9BN85uhQ4eaxMREs379evPTTz/ZH/n5+fZ57rvvPtOoUSOzdu1a8+mnn5pOnTqZTp06BbDVgVHy1z+NCd/1sm3bNlOlShUzadIks2fPHvPqq6+auLg488orr9jn+de//mWSkpLM22+/bf73v/+Zm266yaSmppoTJ04EsOW+lZGRYc477zyzYsUKs2/fPrN06VJTu3ZtM3bsWPs84bJejh49anbs2GF27NhhJJlnn33W7Nixwxw4cMAY49p6uPbaa80ll1xitm7dajZu3GiaN29ubr/99kAtEpyghlJD3UEN/QM11Dlq6FnU0PBADaWGuoMa+gdqqHPU0LOooa4Lug5cY4yZOXOmadSokYmOjjYdOnQwW7ZsCXST/EqS08eCBQvs85w4ccIMGzbM1KhRw8TFxZmbb77Z/PTTT4FrdICULpzhvF7effddc+GFFxqbzWZatmxp5s2b5/B6cXGxeeyxx0xycrKx2WzmqquuMrt37w5Qa/0jLy/P3H///aZRo0YmJibGnH/++ebvf/+7KSgosM8TLutl3bp1To8rGRkZxhjX1sOvv/5qbr/9dhMfH28SEhLMoEGDzNGjRwOwNKgINZQa6ipq6FnU0LKooWdRQ8MHNZQa6ipq6FnU0LKooWdRQ10XYYwxvr3HFwAAAAAAAADgiaDKwAUAAAAAAACAcEIHLgAAAAAAAABYFB24AAAAAAAAAGBRdOACAAAAAAAAgEXRgQsAAAAAAAAAFkUHLgAAAAAAAABYFB24AAAAAAAAAGBRdOACAAAAAAAAgEXRgQsAAAAAAAAAFkUHLgAAAAAAAABYFB24AAAAAAAAAGBRdOACAAAAAAAAgEX9P4Q6IBgc1jdJAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Retrieve the realizations\n", "sim1 = deesse_output1['sim']\n", "sim2 = deesse_output2['sim']\n", "sim3 = deesse_output3['sim']\n", "\n", "# Display\n", "plt.subplots(1, 3, figsize=(17,5), sharey=True) # 1 x 3 sub-plots\n", "\n", "plt.subplot(1, 3, 1)\n", "gn.imgplot.drawImage2D(sim1[0], categ=True, categVal=categ_val, categCol=categ_col, \n", " title='Sim, default search ellipsoid')\n", "\n", "plt.subplot(1, 3, 2)\n", "gn.imgplot.drawImage2D(sim2[0], categ=True, categVal=categ_val, categCol=categ_col, \n", " title='Sim, small search ellipsoid')\n", "\n", "plt.subplot(1, 3, 3)\n", "gn.imgplot.drawImage2D(sim3[0], categ=True, categVal=categ_val, categCol=categ_col, \n", " title='Sim, anisotropic search ellipsoid')\n", "\n", "plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "py313", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.13.7" } }, "nbformat": 4, "nbformat_minor": 4 }