def __init__(self, path=None, string=None): """ Parser of the cpt file. Parameters ---------- path: str Path to the *.gef file. string: str String version of the *.gef file. """ super().__init__(path=path, string=string) if not self.type == "cpt": raise ValueError("The selected gef file is not a cpt. " "Check the REPORTCODE or the PROCEDURECODE.") self.project_id = utils.parse_project_type(self._headers, "cpt") self.cone_id = utils.parse_cone_id(self._headers) self.cpt_class = utils.parse_cpt_class(self._headers) self.column_void = utils.parse_column_void(self._headers) self.nom_surface_area_cone_tip = utils.parse_measurement_var_as_float( self._headers, 1) self.nom_surface_area_friction_element = utils.parse_measurement_var_as_float( self._headers, 2) self.net_surface_area_quotient_of_the_cone_tip = ( utils.parse_measurement_var_as_float(self._headers, 3)) self.net_surface_area_quotient_of_the_friction_casing = ( utils.parse_measurement_var_as_float(self._headers, 4)) self.distance_between_cone_and_centre_of_friction_casing = ( utils.parse_measurement_var_as_float(self._headers, 5)) self.friction_present = utils.parse_measurement_var_as_float( self._headers, 6) self.ppt_u1_present = utils.parse_measurement_var_as_float( self._headers, 7) self.ppt_u2_present = utils.parse_measurement_var_as_float( self._headers, 8) self.ppt_u3_present = utils.parse_measurement_var_as_float( self._headers, 9) self.inclination_measurement_present = utils.parse_measurement_var_as_float( self._headers, 10) self.use_of_back_flow_compensator = utils.parse_measurement_var_as_float( self._headers, 11) self.type_of_cone_penetration_test = utils.parse_measurement_var_as_float( self._headers, 12) self.pre_excavated_depth = utils.parse_measurement_var_as_float( self._headers, 13) self.groundwater_level = utils.parse_measurement_var_as_float( self._headers, 14) self.water_depth_offshore_activities = utils.parse_measurement_var_as_float( self._headers, 15) self.end_depth_of_penetration_test = utils.parse_measurement_var_as_float( self._headers, 16) self.stop_criteria = utils.parse_measurement_var_as_float( self._headers, 17) self.zero_measurement_cone_before_penetration_test = ( utils.parse_measurement_var_as_float(self._headers, 20)) self.zero_measurement_cone_after_penetration_test = ( utils.parse_measurement_var_as_float(self._headers, 21)) self.zero_measurement_friction_before_penetration_test = ( utils.parse_measurement_var_as_float(self._headers, 22)) self.zero_measurement_friction_after_penetration_test = ( utils.parse_measurement_var_as_float(self._headers, 23)) self.zero_measurement_ppt_u1_before_penetration_test = ( utils.parse_measurement_var_as_float(self._headers, 24)) self.zero_measurement_ppt_u1_after_penetration_test = ( utils.parse_measurement_var_as_float(self._headers, 25)) self.zero_measurement_ppt_u2_before_penetration_test = ( utils.parse_measurement_var_as_float(self._headers, 26)) self.zero_measurement_ppt_u2_after_penetration_test = ( utils.parse_measurement_var_as_float(self._headers, 27)) self.zero_measurement_ppt_u3_before_penetration_test = ( utils.parse_measurement_var_as_float(self._headers, 28)) self.zero_measurement_ppt_u3_after_penetration_test = ( utils.parse_measurement_var_as_float(self._headers, 29)) self.zero_measurement_inclination_before_penetration_test = ( utils.parse_measurement_var_as_float(self._headers, 30)) self.zero_measurement_inclination_after_penetration_test = ( utils.parse_measurement_var_as_float(self._headers, 31)) self.zero_measurement_inclination_ns_before_penetration_test = ( utils.parse_measurement_var_as_float(self._headers, 32)) self.zero_measurement_inclination_ns_after_penetration_test = ( utils.parse_measurement_var_as_float(self._headers, 33)) self.zero_measurement_inclination_ew_before_penetration_test = ( utils.parse_measurement_var_as_float(self._headers, 34)) self.zero_measurement_inclination_ew_after_penetration_test = ( utils.parse_measurement_var_as_float(self._headers, 35)) self.mileage = utils.parse_measurement_var_as_float(self._headers, 41) column_names = determine_column_names(self._headers) self.df = ( self.parse_data(self._headers, self._data, column_names).lazy(). pipe(replace_column_void, self.column_void).pipe( correct_pre_excavated_depth, self.pre_excavated_depth).with_column( correct_depth_with_inclination(column_names)).select( # Remove None values since they throw an error [ expr for expr in [ pl.all().exclude(["depth", "friction_number"]), col("depth").abs(), calculate_friction_number(column_names), self.calculate_elevation_with_respect_to_nap( self.zid, self.height_system), ] if expr is not None ]).collect())
def __init__(self, header_s, data_s, zid, height_system): """ Parser of the cpt file. :param header_s: (str) Header of the file :param data_s: (str) Data of the file :param zid: (flt) Z attribute. """ self.type = "cpt" self.project_id = utils.parse_project_type(header_s, "cpt") self.cone_id = utils.parse_cone_id(header_s) self.cpt_class = utils.parse_cpt_class(header_s) self.column_void = utils.parse_column_void(header_s) self.nom_surface_area_cone_tip = utils.parse_measurement_var_as_float( header_s, 1 ) self.nom_surface_area_friction_element = utils.parse_measurement_var_as_float( header_s, 2 ) self.net_surface_area_quotient_of_the_cone_tip = utils.parse_measurement_var_as_float( header_s, 3 ) self.net_surface_area_quotient_of_the_friction_casing = utils.parse_measurement_var_as_float( header_s, 4 ) self.distance_between_cone_and_centre_of_friction_casing = utils.parse_measurement_var_as_float( header_s, 5 ) self.friction_present = utils.parse_measurement_var_as_float(header_s, 6) self.ppt_u1_present = utils.parse_measurement_var_as_float(header_s, 7) self.ppt_u2_present = utils.parse_measurement_var_as_float(header_s, 8) self.ppt_u3_present = utils.parse_measurement_var_as_float(header_s, 9) self.inclination_measurement_present = utils.parse_measurement_var_as_float( header_s, 10 ) self.use_of_back_flow_compensator = utils.parse_measurement_var_as_float( header_s, 11 ) self.type_of_cone_penetration_test = utils.parse_measurement_var_as_float( header_s, 12 ) self.pre_excavated_depth = utils.parse_measurement_var_as_float(header_s, 13) self.groundwater_level = utils.parse_measurement_var_as_float(header_s, 14) self.water_depth_offshore_activities = utils.parse_measurement_var_as_float( header_s, 15 ) self.end_depth_of_penetration_test = utils.parse_measurement_var_as_float( header_s, 16 ) self.stop_criteria = utils.parse_measurement_var_as_float(header_s, 17) self.zero_measurement_cone_before_penetration_test = utils.parse_measurement_var_as_float( header_s, 20 ) self.zero_measurement_cone_after_penetration_test = utils.parse_measurement_var_as_float( header_s, 21 ) self.zero_measurement_friction_before_penetration_test = utils.parse_measurement_var_as_float( header_s, 22 ) self.zero_measurement_friction_after_penetration_test = utils.parse_measurement_var_as_float( header_s, 23 ) self.zero_measurement_ppt_u1_before_penetration_test = utils.parse_measurement_var_as_float( header_s, 24 ) self.zero_measurement_ppt_u1_after_penetration_test = utils.parse_measurement_var_as_float( header_s, 25 ) self.zero_measurement_ppt_u2_before_penetration_test = utils.parse_measurement_var_as_float( header_s, 26 ) self.zero_measurement_ppt_u2_after_penetration_test = utils.parse_measurement_var_as_float( header_s, 27 ) self.zero_measurement_ppt_u3_before_penetration_test = utils.parse_measurement_var_as_float( header_s, 28 ) self.zero_measurement_ppt_u3_after_penetration_test = utils.parse_measurement_var_as_float( header_s, 29 ) self.zero_measurement_inclination_before_penetration_test = utils.parse_measurement_var_as_float( header_s, 30 ) self.zero_measurement_inclination_after_penetration_test = utils.parse_measurement_var_as_float( header_s, 31 ) self.zero_measurement_inclination_ns_before_penetration_test = utils.parse_measurement_var_as_float( header_s, 32 ) self.zero_measurement_inclination_ns_after_penetration_test = utils.parse_measurement_var_as_float( header_s, 33 ) self.zero_measurement_inclination_ew_before_penetration_test = utils.parse_measurement_var_as_float( header_s, 34 ) self.zero_measurement_inclination_ew_after_penetration_test = utils.parse_measurement_var_as_float( header_s, 35 ) self.mileage = utils.parse_measurement_var_as_float(header_s, 41) self.df = ( self.parse_data(header_s, data_s) .pipe(self.replace_column_void, self.column_void) .pipe(self.correct_pre_excavated_depth, self.pre_excavated_depth) .pipe(self.correct_depth_with_inclination) .pipe(lambda df: df.assign(depth=np.abs(df["depth"].values))) .pipe(self.calculate_elevation_with_respect_to_nap, zid, height_system) .pipe(self.calculate_friction_number) )
def __init__(self, path=None, string=None): """ Parser of the cpt file. :param path:(str) Path of the .gef file to parse. :param string:(str) String to parse. """ self.path = path self.zid = None # ground level self.x = None self.y = None self.type = None self.file_date = None self.project_id = None self.s = string self.column_void = None # List of all the possible measurement variables self.nom_surface_area_cone_tip = None self.nom_surface_area_friction_element = None self.net_surface_area_quotient_of_the_cone_tip = None self.net_surface_area_quotient_of_the_friction_casing = None self.distance_between_cone_and_centre_of_friction_casing = None self.friction_present = None self.ppt_u1_present = None self.ppt_u2_present = None self.ppt_u3_present = None self.inclination_measurement_present = None self.use_of_back_flow_compensator = None self.type_of_cone_penetration_test = None self.pre_excavated_depth = None self.groundwater_level = None self.water_depth_offshore_activities = None self.end_depth_of_penetration_test = None self.stop_criteria = None self.zero_measurement_cone_before_penetration_test = None self.zero_measurement_cone_after_penetration_test = None self.zero_measurement_friction_before_penetration_test = None self.zero_measurement_friction_after_penetration_test = None self.zero_measurement_ppt_u1_before_penetration_test = None self.zero_measurement_ppt_u2_before_penetration_test = None self.zero_measurement_ppt_u3_before_penetration_test = None self.zero_measurement_ppt_u1_after_penetration_test = None self.zero_measurement_ppt_u2_after_penetration_test = None self.zero_measurement_ppt_u3_after_penetration_test = None self.zero_measurement_inclination_before_penetration_test = None self.zero_measurement_inclination_after_penetration_test = None self.zero_measurement_cone_after_penetration_test = None self.zero_measurement_inclination_ns_before_penetration_test = None self.zero_measurement_inclination_ns_after_penetration_test = None self.zero_measurement_inclination_ew_before_penetration_test = None self.zero_measurement_inclination_ew_after_penetration_test = None self.mileage = None if self.s is None: with open(path, encoding='utf-8', errors='ignore') as f: self.s = f.read() end_of_header = utils.parse_end_of_header(self.s) header_s, data_s = self.s.split(end_of_header) self.file_date = utils.parse_file_date(header_s) self.project_id = utils.parse_project_type(header_s, self.type) self.zid = utils.parse_zid_as_float(header_s) self.type = utils.parse_gef_type(header_s) self.x = utils.parse_xid_as_float(header_s) self.y = utils.parse_yid_as_float(header_s) self.column_void = utils.parse_column_void(header_s) self.nom_surface_area_cone_tip = utils.parse_measurement_var_as_float( header_s, 1) self.nom_surface_area_friction_element = utils.parse_measurement_var_as_float( header_s, 2) self.net_surface_area_quotient_of_the_cone_tip = utils.parse_measurement_var_as_float( header_s, 3) self.net_surface_area_quotient_of_the_friction_casing = utils.parse_measurement_var_as_float( header_s, 4) self.distance_between_cone_and_centre_of_friction_casing = utils.parse_measurement_var_as_float( header_s, 5) self.friction_present = utils.parse_measurement_var_as_float( header_s, 6) self.ppt_u1_present = utils.parse_measurement_var_as_float(header_s, 7) self.ppt_u2_present = utils.parse_measurement_var_as_float(header_s, 8) self.ppt_u3_present = utils.parse_measurement_var_as_float(header_s, 9) self.inclination_measurement_present = utils.parse_measurement_var_as_float( header_s, 10) self.use_of_back_flow_compensator = utils.parse_measurement_var_as_float( header_s, 11) self.type_of_cone_penetration_test = utils.parse_measurement_var_as_float( header_s, 12) self.pre_excavated_depth = utils.parse_measurement_var_as_float( header_s, 13) self.groundwater_level = utils.parse_measurement_var_as_float( header_s, 14) self.water_depth_offshore_activities = utils.parse_measurement_var_as_float( header_s, 15) self.end_depth_of_penetration_test = utils.parse_measurement_var_as_float( header_s, 16) self.stop_criteria = utils.parse_measurement_var_as_float(header_s, 17) self.zero_measurement_cone_before_penetration_test = utils.parse_measurement_var_as_float( header_s, 20) self.zero_measurement_cone_after_penetration_test = utils.parse_measurement_var_as_float( header_s, 21) self.zero_measurement_friction_before_penetration_test = utils.parse_measurement_var_as_float( header_s, 22) self.zero_measurement_friction_after_penetration_test = utils.parse_measurement_var_as_float( header_s, 23) self.zero_measurement_ppt_u1_before_penetration_test = utils.parse_measurement_var_as_float( header_s, 24) self.zero_measurement_ppt_u1_after_penetration_test = utils.parse_measurement_var_as_float( header_s, 25) self.zero_measurement_ppt_u2_before_penetration_test = utils.parse_measurement_var_as_float( header_s, 26) self.zero_measurement_ppt_u2_after_penetration_test = utils.parse_measurement_var_as_float( header_s, 27) self.zero_measurement_ppt_u3_before_penetration_test = utils.parse_measurement_var_as_float( header_s, 28) self.zero_measurement_ppt_u3_after_penetration_test = utils.parse_measurement_var_as_float( header_s, 29) self.zero_measurement_inclination_before_penetration_test = utils.parse_measurement_var_as_float( header_s, 30) self.zero_measurement_inclination_after_penetration_test = utils.parse_measurement_var_as_float( header_s, 31) self.zero_measurement_inclination_ns_before_penetration_test = utils.parse_measurement_var_as_float( header_s, 32) self.zero_measurement_inclination_ns_after_penetration_test = utils.parse_measurement_var_as_float( header_s, 33) self.zero_measurement_inclination_ew_before_penetration_test = utils.parse_measurement_var_as_float( header_s, 34) self.zero_measurement_inclination_ew_after_penetration_test = utils.parse_measurement_var_as_float( header_s, 35) self.mileage = utils.parse_measurement_var_as_float(header_s, 41) # first dataframe with only the parsed data self.df_first = self.parse_data(header_s, data_s) # second dataframe with the correction of the pre excavated depth self.df_second = self.correct_pre_excavated_depth( self.df_first, self.pre_excavated_depth) # definition of the zeros dataframe and addition of the depth to the main dataframe df_depth = pd.DataFrame(np.zeros(len(self.df_second.index)), columns=['depth']) df_nap_zeros = pd.DataFrame(np.zeros(len(self.df_second.index)), columns=['elevation_respect_to_NAP']) self.df_with_depth = pd.concat([self.df_second, df_depth], axis=1, sort=False) # correction of the depth with the inclination if present self.df_correct_depth_with_inclination = self.correct_depth_with_inclination( self.df_with_depth) # definition of the elevation respect to the nap and concatenation with the previous dataframe df_nap = self.calculate_elevation_respect_to_nap( df_nap_zeros, self.zid, self.df_correct_depth_with_inclination['depth'], len(self.df_second.index)) self.df = pd.concat([self.df_correct_depth_with_inclination, df_nap], axis=1, sort=False)