LoopStructural 1.6.7__py3-none-any.whl → 1.6.8__py3-none-any.whl

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.

Potentially problematic release.


This version of LoopStructural might be problematic. Click here for more details.

Files changed (45) hide show
  1. LoopStructural/__init__.py +1 -0
  2. LoopStructural/datatypes/_bounding_box.py +50 -10
  3. LoopStructural/datatypes/_point.py +18 -11
  4. LoopStructural/datatypes/_structured_grid.py +37 -9
  5. LoopStructural/datatypes/_surface.py +3 -3
  6. LoopStructural/export/geoh5.py +4 -2
  7. LoopStructural/interpolators/__init__.py +1 -0
  8. LoopStructural/interpolators/_discrete_interpolator.py +18 -0
  9. LoopStructural/interpolators/_finite_difference_interpolator.py +64 -11
  10. LoopStructural/interpolators/_geological_interpolator.py +9 -0
  11. LoopStructural/interpolators/_interpolator_builder.py +98 -19
  12. LoopStructural/interpolators/_interpolator_factory.py +2 -3
  13. LoopStructural/interpolators/_surfe_wrapper.py +3 -0
  14. LoopStructural/interpolators/supports/_2d_base_unstructured.py +3 -0
  15. LoopStructural/interpolators/supports/_2d_structured_grid.py +3 -0
  16. LoopStructural/interpolators/supports/_3d_base_structured.py +28 -5
  17. LoopStructural/interpolators/supports/_3d_structured_grid.py +2 -0
  18. LoopStructural/interpolators/supports/_3d_unstructured_tetra.py +21 -13
  19. LoopStructural/interpolators/supports/_base_support.py +4 -0
  20. LoopStructural/interpolators/supports/_support_factory.py +12 -4
  21. LoopStructural/modelling/core/geological_model.py +5 -6
  22. LoopStructural/modelling/features/_base_geological_feature.py +2 -2
  23. LoopStructural/modelling/features/_cross_product_geological_feature.py +1 -2
  24. LoopStructural/modelling/features/_geological_feature.py +2 -5
  25. LoopStructural/modelling/features/_lambda_geological_feature.py +0 -1
  26. LoopStructural/modelling/features/_projected_vector_feature.py +1 -2
  27. LoopStructural/modelling/features/_unconformity_feature.py +0 -1
  28. LoopStructural/modelling/features/builders/_base_builder.py +4 -2
  29. LoopStructural/modelling/features/builders/_geological_feature_builder.py +21 -25
  30. LoopStructural/modelling/features/builders/_structural_frame_builder.py +9 -4
  31. LoopStructural/modelling/features/fault/_fault_segment.py +1 -1
  32. LoopStructural/modelling/features/fold/__init__.py +1 -3
  33. LoopStructural/modelling/features/fold/fold_function/_base_fold_rotation_angle.py +0 -1
  34. LoopStructural/modelling/features/fold/fold_function/_lambda_fold_rotation_angle.py +0 -1
  35. LoopStructural/modelling/features/fold/fold_function/_trigo_fold_rotation_angle.py +0 -1
  36. LoopStructural/modelling/input/process_data.py +4 -2
  37. LoopStructural/utils/_surface.py +2 -2
  38. LoopStructural/utils/_transformation.py +28 -13
  39. LoopStructural/utils/colours.py +3 -1
  40. LoopStructural/version.py +1 -1
  41. {LoopStructural-1.6.7.dist-info → LoopStructural-1.6.8.dist-info}/METADATA +3 -3
  42. {LoopStructural-1.6.7.dist-info → LoopStructural-1.6.8.dist-info}/RECORD +45 -45
  43. {LoopStructural-1.6.7.dist-info → LoopStructural-1.6.8.dist-info}/LICENSE +0 -0
  44. {LoopStructural-1.6.7.dist-info → LoopStructural-1.6.8.dist-info}/WHEEL +0 -0
  45. {LoopStructural-1.6.7.dist-info → LoopStructural-1.6.8.dist-info}/top_level.txt +0 -0
@@ -6,7 +6,11 @@ logger = getLogger(__name__)
6
6
 
7
7
  class EuclideanTransformation:
8
8
  def __init__(
9
- self, dimensions: int = 2, angle: float = 0, translation: np.ndarray = np.zeros(3)
9
+ self,
10
+ dimensions: int = 2,
11
+ angle: float = 0,
12
+ translation: np.ndarray = np.zeros(3),
13
+ fit_rotation: bool = True,
10
14
  ):
11
15
  """Transforms points into a new coordinate
12
16
  system where the main eigenvector is aligned with x
@@ -23,6 +27,7 @@ class EuclideanTransformation:
23
27
  self.translation = translation[:dimensions]
24
28
  self.dimensions = dimensions
25
29
  self.angle = angle
30
+ self.fit_rotation = fit_rotation
26
31
 
27
32
  def fit(self, points: np.ndarray):
28
33
  """Fit the transformation to a point cloud
@@ -45,13 +50,16 @@ class EuclideanTransformation:
45
50
  raise ValueError("Points must have at least {} dimensions".format(self.dimensions))
46
51
  # standardise the points so that centre is 0
47
52
  # self.translation = np.zeros(3)
48
- self.translation = np.mean(points, axis=0)
53
+ self.translation = np.mean(points[:, : self.dimensions], axis=0)
49
54
  # find main eigenvector and and calculate the angle of this with x
50
- pca = decomposition.PCA(n_components=self.dimensions).fit(
51
- points[:, : self.dimensions] - self.translation[None, : self.dimensions]
52
- )
53
- coeffs = pca.components_
54
- self.angle = -np.arccos(np.dot(coeffs[0, :], [1, 0]))
55
+ if self.fit_rotation:
56
+ pca = decomposition.PCA(n_components=self.dimensions).fit(
57
+ points[:, : self.dimensions] - self.translation[None, : self.dimensions]
58
+ )
59
+ coeffs = pca.components_
60
+ self.angle = -np.arccos(np.dot(coeffs[0, :], [1, 0]))
61
+ else:
62
+ self.angle = 0
55
63
  return self
56
64
 
57
65
  @property
@@ -93,13 +101,15 @@ class EuclideanTransformation:
93
101
  points = np.array(points)
94
102
  if points.shape[1] < self.dimensions:
95
103
  raise ValueError("Points must have at least {} dimensions".format(self.dimensions))
96
- centred = points - self.translation
97
-
98
- return np.einsum(
104
+ centred = points[:, : self.dimensions] - self.translation[None, :]
105
+ rotated = np.einsum(
99
106
  'ik,jk->ij',
100
107
  centred,
101
108
  self.rotation[: self.dimensions, : self.dimensions],
102
109
  )
110
+ transformed_points = np.copy(points)
111
+ transformed_points[:, : self.dimensions] = rotated
112
+ return transformed_points
103
113
 
104
114
  def inverse_transform(self, points: np.ndarray) -> np.ndarray:
105
115
  """
@@ -115,15 +125,20 @@ class EuclideanTransformation:
115
125
  np.ndarray
116
126
  xyz points in the original coordinate system
117
127
  """
118
-
119
- return (
128
+ inversed = (
120
129
  np.einsum(
121
130
  'ik,jk->ij',
122
- points,
131
+ points[: self.dimensions],
123
132
  self.inverse_rotation[: self.dimensions, : self.dimensions],
124
133
  )
125
134
  + self.translation
126
135
  )
136
+ inversed = (
137
+ np.vstack([inversed, points[self.dimensions :]])
138
+ if points.shape[1] > self.dimensions
139
+ else inversed
140
+ )
141
+ return inversed
127
142
 
128
143
  def __call__(self, points: np.ndarray) -> np.ndarray:
129
144
  """
@@ -18,12 +18,14 @@ def random_colour(n: int = 1, cmap='tab20'):
18
18
  List of colours in the form of (r,g,b,a) tuples
19
19
  """
20
20
  from matplotlib import colormaps as cm
21
+
21
22
  colours = []
22
23
  for _i in range(n):
23
24
  colours.append(cm.get_cmap(cmap)(rng.random()))
24
25
 
25
26
  return colours
26
27
 
28
+
27
29
  def random_hex_colour(n: int = 1, cmap='tab20'):
28
30
  """
29
31
  Generate a list of random colours
@@ -46,4 +48,4 @@ def random_hex_colour(n: int = 1, cmap='tab20'):
46
48
  for _i in range(n):
47
49
  colours.append(cm.get_cmap(cmap)(rng.random()))
48
50
 
49
- return [f'#{int(c[0]*255):02x}{int(c[1]*255):02x}{int(c[2]*255):02x}' for c in colours]
51
+ return [f'#{int(c[0]*255):02x}{int(c[1]*255):02x}{int(c[2]*255):02x}' for c in colours]
LoopStructural/version.py CHANGED
@@ -1 +1 @@
1
- __version__ = "1.6.7"
1
+ __version__ = "1.6.8"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: LoopStructural
3
- Version: 1.6.7
3
+ Version: 1.6.8
4
4
  Summary: 3D geological modelling
5
5
  Author-email: Lachlan Grose <lachlan.grose@monash.edu>
6
6
  License: MIT
@@ -28,9 +28,9 @@ Requires-Dist: pandas
28
28
  Requires-Dist: scipy
29
29
  Requires-Dist: scikit-image
30
30
  Requires-Dist: scikit-learn
31
- Requires-Dist: tqdm
32
31
  Provides-Extra: all
33
32
  Requires-Dist: loopstructural[export,inequalities,visualisation]; extra == "all"
33
+ Requires-Dist: tqdm; extra == "all"
34
34
  Provides-Extra: visualisation
35
35
  Requires-Dist: matplotlib; extra == "visualisation"
36
36
  Requires-Dist: pyvista; extra == "visualisation"
@@ -41,7 +41,6 @@ Requires-Dist: pyevtk; extra == "export"
41
41
  Requires-Dist: dill; extra == "export"
42
42
  Provides-Extra: jupyter
43
43
  Requires-Dist: pyvista[all]; extra == "jupyter"
44
- Requires-Dist: tqdm; extra == "jupyter"
45
44
  Provides-Extra: inequalities
46
45
  Requires-Dist: loopsolver; extra == "inequalities"
47
46
  Provides-Extra: docs
@@ -58,6 +57,7 @@ Requires-Dist: geoh5py; extra == "docs"
58
57
  Requires-Dist: geopandas; extra == "docs"
59
58
  Requires-Dist: sphinxcontrib-bibtex; extra == "docs"
60
59
  Requires-Dist: myst-parser; extra == "docs"
60
+ Requires-Dist: sphinx-design; extra == "docs"
61
61
 
62
62
  # LoopStructural: Loop3D Implicit Geological Modelling
63
63
 
@@ -1,5 +1,5 @@
1
- LoopStructural/__init__.py,sha256=nlJ0csTZ_xlTZrWvTKiTp3ER_XRQN6iqQ5sR94RD5QA,1331
2
- LoopStructural/version.py,sha256=oUc5vcFny_sz8QQQyYQ6IGYmCI8isodNnAnIYUPypOY,22
1
+ LoopStructural/__init__.py,sha256=fg_Vm1aMDYIf_CffTFopLsTx21u6deLaI7JMVpRYdOI,1378
2
+ LoopStructural/version.py,sha256=PRuPGcPfxOnMhLtrBQIrBwTij1YQIyopsHDXZnO28RU,22
3
3
  LoopStructural/datasets/__init__.py,sha256=ylb7fzJU_DyQ73LlwQos7VamqkDSGITbbnoKg7KAOmE,677
4
4
  LoopStructural/datasets/_base.py,sha256=FB_D5ybBYHoaNbycdkpZcRffzjrrL1xp9X0k-pyob9Y,7618
5
5
  LoopStructural/datasets/_example_models.py,sha256=Zg33IeUyh4C-lC0DRMLqCDP2IrX8L-gNV1WxJwBGjzM,113
@@ -29,81 +29,81 @@ LoopStructural/datasets/data/geological_map_data/stratigraphic_order.csv,sha256=
29
29
  LoopStructural/datasets/data/geological_map_data/stratigraphic_orientations.csv,sha256=RysyqUAIjY6iIDUfTh11n9QUQWXB_qxKnZeN_DqNzlY,26745
30
30
  LoopStructural/datasets/data/geological_map_data/stratigraphic_thickness.csv,sha256=pnSmG-wL8-kxuoHo_pgpJrfTmsZOzc8L0vxpBRh3r8A,355
31
31
  LoopStructural/datatypes/__init__.py,sha256=lVg64DnynMm58qvYTjLrcyWH7vk2ngr9JGMo5FaiALI,160
32
- LoopStructural/datatypes/_bounding_box.py,sha256=5Gx8CGH--VjYVCBOyaill-f3bevYul2NwVtmgvj9a2A,16151
33
- LoopStructural/datatypes/_point.py,sha256=iBajMDEod0zU85WjmHGnXf1MmB73DvDWm2fg_jK8IBA,7183
34
- LoopStructural/datatypes/_structured_grid.py,sha256=AwSzkoAySU8ZHGbbGTyUoU3fCXuBVQAOD_6th6v0J1o,3665
35
- LoopStructural/datatypes/_surface.py,sha256=3RLA6-zkWE1L3IvXdrq92Dd5asnI9Lf6ebcNmrMnn98,6445
32
+ LoopStructural/datatypes/_bounding_box.py,sha256=pL_j4sot1qxQG-W9P6LYDOZyaIAx862kK_DWZIY-OIs,17853
33
+ LoopStructural/datatypes/_point.py,sha256=sCZiWRdnbIH_P9b52btNrotrttWlE-e4Mr2BBwfAAZY,7710
34
+ LoopStructural/datatypes/_structured_grid.py,sha256=mc-UM1Gh_BjHFItuPE4FF5wvGzJnSqF2MTx_xvrwcTk,5088
35
+ LoopStructural/datatypes/_surface.py,sha256=IgXKcwZw3mF2DIImO7LT-HUapqABa8LU0WsxXTiqEHo,6562
36
36
  LoopStructural/export/exporters.py,sha256=BniZu-PqQvHqCU6GIuJQ5FPzI9Dx_T6rI8EW1pykois,17209
37
37
  LoopStructural/export/file_formats.py,sha256=0xKyYSW4Jv_4jsXwusg-WO6PNUhZKd6HdWSqGSaPve8,232
38
- LoopStructural/export/geoh5.py,sha256=TByfnHul1Rg4oB5KPnD-yCcZ-uNr4cxuYnRB_6mclnA,4253
38
+ LoopStructural/export/geoh5.py,sha256=jLFKC5EB0azT3PgJPtkJzi3_CG28RLgP2FuENAGCQMI,4313
39
39
  LoopStructural/export/gocad.py,sha256=cQ6v7ZD0CVubt3c2f9EwAYrziu5bEFSWBtx0uade5mg,3370
40
40
  LoopStructural/export/omf_wrapper.py,sha256=4vcF4WOQIVEYsWrfATgKCDh8nUybLTbrlXnCxZ_3fkU,3392
41
- LoopStructural/interpolators/__init__.py,sha256=h-m1FkkRFGCnXWJSWwFKrfgCDtmboAPvJrpXCL58Huc,3450
41
+ LoopStructural/interpolators/__init__.py,sha256=8uFSHumlOuHzs_3i26DCW1QWO93en_AzAmUEJy5iUXA,3451
42
42
  LoopStructural/interpolators/_api.py,sha256=EC4ogG2uPq-z_pgNGd_eTieTl92eaZ-rjyoFwXiHL_s,7839
43
43
  LoopStructural/interpolators/_builders.py,sha256=B49KsxB8RRN6IHDfGT43nXWe_Av1SVVT8vm2Nh1oEiQ,6758
44
44
  LoopStructural/interpolators/_discrete_fold_interpolator.py,sha256=eDe0R1lcQ0AuMcv7zlpu5c-soCv7AybIqQAuN2vFE3M,6542
45
- LoopStructural/interpolators/_discrete_interpolator.py,sha256=EPiEWtx8RuE75xp7umy7Py4vTiFB0xgN3EFnl44ygKM,25577
46
- LoopStructural/interpolators/_finite_difference_interpolator.py,sha256=csjHpcDNKufFt4LUOR-ZsBEmQ4YLkFt0qd9KUqXI_T4,15950
47
- LoopStructural/interpolators/_geological_interpolator.py,sha256=4qPkJKWW1Kqe-U78CLR8ayLdFXq9aJZ2FB5_ntITxHk,11028
48
- LoopStructural/interpolators/_interpolator_builder.py,sha256=M-nX7qzigW0QYNqSQQkxXAdwKW9BQrL-qSdSUAWtTCc,1917
49
- LoopStructural/interpolators/_interpolator_factory.py,sha256=WcAbLtxLs4T5tt9ysZb-lorwgVi8utNunHsRCJrJd2k,2864
45
+ LoopStructural/interpolators/_discrete_interpolator.py,sha256=i_joZ8HOf_s6Q2L8gHFnhkdtgyED1SjATxRsRd1HxRU,26038
46
+ LoopStructural/interpolators/_finite_difference_interpolator.py,sha256=mZ89FWQZ5RbzhL9UYH8VzWME-28dy331KXtYtpqepHo,18351
47
+ LoopStructural/interpolators/_geological_interpolator.py,sha256=hcQuyv1zYakJ7mcDFlLj-YarjnMQvlP6pVbK1KuxBWs,11195
48
+ LoopStructural/interpolators/_interpolator_builder.py,sha256=Z8bhmco5aSQX19A8It2SB_rG61wnlyshWfp3ivm8rU0,4586
49
+ LoopStructural/interpolators/_interpolator_factory.py,sha256=fbjebXSe5IgTol1tnBlnsw9gD426v-TGkX3gquIg7LI,2782
50
50
  LoopStructural/interpolators/_operator.py,sha256=PZOUzq9OMaJdG151dSLIo7AxRuhTj6-zEAzFZo-EOJU,1114
51
51
  LoopStructural/interpolators/_p1interpolator.py,sha256=4rjj4iaw2c8hOfBS9u8ycxzijYdmvpeijvhYRwUwZg0,8736
52
52
  LoopStructural/interpolators/_p2interpolator.py,sha256=UT-As5RNsmOwHOzO_6FiRcAwlNHfi4ILbJw2LGpwKAw,10274
53
- LoopStructural/interpolators/_surfe_wrapper.py,sha256=uwqABnixan9bcyU08hbxO9ATO4DawItuGSGj7iAKa9U,6772
53
+ LoopStructural/interpolators/_surfe_wrapper.py,sha256=Qdz-SuPBVh7gIw4-ZLdDqHkpezmq-Y3IhtRsbW417Xk,6837
54
54
  LoopStructural/interpolators/_cython/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
- LoopStructural/interpolators/supports/_2d_base_unstructured.py,sha256=maHzpHnPRoo5IOLcp4Si7kj0oaxFox8XYrknwErbyoo,11796
55
+ LoopStructural/interpolators/supports/_2d_base_unstructured.py,sha256=3HHZZR_YyNRRE6zNhncwopAmbhZvCNLGdpDEXOFWoTI,11878
56
56
  LoopStructural/interpolators/supports/_2d_p1_unstructured.py,sha256=okcy56nyjuedmknQn_95V2tm0kdMA-oJcD3U2jU8u0w,2637
57
57
  LoopStructural/interpolators/supports/_2d_p2_unstructured.py,sha256=TeBVtT1PMV7CKzmnFZke37acMoFxouer20cskS7pVoE,10422
58
- LoopStructural/interpolators/supports/_2d_structured_grid.py,sha256=TbAV1iw2gmZ4ovSMj04GLKaDZjbxK7YAceJ4wBYn8m8,16209
58
+ LoopStructural/interpolators/supports/_2d_structured_grid.py,sha256=Pt9fiXyTS-RTd3mxXr3EUQfB6DhKChHQ5zbWub54nW0,16347
59
59
  LoopStructural/interpolators/supports/_2d_structured_tetra.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
60
- LoopStructural/interpolators/supports/_3d_base_structured.py,sha256=x3IuXXryyRR_R91e4BbAN0BsbgMTR8fldfQgQR3lRmA,15712
60
+ LoopStructural/interpolators/supports/_3d_base_structured.py,sha256=PYIkgWCTHk0OHn-T9wpF4ZFYnKyvXNZgUyqO7YcoFjU,16481
61
61
  LoopStructural/interpolators/supports/_3d_p2_tetra.py,sha256=CqGVJRUMxbPQZDhhopNt_s9gVhMqh4YbjQyDZonoyxc,11574
62
- LoopStructural/interpolators/supports/_3d_structured_grid.py,sha256=0H5wh5pBcxqw3crFeXdpnaKMfbSmJNOt-v9-IQa8tSM,17286
62
+ LoopStructural/interpolators/supports/_3d_structured_grid.py,sha256=x9NoZRsl58iowcObavgb0nY_C335BmcIYgec9REsFpU,17366
63
63
  LoopStructural/interpolators/supports/_3d_structured_tetra.py,sha256=5zUNtvEXDvbCHZCu6Fz9WjGbnrMaq-sYJqNUufyLcq8,26505
64
- LoopStructural/interpolators/supports/_3d_unstructured_tetra.py,sha256=vc9ZffCYk7m1Ae5-H_m1P5OCHgBa9jztrklugMPPiHc,23500
64
+ LoopStructural/interpolators/supports/_3d_unstructured_tetra.py,sha256=_peXMTMxctuWNOL74AHxzw0b_1sP5glvbJigIvIkK9I,23867
65
65
  LoopStructural/interpolators/supports/__init__.py,sha256=V0JjixoBIUZVAo5MmqARR67xDOoQwnb4G3SXeOMRSyQ,1603
66
66
  LoopStructural/interpolators/supports/_aabb.py,sha256=Z-kH_u6c6izak0aHG3Uo14PEKQeZmYlevLDC32Q06xk,3208
67
- LoopStructural/interpolators/supports/_base_support.py,sha256=5Cwq16EhA2rx4-DFUmoM5z6DRnDfRLkachBpGyzShdM,2420
67
+ LoopStructural/interpolators/supports/_base_support.py,sha256=pYzsmeBu4kLaD9ZKsz_dfjVpfuAd00xENqOQC9Xw5QY,2501
68
68
  LoopStructural/interpolators/supports/_face_table.py,sha256=Hyj4Io63NkPRN8ab9uDHyec-2Kb8BLY_xBF6STNlvBw,3095
69
- LoopStructural/interpolators/supports/_support_factory.py,sha256=c86NnM4azWhS2ajPApePap0sFI82mZC8siVAU1fCOn4,1175
69
+ LoopStructural/interpolators/supports/_support_factory.py,sha256=XNAxnr-JS3KEhdsoZeJ-VaLTJwlvxgBuRMCqYrCDW18,1485
70
70
  LoopStructural/modelling/__init__.py,sha256=oW7dz6c8K1A0VcW7-mVcyqcENUrtybCb3eVUNXFvMfA,656
71
71
  LoopStructural/modelling/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
72
- LoopStructural/modelling/core/geological_model.py,sha256=5P1T4eA-GQd5hp3t7pOO4pa7JGqdXXMk5k-OlKv3HKo,66230
72
+ LoopStructural/modelling/core/geological_model.py,sha256=TILvSGV95WtPJArIorYIu27pH3Faf7oTWCh2xj6qqq0,66172
73
73
  LoopStructural/modelling/features/__init__.py,sha256=Vf-qd5EDBtJ1DpuXXyCcw2-wf6LWPRW5wzxDEO3vOc8,939
74
74
  LoopStructural/modelling/features/_analytical_feature.py,sha256=U_g86LgQhYY2359rdsDqpvziYwqrWkc5EdvhJARiUWo,3597
75
- LoopStructural/modelling/features/_base_geological_feature.py,sha256=t6x2Vdhv9KeQ4xoeXUxAKHXwGiBl_WwHu4XAZBGQTWg,11964
76
- LoopStructural/modelling/features/_cross_product_geological_feature.py,sha256=9vfqNs9y4VqKP066L0_Cw4fYPYXx4UDCH7cTGdimitA,3021
77
- LoopStructural/modelling/features/_geological_feature.py,sha256=lh7XzTQZJioda81I9WMKnRgbxWI-RM0vkUpNPfr_i_U,11340
78
- LoopStructural/modelling/features/_lambda_geological_feature.py,sha256=pEfLN9HcYGluxRB7LJpcKdYqXP_Mkyo1pLZ3kZZ4mvA,2599
79
- LoopStructural/modelling/features/_projected_vector_feature.py,sha256=5y1rMq3ZGG4ObSIQBcqFW_E0mfiKlFPoEdWjjnhrpwk,3017
75
+ LoopStructural/modelling/features/_base_geological_feature.py,sha256=L4JsDpyys39OWIqb_rwJrebihN-CtGFQNgzy6MQw3oE,11964
76
+ LoopStructural/modelling/features/_cross_product_geological_feature.py,sha256=GIyCHUdE6F-bse2e4puG9V2f7qRtDVfby5PRe2BboD4,3021
77
+ LoopStructural/modelling/features/_geological_feature.py,sha256=XgSnNlQycjV4dmXBD3eQGKpaZaoSowCedCFVq0PjwCI,11244
78
+ LoopStructural/modelling/features/_lambda_geological_feature.py,sha256=0QmfWkdX7mH5llxSpKIMr006Z8Z-JIlrzjO6dYSB9Ak,2598
79
+ LoopStructural/modelling/features/_projected_vector_feature.py,sha256=aifVLgn2spmK7GGlO0iHDewf1pFL-QoRzZEePTZwX1s,3017
80
80
  LoopStructural/modelling/features/_region.py,sha256=TB4qnoTDQM2VgRjgyODN839fKe3kuRYLllJj0xnDKXo,478
81
81
  LoopStructural/modelling/features/_structural_frame.py,sha256=e3QmNHLwuZc5PX3rLafocmBLNTclO90AXB4BRILCFC4,5044
82
- LoopStructural/modelling/features/_unconformity_feature.py,sha256=6SAgPkjipRR0Wo4aXblKyT2YuIphZc6ys1rbLXt4Umw,2409
82
+ LoopStructural/modelling/features/_unconformity_feature.py,sha256=2Bx0BI38YLdcNvDWuP9E1pKFN4orEUq9aC8b5xG1UVk,2362
83
83
  LoopStructural/modelling/features/builders/__init__.py,sha256=Gqld1C-PcaXfJ8vpkWMDCmehmd3hZNYQk1knPtl59Bk,266
84
- LoopStructural/modelling/features/builders/_base_builder.py,sha256=ImlKZs4sFSrtAAp1NEpQD35AKF_mLEHr7jj2DzSyAd4,3561
84
+ LoopStructural/modelling/features/builders/_base_builder.py,sha256=N3txGC98V08A8-k2TLdoIWgWLfblZ91kaTvciPq_QVM,3750
85
85
  LoopStructural/modelling/features/builders/_fault_builder.py,sha256=EyDLyovrnxqSk11zWFnViok7lXMt_E-pG2QqgRgvOLk,25653
86
86
  LoopStructural/modelling/features/builders/_folded_feature_builder.py,sha256=1_0BVTzcvmFl6K3_lX-jF0tiMFPmS8j6vPeSLn9MbrE,6607
87
- LoopStructural/modelling/features/builders/_geological_feature_builder.py,sha256=Js3NgfbFipZrTmKrIMKsNpRE5EeBxy0_TmGz3ytO5YA,21628
88
- LoopStructural/modelling/features/builders/_structural_frame_builder.py,sha256=yxHVUqgQHZtAXtgnzaf_ZWTE-BhixoPD78vpQpK7Az4,7776
87
+ LoopStructural/modelling/features/builders/_geological_feature_builder.py,sha256=jn2BiZlzXyWl0_TrsajpFR2wegGOpbuO5yFu2FamuYA,22014
88
+ LoopStructural/modelling/features/builders/_structural_frame_builder.py,sha256=ms3-fuFpDEarjzYU5W499TquOIlTwHPUibVxIypfmWY,8019
89
89
  LoopStructural/modelling/features/fault/__init__.py,sha256=4u0KfYzmoO-ddFGo9qd9ov0gBoLqBiPAUsaw5zhEOAQ,189
90
90
  LoopStructural/modelling/features/fault/_fault_function.py,sha256=5IzVyvv1tS5Z6geMB8FdTZpGrBYbyu38cOH03NACm0o,12797
91
91
  LoopStructural/modelling/features/fault/_fault_function_feature.py,sha256=4m0jVNx7ewrVI0pECI1wNciv8Cy8FzhZrYDjKJ_e2GU,2558
92
- LoopStructural/modelling/features/fault/_fault_segment.py,sha256=mxT7305WNuBDtxBErlZ1RCinoQyoxfs5P5PI3_mKLLc,17882
93
- LoopStructural/modelling/features/fold/__init__.py,sha256=mOq_K5IHjE3FoK7dhYpljUMGj0gvEX2Fyqtzjd4EYfQ,176
92
+ LoopStructural/modelling/features/fault/_fault_segment.py,sha256=k7q23RB2ev9Q9aJBSScZqqa4LuW89eFeW899GrFwTwo,17902
93
+ LoopStructural/modelling/features/fold/__init__.py,sha256=pOv20yQvshZozvmO_YFw2E7Prp9DExlm855N-0SnxbQ,175
94
94
  LoopStructural/modelling/features/fold/_fold.py,sha256=bPnnLUSiF4uoMRg8aHoOSTPRgaM0JyLoRQPu5_A-J3w,5448
95
95
  LoopStructural/modelling/features/fold/_fold_rotation_angle_feature.py,sha256=CXLbFRQ3CrTMAcHmfdbKcmSvvLs9_6TLe0Wqi1pK2tg,892
96
96
  LoopStructural/modelling/features/fold/_foldframe.py,sha256=Rgf5aofN0OVDTZ2pzqLzAGlJUO2rnNm3aFvLSnH77yo,7669
97
97
  LoopStructural/modelling/features/fold/_svariogram.py,sha256=uzGaKZ5HGh8xZcsGGg68GUKVjkd5udLy7-4lh0NQc2Y,7765
98
98
  LoopStructural/modelling/features/fold/fold_function/__init__.py,sha256=VqMjabsBd5GnPnDMXeKwXqtd0te2iXnvHxpf6jCC9YU,830
99
- LoopStructural/modelling/features/fold/fold_function/_base_fold_rotation_angle.py,sha256=EC9q-zKX86AoDruXg_6MOD7lo1kVshfFcLlZ25EfFp0,8048
99
+ LoopStructural/modelling/features/fold/fold_function/_base_fold_rotation_angle.py,sha256=5Bu_5xjyu4KL7thZ4fsh938Ep3Oyh5TL7_rfz_13Qng,8047
100
100
  LoopStructural/modelling/features/fold/fold_function/_fourier_series_fold_rotation_angle.py,sha256=Cjb6Pt6cdRoH3WGqFyJ2rHxnMe6SKvzRayA6hTuwZA8,4069
101
- LoopStructural/modelling/features/fold/fold_function/_lambda_fold_rotation_angle.py,sha256=U-IL7DETQhKh7a-cHlEKtsIg2kd8JZqO2gWyb_PKB8k,1446
102
- LoopStructural/modelling/features/fold/fold_function/_trigo_fold_rotation_angle.py,sha256=v-3YkBbsqPdbPZD2ykPB3vLKz3W_BDSF2m0uxtpP2vo,4904
101
+ LoopStructural/modelling/features/fold/fold_function/_lambda_fold_rotation_angle.py,sha256=TezZFSLKxILOkzuM27zO7qr58TGbDUxMgIG_le_SyG8,1445
102
+ LoopStructural/modelling/features/fold/fold_function/_trigo_fold_rotation_angle.py,sha256=z2zKcCTDyM2S0fCyL-jNAGo-LXIzNr_9fsUPkH8pZUY,4903
103
103
  LoopStructural/modelling/input/__init__.py,sha256=HhJM3V5b-8_64LiRbF3Bd1pjWhJlcknxMSMPRrqZ0-I,153
104
104
  LoopStructural/modelling/input/fault_network.py,sha256=0uxl7lOySdhMhNXoiOkuiHIXqAz1Ls0j-W65cmdQoP8,2348
105
105
  LoopStructural/modelling/input/map2loop_processor.py,sha256=T7Fgqd7FNJWylLKvfIniRZBMRMeAoP8iU330-WYU8Fg,7031
106
- LoopStructural/modelling/input/process_data.py,sha256=E0US-Rh9dlUdXejfimcLPsBIBfa6Xx6Nwm6VEMNeVUM,26269
106
+ LoopStructural/modelling/input/process_data.py,sha256=9xWZtFWbE5NjJzULSZDJt-qccV0GuZ-oNMi3nfxPT-M,26293
107
107
  LoopStructural/modelling/input/project_file.py,sha256=WhJkMfDK9uE7MK7HK-YK6ZOBAdwLX5P7ThZgXj444Eg,4604
108
108
  LoopStructural/modelling/intrusions/__init__.py,sha256=EpZK3cHJwGQhPUYIwKCKu8vkNdt_nOgWF0zfhiqDYDA,712
109
109
  LoopStructural/modelling/intrusions/geom_conceptual_models.py,sha256=jwTlhYySUj7z4DEnJoi4AINZB_N3-SW6ONRFL66OsW0,3665
@@ -113,9 +113,9 @@ LoopStructural/modelling/intrusions/intrusion_feature.py,sha256=ESjtikHFJQzUnowb
113
113
  LoopStructural/modelling/intrusions/intrusion_frame_builder.py,sha256=Q1TPHxREcrO7Rw71nUfACZHfYnISLjqlgkUNTPT324k,40143
114
114
  LoopStructural/modelling/intrusions/intrusion_support_functions.py,sha256=wodakheMD62WJyoKnyX8UO-C1pje0I-5kHQEoDqShzo,13951
115
115
  LoopStructural/utils/__init__.py,sha256=OJqNSu40SYJeC26IhoBBXDqQOogWjMGA-YokKVRrwMs,924
116
- LoopStructural/utils/_surface.py,sha256=Slz5CvH1KkMq1ycWHILQ_elNoLmzDFdZ2LdDL2q9Ml4,5962
117
- LoopStructural/utils/_transformation.py,sha256=lLoH3FlLjR9vVjc1-64ANL_53kWPU7qu8WVsG9K1wLw,4806
118
- LoopStructural/utils/colours.py,sha256=oitN14y56gj6ALuuwqAyOBUzSAnr1mAmCHX3KigBf2Y,1160
116
+ LoopStructural/utils/_surface.py,sha256=qXn0WHiMlYx-e_eRSoRcBIIrAlM8WUsi0cthiUQ_ptM,5974
117
+ LoopStructural/utils/_transformation.py,sha256=peuLPH3BJ5DxnPbOuNKcqK4eXhAXdbT540L1OIsO3v0,5404
118
+ LoopStructural/utils/colours.py,sha256=-KRf1MXKx4L8TXnwyiunmKAX4tfy0qG68fRadyfn_bM,1163
119
119
  LoopStructural/utils/config.py,sha256=ITGOtZTo2_QBwXkG_0AFANfE90J9siCXLzxypVmg9QA,414
120
120
  LoopStructural/utils/dtm_creator.py,sha256=-yqGG0wyEJfTCCDghz058wull1q3zGFASjeu8oDgYnk,535
121
121
  LoopStructural/utils/exceptions.py,sha256=SJboJ7ncMqVX-ib7MMizClwMrFZRHQhjZr2eCnVwnQE,500
@@ -129,8 +129,8 @@ LoopStructural/utils/regions.py,sha256=LvcOCPudF4u95-GKBOZqXVxOEcR3cOFgFpcs5x43s
129
129
  LoopStructural/utils/typing.py,sha256=29uVSTZdzXXH-jdlaYyBWZ1gQ2-nlZ2-XoVgG_PXNFY,157
130
130
  LoopStructural/utils/utils.py,sha256=2Z4zVE6G752-SPmM29zebk82bROJxEwi_YiiJjcVED4,2438
131
131
  LoopStructural/visualisation/__init__.py,sha256=5BDgKor8-ae6DrS7IZybJ3Wq_pTnCchxuY4EgzA7v1M,318
132
- LoopStructural-1.6.7.dist-info/LICENSE,sha256=ZqGeNFOgmYevj7Ld7Q-kR4lAxWXuBRUdUmPC6XM_py8,1071
133
- LoopStructural-1.6.7.dist-info/METADATA,sha256=xVYOcF6LshQkc80XhhKhtWy91pHJPujawm-NUKhTe_0,6399
134
- LoopStructural-1.6.7.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
135
- LoopStructural-1.6.7.dist-info/top_level.txt,sha256=QtQErKzYHfg6ddxTQ1NyaTxXBVM6qAqrM_vxEPyXZLg,15
136
- LoopStructural-1.6.7.dist-info/RECORD,,
132
+ LoopStructural-1.6.8.dist-info/LICENSE,sha256=ZqGeNFOgmYevj7Ld7Q-kR4lAxWXuBRUdUmPC6XM_py8,1071
133
+ LoopStructural-1.6.8.dist-info/METADATA,sha256=b3E6PD8VPFCtEJRxS3I39m3SXzw9x4oJT7oER1fMs4c,6421
134
+ LoopStructural-1.6.8.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
135
+ LoopStructural-1.6.8.dist-info/top_level.txt,sha256=QtQErKzYHfg6ddxTQ1NyaTxXBVM6qAqrM_vxEPyXZLg,15
136
+ LoopStructural-1.6.8.dist-info/RECORD,,