LoopStructural 1.6.20__py3-none-any.whl → 1.6.22__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.

@@ -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
LoopStructural/version.py CHANGED
@@ -1 +1 @@
1
- __version__ = "1.6.20"
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,5 +1,5 @@
1
1
  LoopStructural/__init__.py,sha256=9tewNqv_9i7vUYMb1srpOWpf65W-moA2HvrQa9gyafA,2241
2
- LoopStructural/version.py,sha256=d5oU8Ps6zEkGrR04CFBTRON1Yn4q4FgfElf4dVF75XY,23
2
+ LoopStructural/version.py,sha256=qxWPNp-fYi9fYiQ95Ac8I6lS8h5LhN7ajZKcbEdyUcg,23
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
@@ -73,13 +73,13 @@ LoopStructural/modelling/__init__.py,sha256=a-bq2gDhyUlcky5l9kl_IP3ExMdohkgYjQz2
73
73
  LoopStructural/modelling/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
74
74
  LoopStructural/modelling/core/fault_topology.py,sha256=bChp5dnfc-4GJRENWxB14mEW_13uBMh5ZYRKbLdjweE,11195
75
75
  LoopStructural/modelling/core/geological_model.py,sha256=65iLvmBH4YzRkaa2IUX1nrJ5Ebp_RWrgSMwY0CI63No,67171
76
- LoopStructural/modelling/core/stratigraphic_column.py,sha256=lOQb3zWS6EEqSzCMZsy9Q9ncFFkIku_lNjgpHtD7zCs,21860
76
+ LoopStructural/modelling/core/stratigraphic_column.py,sha256=XDvi1KV9Jvw-bufRCtbZnVle_kYQuz_OqyzAps6y-WQ,21851
77
77
  LoopStructural/modelling/features/__init__.py,sha256=Vf-qd5EDBtJ1DpuXXyCcw2-wf6LWPRW5wzxDEO3vOc8,939
78
78
  LoopStructural/modelling/features/_analytical_feature.py,sha256=U_g86LgQhYY2359rdsDqpvziYwqrWkc5EdvhJARiUWo,3597
79
79
  LoopStructural/modelling/features/_base_geological_feature.py,sha256=otphU5IrJ5ES3b_r0m2bszj7urOvzaIoVPwKjNqJAI0,13509
80
80
  LoopStructural/modelling/features/_cross_product_geological_feature.py,sha256=GIyCHUdE6F-bse2e4puG9V2f7qRtDVfby5PRe2BboD4,3021
81
- LoopStructural/modelling/features/_feature_converters.py,sha256=UPpmElg8K4CY4_9t72aXpLNK0Qt2nY5ABvTdWYcsX5o,1071
82
- LoopStructural/modelling/features/_geological_feature.py,sha256=V5Ars8utx-AsEPVgMsoMzHFREeIByodzPPdEwblPGbo,11283
81
+ LoopStructural/modelling/features/_feature_converters.py,sha256=gxcCEuUlWmkxXeiBSFMUVRZN6zg94AC1gEZ3YHE95qo,1205
82
+ LoopStructural/modelling/features/_geological_feature.py,sha256=TxcaiiaJqayl8wH7UbcqAxaYvSwph_ACVAjAHkY3uOE,11930
83
83
  LoopStructural/modelling/features/_lambda_geological_feature.py,sha256=GiB19l6v5WvvR8CitATZvCwaOfRyLuzchoXzpNupsfM,5743
84
84
  LoopStructural/modelling/features/_projected_vector_feature.py,sha256=aifVLgn2spmK7GGlO0iHDewf1pFL-QoRzZEePTZwX1s,3017
85
85
  LoopStructural/modelling/features/_region.py,sha256=TB4qnoTDQM2VgRjgyODN839fKe3kuRYLllJj0xnDKXo,478
@@ -87,10 +87,10 @@ LoopStructural/modelling/features/_structural_frame.py,sha256=0FA_HxOFnxmEuU9fwv
87
87
  LoopStructural/modelling/features/_unconformity_feature.py,sha256=2Bx0BI38YLdcNvDWuP9E1pKFN4orEUq9aC8b5xG1UVk,2362
88
88
  LoopStructural/modelling/features/builders/__init__.py,sha256=Gqld1C-PcaXfJ8vpkWMDCmehmd3hZNYQk1knPtl59Bk,266
89
89
  LoopStructural/modelling/features/builders/_base_builder.py,sha256=N3txGC98V08A8-k2TLdoIWgWLfblZ91kaTvciPq_QVM,3750
90
- LoopStructural/modelling/features/builders/_fault_builder.py,sha256=_DZ0Hy_-jjm2fFU-5lY60zGisixdUWbAjsOQzMFKigY,25359
90
+ LoopStructural/modelling/features/builders/_fault_builder.py,sha256=aygkXjyeZEBNl8EjRtXbB3fqelo8A5cIIQmVS30gsDQ,25356
91
91
  LoopStructural/modelling/features/builders/_folded_feature_builder.py,sha256=sbyTI3McT1UBgTc1TPOrU4ggwcGYBGlCEzVk4stlGbs,7536
92
- LoopStructural/modelling/features/builders/_geological_feature_builder.py,sha256=7XhgwPXQZkky4Gnr4Q3t95YlDdtJ6mjBk7dsjzXB2QI,22236
93
- LoopStructural/modelling/features/builders/_structural_frame_builder.py,sha256=xWlCybV3Av2JBEk6Y-HRKbSggxUKlUsmfiULaUEBICo,9153
92
+ LoopStructural/modelling/features/builders/_geological_feature_builder.py,sha256=NMdtXXOR_mCBU_9LinmW76au_JBD98IWQo7Z6vBGHBI,22782
93
+ LoopStructural/modelling/features/builders/_structural_frame_builder.py,sha256=nPZWrN7D5hpVYWZpxpqe5F9Qzxj7zuLjefyU8pzrcb8,9194
94
94
  LoopStructural/modelling/features/fault/__init__.py,sha256=4u0KfYzmoO-ddFGo9qd9ov0gBoLqBiPAUsaw5zhEOAQ,189
95
95
  LoopStructural/modelling/features/fault/_fault_function.py,sha256=QEPh2jIvgD68hEJc5SM5xuMzZw-93V1me1ZbK9G2TB0,12655
96
96
  LoopStructural/modelling/features/fault/_fault_function_feature.py,sha256=4m0jVNx7ewrVI0pECI1wNciv8Cy8FzhZrYDjKJ_e2GU,2558
@@ -98,7 +98,7 @@ LoopStructural/modelling/features/fault/_fault_segment.py,sha256=BEIVAY_-iQYYuoy
98
98
  LoopStructural/modelling/features/fold/__init__.py,sha256=hQNj267TyFTJD1_Pu6XyjogSTrcJ-TSPQdWnMCDbSLo,175
99
99
  LoopStructural/modelling/features/fold/_fold.py,sha256=bPnnLUSiF4uoMRg8aHoOSTPRgaM0JyLoRQPu5_A-J3w,5448
100
100
  LoopStructural/modelling/features/fold/_fold_rotation_angle_feature.py,sha256=CXLbFRQ3CrTMAcHmfdbKcmSvvLs9_6TLe0Wqi1pK2tg,892
101
- LoopStructural/modelling/features/fold/_foldframe.py,sha256=Rgf5aofN0OVDTZ2pzqLzAGlJUO2rnNm3aFvLSnH77yo,7669
101
+ LoopStructural/modelling/features/fold/_foldframe.py,sha256=-Z9wowx3-7MqbIwxgIr8u1QdgV465FShKIen089lJfY,8197
102
102
  LoopStructural/modelling/features/fold/_svariogram.py,sha256=uLeBWZahEmystf8mpPJH_zKxp7hPyPJh0H5ROZO0pZs,7933
103
103
  LoopStructural/modelling/features/fold/fold_function/__init__.py,sha256=VqMjabsBd5GnPnDMXeKwXqtd0te2iXnvHxpf6jCC9YU,830
104
104
  LoopStructural/modelling/features/fold/fold_function/_base_fold_rotation_angle.py,sha256=5Bu_5xjyu4KL7thZ4fsh938Ep3Oyh5TL7_rfz_13Qng,8047
@@ -135,8 +135,8 @@ LoopStructural/utils/regions.py,sha256=SjCC40GI7_n03G4mlcmvyrBgJFbxnvB3leBzXWco3
135
135
  LoopStructural/utils/typing.py,sha256=29uVSTZdzXXH-jdlaYyBWZ1gQ2-nlZ2-XoVgG_PXNFY,157
136
136
  LoopStructural/utils/utils.py,sha256=2Z4zVE6G752-SPmM29zebk82bROJxEwi_YiiJjcVED4,2438
137
137
  LoopStructural/visualisation/__init__.py,sha256=5BDgKor8-ae6DrS7IZybJ3Wq_pTnCchxuY4EgzA7v1M,318
138
- loopstructural-1.6.20.dist-info/licenses/LICENSE,sha256=ZqGeNFOgmYevj7Ld7Q-kR4lAxWXuBRUdUmPC6XM_py8,1071
139
- loopstructural-1.6.20.dist-info/METADATA,sha256=WsPEAJMDXd0FITuc_laYIGCvPmBR6vZVvPT2X6pLhRA,6453
140
- loopstructural-1.6.20.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
141
- loopstructural-1.6.20.dist-info/top_level.txt,sha256=QtQErKzYHfg6ddxTQ1NyaTxXBVM6qAqrM_vxEPyXZLg,15
142
- loopstructural-1.6.20.dist-info/RECORD,,
138
+ loopstructural-1.6.22.dist-info/licenses/LICENSE,sha256=ZqGeNFOgmYevj7Ld7Q-kR4lAxWXuBRUdUmPC6XM_py8,1071
139
+ loopstructural-1.6.22.dist-info/METADATA,sha256=RVKWR8sMhpXPGFTwq_Yejm5W63T6wwICgVkwzLTlW2w,6453
140
+ loopstructural-1.6.22.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
141
+ loopstructural-1.6.22.dist-info/top_level.txt,sha256=QtQErKzYHfg6ddxTQ1NyaTxXBVM6qAqrM_vxEPyXZLg,15
142
+ loopstructural-1.6.22.dist-info/RECORD,,