Visualisasi dan Geologi Komputasi: Contoh Notebook Jupyter Python 3

Hari ini, alih-alih membahas model geologi, kita akan melihat contoh pemrograman mereka di lingkungan Notebook Jupyter dengan Python 3 dan dengan pustaka Pandas, NumPy, SciPy, XArray, Dask Distributed, Numba, VTK, PyVista, Matplotlib. Ini adalah laptop yang cukup sederhana dengan dukungan multithreading dan kemampuan untuk berjalan secara lokal dan dalam cluster untuk memproses data besar, komputasi malas, dan visualisasi visual 3D dari hasil. Memang, saya telah mencoba mengumpulkan sejumlah besar konsep teknis yang rumit dan membuatnya tetap sederhana. Untuk membuat klaster di Amazon AWS, lihat skrip AWS Init untuk pemrosesan GIS Jupyter Python untuk membuat sekumpulan instans dan menjalankan penjadwal sumber daya pada instans master sekaligus.



Visualisasi dengan Visualization Toolkit (VTK) dan PyVista bukan lagi 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 , "".







. . , ( ), . , . ( ).







Sebagai kesimpulan, saya mengajak semua orang untuk mengunjungi repositori GitHub dengan berbagai model geologi dan visualisasinya di Blender dan ParaView, serta contoh berbagai analisis. Lihat juga visualisasi siap pakai di saluran YouTube .








All Articles