LoopStructural 1.0.4__zip → 1.0.71.dev0__zip
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.
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/__init__.py +12 -7
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/__pycache__/__init__.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/datasets/__pycache__/{__init__.cpython-37.pyc → __init__.cpython-36.pyc} +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/datasets/__pycache__/{_base.cpython-37.pyc → _base.cpython-36.pyc} +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/__init__.py +3 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/__pycache__/__init__.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/__pycache__/base_structured_3d_support.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/__pycache__/discrete_fold_interpolator.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/__pycache__/discrete_interpolator.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/__pycache__/finite_difference_interpolator.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/__pycache__/geological_interpolator.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/__pycache__/operator.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/__pycache__/piecewiselinear_interpolator.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/__pycache__/structured_grid.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/__pycache__/structured_tetra.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/__pycache__/surfe_wrapper.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/base_structured_3d_support.py +101 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/cython/__pycache__/__init__.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/cython/dsi_helper.c +3899 -2455
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/cython/dsi_helper.cp36-win_amd64.pyd +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/discrete_fold_interpolator.py +53 -22
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/discrete_interpolator.py +61 -28
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/finite_difference_interpolator.py +68 -11
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/geological_interpolator.py +8 -1
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/operator.py +2 -1
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/piecewiselinear_interpolator.py +97 -8
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/structured_grid.py +25 -69
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/structured_tetra.py +86 -43
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/surfe_wrapper.py +4 -3
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/__pycache__/{__init__.cpython-37.pyc → __init__.cpython-36.pyc} +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/core/__pycache__/__init__.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/core/__pycache__/geological_model.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/core/__pycache__/geological_model_graph.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/core/__pycache__/stratigraphic_column.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/core/geological_model.py +303 -150
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/core/geological_model_graph.py +881 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/core/stratigraphic_column.py +5 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fault/__init__.py +1 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fault/__pycache__/__init__.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fault/__pycache__/fault_builder.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fault/__pycache__/fault_function.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fault/__pycache__/fault_function_feature.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fault/__pycache__/fault_segment.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fault/fault_builder.py +127 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fault/fault_function.py +2 -1
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fault/fault_function_feature.py +2 -1
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fault/fault_segment.py +30 -3
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/__init__.py +1 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/__pycache__/__init__.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/__pycache__/cross_product_geological_feature.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/__pycache__/geological_feature.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/__pycache__/geological_feature_builder.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/__pycache__/lambda_geological_feature.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/__pycache__/{region_feature.cpython-37.pyc → region_feature.cpython-36.pyc} +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/__pycache__/structural_frame.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/__pycache__/structural_frame_builder.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/__pycache__/unconformity_feature.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/cross_product_geological_feature.py +18 -5
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/geological_feature.py +10 -44
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/geological_feature_builder.py +127 -43
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/lambda_geological_feature.py +31 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/structural_frame.py +28 -11
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/structural_frame_builder.py +25 -15
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/unconformity_feature.py +6 -1
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fold/__pycache__/{__init__.cpython-37.pyc → __init__.cpython-36.pyc} +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fold/__pycache__/fold.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fold/__pycache__/fold_rotation_angle.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fold/__pycache__/fold_rotation_angle_feature.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fold/__pycache__/foldframe.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fold/__pycache__/svariogram.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fold/fold.py +13 -5
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fold/fold_rotation_angle.py +5 -4
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fold/fold_rotation_angle_feature.py +2 -1
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fold/foldframe.py +6 -5
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fold/svariogram.py +2 -1
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/utils/__init__.py +5 -1
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/utils/__pycache__/__init__.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/utils/__pycache__/bounding_box.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/utils/__pycache__/exceptions.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/utils/__pycache__/helper.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/utils/__pycache__/logging.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/utils/__pycache__/map2loop.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/utils/__pycache__/regions.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/utils/__pycache__/utils.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/utils/bounding_box.py +21 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/utils/exceptions.py +2 -1
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/utils/helper.py +5 -1
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/utils/logging.py +60 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/utils/map2loop.py +47 -19
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/utils/regions.py +11 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/utils/utils.py +2 -53
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/visualisation/__pycache__/{__init__.cpython-37.pyc → __init__.cpython-36.pyc} +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/visualisation/__pycache__/map_viewer.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/visualisation/__pycache__/model_plotter.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/visualisation/__pycache__/model_visualisation.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/visualisation/__pycache__/rotation_angle_plotter.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/visualisation/__pycache__/{sphinx_scraper.cpython-37.pyc → sphinx_scraper.cpython-36.pyc} +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/visualisation/__pycache__/stratigraphic_column.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/visualisation/map_viewer.py +17 -2
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/visualisation/model_plotter.py +2 -1
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/visualisation/model_visualisation.py +152 -84
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/visualisation/rotation_angle_plotter.py +2 -1
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/visualisation/stratigraphic_column.py +60 -0
- Miniconda/envs/loop/Lib/site-packages/{LoopStructural-1.0.4-py3.7.egg-info → LoopStructural-1.0.71.dev0-py3.6.egg-info}/PKG-INFO +1 -1
- Miniconda/envs/loop/Lib/site-packages/{LoopStructural-1.0.4-py3.7.egg-info → LoopStructural-1.0.71.dev0-py3.6.egg-info}/SOURCES.txt +10 -5
- Miniconda/envs/loop/Lib/site-packages/{LoopStructural-1.0.4-py3.7.egg-info → LoopStructural-1.0.71.dev0-py3.6.egg-info}/requires.txt +1 -1
- Miniconda/envs/loop/Lib/site-packages/tests/__pycache__/__init__.cpython-36.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/__pycache__/__init__.cpython-37.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/__pycache__/__init__.cpython-37.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/__pycache__/discrete_fold_interpolator.cpython-37.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/__pycache__/discrete_interpolator.cpython-37.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/__pycache__/finite_difference_interpolator.cpython-37.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/__pycache__/geological_interpolator.cpython-37.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/__pycache__/operator.cpython-37.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/__pycache__/piecewiselinear_interpolator.cpython-37.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/__pycache__/structured_grid.cpython-37.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/__pycache__/structured_tetra.cpython-37.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/__pycache__/surfe_wrapper.cpython-37.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/cython/__pycache__/__init__.cpython-37.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/cython/dsi_helper.cp37-win_amd64.pyd +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/core/__pycache__/__init__.cpython-37.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/core/__pycache__/geological_model.cpython-37.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fault/__pycache__/__init__.cpython-37.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fault/__pycache__/fault_function.cpython-37.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fault/__pycache__/fault_function_feature.cpython-37.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fault/__pycache__/fault_segment.cpython-37.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/__pycache__/__init__.cpython-37.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/__pycache__/cross_product_geological_feature.cpython-37.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/__pycache__/geological_feature.cpython-37.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/__pycache__/geological_feature_builder.cpython-37.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/__pycache__/structural_frame.cpython-37.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/__pycache__/structural_frame_builder.cpython-37.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/__pycache__/unconformity_feature.cpython-37.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fold/__pycache__/fold.cpython-37.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fold/__pycache__/fold_rotation_angle.cpython-37.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fold/__pycache__/fold_rotation_angle_feature.cpython-37.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fold/__pycache__/foldframe.cpython-37.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fold/__pycache__/svariogram.cpython-37.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/utils/__pycache__/__init__.cpython-37.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/utils/__pycache__/exceptions.cpython-37.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/utils/__pycache__/helper.cpython-37.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/utils/__pycache__/map2loop.cpython-37.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/utils/__pycache__/utils.cpython-37.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/visualisation/__pycache__/map_viewer.cpython-37.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/visualisation/__pycache__/model_plotter.cpython-37.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/visualisation/__pycache__/model_visualisation.cpython-37.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/LoopStructural/visualisation/__pycache__/rotation_angle_plotter.cpython-37.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/tests/__pycache__/__init__.cpython-37.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/tests/__pycache__/test_faults.cpython-37.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/tests/__pycache__/test_fold.cpython-37.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/tests/__pycache__/test_interpolator.cpython-37.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/tests/__pycache__/test_refolded.cpython-37.pyc +0 -0
- Miniconda/envs/loop/Lib/site-packages/tests/test_faults.py +0 -17
- Miniconda/envs/loop/Lib/site-packages/tests/test_fold.py +0 -57
- Miniconda/envs/loop/Lib/site-packages/tests/test_interpolator.py +0 -88
- Miniconda/envs/loop/Lib/site-packages/tests/test_refolded.py +0 -22
- /Miniconda/envs/loop/Lib/site-packages/{LoopStructural-1.0.4-py3.7.egg-info → LoopStructural-1.0.71.dev0-py3.6.egg-info}/dependency_links.txt +0 -0
- /Miniconda/envs/loop/Lib/site-packages/{LoopStructural-1.0.4-py3.7.egg-info → LoopStructural-1.0.71.dev0-py3.6.egg-info}/top_level.txt +0 -0
|
Binary file
|
Miniconda/envs/loop/Lib/site-packages/LoopStructural/utils/__pycache__/map2loop.cpython-36.pyc
ADDED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# class BoundingBox:
|
|
2
|
+
# def __init__(self,origin,maximum):
|
|
3
|
+
# self.bb = np.array([origin,maximum])
|
|
4
|
+
# self.maximum = maximum
|
|
5
|
+
# self.name_map = {'xmin':(0,0),'ymin':(0,1),'zmin':(0,2),'xmax':(1,0),'ymax':(1,1),'zmax':(1,2)
|
|
6
|
+
# 'lower':(0,2),'upper':(1,2),
|
|
7
|
+
# 'minx':(0,0),'miny':(0,1),'minz':(0,2),'maxx':(1,0),'maxy':(1,1),'maxz':(1,2)}
|
|
8
|
+
# def get_value(self,name):
|
|
9
|
+
# ix,iy = self.name_map.get(name,(-1,-1))
|
|
10
|
+
|
|
11
|
+
# return self.bb[ix,]
|
|
12
|
+
|
|
13
|
+
# def is_inside(self,xyz):
|
|
14
|
+
# inside = np.zeros(xy.shape[0],dtype=bool)
|
|
15
|
+
# inside = np.logical_and(inside,xyz[:,0]>self.bb[0,0])
|
|
16
|
+
# inside = np.logical_and(inside,xyz[:,0]<self.bb[1,0])
|
|
17
|
+
# inside = np.logical_and(inside,xyz[:,1]>self.bb[0,1])
|
|
18
|
+
# inside = np.logical_and(inside,xyz[:,1]<self.bb[1,1])
|
|
19
|
+
# inside = np.logical_and(inside,xyz[:,2]>self.bb[0,2])
|
|
20
|
+
# inside = np.logical_and(inside,xyz[:,2]<self.bb[1,2])
|
|
21
|
+
# return inside
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import logging
|
|
2
2
|
|
|
3
3
|
import numpy as np
|
|
4
|
+
import pandas as pd
|
|
4
5
|
from sklearn.decomposition import PCA
|
|
5
6
|
|
|
6
|
-
|
|
7
|
+
from LoopStructural.utils import getLogger
|
|
8
|
+
logger = getLogger(__name__)
|
|
7
9
|
|
|
8
10
|
|
|
9
11
|
def get_data_axis_aligned_bounding_box(xyz, buffer):
|
|
@@ -376,3 +378,5 @@ def feature_name():
|
|
|
376
378
|
def all_heading():
|
|
377
379
|
return xyz_names() + normal_vec_names() + tangent_vec_names() + \
|
|
378
380
|
gradient_vec_names() + weight_name() + val_name() + coord_name() + feature_name() + interface_name()
|
|
381
|
+
def empty_dataframe():
|
|
382
|
+
empty_data_frame =pd.DataFrame(columns=[all_heading()])
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
import LoopStructural
|
|
3
|
+
|
|
4
|
+
def get_levels():
|
|
5
|
+
"""dict for converting to logger levels from string
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
Returns
|
|
9
|
+
-------
|
|
10
|
+
dict
|
|
11
|
+
contains all strings with corresponding logging levels.
|
|
12
|
+
"""
|
|
13
|
+
return {'info':logging.INFO,'warning':logging.WARNING,'error':logging.ERROR,'debug':logging.DEBUG}
|
|
14
|
+
|
|
15
|
+
def getLogger(name):
|
|
16
|
+
logger = logging.getLogger(name)
|
|
17
|
+
logger.addHandler(LoopStructural.ch)
|
|
18
|
+
LoopStructural.loggers[name] = logger
|
|
19
|
+
return logger
|
|
20
|
+
|
|
21
|
+
def log_to_file(filename,level='info'):
|
|
22
|
+
"""Set the logging parameters for log file
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
Parameters
|
|
26
|
+
----------
|
|
27
|
+
filename : string
|
|
28
|
+
name of file or path to file
|
|
29
|
+
level : str, optional
|
|
30
|
+
'info', 'warning', 'error', 'debug' mapped to logging levels, by default 'info'
|
|
31
|
+
"""
|
|
32
|
+
levels = get_levels()
|
|
33
|
+
level = levels.get(level,logging.WARNING)
|
|
34
|
+
fh = logging.FileHandler(filename)
|
|
35
|
+
fh.setFormatter(LoopStructural.formatter)
|
|
36
|
+
fh.setLevel(level)
|
|
37
|
+
for logger in LoopStructural.loggers.values():
|
|
38
|
+
for hdlr in logger.handlers[:]: # remove the existing file handlers
|
|
39
|
+
if isinstance(hdlr,logging.FileHandler): #fixed two typos here
|
|
40
|
+
logger.removeHandler(hdlr)
|
|
41
|
+
logger.addHandler(fh)
|
|
42
|
+
logger.setLevel(level)
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def log_to_console(level='warning'):
|
|
46
|
+
"""Set the level of logging to the console
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
Parameters
|
|
50
|
+
----------
|
|
51
|
+
level : str, optional
|
|
52
|
+
'info', 'warning', 'error', 'debug' mapped to logging levels, by default 'info'
|
|
53
|
+
"""
|
|
54
|
+
levels = get_levels()
|
|
55
|
+
level = levels.get(level,logging.WARNING)
|
|
56
|
+
for logger in LoopStructural.loggers.values():
|
|
57
|
+
for hdlr in logger.handlers:
|
|
58
|
+
# both stream and file are base stream, so check if not a filehandler
|
|
59
|
+
if not isinstance(hdlr,logging.FileHandler):
|
|
60
|
+
hdlr.setLevel(level)
|
|
@@ -3,7 +3,8 @@ import numpy as np
|
|
|
3
3
|
import os
|
|
4
4
|
import logging
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
from LoopStructural.utils import getLogger
|
|
7
|
+
logger = getLogger(__name__)
|
|
7
8
|
|
|
8
9
|
def process_map2loop(m2l_directory, flags={}):
|
|
9
10
|
"""
|
|
@@ -92,7 +93,10 @@ def process_map2loop(m2l_directory, flags={}):
|
|
|
92
93
|
contact_orientations['gy'] = np.nan
|
|
93
94
|
contact_orientations['gz'] = np.nan
|
|
94
95
|
contact_orientations[['gx', 'gy', 'gz']] = strike_dip_vector(contact_orientations['strike'],
|
|
95
|
-
contact_orientations['dip'])*max_thickness
|
|
96
|
+
contact_orientations['dip'])*max_thickness
|
|
97
|
+
if np.sum(contact_orientations['polarity']==0) >0 and np.sum(contact_orientations['polarity']==-1)==0:
|
|
98
|
+
# contact_orientations['polarity']+=1
|
|
99
|
+
contact_orientations.loc[contact_orientations['polarity']==0]=-1
|
|
96
100
|
if not gradient:
|
|
97
101
|
from LoopStructural.utils.helper import strike_dip_vector
|
|
98
102
|
contact_orientations['strike'] = contact_orientations['azimuth'] - 90
|
|
@@ -142,10 +146,18 @@ def process_map2loop(m2l_directory, flags={}):
|
|
|
142
146
|
group_name = None
|
|
143
147
|
except:
|
|
144
148
|
print('Couldnt process {}'.format(g))
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
+
#whether to use thickness or interface
|
|
150
|
+
use_thickness = flags.get('use_thickness',True)
|
|
151
|
+
if use_thickness:
|
|
152
|
+
contacts['val'] = np.nan
|
|
153
|
+
for o in strat_val:
|
|
154
|
+
contacts.loc[contacts['formation'] == o, 'val'] = strat_val[o]
|
|
155
|
+
if use_thickness == False:
|
|
156
|
+
contacts['interface'] = np.nan
|
|
157
|
+
interface_val = 0
|
|
158
|
+
for u in contacts['formation'].unique():
|
|
159
|
+
contacts.loc[contacts['formation'] == u,'interface'] = interface_val
|
|
160
|
+
interface_val+=1
|
|
149
161
|
tangents['feature_name'] = tangents['group']
|
|
150
162
|
contact_orientations['feature_name'] = None
|
|
151
163
|
contacts['feature_name'] = None
|
|
@@ -167,7 +179,7 @@ def process_map2loop(m2l_directory, flags={}):
|
|
|
167
179
|
fault_orientations['gy'] = np.nan
|
|
168
180
|
fault_orientations['gz'] = np.nan
|
|
169
181
|
|
|
170
|
-
|
|
182
|
+
stratigraphic_column['faults'] = {}
|
|
171
183
|
for f in displacements['fname'].unique():
|
|
172
184
|
fault_centers = np.zeros(6)
|
|
173
185
|
normal_vector = np.zeros(3)
|
|
@@ -194,6 +206,13 @@ def process_map2loop(m2l_directory, flags={}):
|
|
|
194
206
|
fault_centers[3] = np.mean(fault_orientations.loc[fault_orientations['formation']==f,['DipDirection']])
|
|
195
207
|
fault_centers[4] = fault_dimensions.loc[fault_dimensions['Fault']==f,'InfluenceDistance']
|
|
196
208
|
fault_centers[5] = fault_dimensions.loc[fault_dimensions['Fault']==f,'HorizontalRadius']
|
|
209
|
+
stratigraphic_column['faults'][f] = {'FaultCenter':fault_centers[:3],
|
|
210
|
+
'FaultDipDirection':fault_centers[3],
|
|
211
|
+
'InfluenceDistance':fault_dimensions.loc[fault_dimensions['Fault']==f,'InfluenceDistance'].to_numpy(),
|
|
212
|
+
'HorizontalRadius':fault_dimensions.loc[fault_dimensions['Fault']==f,'HorizontalRadius'].to_numpy(),
|
|
213
|
+
'VerticalRadius':fault_dimensions.loc[fault_dimensions['Fault']==f,'VerticalRadius'].to_numpy()}
|
|
214
|
+
if 'colour' in fault_dimensions.columns:
|
|
215
|
+
stratigraphic_column['faults'][f]['colour'] = fault_dimensions.loc[fault_dimensions['Fault']==f,'colour'].to_numpy()
|
|
197
216
|
normal_vector[0] = np.sin(np.deg2rad(fault_centers[3]))
|
|
198
217
|
normal_vector[1] = np.cos(np.deg2rad(fault_centers[3]))
|
|
199
218
|
strike_vector[0] = normal_vector[1]
|
|
@@ -205,19 +224,18 @@ def process_map2loop(m2l_directory, flags={}):
|
|
|
205
224
|
fault_tips[1,:] = fault_centers[:3]-strike_vector*fault_centers[5]
|
|
206
225
|
# fault_depth[0,:] = fault_centers[:3]+slip_vector*fault_centers[5]
|
|
207
226
|
# fault_depth[1,:] = fault_centers[:3]-slip_vector*fault_centers[5]
|
|
208
|
-
fault_locations.loc[len(fault_locations),['X','Y','Z','formation','val','coord']] = [fault_edges[0,0],fault_edges[0,1],fault_edges[0,2],f,1,0]
|
|
209
|
-
fault_locations.loc[len(fault_locations),['X','Y','Z','formation','val','coord']] = [fault_edges[1,0],fault_edges[1,1],fault_edges[1,2],f,-1,0]
|
|
210
|
-
fault_locations.loc[len(fault_locations),['X','Y','Z','formation','val','coord']] = [fault_tips[0,0],fault_tips[0,1],fault_tips[0,2],f,1,2]
|
|
211
|
-
fault_locations.loc[len(fault_locations),['X','Y','Z','formation','val','coord']] = [fault_tips[1,0],fault_tips[1,1],fault_tips[1,2],f,-1,2]
|
|
212
|
-
# add strike vector to constraint fault extent
|
|
213
|
-
fault_orientations.loc[len(fault_orientations),['X','Y','Z','formation','DipDirection','coord']] = [fault_centers[0],fault_centers[1],fault_centers[2],f, fault_centers[3]-90,2]
|
|
214
|
-
fault_orientations.loc[len(fault_orientations),['X','Y','Z','formation','dip','coord']] = [fault_centers[0],fault_centers[1],fault_centers[2],f, 0,2]
|
|
227
|
+
# fault_locations.loc[len(fault_locations),['X','Y','Z','formation','val','coord']] = [fault_edges[0,0],fault_edges[0,1],fault_edges[0,2],f,1,0]
|
|
228
|
+
# fault_locations.loc[len(fault_locations),['X','Y','Z','formation','val','coord']] = [fault_edges[1,0],fault_edges[1,1],fault_edges[1,2],f,-1,0]
|
|
229
|
+
# fault_locations.loc[len(fault_locations),['X','Y','Z','formation','val','coord']] = [fault_tips[0,0],fault_tips[0,1],fault_tips[0,2],f,1,2]
|
|
230
|
+
# fault_locations.loc[len(fault_locations),['X','Y','Z','formation','val','coord']] = [fault_tips[1,0],fault_tips[1,1],fault_tips[1,2],f,-1,2]
|
|
231
|
+
# # add strike vector to constraint fault extent
|
|
232
|
+
# fault_orientations.loc[len(fault_orientations),['X','Y','Z','formation','DipDirection','coord']] = [fault_centers[0],fault_centers[1],fault_centers[2],f, fault_centers[3]-90,2]
|
|
233
|
+
# fault_orientations.loc[len(fault_orientations),['X','Y','Z','formation','dip','coord']] = [fault_centers[0],fault_centers[1],fault_centers[2],f, 0,2]
|
|
215
234
|
|
|
216
235
|
# print('downthro',displacements_numpy[index, 1])
|
|
217
236
|
|
|
218
237
|
fault_orientations['strike'] = fault_orientations['DipDirection'] - 90
|
|
219
238
|
fault_orientations[['gx', 'gy', 'gz']] = strike_dip_vector(fault_orientations['strike'], fault_orientations['dip'])
|
|
220
|
-
|
|
221
239
|
for g in groups['group'].unique():
|
|
222
240
|
groups.loc[groups['group']==g,'group'] = supergroups[g]
|
|
223
241
|
# fault_orientations['strike'] = fault_orientations['DipDirection'] - 90
|
|
@@ -229,10 +247,8 @@ def process_map2loop(m2l_directory, flags={}):
|
|
|
229
247
|
fault_orientations['feature_name'] = fault_orientations['formation']
|
|
230
248
|
fault_locations['feature_name'] = fault_locations['formation']
|
|
231
249
|
|
|
232
|
-
|
|
233
|
-
|
|
234
250
|
data = pd.concat([tangents, contact_orientations, contacts, fault_orientations, fault_locations])
|
|
235
|
-
data.reset_index()
|
|
251
|
+
data.reset_index(inplace=True)
|
|
236
252
|
|
|
237
253
|
return {'data': data,
|
|
238
254
|
'groups': groups,
|
|
@@ -243,7 +259,7 @@ def process_map2loop(m2l_directory, flags={}):
|
|
|
243
259
|
'strat_va':strat_val,
|
|
244
260
|
'downthrow_dir':downthrow_dir}
|
|
245
261
|
|
|
246
|
-
def build_model(m2l_data, skip_faults = False, unconformities=False, fault_params = None, foliation_params=None, rescale = True,**kwargs):
|
|
262
|
+
def build_model(m2l_data, evaluate=True, skip_faults = False, unconformities=False, fault_params = None, foliation_params=None, rescale = True,**kwargs):
|
|
247
263
|
"""[summary]
|
|
248
264
|
|
|
249
265
|
[extended_summary]
|
|
@@ -293,9 +309,19 @@ def build_model(m2l_data, skip_faults = False, unconformities=False, fault_param
|
|
|
293
309
|
except:
|
|
294
310
|
logger.info('No entry for %s in fault_fault_relations' % f)
|
|
295
311
|
# continue
|
|
312
|
+
|
|
313
|
+
fault_center = m2l_data['stratigraphic_column']['faults'][f]['FaultCenter']
|
|
314
|
+
fault_influence = m2l_data['stratigraphic_column']['faults'][f]['InfluenceDistance']
|
|
315
|
+
fault_extent = m2l_data['stratigraphic_column']['faults'][f]['HorizontalRadius']
|
|
316
|
+
fault_vertical_radius = m2l_data['stratigraphic_column']['faults'][f]['VerticalRadius']
|
|
296
317
|
faults.append(model.create_and_add_fault(f,
|
|
297
318
|
-m2l_data['max_displacement'][f],
|
|
298
319
|
faultfunction='BaseFault',
|
|
320
|
+
fault_slip_vector=np.array([0.,0.,-1.]),
|
|
321
|
+
fault_center=fault_center,
|
|
322
|
+
fault_extent=fault_extent,
|
|
323
|
+
fault_influence=fault_influence,
|
|
324
|
+
fault_vectical_radius=fault_vertical_radius,
|
|
299
325
|
overprints=overprints,
|
|
300
326
|
**fault_params,
|
|
301
327
|
)
|
|
@@ -311,4 +337,6 @@ def build_model(m2l_data, skip_faults = False, unconformities=False, fault_param
|
|
|
311
337
|
if group_features[-1] and unconformities:
|
|
312
338
|
model.add_unconformity(group_features[-1], 0)
|
|
313
339
|
model.set_stratigraphic_column(m2l_data['stratigraphic_column'])
|
|
340
|
+
if evaluate:
|
|
341
|
+
model.update(verbose=True)
|
|
314
342
|
return model
|
|
@@ -2,8 +2,8 @@ import logging
|
|
|
2
2
|
|
|
3
3
|
import numpy as np
|
|
4
4
|
import re
|
|
5
|
-
|
|
6
|
-
logger =
|
|
5
|
+
from LoopStructural.utils import getLogger
|
|
6
|
+
logger = getLogger(__name__)
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
def strike_symbol(strike):
|
|
@@ -23,58 +23,7 @@ def strike_symbol(strike):
|
|
|
23
23
|
vec2 = np.array([-0.5, 0])
|
|
24
24
|
r2 = R @ vec2
|
|
25
25
|
return rotated, r2
|
|
26
|
-
def get_levels():
|
|
27
|
-
"""dict for converting to logger levels from string
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
Returns
|
|
31
|
-
-------
|
|
32
|
-
dict
|
|
33
|
-
contains all strings with corresponding logging levels.
|
|
34
|
-
"""
|
|
35
|
-
return {'info':logging.INFO,'warning':logging.WARNING,'error':logging.ERROR,'debug':logging.DEBUG}
|
|
36
|
-
|
|
37
|
-
def log_to_file(filename,level='info'):
|
|
38
|
-
"""Set the logging parameters for log file
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
Parameters
|
|
42
|
-
----------
|
|
43
|
-
filename : string
|
|
44
|
-
name of file or path to file
|
|
45
|
-
level : str, optional
|
|
46
|
-
'info', 'warning', 'error', 'debug' mapped to logging levels, by default 'info'
|
|
47
|
-
"""
|
|
48
|
-
levels = get_levels()
|
|
49
|
-
level = levels.get(level,logging.WARNING)
|
|
50
|
-
logging.basicConfig(level=level,
|
|
51
|
-
format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
|
|
52
|
-
datefmt='%m-%d %H:%M',
|
|
53
|
-
filename=filename,
|
|
54
|
-
filemode='w')
|
|
55
|
-
|
|
56
|
-
def log_to_console(level='warning'):
|
|
57
|
-
"""Set the level of logging to the console
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
Parameters
|
|
61
|
-
----------
|
|
62
|
-
level : str, optional
|
|
63
|
-
'info', 'warning', 'error', 'debug' mapped to logging levels, by default 'info'
|
|
64
|
-
"""
|
|
65
|
-
levels = get_levels()
|
|
66
|
-
level = levels.get(level,logging.WARNING)
|
|
67
26
|
|
|
68
|
-
changed_level = False
|
|
69
|
-
for h in logging.getLogger().handlers:
|
|
70
|
-
if type(h) is logging.StreamHandler:
|
|
71
|
-
h.setLevel(level)
|
|
72
|
-
changed_level = True
|
|
73
|
-
if not changed_level:
|
|
74
|
-
console = logging.StreamHandler()
|
|
75
|
-
console.setLevel(level)
|
|
76
|
-
# add the handler to the root logger
|
|
77
|
-
logging.getLogger().addHandler(console)
|
|
78
27
|
|
|
79
28
|
def read_voxet(voxetname,propertyfile):
|
|
80
29
|
"""
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -3,7 +3,8 @@ import logging
|
|
|
3
3
|
import matplotlib.pyplot as plt
|
|
4
4
|
import numpy as np
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
from LoopStructural.utils import getLogger
|
|
7
|
+
logger = getLogger(__name__)
|
|
7
8
|
|
|
8
9
|
|
|
9
10
|
class MapView:
|
|
@@ -198,6 +199,18 @@ class MapView:
|
|
|
198
199
|
dip_v = np.rad2deg(np.arccos(gradient_data[:,5])).astype(int)
|
|
199
200
|
for d, xy, v in zip(dip_v,gradient_data[:,:2],gradient_data[:,3:6]):
|
|
200
201
|
self.ax.annotate(d,xy,xytext=xy+v[:2]*.03,fontsize='small')
|
|
202
|
+
|
|
203
|
+
def add_fault_ellipse(self, faults=None, **kwargs):
|
|
204
|
+
from matplotlib.patches import Ellipse
|
|
205
|
+
for k, f in self.model.stratigraphic_column['faults'].items():
|
|
206
|
+
center = self.model.rescale(f['FaultCenter'])
|
|
207
|
+
e = Ellipse((center[0],center[1]),
|
|
208
|
+
f['HorizontalRadius']*2,
|
|
209
|
+
f['InfluenceDistance']*2,
|
|
210
|
+
360-f['FaultDipDirection'],
|
|
211
|
+
facecolor='None',edgecolor='k')
|
|
212
|
+
|
|
213
|
+
self.ax.add_patch(e)
|
|
201
214
|
|
|
202
215
|
def add_scalar_field(self, feature, z=0, **kwargs):
|
|
203
216
|
"""
|
|
@@ -265,6 +278,8 @@ class MapView:
|
|
|
265
278
|
boundaries = []
|
|
266
279
|
data = []
|
|
267
280
|
for g in self.model.stratigraphic_column.keys():
|
|
281
|
+
if g == 'faults':
|
|
282
|
+
continue
|
|
268
283
|
for u, v in self.model.stratigraphic_column[g].items():
|
|
269
284
|
data.append((v['id'],v['colour']))
|
|
270
285
|
colours.append(v['colour'])
|
|
@@ -304,4 +319,4 @@ class MapView:
|
|
|
304
319
|
maskv[np.abs(val) > 0.001] = 1
|
|
305
320
|
return maskv
|
|
306
321
|
|
|
307
|
-
self.add_contour(f,0,mask=mask)
|
|
322
|
+
self.add_contour(f,0,mask=mask,**kwargs)
|