LoopStructural 1.6.19__py3-none-any.whl → 1.6.20__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.
- LoopStructural/interpolators/_p1interpolator.py +3 -2
- LoopStructural/interpolators/_p2interpolator.py +2 -1
- LoopStructural/modelling/core/geological_model.py +29 -28
- LoopStructural/modelling/features/_base_geological_feature.py +2 -1
- LoopStructural/modelling/features/_feature_converters.py +24 -1
- LoopStructural/modelling/features/_structural_frame.py +2 -6
- LoopStructural/modelling/features/builders/_folded_feature_builder.py +6 -3
- LoopStructural/modelling/features/builders/_structural_frame_builder.py +33 -0
- LoopStructural/modelling/features/fold/__init__.py +0 -1
- LoopStructural/version.py +1 -1
- {loopstructural-1.6.19.dist-info → loopstructural-1.6.20.dist-info}/METADATA +1 -1
- {loopstructural-1.6.19.dist-info → loopstructural-1.6.20.dist-info}/RECORD +15 -15
- {loopstructural-1.6.19.dist-info → loopstructural-1.6.20.dist-info}/WHEEL +0 -0
- {loopstructural-1.6.19.dist-info → loopstructural-1.6.20.dist-info}/licenses/LICENSE +0 -0
- {loopstructural-1.6.19.dist-info → loopstructural-1.6.20.dist-info}/top_level.txt +0 -0
|
@@ -6,8 +6,9 @@ import logging
|
|
|
6
6
|
|
|
7
7
|
import numpy as np
|
|
8
8
|
|
|
9
|
-
from ._discrete_interpolator import DiscreteInterpolator
|
|
10
9
|
|
|
10
|
+
from ._discrete_interpolator import DiscreteInterpolator
|
|
11
|
+
from . import InterpolatorType
|
|
11
12
|
logger = logging.getLogger(__name__)
|
|
12
13
|
|
|
13
14
|
|
|
@@ -37,7 +38,7 @@ class P1Interpolator(DiscreteInterpolator):
|
|
|
37
38
|
"tpw": 1.0,
|
|
38
39
|
"ipw": 1.0,
|
|
39
40
|
}
|
|
40
|
-
|
|
41
|
+
self.type = InterpolatorType.PIECEWISE_LINEAR
|
|
41
42
|
def add_gradient_constraints(self, w=1.0):
|
|
42
43
|
pass
|
|
43
44
|
|
|
@@ -8,6 +8,7 @@ from typing import Optional, Callable
|
|
|
8
8
|
import numpy as np
|
|
9
9
|
|
|
10
10
|
from ..interpolators import DiscreteInterpolator
|
|
11
|
+
from . import InterpolatorType
|
|
11
12
|
|
|
12
13
|
logger = logging.getLogger(__name__)
|
|
13
14
|
|
|
@@ -41,7 +42,7 @@ class P2Interpolator(DiscreteInterpolator):
|
|
|
41
42
|
"tpw": 1.0,
|
|
42
43
|
"ipw": 1.0,
|
|
43
44
|
}
|
|
44
|
-
|
|
45
|
+
self.type = InterpolatorType.PIECEWISE_QUADRATIC
|
|
45
46
|
def setup_interpolator(self, **kwargs):
|
|
46
47
|
"""
|
|
47
48
|
Searches through kwargs for any interpolation weights and updates
|
|
@@ -21,6 +21,7 @@ from ...modelling.features import (
|
|
|
21
21
|
UnconformityFeature,
|
|
22
22
|
StructuralFrame,
|
|
23
23
|
GeologicalFeature,
|
|
24
|
+
BaseFeature,
|
|
24
25
|
FeatureType,
|
|
25
26
|
)
|
|
26
27
|
from ...modelling.features.fold import (
|
|
@@ -341,7 +342,7 @@ class GeologicalModel:
|
|
|
341
342
|
feature : GeologicalFeature
|
|
342
343
|
the geological feature to set
|
|
343
344
|
"""
|
|
344
|
-
if not
|
|
345
|
+
if not issubclass(type(feature), BaseFeature):
|
|
345
346
|
raise TypeError("feature must be a GeologicalFeature")
|
|
346
347
|
if feature.name != feature_name:
|
|
347
348
|
raise ValueError("feature name does not match key")
|
|
@@ -616,7 +617,7 @@ class GeologicalModel:
|
|
|
616
617
|
series_surface_name: str,
|
|
617
618
|
*,
|
|
618
619
|
index: Optional[int] = None,
|
|
619
|
-
|
|
620
|
+
data: Optional[pd.DataFrame] = None,
|
|
620
621
|
interpolatortype: str = "FDI",
|
|
621
622
|
nelements: int = LoopStructuralConfig.nelements,
|
|
622
623
|
tol=None,
|
|
@@ -671,13 +672,13 @@ class GeologicalModel:
|
|
|
671
672
|
**kwargs,
|
|
672
673
|
)
|
|
673
674
|
# add data
|
|
674
|
-
if
|
|
675
|
-
|
|
675
|
+
if data is None:
|
|
676
|
+
data = self.data.loc[self.data["feature_name"] == series_surface_name]
|
|
676
677
|
|
|
677
|
-
if
|
|
678
|
+
if data.shape[0] == 0:
|
|
678
679
|
logger.warning("No data for {series_surface_data}, skipping")
|
|
679
680
|
return
|
|
680
|
-
series_builder.add_data_from_data_frame(self.prepare_data(
|
|
681
|
+
series_builder.add_data_from_data_frame(self.prepare_data(data))
|
|
681
682
|
self._add_faults(series_builder, features=faults)
|
|
682
683
|
|
|
683
684
|
# build feature
|
|
@@ -696,7 +697,7 @@ class GeologicalModel:
|
|
|
696
697
|
fold_frame_name: str,
|
|
697
698
|
*,
|
|
698
699
|
index: Optional[int] = None,
|
|
699
|
-
|
|
700
|
+
data=None,
|
|
700
701
|
interpolatortype="FDI",
|
|
701
702
|
nelements=LoopStructuralConfig.nelements,
|
|
702
703
|
tol=None,
|
|
@@ -746,12 +747,12 @@ class GeologicalModel:
|
|
|
746
747
|
**kwargs,
|
|
747
748
|
)
|
|
748
749
|
# add data
|
|
749
|
-
if
|
|
750
|
-
|
|
751
|
-
if
|
|
750
|
+
if data is None:
|
|
751
|
+
data = self.data.loc[self.data["feature_name"] == fold_frame_name]
|
|
752
|
+
if data.shape[0] == 0:
|
|
752
753
|
logger.warning(f"No data for {fold_frame_name}, skipping")
|
|
753
754
|
return
|
|
754
|
-
fold_frame_builder.add_data_from_data_frame(self.prepare_data(
|
|
755
|
+
fold_frame_builder.add_data_from_data_frame(self.prepare_data(data))
|
|
755
756
|
self._add_faults(fold_frame_builder[0])
|
|
756
757
|
self._add_faults(fold_frame_builder[1])
|
|
757
758
|
self._add_faults(fold_frame_builder[2])
|
|
@@ -770,7 +771,7 @@ class GeologicalModel:
|
|
|
770
771
|
foliation_name,
|
|
771
772
|
*,
|
|
772
773
|
index: Optional[int] = None,
|
|
773
|
-
|
|
774
|
+
data=None,
|
|
774
775
|
interpolatortype="DFI",
|
|
775
776
|
nelements=LoopStructuralConfig.nelements,
|
|
776
777
|
buffer=0.1,
|
|
@@ -816,7 +817,7 @@ class GeologicalModel:
|
|
|
816
817
|
fold_frame = self.features[-1]
|
|
817
818
|
assert isinstance(fold_frame, FoldFrame), "Please specify a FoldFrame"
|
|
818
819
|
|
|
819
|
-
fold = FoldEvent(fold_frame, name=f"Fold_{
|
|
820
|
+
fold = FoldEvent(fold_frame, name=f"Fold_{foliation_name}", invert_norm=invert_fold_norm)
|
|
820
821
|
|
|
821
822
|
if interpolatortype != "DFI":
|
|
822
823
|
logger.warning("Folded foliation only supports DFI interpolator, changing to DFI")
|
|
@@ -831,12 +832,12 @@ class GeologicalModel:
|
|
|
831
832
|
model=self,
|
|
832
833
|
**kwargs,
|
|
833
834
|
)
|
|
834
|
-
if
|
|
835
|
-
|
|
836
|
-
if
|
|
835
|
+
if data is None:
|
|
836
|
+
data = self.data.loc[self.data["feature_name"] == foliation_name]
|
|
837
|
+
if data.shape[0] == 0:
|
|
837
838
|
logger.warning(f"No data for {foliation_name}, skipping")
|
|
838
839
|
return
|
|
839
|
-
series_builder.add_data_from_data_frame(self.prepare_data(
|
|
840
|
+
series_builder.add_data_from_data_frame(self.prepare_data(data))
|
|
840
841
|
|
|
841
842
|
self._add_faults(series_builder)
|
|
842
843
|
# series_builder.add_data_to_interpolator(True)
|
|
@@ -847,7 +848,7 @@ class GeologicalModel:
|
|
|
847
848
|
# series_feature = series_builder.build(**kwargs)
|
|
848
849
|
series_feature = series_builder.feature
|
|
849
850
|
series_builder.update_build_arguments(kwargs)
|
|
850
|
-
series_feature.type = FeatureType.
|
|
851
|
+
series_feature.type = FeatureType.FOLDED
|
|
851
852
|
series_feature.fold = fold
|
|
852
853
|
|
|
853
854
|
self._add_feature(series_feature,index)
|
|
@@ -858,7 +859,7 @@ class GeologicalModel:
|
|
|
858
859
|
fold_frame_name: str,
|
|
859
860
|
*,
|
|
860
861
|
index: Optional[int] = None,
|
|
861
|
-
|
|
862
|
+
data: Optional[pd.DataFrame] = None,
|
|
862
863
|
interpolatortype="FDI",
|
|
863
864
|
nelements=LoopStructuralConfig.nelements,
|
|
864
865
|
fold_frame=None,
|
|
@@ -913,7 +914,7 @@ class GeologicalModel:
|
|
|
913
914
|
logger.info("Using last feature as fold frame")
|
|
914
915
|
fold_frame = self.features[-1]
|
|
915
916
|
assert isinstance(fold_frame, FoldFrame), "Please specify a FoldFrame"
|
|
916
|
-
fold = FoldEvent(fold_frame, name=f"Fold_{
|
|
917
|
+
fold = FoldEvent(fold_frame, name=f"Fold_{fold_frame_name}")
|
|
917
918
|
|
|
918
919
|
interpolatortypes = [
|
|
919
920
|
"DFI",
|
|
@@ -930,9 +931,9 @@ class GeologicalModel:
|
|
|
930
931
|
model=self,
|
|
931
932
|
**kwargs,
|
|
932
933
|
)
|
|
933
|
-
if
|
|
934
|
-
|
|
935
|
-
fold_frame_builder.add_data_from_data_frame(self.prepare_data(
|
|
934
|
+
if data is None:
|
|
935
|
+
data = self.data[self.data["feature_name"] == fold_frame_name]
|
|
936
|
+
fold_frame_builder.add_data_from_data_frame(self.prepare_data(data))
|
|
936
937
|
|
|
937
938
|
for i in range(3):
|
|
938
939
|
self._add_faults(fold_frame_builder[i])
|
|
@@ -1293,7 +1294,7 @@ class GeologicalModel:
|
|
|
1293
1294
|
displacement: float,
|
|
1294
1295
|
*,
|
|
1295
1296
|
index: Optional[int] = None,
|
|
1296
|
-
|
|
1297
|
+
data: Optional[pd.DataFrame] = None,
|
|
1297
1298
|
interpolatortype="FDI",
|
|
1298
1299
|
tol=None,
|
|
1299
1300
|
fault_slip_vector=None,
|
|
@@ -1387,9 +1388,9 @@ class GeologicalModel:
|
|
|
1387
1388
|
model=self,
|
|
1388
1389
|
**kwargs,
|
|
1389
1390
|
)
|
|
1390
|
-
if
|
|
1391
|
-
|
|
1392
|
-
if
|
|
1391
|
+
if data is None:
|
|
1392
|
+
data = self.data.loc[self.data["feature_name"] == fault_name]
|
|
1393
|
+
if data.shape[0] == 0:
|
|
1393
1394
|
logger.warning(f"No data for {fault_name}, skipping")
|
|
1394
1395
|
return
|
|
1395
1396
|
|
|
@@ -1405,7 +1406,7 @@ class GeologicalModel:
|
|
|
1405
1406
|
if intermediate_axis:
|
|
1406
1407
|
intermediate_axis = intermediate_axis
|
|
1407
1408
|
fault_frame_builder.create_data_from_geometry(
|
|
1408
|
-
fault_frame_data=self.prepare_data(
|
|
1409
|
+
fault_frame_data=self.prepare_data(data),
|
|
1409
1410
|
fault_center=fault_center,
|
|
1410
1411
|
fault_normal_vector=fault_normal_vector,
|
|
1411
1412
|
fault_slip_vector=fault_slip_vector,
|
|
@@ -271,7 +271,7 @@ class BaseFeature(metaclass=ABCMeta):
|
|
|
271
271
|
|
|
272
272
|
def surfaces(
|
|
273
273
|
self,
|
|
274
|
-
value: Union[float, int, List[Union[float, int]]],
|
|
274
|
+
value: Optional[Union[float, int, List[Union[float, int]]]] = None,
|
|
275
275
|
bounding_box=None,
|
|
276
276
|
name: Optional[Union[List[str], str]] = None,
|
|
277
277
|
colours: Optional[Union[str, np.ndarray]] = None,
|
|
@@ -293,6 +293,7 @@ class BaseFeature(metaclass=ABCMeta):
|
|
|
293
293
|
raise ValueError("Must specify bounding box")
|
|
294
294
|
bounding_box = self.model.bounding_box
|
|
295
295
|
regions = self.regions
|
|
296
|
+
|
|
296
297
|
try:
|
|
297
298
|
self.regions = [
|
|
298
299
|
r for r in self.regions if r.name != self.name and r.parent.name != self.name
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
from LoopStructural.modelling.features.fold import FoldEvent
|
|
2
|
-
from LoopStructural.modelling.features.builders import FoldedFeatureBuilder
|
|
2
|
+
from LoopStructural.modelling.features.builders import FoldedFeatureBuilder, StructuralFrameBuilder
|
|
3
3
|
def add_fold_to_feature(feature, fold_frame,**kwargs):
|
|
4
4
|
fold = FoldEvent(fold_frame, name=f"Fold_{feature.name}", invert_norm=kwargs.get('invert_fold_norm', False))
|
|
5
5
|
|
|
@@ -11,3 +11,26 @@ def add_fold_to_feature(feature, fold_frame,**kwargs):
|
|
|
11
11
|
feature = builder.feature
|
|
12
12
|
feature.fold = fold
|
|
13
13
|
return feature
|
|
14
|
+
|
|
15
|
+
def convert_feature_to_structural_frame(feature, **kwargs):
|
|
16
|
+
"""
|
|
17
|
+
Convert a geological feature to a structural frame by adding the feature to the frame
|
|
18
|
+
|
|
19
|
+
Parameters
|
|
20
|
+
----------
|
|
21
|
+
feature : GeologicalFeature
|
|
22
|
+
the geological feature to convert
|
|
23
|
+
|
|
24
|
+
Returns
|
|
25
|
+
-------
|
|
26
|
+
StructuralFrame
|
|
27
|
+
the updated structural frame with the feature added
|
|
28
|
+
"""
|
|
29
|
+
builder = feature.builder
|
|
30
|
+
|
|
31
|
+
new_builder = StructuralFrameBuilder.from_feature_builder(
|
|
32
|
+
builder,
|
|
33
|
+
**kwargs
|
|
34
|
+
)
|
|
35
|
+
return new_builder.frame
|
|
36
|
+
|
|
@@ -134,7 +134,7 @@ class StructuralFrame(BaseFeature):
|
|
|
134
134
|
v[:, 0] = self.features[0].evaluate_value(pos, ignore_regions=ignore_regions)
|
|
135
135
|
v[:, 1] = self.features[1].evaluate_value(pos, ignore_regions=ignore_regions)
|
|
136
136
|
v[:, 2] = self.features[2].evaluate_value(pos, ignore_regions=ignore_regions)
|
|
137
|
-
return v
|
|
137
|
+
return v[:,0]
|
|
138
138
|
|
|
139
139
|
def evaluate_gradient(self, pos, i=None, ignore_regions=False):
|
|
140
140
|
"""
|
|
@@ -152,11 +152,7 @@ class StructuralFrame(BaseFeature):
|
|
|
152
152
|
"""
|
|
153
153
|
if i is not None:
|
|
154
154
|
return self.features[i].support.evaluate_gradient(pos, ignore_regions=ignore_regions)
|
|
155
|
-
return (
|
|
156
|
-
self.features[0].support.evaluate_gradient(pos, ignore_regions=ignore_regions),
|
|
157
|
-
self.features[1].support.evaluate_gradient(pos, ignore_regions=ignore_regions),
|
|
158
|
-
self.features[2].support.evaluate_gradient(pos, ignore_regions=ignore_regions),
|
|
159
|
-
)
|
|
155
|
+
return self.features[0].support.evaluate_gradient(pos, ignore_regions=ignore_regions)
|
|
160
156
|
|
|
161
157
|
def get_data(self, value_map: Optional[dict] = None) -> List[Union[ValuePoints, VectorPoints]]:
|
|
162
158
|
"""Return the data associated with the features in the
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from ....modelling.features.builders import GeologicalFeatureBuilder
|
|
2
2
|
from ....modelling.features.fold.fold_function import FoldRotationType, get_fold_rotation_profile
|
|
3
|
+
from ....modelling.features import FeatureType
|
|
3
4
|
import numpy as np
|
|
4
5
|
|
|
5
6
|
from ....utils import getLogger, InterpolatorError
|
|
@@ -48,11 +49,13 @@ class FoldedFeatureBuilder(GeologicalFeatureBuilder):
|
|
|
48
49
|
region=region,
|
|
49
50
|
**kwargs,
|
|
50
51
|
)
|
|
52
|
+
self._feature.type = FeatureType.FOLDED
|
|
51
53
|
# link the interpolator to the fold object
|
|
52
54
|
self.interpolator.fold = fold
|
|
53
55
|
self.fold = fold
|
|
54
56
|
self.fold_weights = fold_weights
|
|
55
|
-
self.kwargs
|
|
57
|
+
self.update_build_arguments(kwargs)
|
|
58
|
+
# self.kwargs = kwargs
|
|
56
59
|
self.svario = svario
|
|
57
60
|
self.axis_profile_type = axis_profile_type
|
|
58
61
|
self.limb_profile_type = limb_profile_type
|
|
@@ -87,7 +90,7 @@ class FoldedFeatureBuilder(GeologicalFeatureBuilder):
|
|
|
87
90
|
|
|
88
91
|
def set_fold_axis(self):
|
|
89
92
|
"""calculates the fold axis/ fold axis rotation and adds this to the fold"""
|
|
90
|
-
kwargs = self.
|
|
93
|
+
kwargs = self.build_arguments
|
|
91
94
|
fold_axis = kwargs.get("fold_axis", None)
|
|
92
95
|
if fold_axis is not None:
|
|
93
96
|
fold_axis = np.array(fold_axis)
|
|
@@ -112,7 +115,7 @@ class FoldedFeatureBuilder(GeologicalFeatureBuilder):
|
|
|
112
115
|
|
|
113
116
|
def set_fold_limb_rotation(self):
|
|
114
117
|
"""Calculates the limb rotation of the fold and adds it to the fold object"""
|
|
115
|
-
kwargs = self.
|
|
118
|
+
kwargs = self.build_arguments
|
|
116
119
|
# need to calculate the fold axis before the fold limb rotation angle
|
|
117
120
|
if self.fold.fold_axis is None:
|
|
118
121
|
self.set_fold_axis()
|
|
@@ -7,6 +7,7 @@ from typing import Union
|
|
|
7
7
|
from LoopStructural.utils.exceptions import LoopException
|
|
8
8
|
|
|
9
9
|
import numpy as np
|
|
10
|
+
import copy
|
|
10
11
|
|
|
11
12
|
from ....utils import getLogger
|
|
12
13
|
from ....datatypes import BoundingBox
|
|
@@ -120,6 +121,38 @@ class StructuralFrameBuilder:
|
|
|
120
121
|
model=self.model,
|
|
121
122
|
)
|
|
122
123
|
self._frame.builder = self
|
|
124
|
+
|
|
125
|
+
@classmethod
|
|
126
|
+
def from_feature_builder(cls, feature_builder, **kwargs):
|
|
127
|
+
"""
|
|
128
|
+
Create a structural frame builder from an existing feature builder
|
|
129
|
+
|
|
130
|
+
Parameters
|
|
131
|
+
----------
|
|
132
|
+
feature_builder - a geological feature builder
|
|
133
|
+
kwargs
|
|
134
|
+
|
|
135
|
+
Returns
|
|
136
|
+
-------
|
|
137
|
+
|
|
138
|
+
"""
|
|
139
|
+
if not isinstance(feature_builder, GeologicalFeatureBuilder):
|
|
140
|
+
raise LoopException(
|
|
141
|
+
f"feature_builder is {type(feature_builder)} and must be a GeologicalFeatureBuilder"
|
|
142
|
+
)
|
|
143
|
+
if hasattr(feature_builder, 'fold'):
|
|
144
|
+
logger.warning("feature builder has a fold - using this to create a folded frame")
|
|
145
|
+
kwargs['fold'] = copy.deepcopy(feature_builder.fold)
|
|
146
|
+
builder = cls(
|
|
147
|
+
interpolatortype=[feature_builder.interpolator.type]*3,
|
|
148
|
+
bounding_box=feature_builder.model.bounding_box,
|
|
149
|
+
nelements=[feature_builder.interpolator.n_elements]*3,
|
|
150
|
+
name=feature_builder.name,
|
|
151
|
+
**kwargs
|
|
152
|
+
)
|
|
153
|
+
builder.add_data_from_data_frame(feature_builder.data)
|
|
154
|
+
return builder
|
|
155
|
+
|
|
123
156
|
@property
|
|
124
157
|
def build_arguments(self):
|
|
125
158
|
return self.builders[0].build_arguments
|
LoopStructural/version.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "1.6.
|
|
1
|
+
__version__ = "1.6.20"
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
LoopStructural/__init__.py,sha256=9tewNqv_9i7vUYMb1srpOWpf65W-moA2HvrQa9gyafA,2241
|
|
2
|
-
LoopStructural/version.py,sha256=
|
|
2
|
+
LoopStructural/version.py,sha256=d5oU8Ps6zEkGrR04CFBTRON1Yn4q4FgfElf4dVF75XY,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
|
|
@@ -50,8 +50,8 @@ LoopStructural/interpolators/_interpolator_builder.py,sha256=Z8bhmco5aSQX19A8It2
|
|
|
50
50
|
LoopStructural/interpolators/_interpolator_factory.py,sha256=fbjebXSe5IgTol1tnBlnsw9gD426v-TGkX3gquIg7LI,2782
|
|
51
51
|
LoopStructural/interpolators/_interpolatortype.py,sha256=q8U9JGyFpO2FBA9XsMI5ojv3TV1LYqyvYHzLAbHcj9A,593
|
|
52
52
|
LoopStructural/interpolators/_operator.py,sha256=PZOUzq9OMaJdG151dSLIo7AxRuhTj6-zEAzFZo-EOJU,1114
|
|
53
|
-
LoopStructural/interpolators/_p1interpolator.py,sha256=
|
|
54
|
-
LoopStructural/interpolators/_p2interpolator.py,sha256=
|
|
53
|
+
LoopStructural/interpolators/_p1interpolator.py,sha256=1G77G91hNPSSOAjUK_1Md5vbfHkjUbBL5ZtphBsRMc4,9039
|
|
54
|
+
LoopStructural/interpolators/_p2interpolator.py,sha256=4TT5i1bRrZDjdkg28_z_gGcVnWYnGDSBav1Yr6MIFBI,10361
|
|
55
55
|
LoopStructural/interpolators/_surfe_wrapper.py,sha256=BwHOR2aV-SZU0IgcN03iZT_T-Z5EVXjDQ7Pr-a6t4uI,6932
|
|
56
56
|
LoopStructural/interpolators/_cython/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
57
57
|
LoopStructural/interpolators/supports/_2d_base_unstructured.py,sha256=1bOP-BZk1AcBSVRh2IVPCpKSYibwgzbnlC_2xX0xBGA,11879
|
|
@@ -72,30 +72,30 @@ LoopStructural/interpolators/supports/_support_factory.py,sha256=XNAxnr-JS3KEhds
|
|
|
72
72
|
LoopStructural/modelling/__init__.py,sha256=a-bq2gDhyUlcky5l9kl_IP3ExMdohkgYjQz2V8madQE,902
|
|
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
|
-
LoopStructural/modelling/core/geological_model.py,sha256=
|
|
75
|
+
LoopStructural/modelling/core/geological_model.py,sha256=65iLvmBH4YzRkaa2IUX1nrJ5Ebp_RWrgSMwY0CI63No,67171
|
|
76
76
|
LoopStructural/modelling/core/stratigraphic_column.py,sha256=lOQb3zWS6EEqSzCMZsy9Q9ncFFkIku_lNjgpHtD7zCs,21860
|
|
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
|
-
LoopStructural/modelling/features/_base_geological_feature.py,sha256=
|
|
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=
|
|
81
|
+
LoopStructural/modelling/features/_feature_converters.py,sha256=UPpmElg8K4CY4_9t72aXpLNK0Qt2nY5ABvTdWYcsX5o,1071
|
|
82
82
|
LoopStructural/modelling/features/_geological_feature.py,sha256=V5Ars8utx-AsEPVgMsoMzHFREeIByodzPPdEwblPGbo,11283
|
|
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
|
|
86
|
-
LoopStructural/modelling/features/_structural_frame.py,sha256=
|
|
86
|
+
LoopStructural/modelling/features/_structural_frame.py,sha256=0FA_HxOFnxmEuU9fwvDCZ4kjsQoKGC_IeRGDp-AnFso,4852
|
|
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
90
|
LoopStructural/modelling/features/builders/_fault_builder.py,sha256=_DZ0Hy_-jjm2fFU-5lY60zGisixdUWbAjsOQzMFKigY,25359
|
|
91
|
-
LoopStructural/modelling/features/builders/_folded_feature_builder.py,sha256=
|
|
91
|
+
LoopStructural/modelling/features/builders/_folded_feature_builder.py,sha256=sbyTI3McT1UBgTc1TPOrU4ggwcGYBGlCEzVk4stlGbs,7536
|
|
92
92
|
LoopStructural/modelling/features/builders/_geological_feature_builder.py,sha256=7XhgwPXQZkky4Gnr4Q3t95YlDdtJ6mjBk7dsjzXB2QI,22236
|
|
93
|
-
LoopStructural/modelling/features/builders/_structural_frame_builder.py,sha256=
|
|
93
|
+
LoopStructural/modelling/features/builders/_structural_frame_builder.py,sha256=xWlCybV3Av2JBEk6Y-HRKbSggxUKlUsmfiULaUEBICo,9153
|
|
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
|
|
97
97
|
LoopStructural/modelling/features/fault/_fault_segment.py,sha256=BEIVAY_-iQYYuoyIj1doq_cDLgmMpY0PDYBiuBXOjN8,18309
|
|
98
|
-
LoopStructural/modelling/features/fold/__init__.py,sha256=
|
|
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
101
|
LoopStructural/modelling/features/fold/_foldframe.py,sha256=Rgf5aofN0OVDTZ2pzqLzAGlJUO2rnNm3aFvLSnH77yo,7669
|
|
@@ -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.
|
|
139
|
-
loopstructural-1.6.
|
|
140
|
-
loopstructural-1.6.
|
|
141
|
-
loopstructural-1.6.
|
|
142
|
-
loopstructural-1.6.
|
|
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,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|