{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Matched-Field Processing - Synthetic 2D case\n", "\n", "The match-field processing performed in this code is inspired from the one describe in [this git repository](https://github.com/schipp/fast_beamforming). The description below is taken from this repository.\n", "\n", "The beamformer formulation is written in the frequency domain as:\n", "\n", "$$B = \\frac{1}{N_f \\times N_s \\times (N_s-1)}\\sum^{N_f}_{\\omega} \\sum^{N_s}_{j} \\sum^{N_s}_{k \\neq j} \\frac{K_{jk}(\\omega) S_{kj}(\\omega)}{|K_{jk}(\\omega)|}$$\n", "\n", "where $K_{jk}(\\omega) = d_j(\\omega) d_k^H(\\omega)$ is the cross-spectral density matrix of the recorded signals $d$, and $S_{jk}(\\omega) = s_j(\\omega) s_k^H(\\omega)$ is the cross-spectral density matrix of the synthetic signals $s$. \n", "\n", "Here, $j$ and $k$ identify sensors, and $H$ denotes the complex conjugate. Auto-correlations ($j = k$) are excluded because they contain no phase information. Consequently, negative beam powers indicate anti-correlation.\n", "\n", "The synthetic signals $s$ (often called replica vectors or Green's functions) represent the expected wavefield for a given source origin and medium velocity, most often in an acoustic homogeneous half-space $s_j = \\exp(-i \\omega t_j)$ where $t_j$ is the travel time from the source to each receiver $j$.\n", "\n", "The travel time is computed as:\n", "$$t_j = \\frac{| \\mathbf{r}_j - \\mathbf{r}_s |}{c}$$\n", "\n", "with $| \\mathbf{r}_j - \\mathbf{r}_s |$ being the Euclidean distance between the sensor and the source, and $c$ the medium velocity.\n", "\n", "Using this formulation the Bartlett $B$ in contained in $[-1,1]$." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from itertools import product\n", "import dask.array as da\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import xarray as xr\n", "import pylab as plt\n", "import torch\n", "from tqdm import tqdm\n", "\n", "# specific das_ice function\n", "import das_ice.io as di_io\n", "import das_ice.signal.filter as di_filter\n", "import das_ice.processes as di_p\n", "import das_ice.plot as di_plt\n", "import das_ice.mfp as di_mfp\n", "\n", "# classic librairy\n", "import torch\n", "import xarray as xr\n", "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from matplotlib.colors import LogNorm\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'http://127.0.0.1:8787/status'" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from dask.distributed import Client,LocalCluster\n", "\n", "cluster = LocalCluster(n_workers=8)\n", "client = Client(cluster)\n", "client.dashboard_link" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Defined captor position\n", "\n", "In this exemple, 4 sensors are defined." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "nb_sensor=4\n", "random_sensor=[]\n", "for i in range(nb_sensor):\n", " random_sensor.append([np.random.randint(-70, 71),np.random.randint(-70, 71),0])\n", "\n", "sensors=np.array(random_sensor)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Generate signal\n", "\n", "This section shows how to genrate signal that are similar to DAS data. Two events are compute." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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7DFx165d4unTp8VDhw6Jjz32mCgIgrh9+3ZRFJVff76WT0l1507Hu41CpQ4ZvHTw2muvif369RP1er04ceJEce/evbb3pkyZIi5cuNAh/d///nfxuuuuE/V6vThixAjxX//6V5Bz7Btfyrds2TJb2sTERDEzM1M8cOCADLn2TtutwR3/2sq0cOFCccqUKU7LjBkzRtTr9eI111wjbtiwIej59pav5XvhhRfEa6+9VoyMjBR79uwppqenizt37pQn815wVTYADnWi9GPQnzIq6Tj8xS9+Ifbv31/U6/Vi7969xVtvvdV2YRdF5defr+VTUt250zF4CZU6FERRFKVt2yEiIiIKHI55ISIiIkVh8EJERESKwuCFiIiIFIXBCxERESkKgxciIiJSFAYvREREpCgMXoiIiEhRGLwQERGRV3bv3o05c+agT58+EAQBeXl5Pq9j27ZtuOGGGxATE4PevXvjZz/7Gc6cOePTOhi8EFFIKCgogCAIqKyslDsrRORGXV0dRo8ejTVr1vi1/OnTpzF37lzccsstKC4uxrZt23Dp0iX89Kc/9Wk9fMIuEckiPT0dY8aMwauvvgoAaGpqwuXLl5GYmAhBEOTNHBF1ShAEbNmyBVlZWbZ5JpMJ//u//4v/+7//Q2VlJUaOHIkXXngB6enpAID3338f8+fPh8lkgkbT0n7y0UcfYe7cuTCZTNDpdF5tmy0vRBQS9Ho9kpKSGLgQKdiSJUtQWFiITZs24dChQ5g3bx5mzpyJb775BgCQmpoKjUaDDRs2wGKxoKqqCu+88w6mTZvmdeACMHghIhncfffd2LVrF1avXg1BECAIAjZu3OjQbbRx40bEx8fj448/xpAhQxAdHY3bbrsN9fX1ePvttzFgwAD06NEDv/3tb2GxWGzrNplMeOihh3D11VejW7dumDRpEgoKCuQpKFEYKSkpwYYNG7B582b86Ec/wrXXXouHHnoIN910EzZs2AAAGDhwILZv347HH38cBoMB8fHx+P777/H3v//dp21FSFEAIiJPVq9eja+//hojR47EM888AwA4evSoU7r6+nr88Y9/xKZNm1BTU4Of/vSn+MlPfoL4+Hjk5+fju+++w89+9jPceOONuP322wG0fPM7duwYNm3ahD59+mDLli2YOXMmDh8+jMGDBwe1nETh5PDhw7BYLLjuuusc5ptMJlx11VUAgLKyMtx///1YuHAh5s+fj5qaGjz55JO47bbbYDQavW55ZfBCREEXFxcHvV6P6OhoJCUlAQBOnDjhlM5sNmPt2rW49tprAQC33XYb3nnnHZSXl6N79+4YPnw4pk6dis8++wy333677ZtfSUkJ+vTpAwB46KGHsHXrVmzYsAHPPfdc8ApJFGZqa2uh1WpRVFQErVbr8F737t0BAGvWrEFcXBxefPFF23vvvvsuUlJS8OWXX+KGG27walsMXogoZEVHR9sCFwBITEzEgAEDbCfCtnkVFRUAvPvmR0TSGDt2LCwWCyoqKvCjH/3IZZr6+nrbQN02bYGO1Wr1elsMXogoZHUcwCcIgst5bSc9b775EZH/amtrcerUKdv06dOnUVxcjJ49e+K6667DXXfdhQULFuDll1/G2LFjcfHiRezYsQOjRo3C7NmzMXv2bKxatQrPPPOMrdvo8ccfR//+/TF27Fiv88HghYhkodfrHQbaBoI33/yIyH/79+/H1KlTbdPZ2dkAgIULF2Ljxo3YsGEDfv/73+PBBx/E+fPn0atXL9xwww348Y9/DAC45ZZbkJubixdffBEvvvgioqOjkZaWhq1btyIqKsrrfDB4ISJZDBgwAF9++SXOnDmD7t27+9Rk7I433/yIyH/p6enw9Hg4nU6HFStWYMWKFW7T3HHHHbjjjju6lA/eKk1EsnjooYeg1WoxfPhw9O7dGyUlJQFZ74YNG7BgwQI8+OCDGDJkCLKysrBv3z7069cvIOsnIvnxCbtERESkKGx5ISIiIkVh8EJERESKwuCFiIiIFIXBCxERESkKgxciIiJSFAYvREREpCgMXoiIiEhRGLwQERGRojB4ISIiIkVh8EJERESKwuCFiIiIFOX/A4Y4skDW+21dAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "nb_sources=4\n", "random_sources=[]\n", "for i in range(nb_sources):\n", " random_sources.append([np.random.randint(-70, 71),np.random.randint(-70, 71),0])\n", " if i==0:\n", " dart=di_mfp.artificial_sources_freq(sensors,random_sources[-1],2500,window_length=.1,sampling_rate=25000)\n", " else:\n", " dart2=di_mfp.artificial_sources_freq(sensors,random_sources[-1],2500,window_length=.1,sampling_rate=25000)\n", " dart2['time']=dart2['time']+dart['time'][-1]+dart['time'][1]\n", " dart=xr.concat([dart,3*dart2],'time')\n", "\n", "plt.figure()\n", "for i in range(dart.shape[0]):\n", " dart[i,:].plot(label=i)\n", "\n", "plt.legend()\n", "plt.grid()" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.DataArray (distance: 4, time: 2501)> Size: 80kB\n",
       "array([[-0.00055941,  0.00055953, -0.00055946, ...,  0.00055629,\n",
       "        -0.00055744,  0.00055748],\n",
       "       [-0.00092802,  0.00093086, -0.00093362, ...,  0.0009191 ,\n",
       "        -0.00092211,  0.00092503],\n",
       "       [-0.00037042,  0.00037006, -0.00037069, ...,  0.00037012,\n",
       "        -0.0003703 ,  0.00037064],\n",
       "       [-0.00064768,  0.00064872, -0.00064954, ...,  0.00064358,\n",
       "        -0.00064489,  0.00064615]], shape=(4, 2501))\n",
       "Coordinates:\n",
       "  * time     (time) float64 20kB 3.001e+08 3.002e+08 ... 4.001e+08 4.001e+08\n",
       "Dimensions without coordinates: distance
" ], "text/plain": [ " Size: 80kB\n", "array([[-0.00055941, 0.00055953, -0.00055946, ..., 0.00055629,\n", " -0.00055744, 0.00055748],\n", " [-0.00092802, 0.00093086, -0.00093362, ..., 0.0009191 ,\n", " -0.00092211, 0.00092503],\n", " [-0.00037042, 0.00037006, -0.00037069, ..., 0.00037012,\n", " -0.0003703 , 0.00037064],\n", " [-0.00064768, 0.00064872, -0.00064954, ..., 0.00064358,\n", " -0.00064489, 0.00064615]], shape=(4, 2501))\n", "Coordinates:\n", " * time (time) float64 20kB 3.001e+08 3.002e+08 ... 4.001e+08 4.001e+08\n", "Dimensions without coordinates: distance" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dart2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Performed MFP\n", "This MPF implementation if taken from the dask implementation from this [git repository](https://github.com/schipp/fast_beamforming).\n", "\n", "### 3D MFP\n", "\n", "Example of 3D MFP." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Help on function MFP_3D_series in module das_ice.mfp:\n", "\n", "MFP_3D_series(ds, delta_t, stations, xrange=[-100, 100], yrange=[-100, 100], zrange=[-100, 100], vrange=[2500, 2500], freqrange=[100, 200], dx=5, dy=5, dz=5, dv=250, n_fft=None)\n", " Perform Matched Field Processing (MFP) on 3D series data to compute beamforming power \n", " over a range of spatial coordinates, velocities, and frequencies.\n", " \n", " :param ds: Input data as an xarray DataArray containing waveform data. \n", " Must include 'distance' and 'time' coordinates.\n", " :type ds: xarray.DataArray\n", " \n", " :param delta_t: Time window size (in seconds) for processing the data in small chunks.\n", " :type delta_t: float\n", " \n", " :param stations: List of station coordinates used for processing.\n", " :type stations: list of tuples or ndarray of shape (n_stations, 3)\n", " \n", " :param xrange: Range of horizontal x-coordinates to search (start and end), default is [-100, 100].\n", " :type xrange: list of float or int\n", " \n", " :param yrange: Range of horizontal y-coordinates to search (start and end), default is [-100, 100].\n", " :type yrange: list of float or int\n", " \n", " :param zrange: Range of depths to compute (start and end), default is [-100, 100].\n", " :type zrange: list of float or int\n", " \n", " :param vrange: Velocity range to search in m/s (start and end), default is [2500, 2500].\n", " :type vrange: list of float or int\n", " \n", " :param freqrange: Frequency range for processing in Hz (start and end), default is [100, 200].\n", " :type freqrange: list of float\n", " \n", " :param dx: Spacing between grid points in the horizontal x dimension, default is 5.\n", " :type dx: float or int\n", " \n", " :param dy: Spacing between grid points in the horizontal y dimension, default is 5.\n", " :type dy: float or int\n", " \n", " :param dz: Spacing between grid points in the depth dimension (z), default is 5.\n", " :type dz: float or int\n", " \n", " :param dv: Spacing between velocities, default is 250.\n", " :type dv: float or int\n", " \n", " :return: A 4D xarray DataArray containing the computed beampower values. The dimensions are\n", " 'velocity', 'true_time', 'x', 'y', 'z'.\n", " :rtype: xarray.DataArray\n", "\n" ] } ], "source": [ "help(di_mfp.MFP_3D_series)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(4, 3)" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sensors.shape" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/chauvet/miniforge3/envs/taconaz2025/lib/python3.11/site-packages/distributed/client.py:3363: UserWarning: Sending large graph of size 13.55 MiB.\n", "This may cause some slowdown.\n", "Consider loading the data with Dask directly\n", " or using futures or delayed objects to embed the data into the graph without repetition.\n", "See also https://docs.dask.org/en/stable/best-practices.html#load-data-with-dask for more information.\n", " warnings.warn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Filename: /home/chauvet/Documents/Gitlab/das_ice/das_ice/mfp.py\n", "\n", "Line # Mem usage Increment Occurrences Line Contents\n", "=============================================================\n", " 114 778.8 MiB 778.8 MiB 1 @profile\n", " 115 def MFP_3D_series(ds,delta_t,stations,xrange=[-100,100],yrange=[-100,100],zrange=[-100,100],vrange=[2500,2500],freqrange=[100,200],dx=5,dy=5,dz=5,dv=250,n_fft=None):\n", " 116 '''\n", " 117 Perform Matched Field Processing (MFP) on 3D series data to compute beamforming power \n", " 118 over a range of spatial coordinates, velocities, and frequencies.\n", " 119 \n", " 120 :param ds: Input data as an xarray DataArray containing waveform data. \n", " 121 Must include 'distance' and 'time' coordinates.\n", " 122 :type ds: xarray.DataArray\n", " 123 \n", " 124 :param delta_t: Time window size (in seconds) for processing the data in small chunks.\n", " 125 :type delta_t: float\n", " 126 \n", " 127 :param stations: List of station coordinates used for processing.\n", " 128 :type stations: list of tuples or ndarray of shape (n_stations, 3)\n", " 129 \n", " 130 :param xrange: Range of horizontal x-coordinates to search (start and end), default is [-100, 100].\n", " 131 :type xrange: list of float or int\n", " 132 \n", " 133 :param yrange: Range of horizontal y-coordinates to search (start and end), default is [-100, 100].\n", " 134 :type yrange: list of float or int\n", " 135 \n", " 136 :param zrange: Range of depths to compute (start and end), default is [-100, 100].\n", " 137 :type zrange: list of float or int\n", " 138 \n", " 139 :param vrange: Velocity range to search in m/s (start and end), default is [2500, 2500].\n", " 140 :type vrange: list of float or int\n", " 141 \n", " 142 :param freqrange: Frequency range for processing in Hz (start and end), default is [100, 200].\n", " 143 :type freqrange: list of float\n", " 144 \n", " 145 :param dx: Spacing between grid points in the horizontal x dimension, default is 5.\n", " 146 :type dx: float or int\n", " 147 \n", " 148 :param dy: Spacing between grid points in the horizontal y dimension, default is 5.\n", " 149 :type dy: float or int\n", " 150 \n", " 151 :param dz: Spacing between grid points in the depth dimension (z), default is 5.\n", " 152 :type dz: float or int\n", " 153 \n", " 154 :param dv: Spacing between velocities, default is 250.\n", " 155 :type dv: float or int\n", " 156 \n", " 157 :param n_fft: n in torch.fft.fft function\n", " 158 :type dv: int\n", " 159 \n", " 160 :return: A 4D xarray DataArray containing the computed beampower values. The dimensions are\n", " 161 'velocity', 'true_time', 'x', 'y', 'z'.\n", " 162 :rtype: xarray.DataArray\n", " 163 '''\n", " 164 \n", " 165 778.9 MiB 0.0 MiB 1 sampling_rate=(ds.time[1]-ds.time[0]).values.astype(float)*10**-9\n", " 166 # defined number of sample per time series\n", " 167 778.9 MiB 0.0 MiB 1 dn=int(delta_t/sampling_rate)\n", " 168 # build a data cube with a dimention for each time series\n", " 169 778.9 MiB 0.0 MiB 1 ll=[]\n", " 170 778.9 MiB 0.0 MiB 1 true_time=[]\n", " 171 778.9 MiB 0.0 MiB 1 din=int(len(ds.time)/dn)\n", " 172 778.9 MiB 0.0 MiB 5 for i in range(din):\n", " 173 778.9 MiB 0.0 MiB 4 tmp=ds[:,i*dn:(i+1)*dn]\n", " 174 778.9 MiB 0.0 MiB 4 new_time = np.arange(dn) * sampling_rate\n", " 175 778.9 MiB 0.0 MiB 4 true_time.append(tmp.time[0].values)\n", " 176 778.9 MiB 0.0 MiB 4 tmp = tmp.assign_coords(time=new_time)\n", " 177 778.9 MiB 0.0 MiB 4 ll.append(tmp)\n", " 178 778.9 MiB 0.0 MiB 1 ds_cube=xr.concat(ll,dim='true_time')\n", " 179 ############\n", " 180 ##\n", " 181 ############\n", " 182 778.9 MiB 0.0 MiB 1 if n_fft is None:\n", " 183 778.9 MiB 0.0 MiB 1 n_fft=len(ds_cube.time)\n", " 184 else:\n", " 185 sampling_rate*=len(ds_cube.time)/n_fft\n", " 186 \n", " 187 \n", " 188 # Fiber signal processing\n", " 189 779.8 MiB 0.9 MiB 1 multi_waveform_spectra=torch.fft.fft(torch.from_numpy(ds_cube.values),axis=2,n=n_fft).to(dtype=torch.complex128)\n", " 190 779.8 MiB 0.0 MiB 1 freqs = torch.fft.fftfreq(n_fft,sampling_rate)\n", " 191 # Normalized over each frequencies\n", " 192 780.4 MiB 0.5 MiB 1 spectral_norm = torch.abs(multi_waveform_spectra) # Spectral norm\n", " 193 # Replace 0 values with 1\n", " 194 781.3 MiB 0.9 MiB 1 spectral_norm[spectral_norm == 0] = 1\n", " 195 781.9 MiB 0.7 MiB 1 multi_waveform_spectra = multi_waveform_spectra/spectral_norm\n", " 196 #\n", " 197 781.9 MiB 0.0 MiB 1 omega = 2 * torch.pi * freqs\n", " 198 # frequency sampling\n", " 199 782.2 MiB 0.3 MiB 1 freq_idx = torch.where((freqs >= freqrange[0]) & (freqs <= freqrange[1]))[0]\n", " 200 782.3 MiB 0.1 MiB 1 omega_lim = omega[freq_idx]\n", " 201 782.4 MiB 0.1 MiB 1 waveform_spectra_lim = multi_waveform_spectra[:,:,freq_idx]\n", " 202 \n", " 203 \n", " 204 \n", " 205 782.6 MiB 0.2 MiB 1 K = waveform_spectra_lim[:,:, None, :] * waveform_spectra_lim.conj()[:,None, :, :]\n", " 206 782.6 MiB 0.1 MiB 1 diag_idxs = torch.arange(K.shape[1])\n", " 207 782.8 MiB 0.2 MiB 1 zero_spectra = torch.zeros(omega_lim.shape, dtype=torch.cdouble)\n", " 208 782.9 MiB 0.1 MiB 1 K[:,diag_idxs, diag_idxs, :] = zero_spectra\n", " 209 782.9 MiB 0.0 MiB 1 K = da.from_array(K.numpy())\n", " 210 \n", " 211 # Compute grid\n", " 212 782.9 MiB 0.0 MiB 1 x_coords = torch.arange(xrange[0], xrange[1] + dx, dx)\n", " 213 782.9 MiB 0.0 MiB 1 y_coords = torch.arange(yrange[0], yrange[1] + dy, dy)\n", " 214 782.9 MiB 0.0 MiB 1 z_coords = torch.arange(zrange[0], zrange[1] + dz, dz)\n", " 215 782.9 MiB 0.0 MiB 1 v_coords=torch.arange(vrange[0], vrange[1] + dv, dv)\n", " 216 783.8 MiB 0.8 MiB 1 gridpoints = torch.tensor(list(product(x_coords, y_coords, z_coords)))\n", " 217 \n", " 218 783.8 MiB 0.0 MiB 1 stations=torch.tensor(stations).to(dtype=torch.complex128)\n", " 219 783.8 MiB 0.1 MiB 1 distances_to_all_gridpoints = torch.linalg.norm(gridpoints[:, None, :] - stations[None, :, :], axis=2)\n", " 220 \n", " 221 # Compute traveltimes\n", " 222 783.8 MiB 0.0 MiB 1 traveltimes=distances_to_all_gridpoints[None,:,:]/v_coords[:,None,None]\n", " 223 797.4 MiB 13.5 MiB 1 greens_functions = torch.exp(-1j * omega_lim[None, None,None, :] * traveltimes[:, :, :, None])\n", " 224 # move critical part to dask\n", " 225 810.9 MiB 13.5 MiB 1 greens_functions_dask = da.from_array(greens_functions.numpy(), chunks='auto')\n", " 226 810.9 MiB 0.0 MiB 1 S = (greens_functions_dask[:, :,:, None,:]*greens_functions_dask.conj()[:,:, None, :,:])\n", " 227 # Perform the einsum operation\n", " 228 810.9 MiB 0.0 MiB 1 beampowers_d = da.einsum(\"vlgijw, ljiw -> vlg\", S[:, None , :, :, :, :], K).real\n", " 229 824.5 MiB 13.6 MiB 1 beampowers = beampowers_d.compute()\n", " 230 824.5 MiB 0.0 MiB 1 bp = beampowers.reshape(len(v_coords),din, len(x_coords), len(y_coords), len(z_coords))\n", " 231 \n", " 232 824.5 MiB 0.0 MiB 1 res=xr.DataArray(bp,dims=['velocity','true_time','x','y','z'])\n", " 233 824.5 MiB 0.0 MiB 1 res['velocity']=v_coords\n", " 234 824.5 MiB 0.0 MiB 1 res['true_time']=true_time\n", " 235 824.5 MiB 0.0 MiB 1 res['x']=x_coords\n", " 236 824.5 MiB 0.0 MiB 1 res['y']=y_coords\n", " 237 824.5 MiB 0.0 MiB 1 res['z']=z_coords\n", " 238 \n", " 239 824.5 MiB 0.0 MiB 1 res=res.transpose(\"x\",\"y\",\"z\",\"velocity\",\"true_time\")/((stations.shape[0]-1)*stations.shape[0]*len(omega_lim))\n", " 240 \n", " 241 824.5 MiB 0.0 MiB 1 return res\n", "\n", "\n" ] } ], "source": [ "MFP3D=di_mfp.MFP_3D_series(dart,0.1,sensors,xrange=[-70,70],yrange=[-71,71],zrange=[0,0],dx=1,dy=1,dz=1,n_fft=None)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Show results" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The MFP is finding the best match for:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Coordinates:\n", " * velocity (velocity) int64 8B 2500\n", " true_time float64 8B 1e+08\n", " * x (x) int64 8B -29\n", " * y (y) int64 8B -58\n", " * z (z) int64 8B 0" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "i_event=1\n", "find_sources=MFP3D[...,i_event].where(MFP3D[...,i_event] == MFP3D[...,i_event].max(), drop=True).coords\n", "find_sources" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The true sources was in:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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8vJC1aVs2rQJANC2bdu0bRMmTMDu3bthWRaOO+44zJo1C4MHD/a2f/TRR0gkElIZAMRiMQwcOBDvv/++V/b+++/jkEMOkQZEAHDUUUcBAFauXIkuXbqE7vfw4cNx+eWX495778V1112H3r17A4D3PwCsWbMG5557Ln71q19h4sSJ6NWrV+j2AWDz5s04+uijYRgGJk+ejHbt2uHll1/GRRddhPLyclxxxRWh2tE9HzWxfft2nHrqqTjnnHNw5pln4qGHHsI555yD+fPn44orrsAll1yCX/ziF5g1axZ+/vOfY/369WjZsmVO+r1z507E4/HA88rPz0eLFi1CXYMgbNvGT3/6U/znP//BxRdfjN69e+Ojjz7C3Xffjc8++wwvvvhirdp3n8Xqz2qnTp3QuXNn6Vk9/vjj8cwzz+BXv/oVpkyZgsLCQrz88st44YUXMGvWrIyP3a5dO/z5z3+WyuLxOK688krEYrEa943H49i5c2eo47Ru3RqmqX8/f//991FUVCR9RgD/M/j+++/j2GOPDXUsZj+ioU1KzYVzzz1XtG/fXjKdbty4UZimKW6++WavbOTIkaJ///5i3759Xplt22LYsGHi4IMP9sqqS1dVVVWiffv2ol+/fmLv3r1evX/+859pPirDhw8XLVu2FF9//bXUR+qP8+ijj6aZynXSxMMPPywASKbxqqoq0bZtWzF+/PjAawMg1PLoo48GtlWd77//XrRv314cd9xxUvl///tfMXbsWPHII4+Iv//972LGjBmiTZs2Ij8/X7z33ntePVc6evPNN9PaPvPMM0VZWZn3d9++fcWJJ56YVu/jjz8WAMScOXMy7n9N0lXXrl0FALFgwQKp/KuvvtJeLwDixhtv9P6+6KKLRMeOHcW2bdukeuecc44oKSnJSArTPR8qmXXEiBECgHjyySe9sk8//VQAEKZpiv/9739e+SuvvJJ2PrXtt3v8oCXM80upSbr685//LEzTTPPXmjNnjgAg/vvf/2rbDSNdzZo1SwAQ33zzTdq2I488Uhx99NHe34lEQkyePFlEo1HvXC3LEg899FDAGYbn0ksvFZZliddff73Geu65hVmCpLtTTjlFHHTQQWnlFRUVAoC45ppranNKTBOFLTr1xNlnn42nnnoKS5YswciRIwGkpA7btnH22WcDAH744Qe8/vrruPnmm7Fr1y7s2rXL23/06NG48cYb8d133+GAAw5Ia3/58uXYsmULbrrpJuTn53vlp5xyCg499FD861//wvTp07F161a8+eab+M1vfoMDDzxQaiNbE/NZZ52F3/zmN5g/fz5uueUWAMArr7yCbdu24fzzzw/cP+yspL59+2bUL9u2cd5552HHjh247777pG3Dhg3DsGHDvL9/+tOf4uc//zkGDBiAa6+9FgsWLAAA7N27FwCUlqT8/Hxvu1tXV4+2lUu6d++O0aNHZ7WvEAJ//etfcdZZZ0EIIVnWRo8ejaeffhrvvfcejjnmmFx1V6JFixY455xzvL979eqF0tJSHHDAARgyZIhX7q670mMu+v2HP/wB27dvD+xjp06dMj4vHc899xx69+6NQw89VOrziSeeCABYvHix90xWtzi5Fo/t27dLFiZqcQp6VsvLy72/LctCjx49MHr0aJx55pnIz8/HU089hcsuuwxlZWU4/fTTa3WuTzzxBB588EH84Q9/wAknnFBj3cMOOyz0d0BZWVmN2xviM8g0fnigU0+MGTMGJSUleOaZZ7yBzjPPPIOBAwfikEMOAQB88cUXEELghhtuwA033KBsZ8uWLcqBztdffw0ASuni0EMPxX/+8x8A/o+FK5XlgtLSUvzkJz/Bk08+6Q105s+fjwMOOMD7Eq+JUaNG5awvlMsuuwwLFizAE088gcMOOyywfs+ePXHaaafhhRdeQDKZhGVZnr+Cyodi3759kj9DQUGBtp67Pdd079496323bt2KHTt2YO7cuZg7d66yzpYtW7JuP4jOnTunDa5LSkrS5L2SkhIA8AYmuej3oEGDsu121nz++edYvXo12rVrp9xO+3zaaacpffqOOOII6e/x48d7vliZPKu333477rnnHnz++efeQOmss87CCSecgEmTJuHUU0+V/HwyYeXKlbjkkktw7rnnYsqUKYH1W7VqlbPvgIb4DDKNHx7o1BN5eXk4/fTT8be//Q0PPvggNm/ejP/+97+47bbbvDq2bQMArrrqKu1bes+ePeulv5kybtw4PPfcc3j77bfRv39/vPTSS7j00ktr1NNdXB+aIEpKSkJ/UU2fPh0PPvggbr/9dvzf//1fqH0AoEuXLqiqqkJFRQWKi4vRsWNHAMDGjRvT6m7cuFF64+/YsaPS8dvdN5fWARfV9dBZ5qrHR3Gft/PPPx/jx49X7jNgwIBa9lCPZVkZlQshAOSm3z/88AOqqqoC+1hQUOANtGqLbdvo378/7rrrLuV2OsCrbnH64IMPcNVVV+Evf/mL5PtU/fkDUs9b9cHixo0bPT8VIBXz6MQTT0zzP/rpT3+KKVOmYN26dVl912zfvh1jx47FIYccgj/96U+h9qmqqsIPP/wQqm67du20zweQugaLFy+GEEL6HNTlZ5Bp/PBApx45++yz8fjjj2PRokVYvXo1hBCebAUABx10EAAgGo1m/IbjzjZas2ZNmhVlzZo13nb3GHSWV1hqkrbGjBmDdu3aYf78+RgyZAj27NkTeoDhfkEH8eijj+KCCy4IrPfAAw/gpptuwhVXXIGpU6eGatvlyy+/lOSAfv36IRKJYPny5TjrrLO8elVVVVi5cqVUNnDgQCxevBjl5eWSQ/I777zjbc+UbOTEVq1aAQB27NghlbtWP5d27dqhZcuWSCaTOXmjrq/ZNbno9xlnnKG0mFSHWkxqS48ePfDBBx9g5MiRgdequsXJta4cc8wx6Natm3If9/lavny5NKjZsGEDvv32W2k24ObNm5WBAV25TDcLsSaoVPzaa6+hsLAw1H5vv/12oLzl8tVXX2nPH0hdgz/96U9YvXo1+vTp45XX5jPINH14oFOPjBo1Cq1bt8YzzzyD1atX46ijjpKkh/bt2+P444/Hww8/jMsuuyxtALB161at2Xvw4MFo37495syZgwsvvNDTqV9++WWsXr0a06ZNA5D6kRg+fDjmzZuHKVOmSH461d+CqlNUVJT24+kSiURw7rnn4sknn8Tq1avRv3//0NaAXProPPPMM7j88stx3nnnad+cAfW1/OCDD/DSSy/h5JNP9ixRJSUlGDVqFP7yl7/ghhtu8Gb9/PnPf8bu3bu96d8A8POf/xx33nkn5s6di6uuugpASkZ49NFHMWTIkIxmXLkUFRUBSB+01ERxcTHatm2LN998U5p99OCDD0r1LMvC2LFj8eSTT2LVqlVpcmZNz5uur5n0M1ty0e+G8NE566yz8O9//xt//OMfpUEHkPIdsW3bu9/Z0LdvXxx66KGYO3cufvWrX3mWj4ceegiGYeDnP/+5V/eQQw7BwoUL8f3336NNmzYAUha/Z599Fi1btkSPHj0yPv706dPxyiuv4OWXX85IUs2lj85pp52GK6+8Eg8++CDuv/9+AKnvtTlz5uCAAw6Q/PKY5gMPdOqRaDSKM844A08//TQqKipw5513ptV54IEHcOyxx6J///6YOHEiDjroIGzevBlLly7Ft99+iw8++EDb9syZMzFhwgSMGDEC5557rje9vFu3btLU73vvvRfHHnssjjjiCFx88cXo3r071q1bh3/9619YuXKltv+DBg3CQw89hFtvvRU9e/ZE+/btJevRuHHjcO+992Lx4sWYOXNm6OuSK31+2bJlGDduHNq0aYORI0di/vz50vZhw4Z5Fq2zzz4bBQUFGDZsGNq3b49PPvkEc+fORWFhIW6//XZpv9///vcYNmwYRowYgYsvvhjffvst/vCHP+Ckk07CmDFjvHpDhgzBmWeeiWuvvRZbtmxBz5498fjjj2PdunV45JFHpDZvuukmTJ8+HYsXL/bizagYOHAgLMvCzJkzsXPnTuTl5eHEE09E+/bta7wWv/zlL3H77bfjl7/8JQYPHow333wTn332WVq922+/HYsXL8aQIUMwceJE9OnTBz/88APee+89vPbaa6ElBSD4+cglte13Ln10vv76a29q9fLlywEAt956K4CUpdW1bP7f//0fnn32WVxyySVYvHgxjjnmGCSTSXz66ad49tlnvXhItWHWrFn46U9/ipNOOgnnnHMOVq1ahfvvvx+//OUvpSnX11xzDc4//3wMGTIEF198MQoKCvDUU09hxYoVuPXWWxGNRr26F1xwAR5//PEarSkfffQRbrnlFgwfPhxbtmzBX/7yF2l7TZMScumj07lzZ1xxxRWYNWsW4vE4jjzySLz44ot46623MH/+/BplL2Y/pqGmezVXFi5cKAAIwzDE+vXrlXXWrl0rxo0bJ8rKykQ0GhUHHHCAOPXUU8Xzzz/v1dFFRn7mmWfE4YcfLvLy8kTr1q3FeeedJ7799tu0Y6xatUr87Gc/E6WlpSI/P1/06tVL3HDDDd521fTyTZs2iVNOOUW0bNlSAFBOJe7bt68wTVN5zLrG7bNuodOT77nnHnHUUUeJ1q1bi0gkIjp27CjOP/988fnnnyvbfuutt8SwYcNEfn6+aNeunZg0aZIoLy9Pq7d3715x1VVXibKyMpGXlyeOPPLItOnfQgjx29/+Ni1arY4//vGP4qCDDhKWZUn3vGvXruKUU05R7rNnzx5x0UUXiZKSEtGyZUtx1llniS1btqRNLxdC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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "matching_index = np.where(MFP3D.z.values == find_sources['z'].values)[0]\n", "MFP3D[...,matching_index,0,i_event].plot()\n", "plt.scatter(random_sources[i_event][1],random_sources[i_event][0],s=80,marker='s',color='k',label='random_sources')\n", "plt.scatter(find_sources['y'],find_sources['x'],s=35,color='y',label='found with MFP')\n", "plt.legend()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "3D plot of the MFP Bartlett with a slider to plot the different plane of the Bartlett field." ] } ], "metadata": { "kernelspec": { "display_name": "taconaz2025", "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.11.14" } }, "nbformat": 4, "nbformat_minor": 2 }