Visualización y geología computacional: un ejemplo de cuaderno de Python 3 Jupyter

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 .








All Articles