コード例 #1
0
ファイル: tests.py プロジェクト: ritchie46/pygef
    def test_measurement_var_different_comma(self):
        s = r"#MEASUREMENTVAR= 41 , 0, deg, "
        v = utils.parse_measurement_var_as_float(s, 41)
        self.assertAlmostEqual(v, 0.0)

        h = {"MEASUREMENTVAR": [["41", "0", "deg", ""]]}
        v = utils.parse_measurement_var_as_float(h, 41)
        self.assertAlmostEqual(v, 0.0)
コード例 #2
0
ファイル: tests.py プロジェクト: ritchie46/pygef
    def test_measurement_var_big_integer(self):
        s = r"#MEASUREMENTVAR= 41, 10000, deg, "
        v = utils.parse_measurement_var_as_float(s, 41)
        self.assertAlmostEqual(v, 10000)

        h = {"MEASUREMENTVAR": [["41", "10000", "deg", ""]]}
        v = utils.parse_measurement_var_as_float(h, 41)
        self.assertAlmostEqual(v, 10000)
コード例 #3
0
ファイル: tests.py プロジェクト: ritchie46/pygef
    def test_measurement_var_without_minus_sign(self):
        s = r"#MEASUREMENTVAR= 41, 15.000000, "
        v = utils.parse_measurement_var_as_float(s, 41)
        self.assertAlmostEqual(v, 15)

        h = {"MEASUREMENTVAR": [["41", "15.000000", ""]]}
        v = utils.parse_measurement_var_as_float(h, 41)
        self.assertAlmostEqual(v, 15)
コード例 #4
0
    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)
        )
コード例 #5
0
 def test_measurement_var_different_comma(self):
     s = r"#MEASUREMENTVAR= 41 , 0, deg, "
     v = utils.parse_measurement_var_as_float(s, 41)
     self.assertAlmostEqual(v, 0)
コード例 #6
0
 def test_measurement_var_big_integer(self):
     s = r"#MEASUREMENTVAR= 41, 10000, deg, "
     v = utils.parse_measurement_var_as_float(s, 41)
     self.assertAlmostEqual(v, 10000)
コード例 #7
0
 def test_measurement_var_with_minus_sign(self):
     s = r"#MEASUREMENTVAR= 41, -15.000000, "
     v = utils.parse_measurement_var_as_float(s, 41)
     self.assertAlmostEqual(v, -15)
コード例 #8
0
    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())
コード例 #9
0
 def test_measurement_var_integer(self):
     s = r'#MEASUREMENTVAR= 41, 0, deg, '
     v = utils.parse_measurement_var_as_float(s, 41)
     self.assertAlmostEqual(v, 0)
コード例 #10
0
ファイル: gef.py プロジェクト: ThomasSweijen/pygef
    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)