Hoy, en lugar de discutir modelos geológicos, veremos un ejemplo de su programación en el entorno Jupyter Notebook en Python 3 y con las bibliotecas Pandas, NumPy, SciPy, XArray, Dask Distributed, Numba, VTK, PyVista, Matplotlib. Esta es una computadora portátil bastante simple con soporte para múltiples subprocesos y la capacidad de ejecutarse localmente y en un clúster para procesar big data, computación perezosa y visualización 3D visual de los resultados. De hecho, he intentado reunir un montón de conceptos técnicos complejos y mantenerlos simples. Para crear un clúster en Amazon AWS, consulte el script de inicio de AWS para el procesamiento de Jupyter Python GIS para crear un conjunto de instancias y ejecutar el programador de recursos en la instancia maestra a la vez.
La visualización con Visualization Toolkit (VTK) y PyVista ya no es 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 , "".
. . , ( ), . , . ( ).
En conclusión, invito a todos a visitar los repositorios de GitHub con una variedad de modelos geológicos y su visualización en Blender y ParaView, así como ejemplos de varios análisis. También vea visualizaciones listas para usar en el canal de YouTube .