geone 1.2.17__tar.gz → 1.2.18__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {geone-1.2.17/geone.egg-info → geone-1.2.18}/PKG-INFO +9 -7
- {geone-1.2.17 → geone-1.2.18}/README.md +5 -5
- {geone-1.2.17 → geone-1.2.18/geone.egg-info}/PKG-INFO +9 -7
- {geone-1.2.17 → geone-1.2.18}/src/geone/_version.py +1 -1
- {geone-1.2.17 → geone-1.2.18}/src/geone/blockdata.py +2 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/covModel.py +6 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/deesseinterface.py +9 -18
- {geone-1.2.17 → geone-1.2.18}/src/geone/img.py +16 -10
- {geone-1.2.17 → geone-1.2.18}/src/geone/imgplot.py +4 -1
- {geone-1.2.17 → geone-1.2.18}/src/geone/tools.py +50 -9
- {geone-1.2.17 → geone-1.2.18}/LICENSE +0 -0
- {geone-1.2.17 → geone-1.2.18}/MANIFEST.in +0 -0
- {geone-1.2.17 → geone-1.2.18}/geone.egg-info/SOURCES.txt +0 -0
- {geone-1.2.17 → geone-1.2.18}/geone.egg-info/dependency_links.txt +0 -0
- {geone-1.2.17 → geone-1.2.18}/geone.egg-info/requires.txt +0 -0
- {geone-1.2.17 → geone-1.2.18}/geone.egg-info/top_level.txt +0 -0
- {geone-1.2.17 → geone-1.2.18}/pyproject.toml +0 -0
- {geone-1.2.17 → geone-1.2.18}/setup.cfg +0 -0
- {geone-1.2.17 → geone-1.2.18}/setup.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/__init__.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/customcolors.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/geosclassicinterface.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/grf.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/imgplot3d.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/linux_old_py310/__init__.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/linux_old_py310/_deesse.so +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/linux_old_py310/deesse.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/linux_old_py311/__init__.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/linux_old_py311/_deesse.so +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/linux_old_py311/deesse.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/linux_old_py312/__init__.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/linux_old_py312/_deesse.so +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/linux_old_py312/deesse.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/linux_old_py39/__init__.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/linux_old_py39/_deesse.so +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/linux_old_py39/deesse.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/linux_py310/__init__.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/linux_py310/_deesse.so +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/linux_py310/deesse.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/linux_py311/__init__.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/linux_py311/_deesse.so +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/linux_py311/deesse.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/linux_py312/__init__.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/linux_py312/_deesse.so +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/linux_py312/deesse.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/linux_py39/__init__.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/linux_py39/_deesse.so +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/linux_py39/deesse.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/mac_arm64_py310/__init__.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/mac_arm64_py310/_deesse.so +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/mac_arm64_py310/deesse.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/mac_arm64_py311/__init__.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/mac_arm64_py311/_deesse.so +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/mac_arm64_py311/deesse.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/mac_arm64_py312/__init__.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/mac_arm64_py312/_deesse.so +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/mac_arm64_py312/deesse.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/mac_arm64_py39/__init__.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/mac_arm64_py39/_deesse.so +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/mac_arm64_py39/deesse.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/mac_x86_64_py310/__init__.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/mac_x86_64_py310/_deesse.so +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/mac_x86_64_py310/deesse.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/mac_x86_64_py311/__init__.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/mac_x86_64_py311/_deesse.so +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/mac_x86_64_py311/deesse.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/mac_x86_64_py312/__init__.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/mac_x86_64_py312/_deesse.so +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/mac_x86_64_py312/deesse.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/mac_x86_64_py39/__init__.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/mac_x86_64_py39/_deesse.so +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/mac_x86_64_py39/deesse.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/win_py310/__init__.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/win_py310/_deesse.pyd +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/win_py310/deesse.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/win_py310/vcruntime140.dll +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/win_py310/vcruntime140_1.dll +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/win_py311/__init__.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/win_py311/_deesse.pyd +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/win_py311/deesse.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/win_py311/vcruntime140.dll +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/win_py311/vcruntime140_1.dll +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/win_py312/__init__.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/win_py312/_deesse.pyd +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/win_py312/deesse.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/win_py312/vcruntime140.dll +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/win_py312/vcruntime140_1.dll +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/win_py39/__init__.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/win_py39/_deesse.pyd +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/win_py39/deesse.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/win_py39/vcruntime140.dll +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_deesse_core/win_py39/vcruntime140_1.dll +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/linux_old_py310/__init__.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/linux_old_py310/_geosclassic.so +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/linux_old_py310/geosclassic.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/linux_old_py311/__init__.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/linux_old_py311/_geosclassic.so +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/linux_old_py311/geosclassic.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/linux_old_py312/__init__.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/linux_old_py312/_geosclassic.so +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/linux_old_py312/geosclassic.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/linux_old_py39/__init__.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/linux_old_py39/_geosclassic.so +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/linux_old_py39/geosclassic.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/linux_py310/__init__.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/linux_py310/_geosclassic.so +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/linux_py310/geosclassic.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/linux_py311/__init__.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/linux_py311/_geosclassic.so +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/linux_py311/geosclassic.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/linux_py312/__init__.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/linux_py312/_geosclassic.so +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/linux_py312/geosclassic.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/linux_py39/__init__.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/linux_py39/_geosclassic.so +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/linux_py39/geosclassic.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/mac_arm64_py310/__init__.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/mac_arm64_py310/_geosclassic.so +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/mac_arm64_py310/geosclassic.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/mac_arm64_py311/__init__.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/mac_arm64_py311/_geosclassic.so +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/mac_arm64_py311/geosclassic.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/mac_arm64_py312/__init__.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/mac_arm64_py312/_geosclassic.so +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/mac_arm64_py312/geosclassic.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/mac_arm64_py39/__init__.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/mac_arm64_py39/_geosclassic.so +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/mac_arm64_py39/geosclassic.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/mac_x86_64_py310/__init__.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/mac_x86_64_py310/_geosclassic.so +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/mac_x86_64_py310/geosclassic.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/mac_x86_64_py311/__init__.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/mac_x86_64_py311/_geosclassic.so +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/mac_x86_64_py311/geosclassic.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/mac_x86_64_py312/__init__.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/mac_x86_64_py312/_geosclassic.so +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/mac_x86_64_py312/geosclassic.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/mac_x86_64_py39/__init__.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/mac_x86_64_py39/_geosclassic.so +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/mac_x86_64_py39/geosclassic.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/win_py310/__init__.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/win_py310/_geosclassic.pyd +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/win_py310/geosclassic.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/win_py310/vcruntime140.dll +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/win_py310/vcruntime140_1.dll +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/win_py311/__init__.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/win_py311/_geosclassic.pyd +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/win_py311/geosclassic.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/win_py311/vcruntime140.dll +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/win_py311/vcruntime140_1.dll +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/win_py312/__init__.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/win_py312/_geosclassic.pyd +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/win_py312/geosclassic.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/win_py312/vcruntime140.dll +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/win_py312/vcruntime140_1.dll +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/win_py39/__init__.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/win_py39/_geosclassic.pyd +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/win_py39/geosclassic.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/win_py39/vcruntime140.dll +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/lib_geosclassic_core/win_py39/vcruntime140_1.dll +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/markovChain.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/multiGaussian.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/pgs.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/randProcess.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/src/geone/srf.py +0 -0
- {geone-1.2.17 → geone-1.2.18}/tests/test_estimator.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: geone
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.18
|
|
4
4
|
Summary: Geostatistics tools and Multiple Point Statistics
|
|
5
5
|
Author-email: Julien Straubhaar <julien.straubhaar@unine.ch>, Philippe Renard <philippe.renard@unine.ch>
|
|
6
6
|
License:
|
|
@@ -74,12 +74,14 @@ Requires-Dist: numpy<2,>=1
|
|
|
74
74
|
Requires-Dist: pandas
|
|
75
75
|
Requires-Dist: pyvista
|
|
76
76
|
Requires-Dist: scipy
|
|
77
|
+
Dynamic: license
|
|
78
|
+
Dynamic: license-file
|
|
77
79
|
|
|
78
80
|
# GEONE
|
|
79
81
|
|
|
80
82
|
[](https://geone.readthedocs.io/en/latest/?badge=latest)
|
|
81
83
|
|
|
82
|
-
**Current version : 1.2.
|
|
84
|
+
**Current version : 1.2.18** <!-- Update manually here! see src/geone/_version.py -->
|
|
83
85
|
|
|
84
86
|
GEONE is a Python3 package providing a set of tools for geostatistical modeling, including:
|
|
85
87
|
|
|
@@ -111,7 +113,7 @@ GEONE is available:
|
|
|
111
113
|
|
|
112
114
|
### Installation from [PyPI](https://pypi.org/project/geone)
|
|
113
115
|
|
|
114
|
-
In a terminal type
|
|
116
|
+
In a terminal type
|
|
115
117
|
```
|
|
116
118
|
pip install geone
|
|
117
119
|
```
|
|
@@ -130,7 +132,7 @@ pip install .
|
|
|
130
132
|
|
|
131
133
|
Alternatively:
|
|
132
134
|
|
|
133
|
-
- Instead of `git clone ...`, you can download GEONE from the [Github repository](https://github.com/randlab/geone): click on the green button "code" and choose "Download ZIP".
|
|
135
|
+
- Instead of `git clone ...`, you can download GEONE from the [Github repository](https://github.com/randlab/geone): click on the green button "code" and choose "Download ZIP".
|
|
134
136
|
- Then, unzip the archive on your computer
|
|
135
137
|
- Finally, in a terminal, go into the unzipped directory, and type `pip install .`
|
|
136
138
|
|
|
@@ -154,7 +156,7 @@ The following python packages are used by GEONE (tested on python 3.11.5):
|
|
|
154
156
|
numpy version **less than 2.** is required
|
|
155
157
|
|
|
156
158
|
### Removing GEONE
|
|
157
|
-
In a terminal type
|
|
159
|
+
In a terminal type
|
|
158
160
|
|
|
159
161
|
`pip uninstall -y geone`
|
|
160
162
|
|
|
@@ -178,7 +180,7 @@ In a terminal type
|
|
|
178
180
|
- C. R. Dietrich and G. N. Newsam (1993) A fast and exact method for multidimensional gaussian stochastic simulations. Water Resources Research 29(8):2861-2869, [doi:10.1029/93WR01070](https://dx.doi.org/10.1029/93WR01070)
|
|
179
181
|
- A. T. A. Wood and G. Chan (1994) Simulation of stationary gaussian processes in [0,1]^d. Journal of Computational and Graphical Statistics 3(4):409-432, [doi:10.2307/1390903](https://dx.doi.org/10.2307/1390903)
|
|
180
182
|
|
|
181
|
-
### Other references
|
|
183
|
+
### Other references
|
|
182
184
|
- C. Lantuéjoul (2002) Geostatistical Simulation, Models and Algorithms. Springer Verlag, Berlin, 256 p.
|
|
183
185
|
- P. Renard, D. Allard (2013), Connectivity metrics for subsurface flow and transport. Advances in Water Resources 51:168-196, `doi:10.1016/j.advwatres.2011.12.001 <https://doi.org/10.1016/j.advwatres.2011.12.001>`_
|
|
184
186
|
- J. Straubhaar, P. Renard (2024), Exploring substitution random functions composed of stationary multi-Gaussian processes. Stochastic Environmental Research and Risk Assessment, `doi:10.1007/s00477-024-02662-x <https://doi.org/10.1007/s00477-024-02662-x>`_
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://geone.readthedocs.io/en/latest/?badge=latest)
|
|
4
4
|
|
|
5
|
-
**Current version : 1.2.
|
|
5
|
+
**Current version : 1.2.18** <!-- Update manually here! see src/geone/_version.py -->
|
|
6
6
|
|
|
7
7
|
GEONE is a Python3 package providing a set of tools for geostatistical modeling, including:
|
|
8
8
|
|
|
@@ -34,7 +34,7 @@ GEONE is available:
|
|
|
34
34
|
|
|
35
35
|
### Installation from [PyPI](https://pypi.org/project/geone)
|
|
36
36
|
|
|
37
|
-
In a terminal type
|
|
37
|
+
In a terminal type
|
|
38
38
|
```
|
|
39
39
|
pip install geone
|
|
40
40
|
```
|
|
@@ -53,7 +53,7 @@ pip install .
|
|
|
53
53
|
|
|
54
54
|
Alternatively:
|
|
55
55
|
|
|
56
|
-
- Instead of `git clone ...`, you can download GEONE from the [Github repository](https://github.com/randlab/geone): click on the green button "code" and choose "Download ZIP".
|
|
56
|
+
- Instead of `git clone ...`, you can download GEONE from the [Github repository](https://github.com/randlab/geone): click on the green button "code" and choose "Download ZIP".
|
|
57
57
|
- Then, unzip the archive on your computer
|
|
58
58
|
- Finally, in a terminal, go into the unzipped directory, and type `pip install .`
|
|
59
59
|
|
|
@@ -77,7 +77,7 @@ The following python packages are used by GEONE (tested on python 3.11.5):
|
|
|
77
77
|
numpy version **less than 2.** is required
|
|
78
78
|
|
|
79
79
|
### Removing GEONE
|
|
80
|
-
In a terminal type
|
|
80
|
+
In a terminal type
|
|
81
81
|
|
|
82
82
|
`pip uninstall -y geone`
|
|
83
83
|
|
|
@@ -101,7 +101,7 @@ In a terminal type
|
|
|
101
101
|
- C. R. Dietrich and G. N. Newsam (1993) A fast and exact method for multidimensional gaussian stochastic simulations. Water Resources Research 29(8):2861-2869, [doi:10.1029/93WR01070](https://dx.doi.org/10.1029/93WR01070)
|
|
102
102
|
- A. T. A. Wood and G. Chan (1994) Simulation of stationary gaussian processes in [0,1]^d. Journal of Computational and Graphical Statistics 3(4):409-432, [doi:10.2307/1390903](https://dx.doi.org/10.2307/1390903)
|
|
103
103
|
|
|
104
|
-
### Other references
|
|
104
|
+
### Other references
|
|
105
105
|
- C. Lantuéjoul (2002) Geostatistical Simulation, Models and Algorithms. Springer Verlag, Berlin, 256 p.
|
|
106
106
|
- P. Renard, D. Allard (2013), Connectivity metrics for subsurface flow and transport. Advances in Water Resources 51:168-196, `doi:10.1016/j.advwatres.2011.12.001 <https://doi.org/10.1016/j.advwatres.2011.12.001>`_
|
|
107
107
|
- J. Straubhaar, P. Renard (2024), Exploring substitution random functions composed of stationary multi-Gaussian processes. Stochastic Environmental Research and Risk Assessment, `doi:10.1007/s00477-024-02662-x <https://doi.org/10.1007/s00477-024-02662-x>`_
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: geone
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.18
|
|
4
4
|
Summary: Geostatistics tools and Multiple Point Statistics
|
|
5
5
|
Author-email: Julien Straubhaar <julien.straubhaar@unine.ch>, Philippe Renard <philippe.renard@unine.ch>
|
|
6
6
|
License:
|
|
@@ -74,12 +74,14 @@ Requires-Dist: numpy<2,>=1
|
|
|
74
74
|
Requires-Dist: pandas
|
|
75
75
|
Requires-Dist: pyvista
|
|
76
76
|
Requires-Dist: scipy
|
|
77
|
+
Dynamic: license
|
|
78
|
+
Dynamic: license-file
|
|
77
79
|
|
|
78
80
|
# GEONE
|
|
79
81
|
|
|
80
82
|
[](https://geone.readthedocs.io/en/latest/?badge=latest)
|
|
81
83
|
|
|
82
|
-
**Current version : 1.2.
|
|
84
|
+
**Current version : 1.2.18** <!-- Update manually here! see src/geone/_version.py -->
|
|
83
85
|
|
|
84
86
|
GEONE is a Python3 package providing a set of tools for geostatistical modeling, including:
|
|
85
87
|
|
|
@@ -111,7 +113,7 @@ GEONE is available:
|
|
|
111
113
|
|
|
112
114
|
### Installation from [PyPI](https://pypi.org/project/geone)
|
|
113
115
|
|
|
114
|
-
In a terminal type
|
|
116
|
+
In a terminal type
|
|
115
117
|
```
|
|
116
118
|
pip install geone
|
|
117
119
|
```
|
|
@@ -130,7 +132,7 @@ pip install .
|
|
|
130
132
|
|
|
131
133
|
Alternatively:
|
|
132
134
|
|
|
133
|
-
- Instead of `git clone ...`, you can download GEONE from the [Github repository](https://github.com/randlab/geone): click on the green button "code" and choose "Download ZIP".
|
|
135
|
+
- Instead of `git clone ...`, you can download GEONE from the [Github repository](https://github.com/randlab/geone): click on the green button "code" and choose "Download ZIP".
|
|
134
136
|
- Then, unzip the archive on your computer
|
|
135
137
|
- Finally, in a terminal, go into the unzipped directory, and type `pip install .`
|
|
136
138
|
|
|
@@ -154,7 +156,7 @@ The following python packages are used by GEONE (tested on python 3.11.5):
|
|
|
154
156
|
numpy version **less than 2.** is required
|
|
155
157
|
|
|
156
158
|
### Removing GEONE
|
|
157
|
-
In a terminal type
|
|
159
|
+
In a terminal type
|
|
158
160
|
|
|
159
161
|
`pip uninstall -y geone`
|
|
160
162
|
|
|
@@ -178,7 +180,7 @@ In a terminal type
|
|
|
178
180
|
- C. R. Dietrich and G. N. Newsam (1993) A fast and exact method for multidimensional gaussian stochastic simulations. Water Resources Research 29(8):2861-2869, [doi:10.1029/93WR01070](https://dx.doi.org/10.1029/93WR01070)
|
|
179
181
|
- A. T. A. Wood and G. Chan (1994) Simulation of stationary gaussian processes in [0,1]^d. Journal of Computational and Graphical Statistics 3(4):409-432, [doi:10.2307/1390903](https://dx.doi.org/10.2307/1390903)
|
|
180
182
|
|
|
181
|
-
### Other references
|
|
183
|
+
### Other references
|
|
182
184
|
- C. Lantuéjoul (2002) Geostatistical Simulation, Models and Algorithms. Springer Verlag, Berlin, 256 p.
|
|
183
185
|
- P. Renard, D. Allard (2013), Connectivity metrics for subsurface flow and transport. Advances in Water Resources 51:168-196, `doi:10.1016/j.advwatres.2011.12.001 <https://doi.org/10.1016/j.advwatres.2011.12.001>`_
|
|
184
186
|
- J. Straubhaar, P. Renard (2024), Exploring substitution random functions composed of stationary multi-Gaussian processes. Stochastic Environmental Research and Risk Assessment, `doi:10.1007/s00477-024-02662-x <https://doi.org/10.1007/s00477-024-02662-x>`_
|
|
@@ -58,6 +58,8 @@ class BlockData(object):
|
|
|
58
58
|
activatePropMax : sequence of floats of length `nblock`, optional
|
|
59
59
|
maximal proportion of informed nodes in the block, above which the block
|
|
60
60
|
data constraint is deactivated, for each block (used if `blockDataUsage=1`)
|
|
61
|
+
|
|
62
|
+
**Methods**
|
|
61
63
|
"""
|
|
62
64
|
def __init__(self,
|
|
63
65
|
blockDataUsage=0,
|
|
@@ -728,6 +728,8 @@ class CovModel1D(object):
|
|
|
728
728
|
('gaussian', {'w':10., 'r':100.0}), # elementary contribution
|
|
729
729
|
('nugget', {'w':0.5}) # elementary contribution
|
|
730
730
|
], name='gau+nug') # name (optional)
|
|
731
|
+
|
|
732
|
+
**Methods**
|
|
731
733
|
"""
|
|
732
734
|
#
|
|
733
735
|
# Methods
|
|
@@ -1434,6 +1436,8 @@ class CovModel2D(object):
|
|
|
1434
1436
|
('nugget', {'w':0.5}) # elementary contribution
|
|
1435
1437
|
], alpha=-30.0, # angle
|
|
1436
1438
|
name='') # name (optional)
|
|
1439
|
+
|
|
1440
|
+
**Methods**
|
|
1437
1441
|
"""
|
|
1438
1442
|
#
|
|
1439
1443
|
# The 2x2 matrix m for changing the coordinates system from Ox'y' to Oxy is:
|
|
@@ -2604,6 +2608,8 @@ class CovModel3D(object):
|
|
|
2604
2608
|
('nugget', {'w':0.5}) # elementary contribution
|
|
2605
2609
|
], alpha=-30.0, beta=-40.0, gamma=20.0, # angles
|
|
2606
2610
|
name='') # name (optional)
|
|
2611
|
+
|
|
2612
|
+
**Methods**
|
|
2607
2613
|
"""
|
|
2608
2614
|
#
|
|
2609
2615
|
# The 3x3 matrix m for changing the coordinates system from Ox'''y'''z'''
|
|
@@ -36,7 +36,7 @@ class SearchNeighborhoodParameters(object):
|
|
|
36
36
|
Class defining search neighborhood parameters (for deesse).
|
|
37
37
|
|
|
38
38
|
**Attributes**
|
|
39
|
-
|
|
39
|
+
|
|
40
40
|
radiusMode : str {'large_default', 'ti_range_default', 'ti_range', \
|
|
41
41
|
'ti_range_xy', 'ti_range_xz', 'ti_range_yz', 'ti_range_xyz', \
|
|
42
42
|
'manual'}, default: 'large_default'
|
|
@@ -135,7 +135,6 @@ class SearchNeighborhoodParameters(object):
|
|
|
135
135
|
power for computing weight according to distance
|
|
136
136
|
|
|
137
137
|
**Methods**
|
|
138
|
-
-----------
|
|
139
138
|
"""
|
|
140
139
|
def __init__(self,
|
|
141
140
|
radiusMode='large_default',
|
|
@@ -189,7 +188,7 @@ class SoftProbability(object):
|
|
|
189
188
|
Class defining probability constraints for one variable (for deesse).
|
|
190
189
|
|
|
191
190
|
**Attributes**
|
|
192
|
-
|
|
191
|
+
|
|
193
192
|
probabilityConstraintUsage : int, default: 0
|
|
194
193
|
defines the usage of probability constraints:
|
|
195
194
|
|
|
@@ -293,7 +292,6 @@ class SoftProbability(object):
|
|
|
293
292
|
`probabilityConstraintThresholdType=1`
|
|
294
293
|
|
|
295
294
|
**Methods**
|
|
296
|
-
-----------
|
|
297
295
|
"""
|
|
298
296
|
def __init__(self,
|
|
299
297
|
probabilityConstraintUsage=0,
|
|
@@ -433,7 +431,7 @@ class Connectivity(object):
|
|
|
433
431
|
Class defining connectivity constraints for one variable (for deesse).
|
|
434
432
|
|
|
435
433
|
**Attributes**
|
|
436
|
-
|
|
434
|
+
|
|
437
435
|
connectivityConstraintUsage : int, default: 0
|
|
438
436
|
defines the usage of connectivity constraints:
|
|
439
437
|
|
|
@@ -512,7 +510,6 @@ class Connectivity(object):
|
|
|
512
510
|
used if `connectivityConstraintUsage=3`
|
|
513
511
|
|
|
514
512
|
**Methods**
|
|
515
|
-
-----------
|
|
516
513
|
"""
|
|
517
514
|
def __init__(self,
|
|
518
515
|
connectivityConstraintUsage=0,
|
|
@@ -604,7 +601,7 @@ class PyramidGeneralParameters(object):
|
|
|
604
601
|
Class defining "pyramid general parameters" (for all variables) (for deesse).
|
|
605
602
|
|
|
606
603
|
**Attributes**
|
|
607
|
-
|
|
604
|
+
|
|
608
605
|
npyramidLevel : int, default: 0
|
|
609
606
|
number of pyramid level(s) (in addition to original simulation grid),
|
|
610
607
|
integer greater than or equal to zero; if positive, pyramid is used and
|
|
@@ -703,7 +700,6 @@ class PyramidGeneralParameters(object):
|
|
|
703
700
|
for the j-th pyramid level
|
|
704
701
|
|
|
705
702
|
**Methods**
|
|
706
|
-
-----------
|
|
707
703
|
"""
|
|
708
704
|
def __init__(self,
|
|
709
705
|
npyramidLevel=0,
|
|
@@ -863,7 +859,7 @@ class PyramidParameters(object):
|
|
|
863
859
|
Class defining "pyramid parameters" for one variable (for deesse).
|
|
864
860
|
|
|
865
861
|
**Attributes**
|
|
866
|
-
|
|
862
|
+
|
|
867
863
|
nlevel : int, default: 0
|
|
868
864
|
number of pyramid level(s) (in addition to original simulation grid)
|
|
869
865
|
|
|
@@ -927,7 +923,6 @@ class PyramidParameters(object):
|
|
|
927
923
|
during the simulation in every level)
|
|
928
924
|
|
|
929
925
|
**Methods**
|
|
930
|
-
-----------
|
|
931
926
|
"""
|
|
932
927
|
def __init__(self,
|
|
933
928
|
nlevel=0,
|
|
@@ -991,7 +986,7 @@ class DeesseInput(object):
|
|
|
991
986
|
Class defining main input parameters for deesse.
|
|
992
987
|
|
|
993
988
|
**Attributes**
|
|
994
|
-
|
|
989
|
+
|
|
995
990
|
simName : str, default: 'deesse_py'
|
|
996
991
|
simulation name (useless)
|
|
997
992
|
|
|
@@ -1466,7 +1461,6 @@ class DeesseInput(object):
|
|
|
1466
1461
|
[<n> is written on 5 digits, with leading zeros]
|
|
1467
1462
|
|
|
1468
1463
|
**Methods**
|
|
1469
|
-
-----------
|
|
1470
1464
|
"""
|
|
1471
1465
|
def __init__(self,
|
|
1472
1466
|
simName='deesse_py',
|
|
@@ -6396,7 +6390,7 @@ class DeesseXInputSectionPath(object):
|
|
|
6396
6390
|
Class defining main input parameters for cross-simulation (deesseX).
|
|
6397
6391
|
|
|
6398
6392
|
**Attributes**
|
|
6399
|
-
|
|
6393
|
+
|
|
6400
6394
|
sectionMode: str {'section_xy_xz_yz', \
|
|
6401
6395
|
'section_xy_yz_xz', \
|
|
6402
6396
|
'section_xz_xy_yz', \
|
|
@@ -6575,7 +6569,6 @@ class DeesseXInputSectionPath(object):
|
|
|
6575
6569
|
simulation grid along x, y, z axis respectively
|
|
6576
6570
|
|
|
6577
6571
|
**Methods**
|
|
6578
|
-
-----------
|
|
6579
6572
|
"""
|
|
6580
6573
|
def __init__(self,
|
|
6581
6574
|
sectionMode='section_xz_yz',
|
|
@@ -6725,7 +6718,7 @@ class DeesseXInputSection(object):
|
|
|
6725
6718
|
Class input parameters for one section type (deesseX).
|
|
6726
6719
|
|
|
6727
6720
|
**Attributes**
|
|
6728
|
-
|
|
6721
|
+
|
|
6729
6722
|
nx : int, default: 0
|
|
6730
6723
|
number of cells along x axis in the entire simulation grid (SG);
|
|
6731
6724
|
should be consistent with the "parent" class :class:`DeesseXInput`
|
|
@@ -6876,7 +6869,6 @@ class DeesseXInputSection(object):
|
|
|
6876
6869
|
as in :class:`DeesseInput`
|
|
6877
6870
|
|
|
6878
6871
|
**Methods**
|
|
6879
|
-
-----------
|
|
6880
6872
|
"""
|
|
6881
6873
|
def __init__(self,
|
|
6882
6874
|
nx=0, ny=0, nz=0,
|
|
@@ -7526,7 +7518,7 @@ class DeesseXInput(object):
|
|
|
7526
7518
|
Class defining main input parameters for deesseX (cross-simulation/X-simulation).
|
|
7527
7519
|
|
|
7528
7520
|
**Attributes**
|
|
7529
|
-
|
|
7521
|
+
|
|
7530
7522
|
simName : str, default: 'deesseX_py'
|
|
7531
7523
|
simulation name (useless)
|
|
7532
7524
|
|
|
@@ -7659,7 +7651,6 @@ class DeesseXInput(object):
|
|
|
7659
7651
|
[<n> is written on 5 digits, with leading zeros]
|
|
7660
7652
|
|
|
7661
7653
|
**Methods**
|
|
7662
|
-
-----------
|
|
7663
7654
|
"""
|
|
7664
7655
|
def __init__(self,
|
|
7665
7656
|
simName='deesseX_py',
|
|
@@ -82,6 +82,8 @@ class Img(object):
|
|
|
82
82
|
|
|
83
83
|
name : str
|
|
84
84
|
name of the image
|
|
85
|
+
|
|
86
|
+
**Methods**
|
|
85
87
|
"""
|
|
86
88
|
#
|
|
87
89
|
# Methods
|
|
@@ -398,19 +400,19 @@ class Img(object):
|
|
|
398
400
|
# ------------------------------------------------------------------------
|
|
399
401
|
|
|
400
402
|
# ------------------------------------------------------------------------
|
|
401
|
-
def set_spacing(self, sx, sy, sz):
|
|
403
|
+
def set_spacing(self, sx=1.0, sy=1.0, sz=1.0):
|
|
402
404
|
"""
|
|
403
405
|
Sets spacing, i.e. cell size along each axis.
|
|
404
406
|
|
|
405
407
|
Parameters
|
|
406
408
|
----------
|
|
407
|
-
sx : float
|
|
409
|
+
sx : float, default: 1.0
|
|
408
410
|
cell size along x axis
|
|
409
411
|
|
|
410
|
-
sy : float
|
|
412
|
+
sy : float, default: 1.0
|
|
411
413
|
cell size along y axis
|
|
412
414
|
|
|
413
|
-
sz : float
|
|
415
|
+
sz : float, default: 1.0
|
|
414
416
|
cell size along z axis
|
|
415
417
|
"""
|
|
416
418
|
# fname = 'set_spacing'
|
|
@@ -421,7 +423,7 @@ class Img(object):
|
|
|
421
423
|
# ------------------------------------------------------------------------
|
|
422
424
|
|
|
423
425
|
# ------------------------------------------------------------------------
|
|
424
|
-
def set_origin(self, ox, oy, oz):
|
|
426
|
+
def set_origin(self, ox=0.0, oy=0.0, oz=0.0):
|
|
425
427
|
"""
|
|
426
428
|
Sets grid origin (bottom-lower-left corner).
|
|
427
429
|
|
|
@@ -446,9 +448,9 @@ class Img(object):
|
|
|
446
448
|
# ------------------------------------------------------------------------
|
|
447
449
|
def set_grid(
|
|
448
450
|
self,
|
|
449
|
-
nx,
|
|
450
|
-
sx, sy, sz,
|
|
451
|
-
ox, oy, oz,
|
|
451
|
+
nx=1, ny=1, nz=1,
|
|
452
|
+
sx=1.0, sy=1.0, sz=1.0,
|
|
453
|
+
ox=0.0, oy=0.0, oz=0.0,
|
|
452
454
|
newval=np.nan):
|
|
453
455
|
"""
|
|
454
456
|
Sets grid geometry (dimension, cell size, and origin).
|
|
@@ -1456,6 +1458,8 @@ class PointSet(object):
|
|
|
1456
1458
|
|
|
1457
1459
|
name : str
|
|
1458
1460
|
name of the point set
|
|
1461
|
+
|
|
1462
|
+
**Methods**
|
|
1459
1463
|
"""
|
|
1460
1464
|
#
|
|
1461
1465
|
# Methods
|
|
@@ -2129,14 +2133,14 @@ class Img_interp_func(object):
|
|
|
2129
2133
|
iz : int or `None` (default)
|
|
2130
2134
|
same as `ix`, but for z axis
|
|
2131
2135
|
|
|
2132
|
-
angle_var: bool, default: False
|
|
2136
|
+
angle_var : bool, default: False
|
|
2133
2137
|
- if `True`: variable to be interpolated are considered as angles, and the \
|
|
2134
2138
|
interpolation is done by first interpolating the cosine and the sine of \
|
|
2135
2139
|
the angle values and then by retrieving the corresponding angle (by \
|
|
2136
2140
|
using the function `numpy.arctan2`)
|
|
2137
2141
|
- if `False`: values are interpolated directly
|
|
2138
2142
|
|
|
2139
|
-
angle_deg: bool, default: True
|
|
2143
|
+
angle_deg : bool, default: True
|
|
2140
2144
|
used if `angle_var=True`:
|
|
2141
2145
|
|
|
2142
2146
|
- if `True`: the variable values are angles in degrees
|
|
@@ -2184,6 +2188,8 @@ class Img_interp_func(object):
|
|
|
2184
2188
|
>>> method='linear', bounds_error=False, fill_value=np.nan)
|
|
2185
2189
|
>>> v2 = interp2(points) # gives same values except for points beyond
|
|
2186
2190
|
>>> # the domain of the image grid
|
|
2191
|
+
|
|
2192
|
+
**Methods**
|
|
2187
2193
|
"""
|
|
2188
2194
|
def __init__(self,
|
|
2189
2195
|
im,
|
|
@@ -928,7 +928,10 @@ def drawImage2Drgb(im, nancol=(1.0, 0.0, 0.0)):
|
|
|
928
928
|
ind_isnan = np.any(np.isnan(vv), axis=1)
|
|
929
929
|
vv[ind_isnan, :] = nancolf
|
|
930
930
|
|
|
931
|
-
|
|
931
|
+
min0, max0 = im.ox, im.xmax()
|
|
932
|
+
min1, max1 = im.oy, im.ymax()
|
|
933
|
+
|
|
934
|
+
plt.imshow(vv.reshape(im.ny, im.nx, -1), origin='lower', extent=[min0, max0, min1, max1])
|
|
932
935
|
# ----------------------------------------------------------------------------
|
|
933
936
|
|
|
934
937
|
# ----------------------------------------------------------------------------
|
|
@@ -165,7 +165,7 @@ def add_path_by_drawing(
|
|
|
165
165
|
# -----------------------------------------------------------------------------
|
|
166
166
|
|
|
167
167
|
# -----------------------------------------------------------------------------
|
|
168
|
-
def is_in_polygon(x, vertices, wrap=None, **kwargs):
|
|
168
|
+
def is_in_polygon(x, vertices, wrap=None, return_sum_of_angles=False, **kwargs):
|
|
169
169
|
"""
|
|
170
170
|
Checks if point(s) is (are) in a polygon given by its vertices forming a close line.
|
|
171
171
|
|
|
@@ -175,6 +175,10 @@ def is_in_polygon(x, vertices, wrap=None, **kwargs):
|
|
|
175
175
|
and first one). Then, the point is in the polygon if and only if this sum
|
|
176
176
|
is equal to +/- 2 pi.
|
|
177
177
|
|
|
178
|
+
Note that if the sum of angles is +2 pi (resp. -2 pi), then the vertices form
|
|
179
|
+
a close line counterclockwise (resp. clockwise); this can be checked by
|
|
180
|
+
specifying a point `x` in the polygon and `return_sum_of_angles=True`.
|
|
181
|
+
|
|
178
182
|
Parameters
|
|
179
183
|
----------
|
|
180
184
|
x : 2D array-like or 1D array-like
|
|
@@ -195,6 +199,9 @@ def is_in_polygon(x, vertices, wrap=None, **kwargs):
|
|
|
195
199
|
|
|
196
200
|
by default (`None`): `wrap` is automatically computed
|
|
197
201
|
|
|
202
|
+
return_sum_of_angles : bool, default: False
|
|
203
|
+
if `True`, the sum of angles (computed by the method) is returned
|
|
204
|
+
|
|
198
205
|
kwargs :
|
|
199
206
|
keyword arguments passed to function `numpy.isclose`
|
|
200
207
|
|
|
@@ -205,6 +212,12 @@ def is_in_polygon(x, vertices, wrap=None, **kwargs):
|
|
|
205
212
|
the polygon;
|
|
206
213
|
note: if `x` is of shape (m, 2), then `out` is a 1D array of shape (m, ),
|
|
207
214
|
and if `x` is of shape (2, ) (one point), `out` is bool
|
|
215
|
+
|
|
216
|
+
sum_of_angles : 1D array of floats, or float
|
|
217
|
+
returned if `return_sum_of_angles=True`; for each point in `x`, the sum
|
|
218
|
+
of angles computed by the method is returned (`nan` if the sum is not
|
|
219
|
+
computed);
|
|
220
|
+
note: `sum_of_angles` is an array of same shape as `out` or a float
|
|
208
221
|
"""
|
|
209
222
|
# fname = 'is_in_polygon'
|
|
210
223
|
|
|
@@ -221,6 +234,8 @@ def is_in_polygon(x, vertices, wrap=None, **kwargs):
|
|
|
221
234
|
# Initialization
|
|
222
235
|
xx = np.atleast_2d(x)
|
|
223
236
|
res = np.zeros(xx.shape[0], dtype='bool')
|
|
237
|
+
if return_sum_of_angles:
|
|
238
|
+
res_sum = np.full((xx.shape[0],), np.nan)
|
|
224
239
|
|
|
225
240
|
xmin, ymin = vertices.min(axis=0)
|
|
226
241
|
xmax, ymax = vertices.max(axis=0)
|
|
@@ -247,18 +262,25 @@ def is_in_polygon(x, vertices, wrap=None, **kwargs):
|
|
|
247
262
|
c = b - a
|
|
248
263
|
c_norm2 = (c**2).sum(axis=1)
|
|
249
264
|
sign = 2*(a[:,0]*b[:,1] - a[:,1]*b[:,0] > 0) - 1
|
|
250
|
-
sum_angles = np.sum(sign*np.arccos(np.minimum(1.0, np.maximum(-1.0, (a_norm2 + b_norm2- c_norm2)/(2.0*ab_norm)))))
|
|
265
|
+
sum_angles = np.sum(sign*np.arccos(np.minimum(1.0, np.maximum(-1.0, (a_norm2 + b_norm2 - c_norm2)/(2.0*ab_norm)))))
|
|
251
266
|
|
|
252
267
|
res[j] = np.isclose(np.abs(sum_angles), 2*np.pi)
|
|
268
|
+
if return_sum_of_angles:
|
|
269
|
+
res_sum[j] = sum_angles
|
|
253
270
|
|
|
254
271
|
if np.asarray(x).ndim == 1:
|
|
255
272
|
res = res[0]
|
|
273
|
+
if return_sum_of_angles:
|
|
274
|
+
res_sum = res_sum[0]
|
|
275
|
+
|
|
276
|
+
if return_sum_of_angles:
|
|
277
|
+
return res, res_sum
|
|
256
278
|
|
|
257
279
|
return res
|
|
258
280
|
# -----------------------------------------------------------------------------
|
|
259
281
|
|
|
260
282
|
# -----------------------------------------------------------------------------
|
|
261
|
-
def is_in_polygon_mp(x, vertices, wrap=None, nproc=-1, **kwargs):
|
|
283
|
+
def is_in_polygon_mp(x, vertices, wrap=None, return_sum_of_angles=False, nproc=-1, **kwargs):
|
|
262
284
|
"""
|
|
263
285
|
Computes the same as the function :func:`tools.is_in_polygon`, using multiprocessing.
|
|
264
286
|
|
|
@@ -287,6 +309,9 @@ def is_in_polygon_mp(x, vertices, wrap=None, nproc=-1, **kwargs):
|
|
|
287
309
|
# Set wrap key in keywords arguments
|
|
288
310
|
kwargs['wrap'] = True
|
|
289
311
|
|
|
312
|
+
# Set return_sum_of_angles key in keywords arguments
|
|
313
|
+
kwargs['return_sum_of_angles'] = return_sum_of_angles
|
|
314
|
+
|
|
290
315
|
# Initialization
|
|
291
316
|
xx = np.atleast_2d(x)
|
|
292
317
|
|
|
@@ -312,10 +337,25 @@ def is_in_polygon_mp(x, vertices, wrap=None, nproc=-1, **kwargs):
|
|
|
312
337
|
pool.join() # then, wait for the worker processes to exit.
|
|
313
338
|
|
|
314
339
|
# Get result from each process
|
|
315
|
-
|
|
340
|
+
if return_sum_of_angles:
|
|
341
|
+
res = []
|
|
342
|
+
res_sum = []
|
|
343
|
+
for w in out_pool:
|
|
344
|
+
r, s = w.get()
|
|
345
|
+
res.append(r)
|
|
346
|
+
res_sum.append(s)
|
|
347
|
+
res = np.hstack(res)
|
|
348
|
+
res_sum = np.hstack(res_sum)
|
|
349
|
+
else:
|
|
350
|
+
res = np.hstack([w.get() for w in out_pool])
|
|
316
351
|
|
|
317
352
|
if np.asarray(x).ndim == 1:
|
|
318
353
|
res = res[0]
|
|
354
|
+
if return_sum_of_angles:
|
|
355
|
+
res_sum = res_sum[0]
|
|
356
|
+
|
|
357
|
+
if return_sum_of_angles:
|
|
358
|
+
return res, res_sum
|
|
319
359
|
|
|
320
360
|
return res
|
|
321
361
|
# -----------------------------------------------------------------------------
|
|
@@ -363,20 +403,20 @@ def rasterize_polygon_2d(
|
|
|
363
403
|
nx : int, optional
|
|
364
404
|
number of grid cells along x axis; see above for possible inputs
|
|
365
405
|
|
|
366
|
-
ny : int
|
|
406
|
+
ny : int, optional
|
|
367
407
|
number of grid cells along y axis; see above for possible inputs
|
|
368
408
|
|
|
369
|
-
sx : float
|
|
409
|
+
sx : float, optional
|
|
370
410
|
cell size along x axis; see above for possible inputs
|
|
371
411
|
|
|
372
|
-
sy : float
|
|
412
|
+
sy : float, optional
|
|
373
413
|
cell size along y axis; see above for possible inputs
|
|
374
414
|
|
|
375
|
-
ox : float
|
|
415
|
+
ox : float, optional
|
|
376
416
|
origin of the grid along x axis (x coordinate of cell border);
|
|
377
417
|
see above for possible
|
|
378
418
|
|
|
379
|
-
oy : float
|
|
419
|
+
oy : float, optional
|
|
380
420
|
origin of the grid along y axis (y coordinate of cell border);
|
|
381
421
|
see above for possible
|
|
382
422
|
|
|
@@ -559,6 +599,7 @@ def curv_coord_2d_from_center_line(
|
|
|
559
599
|
-------
|
|
560
600
|
u : 2D array or 1D array (same shape as `x`)
|
|
561
601
|
coordinates in curvilinear system of the input point(s) `x` (see above)
|
|
602
|
+
|
|
562
603
|
x_path : list of 2D arrays (or 2D array), optional
|
|
563
604
|
path(s) from the initial point(s) to the point(s) I of the centerline
|
|
564
605
|
(descending the gradient of the distance map):
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|