4
4
5
5
import rogii_solo .well
6
6
from rogii_solo .base import ComplexObject , ObjectRepository
7
+ from rogii_solo .calculations .converters import meters_to_feet
8
+ from rogii_solo .calculations .enums import EMeasureUnits
7
9
from rogii_solo .horizon import Horizon
8
10
from rogii_solo .papi .client import PapiClient
9
11
from rogii_solo .papi .types import PapiAssembledSegments
10
12
from rogii_solo .types import DataList
11
13
from rogii_solo .types import Interpretation as InterpretationType
12
14
15
+ TVT_DATA_MAX_MD_STEP = 100000
16
+
13
17
14
18
class Interpretation (ComplexObject ):
15
19
def __init__ (self , papi_client : PapiClient , well : 'rogii_solo.well.Well' , ** kwargs ):
@@ -27,8 +31,6 @@ def __init__(self, papi_client: PapiClient, well: 'rogii_solo.well.Well', **kwar
27
31
28
32
self ._assembled_segments_data : Optional [PapiAssembledSegments ] = None
29
33
30
- self ._horizons_tvt_data : Optional [DataList ] = None
31
-
32
34
self ._horizons_data : Optional [DataList ] = None
33
35
self ._horizons : Optional [ObjectRepository [Horizon ]] = None
34
36
@@ -44,22 +46,38 @@ def to_df(self, get_converted: bool = True) -> InterpretationType:
44
46
'segments' : DataFrame (data ['segments' ]),
45
47
}
46
48
47
- def get_assembled_segments_data (self ) -> PapiAssembledSegments :
48
- if self ._assembled_segments_data is None :
49
- self ._assembled_segments_data = self ._papi_client .get_interpretation_assembled_segments_data (
50
- interpretation_id = self .uuid
51
- )
49
+ @property
50
+ def assembled_segments (self ):
51
+ if self ._assembled_segments_data is not None :
52
+ return {
53
+ 'horizons' : self ._assembled_segments_data ['horizons' ],
54
+ 'segments' : self ._assembled_segments_data ['segments' ]
55
+ }
52
56
53
- return self ._assembled_segments_data
57
+ self ._assembled_segments_data = self ._papi_client .get_interpretation_assembled_segments_data (
58
+ interpretation_id = self .uuid
59
+ )
54
60
55
- def get_horizons_tvt_data (self , md_step : int = 10 ) -> DataList :
56
- if self ._horizons_tvt_data is None :
57
- self ._horizons_tvt_data = self ._papi_client .get_horizons_tvt_data (
58
- interpretation_id = self .uuid ,
59
- md_step = md_step
60
- )
61
+ assembled_horizons_data = self ._assembled_segments_data ['horizons' ]
62
+ measure_units = self .well .project .measure_unit
61
63
62
- return self ._horizons_tvt_data
64
+ for horizon in self ._get_horizons_data ():
65
+ assembled_horizons_data [horizon ['uuid' ]]['name' ] = horizon ['name' ]
66
+ if measure_units != EMeasureUnits .METER :
67
+ assembled_horizons_data [horizon ['uuid' ]]['tvd' ] = meters_to_feet (
68
+ assembled_horizons_data [horizon ['uuid' ]]['tvd' ]
69
+ )
70
+
71
+ return {
72
+ 'horizons' : self ._assembled_segments_data ['horizons' ],
73
+ 'segments' : self ._assembled_segments_data ['segments' ]
74
+ }
75
+
76
+ def get_tvt_data (self , md_step : int = 1 ) -> DataList :
77
+ return self ._papi_client .get_interpretation_tvt_data (
78
+ interpretation_id = self .uuid ,
79
+ md_step = md_step
80
+ )
63
81
64
82
@property
65
83
def horizons (self ) -> ObjectRepository [Horizon ]:
@@ -77,11 +95,6 @@ def _get_horizons_data(self) -> DataList:
77
95
return self ._horizons_data
78
96
79
97
def _get_data (self ):
80
- assembled_segments = self .get_assembled_segments_data ()
81
-
82
- for horizon in self ._get_horizons_data ():
83
- assembled_segments ['horizons' ][horizon ['uuid' ]]['name' ] = horizon ['name' ]
84
-
85
98
meta = {
86
99
'uuid' : self .uuid ,
87
100
'name' : self .name ,
@@ -92,6 +105,6 @@ def _get_data(self):
92
105
93
106
return {
94
107
'meta' : meta ,
95
- 'horizons' : assembled_segments ['horizons' ],
96
- 'segments' : assembled_segments ['segments' ],
108
+ 'horizons' : self . assembled_segments ['horizons' ],
109
+ 'segments' : self . assembled_segments ['segments' ],
97
110
}
0 commit comments