Hoje, em vez de discutir modelos geológicos, veremos um exemplo de sua programação no ambiente Jupyter Notebook em Python 3 e com as bibliotecas Pandas, NumPy, SciPy, XArray, Dask Distributed, Numba, VTK, PyVista, Matplotlib. Este é um laptop bastante simples com suporte para multithreading e a capacidade de ser executado localmente e em um cluster para processamento de big data, computação preguiçosa e visualização 3D visual dos resultados. Na verdade, tentei reunir um monte de conceitos técnicos complexos e mantê-los simples. Para criar um cluster no Amazon AWS, consulte o script AWS Init para processamento Jupyter Python GIS para criar um conjunto de instâncias e executar o planejador de recursos na instância mestre de uma vez.
Visualização com o Visualization Toolkit (VTK) e PyVista não é mais Matplotlib
, , , , ( ) . -, Python , . , , , , . , , , — , . — ( ) , , , . , Python , . , . PyVista VTK — Visualization Toolkit, … , ParaView N-Cube ParaView plugin for 3D/4D GIS Data Visualization, Python + VTK.
GitHub basic.ipynb , , . dask , . AWS Init script for Jupyter Python GIS processing . NumPy, , , , XArray NumPy (object.values). NumPy , Numba (, 15%):
from numba import jit
@jit(nopython=True, parallel=True)
def delta_grav_vertical(delta_mass, x, y, z):
G=6.67408*1e-11
return -np.sum((100.*1000)*G*delta_mass*z/np.power(x**2 + y**2 + z**2, 1.5))
(, , ) :
def forward_gravity(da):
(da_y, da_x, da_z) = xr.broadcast(da.y, da.x, da.z)
deltagrav = lambda x0, y0: delta_grav_vertical(da.values.ravel(), (da_x.values.ravel()-x0), (da_y.values.ravel()-y0), (da_z.values.ravel()-0))
gravity = xr.apply_ufunc(deltagrav, da_x.isel(z=0).chunk(50), da_y.isel(z=0).chunk(50), vectorize=True, dask='parallelized')
...
xarray.broadcast ravel() x, y, z . da_x.isel(z=0) da_y.isel(z=0) x, y , (, , .. ). xarray.apply_ufunc() dask deltagrav. , XArray , dask dask , da_x.isel(z=0).chunk(50) da_y.isel(z=0).chunk(50), 50 x, y ( ). , — chunk() XArray , dask .
, dask- (), forward_gravity() , , load(). , , . , NetCDF — , . , . , dask , "".
. . , ( ), . , . ( ).
Concluindo, convido a todos a visitar os repositórios do GitHub com uma variedade de modelos geológicos e sua visualização no Blender e ParaView, bem como exemplos de várias análises. Veja também visualizações prontas no canal do YouTube .