LoopStructural 1.6.20__tar.gz → 1.6.22__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (149) hide show
  1. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/core/stratigraphic_column.py +2 -2
  2. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/features/_feature_converters.py +4 -1
  3. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/features/_geological_feature.py +15 -0
  4. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/features/builders/_fault_builder.py +1 -1
  5. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/features/builders/_geological_feature_builder.py +8 -1
  6. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/features/builders/_structural_frame_builder.py +1 -0
  7. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/features/fold/_foldframe.py +17 -0
  8. loopstructural-1.6.22/LoopStructural/version.py +1 -0
  9. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural.egg-info/PKG-INFO +1 -1
  10. {loopstructural-1.6.20 → loopstructural-1.6.22}/PKG-INFO +1 -1
  11. loopstructural-1.6.20/LoopStructural/version.py +0 -1
  12. {loopstructural-1.6.20 → loopstructural-1.6.22}/LICENSE +0 -0
  13. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/__init__.py +0 -0
  14. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/datasets/__init__.py +0 -0
  15. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/datasets/_base.py +0 -0
  16. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/datasets/_example_models.py +0 -0
  17. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/datasets/data/claudius.csv +0 -0
  18. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/datasets/data/claudiusbb.txt +0 -0
  19. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/datasets/data/duplex.csv +0 -0
  20. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/datasets/data/duplexbb.txt +0 -0
  21. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/datasets/data/fault_trace/fault_trace.cpg +0 -0
  22. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/datasets/data/fault_trace/fault_trace.dbf +0 -0
  23. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/datasets/data/fault_trace/fault_trace.prj +0 -0
  24. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/datasets/data/fault_trace/fault_trace.shp +0 -0
  25. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/datasets/data/fault_trace/fault_trace.shx +0 -0
  26. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/datasets/data/geological_map_data/bbox.csv +0 -0
  27. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/datasets/data/geological_map_data/contacts.csv +0 -0
  28. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/datasets/data/geological_map_data/fault_displacement.csv +0 -0
  29. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/datasets/data/geological_map_data/fault_edges.txt +0 -0
  30. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/datasets/data/geological_map_data/fault_locations.csv +0 -0
  31. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/datasets/data/geological_map_data/fault_orientations.csv +0 -0
  32. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/datasets/data/geological_map_data/stratigraphic_order.csv +0 -0
  33. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/datasets/data/geological_map_data/stratigraphic_orientations.csv +0 -0
  34. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/datasets/data/geological_map_data/stratigraphic_thickness.csv +0 -0
  35. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/datasets/data/intrusion.csv +0 -0
  36. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/datasets/data/intrusionbb.txt +0 -0
  37. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/datasets/data/onefoldbb.txt +0 -0
  38. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/datasets/data/onefolddata.csv +0 -0
  39. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/datasets/data/refolded_bb.txt +0 -0
  40. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/datasets/data/refolded_fold.csv +0 -0
  41. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/datasets/data/tabular_intrusion.csv +0 -0
  42. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/datatypes/__init__.py +0 -0
  43. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/datatypes/_bounding_box.py +0 -0
  44. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/datatypes/_point.py +0 -0
  45. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/datatypes/_structured_grid.py +0 -0
  46. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/datatypes/_surface.py +0 -0
  47. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/export/exporters.py +0 -0
  48. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/export/file_formats.py +0 -0
  49. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/export/geoh5.py +0 -0
  50. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/export/gocad.py +0 -0
  51. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/export/omf_wrapper.py +0 -0
  52. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/interpolators/__init__.py +0 -0
  53. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/interpolators/_api.py +0 -0
  54. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/interpolators/_builders.py +0 -0
  55. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/interpolators/_constant_norm.py +0 -0
  56. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/interpolators/_cython/__init__.py +0 -0
  57. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/interpolators/_discrete_fold_interpolator.py +0 -0
  58. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/interpolators/_discrete_interpolator.py +0 -0
  59. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/interpolators/_finite_difference_interpolator.py +0 -0
  60. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/interpolators/_geological_interpolator.py +0 -0
  61. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/interpolators/_interpolator_builder.py +0 -0
  62. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/interpolators/_interpolator_factory.py +0 -0
  63. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/interpolators/_interpolatortype.py +0 -0
  64. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/interpolators/_operator.py +0 -0
  65. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/interpolators/_p1interpolator.py +0 -0
  66. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/interpolators/_p2interpolator.py +0 -0
  67. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/interpolators/_surfe_wrapper.py +0 -0
  68. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/interpolators/supports/_2d_base_unstructured.py +0 -0
  69. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/interpolators/supports/_2d_p1_unstructured.py +0 -0
  70. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/interpolators/supports/_2d_p2_unstructured.py +0 -0
  71. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/interpolators/supports/_2d_structured_grid.py +0 -0
  72. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/interpolators/supports/_2d_structured_tetra.py +0 -0
  73. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/interpolators/supports/_3d_base_structured.py +0 -0
  74. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/interpolators/supports/_3d_p2_tetra.py +0 -0
  75. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/interpolators/supports/_3d_structured_grid.py +0 -0
  76. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/interpolators/supports/_3d_structured_tetra.py +0 -0
  77. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/interpolators/supports/_3d_unstructured_tetra.py +0 -0
  78. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/interpolators/supports/__init__.py +0 -0
  79. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/interpolators/supports/_aabb.py +0 -0
  80. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/interpolators/supports/_base_support.py +0 -0
  81. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/interpolators/supports/_face_table.py +0 -0
  82. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/interpolators/supports/_support_factory.py +0 -0
  83. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/__init__.py +0 -0
  84. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/core/__init__.py +0 -0
  85. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/core/fault_topology.py +0 -0
  86. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/core/geological_model.py +0 -0
  87. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/features/__init__.py +0 -0
  88. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/features/_analytical_feature.py +0 -0
  89. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/features/_base_geological_feature.py +0 -0
  90. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/features/_cross_product_geological_feature.py +0 -0
  91. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/features/_lambda_geological_feature.py +0 -0
  92. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/features/_projected_vector_feature.py +0 -0
  93. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/features/_region.py +0 -0
  94. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/features/_structural_frame.py +0 -0
  95. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/features/_unconformity_feature.py +0 -0
  96. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/features/builders/__init__.py +0 -0
  97. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/features/builders/_base_builder.py +0 -0
  98. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/features/builders/_folded_feature_builder.py +0 -0
  99. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/features/fault/__init__.py +0 -0
  100. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/features/fault/_fault_function.py +0 -0
  101. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/features/fault/_fault_function_feature.py +0 -0
  102. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/features/fault/_fault_segment.py +0 -0
  103. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/features/fold/__init__.py +0 -0
  104. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/features/fold/_fold.py +0 -0
  105. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/features/fold/_fold_rotation_angle_feature.py +0 -0
  106. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/features/fold/_svariogram.py +0 -0
  107. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/features/fold/fold_function/__init__.py +0 -0
  108. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/features/fold/fold_function/_base_fold_rotation_angle.py +0 -0
  109. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/features/fold/fold_function/_fourier_series_fold_rotation_angle.py +0 -0
  110. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/features/fold/fold_function/_lambda_fold_rotation_angle.py +0 -0
  111. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/features/fold/fold_function/_trigo_fold_rotation_angle.py +0 -0
  112. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/input/__init__.py +0 -0
  113. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/input/fault_network.py +0 -0
  114. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/input/map2loop_processor.py +0 -0
  115. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/input/process_data.py +0 -0
  116. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/input/project_file.py +0 -0
  117. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/intrusions/__init__.py +0 -0
  118. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/intrusions/geom_conceptual_models.py +0 -0
  119. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/intrusions/geometric_scaling_functions.py +0 -0
  120. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/intrusions/intrusion_builder.py +0 -0
  121. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/intrusions/intrusion_feature.py +0 -0
  122. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/intrusions/intrusion_frame_builder.py +0 -0
  123. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/modelling/intrusions/intrusion_support_functions.py +0 -0
  124. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/utils/__init__.py +0 -0
  125. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/utils/_surface.py +0 -0
  126. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/utils/_transformation.py +0 -0
  127. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/utils/colours.py +0 -0
  128. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/utils/config.py +0 -0
  129. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/utils/dtm_creator.py +0 -0
  130. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/utils/exceptions.py +0 -0
  131. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/utils/features.py +0 -0
  132. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/utils/helper.py +0 -0
  133. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/utils/json_encoder.py +0 -0
  134. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/utils/linalg.py +0 -0
  135. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/utils/logging.py +0 -0
  136. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/utils/maths.py +0 -0
  137. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/utils/observer.py +0 -0
  138. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/utils/regions.py +0 -0
  139. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/utils/typing.py +0 -0
  140. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/utils/utils.py +0 -0
  141. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural/visualisation/__init__.py +0 -0
  142. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural.egg-info/SOURCES.txt +0 -0
  143. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural.egg-info/dependency_links.txt +0 -0
  144. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural.egg-info/requires.txt +0 -0
  145. {loopstructural-1.6.20 → loopstructural-1.6.22}/LoopStructural.egg-info/top_level.txt +0 -0
  146. {loopstructural-1.6.20 → loopstructural-1.6.22}/README.md +0 -0
  147. {loopstructural-1.6.20 → loopstructural-1.6.22}/pyproject.toml +0 -0
  148. {loopstructural-1.6.20 → loopstructural-1.6.22}/setup.cfg +0 -0
  149. {loopstructural-1.6.20 → loopstructural-1.6.22}/setup.py +0 -0
@@ -222,8 +222,8 @@ class StratigraphicColumn(Observable['StratigraphicColumn']):
222
222
  if basement:
223
223
  self.add_basement()
224
224
 
225
- else:
226
- self.order = []
225
+
226
+ self.order = []
227
227
  self.group_mapping = {}
228
228
  self.notify('column_cleared')
229
229
  def add_unit(self, name,*, colour=None, thickness=None, where='top',id=None):
@@ -1,6 +1,9 @@
1
- from LoopStructural.modelling.features.fold import FoldEvent
1
+ from LoopStructural.modelling.features.fold import FoldEvent, FoldFrame
2
2
  from LoopStructural.modelling.features.builders import FoldedFeatureBuilder, StructuralFrameBuilder
3
3
  def add_fold_to_feature(feature, fold_frame,**kwargs):
4
+ if not isinstance(fold_frame, FoldFrame):
5
+ raise ValueError("fold_frame must be a FoldFrame instance")
6
+
4
7
  fold = FoldEvent(fold_frame, name=f"Fold_{feature.name}", invert_norm=kwargs.get('invert_fold_norm', False))
5
8
 
6
9
  builder = FoldedFeatureBuilder.from_feature_builder(
@@ -283,6 +283,8 @@ class GeologicalFeature(BaseFeature):
283
283
  value_constraints = self.builder.get_value_constraints()
284
284
  gradient_constraints = self.builder.get_gradient_constraints()
285
285
  norm_constraints = self.builder.get_norm_constraints()
286
+ # inequality_pair_constraints = self.builder.get_inequality_pair_constraints()
287
+ # inequality_constraints = self.builder.get_inequality_constraints()
286
288
  data = []
287
289
  if gradient_constraints.shape[0] > 0:
288
290
 
@@ -321,4 +323,17 @@ class GeologicalFeature(BaseFeature):
321
323
  name=f"{self.name}_value",
322
324
  )
323
325
  )
326
+ # if inequality_constraints.shape[0] > 0:
327
+
328
+ # data.append(
329
+ # ValuePoints(
330
+ # locations=self.model.rescale(
331
+ # inequality_constraints[:, :3]
332
+ # ),
333
+ # values=value_constraints[:, 3],
334
+ # name=f"{name}_inequality",
335
+ # properties = {'l':inequality_constraints[:,3],'u':inequality_constraints[:,4]}
336
+
337
+ # )
338
+ # )
324
339
  return data
@@ -226,7 +226,7 @@ class FaultBuilder(StructuralFrameBuilder):
226
226
  self.maximum = self.model.bounding_box.maximum
227
227
  return
228
228
  major_axis = np.max(distance)
229
- logger.warning(f"Fault major axis using map length: {major_axis}")
229
+ logger.info(f"Fault major axis using map length: {major_axis}")
230
230
 
231
231
  if minor_axis is None:
232
232
  logger.info(f"Fault minor axis not set, using half major axis: {major_axis/2}")
@@ -419,7 +419,14 @@ class GeologicalFeatureBuilder(BaseBuilder):
419
419
  )
420
420
  else:
421
421
  return np.zeros((0, 5))
422
-
422
+ # def get_inequality_pair_constraints(self):
423
+ # mask = np.all(~np.isnan(self.data.loc[:,pairs_name()].to_numpy(float())),axis=1)
424
+ # if mask.shape[0] > 0:
425
+ # return self.data.loc[mask, xyz_names() + pairs_name()+weight_name()].to_numpy(float)
426
+ # def get_inequality_constraints(self):
427
+ # mask = np.all(~np.isnan(self.data.loc[:,inequality_name()].to_numpy(float())),axis=1)
428
+ # if mask.shape[0] > 0:
429
+ # return self.data.loc[mask, xyz_names() + inequality_name()+weight_name()].to_numpy(float)
423
430
  def get_data_locations(self):
424
431
  """
425
432
  Get only the location for all data points
@@ -148,6 +148,7 @@ class StructuralFrameBuilder:
148
148
  bounding_box=feature_builder.model.bounding_box,
149
149
  nelements=[feature_builder.interpolator.n_elements]*3,
150
150
  name=feature_builder.name,
151
+ model=feature_builder.model,
151
152
  **kwargs
152
153
  )
153
154
  builder.add_data_from_data_frame(feature_builder.data)
@@ -19,7 +19,24 @@ class FoldFrame(StructuralFrame):
19
19
  features
20
20
  """
21
21
  super().__init__(name, features, fold, model)
22
+ @classmethod
23
+ def from_structural_frame(cls, frame, fold=None):
24
+ """
25
+ Create a FoldFrame from an existing StructuralFrame
26
+
27
+ Parameters
28
+ ----------
29
+ frame - StructuralFrame
30
+ the structural frame to convert to a fold frame
31
+ fold - FoldEvent, optional
32
+ the fold event to associate with the fold frame
22
33
 
34
+ Returns
35
+ -------
36
+ FoldFrame
37
+ the new fold frame
38
+ """
39
+ return cls(frame.name, frame.features, fold, frame.model)
23
40
  def calculate_fold_axis_rotation(self, feature_builder, fold_axis=None):
24
41
  """
25
42
  Calculate the fold axis rotation angle by finding the angle between the
@@ -0,0 +1 @@
1
+ __version__ = "1.6.22"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: LoopStructural
3
- Version: 1.6.20
3
+ Version: 1.6.22
4
4
  Summary: 3D geological modelling
5
5
  Author-email: Lachlan Grose <lachlan.grose@monash.edu>
6
6
  License: MIT
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: LoopStructural
3
- Version: 1.6.20
3
+ Version: 1.6.22
4
4
  Summary: 3D geological modelling
5
5
  Author-email: Lachlan Grose <lachlan.grose@monash.edu>
6
6
  License: MIT
@@ -1 +0,0 @@
1
- __version__ = "1.6.20"
File without changes