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.
Files changed (158) hide show
  1. Miniconda/envs/loop/Lib/site-packages/LoopStructural/__init__.py +12 -7
  2. Miniconda/envs/loop/Lib/site-packages/LoopStructural/__pycache__/__init__.cpython-36.pyc +0 -0
  3. Miniconda/envs/loop/Lib/site-packages/LoopStructural/datasets/__pycache__/{__init__.cpython-37.pyc → __init__.cpython-36.pyc} +0 -0
  4. Miniconda/envs/loop/Lib/site-packages/LoopStructural/datasets/__pycache__/{_base.cpython-37.pyc → _base.cpython-36.pyc} +0 -0
  5. Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/__init__.py +3 -0
  6. Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/__pycache__/__init__.cpython-36.pyc +0 -0
  7. Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/__pycache__/base_structured_3d_support.cpython-36.pyc +0 -0
  8. Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/__pycache__/discrete_fold_interpolator.cpython-36.pyc +0 -0
  9. Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/__pycache__/discrete_interpolator.cpython-36.pyc +0 -0
  10. Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/__pycache__/finite_difference_interpolator.cpython-36.pyc +0 -0
  11. Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/__pycache__/geological_interpolator.cpython-36.pyc +0 -0
  12. Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/__pycache__/operator.cpython-36.pyc +0 -0
  13. Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/__pycache__/piecewiselinear_interpolator.cpython-36.pyc +0 -0
  14. Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/__pycache__/structured_grid.cpython-36.pyc +0 -0
  15. Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/__pycache__/structured_tetra.cpython-36.pyc +0 -0
  16. Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/__pycache__/surfe_wrapper.cpython-36.pyc +0 -0
  17. Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/base_structured_3d_support.py +101 -0
  18. Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/cython/__pycache__/__init__.cpython-36.pyc +0 -0
  19. Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/cython/dsi_helper.c +3899 -2455
  20. Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/cython/dsi_helper.cp36-win_amd64.pyd +0 -0
  21. Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/discrete_fold_interpolator.py +53 -22
  22. Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/discrete_interpolator.py +61 -28
  23. Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/finite_difference_interpolator.py +68 -11
  24. Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/geological_interpolator.py +8 -1
  25. Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/operator.py +2 -1
  26. Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/piecewiselinear_interpolator.py +97 -8
  27. Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/structured_grid.py +25 -69
  28. Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/structured_tetra.py +86 -43
  29. Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/surfe_wrapper.py +4 -3
  30. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/__pycache__/{__init__.cpython-37.pyc → __init__.cpython-36.pyc} +0 -0
  31. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/core/__pycache__/__init__.cpython-36.pyc +0 -0
  32. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/core/__pycache__/geological_model.cpython-36.pyc +0 -0
  33. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/core/__pycache__/geological_model_graph.cpython-36.pyc +0 -0
  34. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/core/__pycache__/stratigraphic_column.cpython-36.pyc +0 -0
  35. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/core/geological_model.py +303 -150
  36. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/core/geological_model_graph.py +881 -0
  37. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/core/stratigraphic_column.py +5 -0
  38. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fault/__init__.py +1 -0
  39. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fault/__pycache__/__init__.cpython-36.pyc +0 -0
  40. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fault/__pycache__/fault_builder.cpython-36.pyc +0 -0
  41. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fault/__pycache__/fault_function.cpython-36.pyc +0 -0
  42. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fault/__pycache__/fault_function_feature.cpython-36.pyc +0 -0
  43. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fault/__pycache__/fault_segment.cpython-36.pyc +0 -0
  44. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fault/fault_builder.py +127 -0
  45. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fault/fault_function.py +2 -1
  46. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fault/fault_function_feature.py +2 -1
  47. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fault/fault_segment.py +30 -3
  48. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/__init__.py +1 -0
  49. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/__pycache__/__init__.cpython-36.pyc +0 -0
  50. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/__pycache__/cross_product_geological_feature.cpython-36.pyc +0 -0
  51. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/__pycache__/geological_feature.cpython-36.pyc +0 -0
  52. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/__pycache__/geological_feature_builder.cpython-36.pyc +0 -0
  53. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/__pycache__/lambda_geological_feature.cpython-36.pyc +0 -0
  54. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/__pycache__/{region_feature.cpython-37.pyc → region_feature.cpython-36.pyc} +0 -0
  55. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/__pycache__/structural_frame.cpython-36.pyc +0 -0
  56. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/__pycache__/structural_frame_builder.cpython-36.pyc +0 -0
  57. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/__pycache__/unconformity_feature.cpython-36.pyc +0 -0
  58. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/cross_product_geological_feature.py +18 -5
  59. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/geological_feature.py +10 -44
  60. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/geological_feature_builder.py +127 -43
  61. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/lambda_geological_feature.py +31 -0
  62. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/structural_frame.py +28 -11
  63. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/structural_frame_builder.py +25 -15
  64. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/unconformity_feature.py +6 -1
  65. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fold/__pycache__/{__init__.cpython-37.pyc → __init__.cpython-36.pyc} +0 -0
  66. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fold/__pycache__/fold.cpython-36.pyc +0 -0
  67. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fold/__pycache__/fold_rotation_angle.cpython-36.pyc +0 -0
  68. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fold/__pycache__/fold_rotation_angle_feature.cpython-36.pyc +0 -0
  69. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fold/__pycache__/foldframe.cpython-36.pyc +0 -0
  70. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fold/__pycache__/svariogram.cpython-36.pyc +0 -0
  71. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fold/fold.py +13 -5
  72. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fold/fold_rotation_angle.py +5 -4
  73. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fold/fold_rotation_angle_feature.py +2 -1
  74. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fold/foldframe.py +6 -5
  75. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fold/svariogram.py +2 -1
  76. Miniconda/envs/loop/Lib/site-packages/LoopStructural/utils/__init__.py +5 -1
  77. Miniconda/envs/loop/Lib/site-packages/LoopStructural/utils/__pycache__/__init__.cpython-36.pyc +0 -0
  78. Miniconda/envs/loop/Lib/site-packages/LoopStructural/utils/__pycache__/bounding_box.cpython-36.pyc +0 -0
  79. Miniconda/envs/loop/Lib/site-packages/LoopStructural/utils/__pycache__/exceptions.cpython-36.pyc +0 -0
  80. Miniconda/envs/loop/Lib/site-packages/LoopStructural/utils/__pycache__/helper.cpython-36.pyc +0 -0
  81. Miniconda/envs/loop/Lib/site-packages/LoopStructural/utils/__pycache__/logging.cpython-36.pyc +0 -0
  82. Miniconda/envs/loop/Lib/site-packages/LoopStructural/utils/__pycache__/map2loop.cpython-36.pyc +0 -0
  83. Miniconda/envs/loop/Lib/site-packages/LoopStructural/utils/__pycache__/regions.cpython-36.pyc +0 -0
  84. Miniconda/envs/loop/Lib/site-packages/LoopStructural/utils/__pycache__/utils.cpython-36.pyc +0 -0
  85. Miniconda/envs/loop/Lib/site-packages/LoopStructural/utils/bounding_box.py +21 -0
  86. Miniconda/envs/loop/Lib/site-packages/LoopStructural/utils/exceptions.py +2 -1
  87. Miniconda/envs/loop/Lib/site-packages/LoopStructural/utils/helper.py +5 -1
  88. Miniconda/envs/loop/Lib/site-packages/LoopStructural/utils/logging.py +60 -0
  89. Miniconda/envs/loop/Lib/site-packages/LoopStructural/utils/map2loop.py +47 -19
  90. Miniconda/envs/loop/Lib/site-packages/LoopStructural/utils/regions.py +11 -0
  91. Miniconda/envs/loop/Lib/site-packages/LoopStructural/utils/utils.py +2 -53
  92. Miniconda/envs/loop/Lib/site-packages/LoopStructural/visualisation/__pycache__/{__init__.cpython-37.pyc → __init__.cpython-36.pyc} +0 -0
  93. Miniconda/envs/loop/Lib/site-packages/LoopStructural/visualisation/__pycache__/map_viewer.cpython-36.pyc +0 -0
  94. Miniconda/envs/loop/Lib/site-packages/LoopStructural/visualisation/__pycache__/model_plotter.cpython-36.pyc +0 -0
  95. Miniconda/envs/loop/Lib/site-packages/LoopStructural/visualisation/__pycache__/model_visualisation.cpython-36.pyc +0 -0
  96. Miniconda/envs/loop/Lib/site-packages/LoopStructural/visualisation/__pycache__/rotation_angle_plotter.cpython-36.pyc +0 -0
  97. Miniconda/envs/loop/Lib/site-packages/LoopStructural/visualisation/__pycache__/{sphinx_scraper.cpython-37.pyc → sphinx_scraper.cpython-36.pyc} +0 -0
  98. Miniconda/envs/loop/Lib/site-packages/LoopStructural/visualisation/__pycache__/stratigraphic_column.cpython-36.pyc +0 -0
  99. Miniconda/envs/loop/Lib/site-packages/LoopStructural/visualisation/map_viewer.py +17 -2
  100. Miniconda/envs/loop/Lib/site-packages/LoopStructural/visualisation/model_plotter.py +2 -1
  101. Miniconda/envs/loop/Lib/site-packages/LoopStructural/visualisation/model_visualisation.py +152 -84
  102. Miniconda/envs/loop/Lib/site-packages/LoopStructural/visualisation/rotation_angle_plotter.py +2 -1
  103. Miniconda/envs/loop/Lib/site-packages/LoopStructural/visualisation/stratigraphic_column.py +60 -0
  104. 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
  105. 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
  106. 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
  107. Miniconda/envs/loop/Lib/site-packages/tests/__pycache__/__init__.cpython-36.pyc +0 -0
  108. Miniconda/envs/loop/Lib/site-packages/LoopStructural/__pycache__/__init__.cpython-37.pyc +0 -0
  109. Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/__pycache__/__init__.cpython-37.pyc +0 -0
  110. Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/__pycache__/discrete_fold_interpolator.cpython-37.pyc +0 -0
  111. Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/__pycache__/discrete_interpolator.cpython-37.pyc +0 -0
  112. Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/__pycache__/finite_difference_interpolator.cpython-37.pyc +0 -0
  113. Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/__pycache__/geological_interpolator.cpython-37.pyc +0 -0
  114. Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/__pycache__/operator.cpython-37.pyc +0 -0
  115. Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/__pycache__/piecewiselinear_interpolator.cpython-37.pyc +0 -0
  116. Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/__pycache__/structured_grid.cpython-37.pyc +0 -0
  117. Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/__pycache__/structured_tetra.cpython-37.pyc +0 -0
  118. Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/__pycache__/surfe_wrapper.cpython-37.pyc +0 -0
  119. Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/cython/__pycache__/__init__.cpython-37.pyc +0 -0
  120. Miniconda/envs/loop/Lib/site-packages/LoopStructural/interpolators/cython/dsi_helper.cp37-win_amd64.pyd +0 -0
  121. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/core/__pycache__/__init__.cpython-37.pyc +0 -0
  122. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/core/__pycache__/geological_model.cpython-37.pyc +0 -0
  123. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fault/__pycache__/__init__.cpython-37.pyc +0 -0
  124. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fault/__pycache__/fault_function.cpython-37.pyc +0 -0
  125. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fault/__pycache__/fault_function_feature.cpython-37.pyc +0 -0
  126. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fault/__pycache__/fault_segment.cpython-37.pyc +0 -0
  127. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/__pycache__/__init__.cpython-37.pyc +0 -0
  128. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/__pycache__/cross_product_geological_feature.cpython-37.pyc +0 -0
  129. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/__pycache__/geological_feature.cpython-37.pyc +0 -0
  130. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/__pycache__/geological_feature_builder.cpython-37.pyc +0 -0
  131. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/__pycache__/structural_frame.cpython-37.pyc +0 -0
  132. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/__pycache__/structural_frame_builder.cpython-37.pyc +0 -0
  133. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/features/__pycache__/unconformity_feature.cpython-37.pyc +0 -0
  134. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fold/__pycache__/fold.cpython-37.pyc +0 -0
  135. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fold/__pycache__/fold_rotation_angle.cpython-37.pyc +0 -0
  136. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fold/__pycache__/fold_rotation_angle_feature.cpython-37.pyc +0 -0
  137. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fold/__pycache__/foldframe.cpython-37.pyc +0 -0
  138. Miniconda/envs/loop/Lib/site-packages/LoopStructural/modelling/fold/__pycache__/svariogram.cpython-37.pyc +0 -0
  139. Miniconda/envs/loop/Lib/site-packages/LoopStructural/utils/__pycache__/__init__.cpython-37.pyc +0 -0
  140. Miniconda/envs/loop/Lib/site-packages/LoopStructural/utils/__pycache__/exceptions.cpython-37.pyc +0 -0
  141. Miniconda/envs/loop/Lib/site-packages/LoopStructural/utils/__pycache__/helper.cpython-37.pyc +0 -0
  142. Miniconda/envs/loop/Lib/site-packages/LoopStructural/utils/__pycache__/map2loop.cpython-37.pyc +0 -0
  143. Miniconda/envs/loop/Lib/site-packages/LoopStructural/utils/__pycache__/utils.cpython-37.pyc +0 -0
  144. Miniconda/envs/loop/Lib/site-packages/LoopStructural/visualisation/__pycache__/map_viewer.cpython-37.pyc +0 -0
  145. Miniconda/envs/loop/Lib/site-packages/LoopStructural/visualisation/__pycache__/model_plotter.cpython-37.pyc +0 -0
  146. Miniconda/envs/loop/Lib/site-packages/LoopStructural/visualisation/__pycache__/model_visualisation.cpython-37.pyc +0 -0
  147. Miniconda/envs/loop/Lib/site-packages/LoopStructural/visualisation/__pycache__/rotation_angle_plotter.cpython-37.pyc +0 -0
  148. Miniconda/envs/loop/Lib/site-packages/tests/__pycache__/__init__.cpython-37.pyc +0 -0
  149. Miniconda/envs/loop/Lib/site-packages/tests/__pycache__/test_faults.cpython-37.pyc +0 -0
  150. Miniconda/envs/loop/Lib/site-packages/tests/__pycache__/test_fold.cpython-37.pyc +0 -0
  151. Miniconda/envs/loop/Lib/site-packages/tests/__pycache__/test_interpolator.cpython-37.pyc +0 -0
  152. Miniconda/envs/loop/Lib/site-packages/tests/__pycache__/test_refolded.cpython-37.pyc +0 -0
  153. Miniconda/envs/loop/Lib/site-packages/tests/test_faults.py +0 -17
  154. Miniconda/envs/loop/Lib/site-packages/tests/test_fold.py +0 -57
  155. Miniconda/envs/loop/Lib/site-packages/tests/test_interpolator.py +0 -88
  156. Miniconda/envs/loop/Lib/site-packages/tests/test_refolded.py +0 -22
  157. /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
  158. /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
@@ -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,6 +1,7 @@
1
1
  import logging
2
2
 
3
- logger = logging.getLogger(__name__)
3
+ from LoopStructural.utils import getLogger
4
+ logger = getLogger(__name__)
4
5
 
5
6
  class LoopBaseException(Exception):
6
7
  """
@@ -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
- logger = logging.getLogger(__name__)
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
- logger = logging.getLogger(__name__)
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
- contacts['val'] = np.nan
146
- for o in strat_val:
147
- contacts.loc[contacts['formation'] == o, 'val'] = strat_val[o]
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
@@ -0,0 +1,11 @@
1
+ import numpy as np
2
+
3
+ class RegionEverywhere:
4
+ def __call__(self,xyz):
5
+ return np.ones(xyz.shape[0],dtype='bool')
6
+
7
+ class RegionFunction:
8
+ def __init__(self,function):
9
+ self.function = function
10
+ def __call__(self,xyz):
11
+ return self.function(xyz)
@@ -2,8 +2,8 @@ import logging
2
2
 
3
3
  import numpy as np
4
4
  import re
5
-
6
- logger = logging.getLogger(__name__)
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
  """
@@ -3,7 +3,8 @@ import logging
3
3
  import matplotlib.pyplot as plt
4
4
  import numpy as np
5
5
 
6
- logger = logging.getLogger(__name__)
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)
@@ -1,7 +1,8 @@
1
1
  # import logging
2
2
  #
3
3
  #
4
- # logger = logging.getLogger(__name__)
4
+ # from LoopStructural.utils import getLogger
5
+ # logger = getLogger(__name__)
5
6
  #
6
7
  # class BaseModelPlotter:
7
8
  # def __init__(self, model):