Skip to content

convert

convert

This package convert is for v1 only. It's superceded beyond that.

Needed still for test coverage, and to assict transition to new report forms

dist_mag_table

DistMagTable

Source code in nzssdt_2023/convert/dist_mag_table.py
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class DistMagTable:
    def __init__(self, csv_path: Union[str, pathlib.Path]):
        self.csv_path = csv_path
        if not pathlib.Path(csv_path).exists():
            raise ValueError(f"Invalid csv path: {csv_path}")
        self.raw_table = pd.read_csv(self.csv_path)

    @lru_cache
    def flatten(self):
        df2 = self.raw_table.rename(columns={"Unnamed: 0": "Location"})
        df2 = df2.set_index(["Location", "D"]).stack().reset_index()
        df2.level_2 = df2.level_2.apply(lambda x: int(x.replace("APoE: 1/", "")))
        df2 = df2.rename(
            columns={
                0: "M",
                "level_2": "APoE (1/n)",
            }
        )
        return df2.set_index(["Location", "APoE (1/n)"])

csv_path = csv_path instance-attribute

raw_table = pd.read_csv(self.csv_path) instance-attribute

__init__(csv_path: Union[str, pathlib.Path])

Source code in nzssdt_2023/convert/dist_mag_table.py
 9
10
11
12
13
def __init__(self, csv_path: Union[str, pathlib.Path]):
    self.csv_path = csv_path
    if not pathlib.Path(csv_path).exists():
        raise ValueError(f"Invalid csv path: {csv_path}")
    self.raw_table = pd.read_csv(self.csv_path)

flatten() cached

Source code in nzssdt_2023/convert/dist_mag_table.py
15
16
17
18
19
20
21
22
23
24
25
26
@lru_cache
def flatten(self):
    df2 = self.raw_table.rename(columns={"Unnamed: 0": "Location"})
    df2 = df2.set_index(["Location", "D"]).stack().reset_index()
    df2.level_2 = df2.level_2.apply(lambda x: int(x.replace("APoE: 1/", "")))
    df2 = df2.rename(
        columns={
            0: "M",
            "level_2": "APoE (1/n)",
        }
    )
    return df2.set_index(["Location", "APoE (1/n)"])

sat_table

Copied from Anne Hulsey's example

APoEs = [f'APoE: 1/{rp}' for rp in [25, 100, 250, 500, 1000, 2500]] module-attribute

df = pd.read_pickle(pathlib.Path(RESOURCES_FOLDER, filename)) module-attribute

filename = 'SaT-variables_v5_corrected-locations.pkl' module-attribute

flat = sat_table.flatten() module-attribute

parameters = ['PGA', 'Sas', 'Tc'] module-attribute

sat_table = SatTable(df) module-attribute

site_class_labels = [f'Site Soil Class {n}' for n in ['I', 'II', 'III', 'IV', 'V', 'VI']] module-attribute

SatTable

Source code in nzssdt_2023/convert/sat_table.py
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
class SatTable:
    def __init__(self, raw_table: pd.DataFrame):
        self.raw_table = raw_table

    @lru_cache
    def flatten(self):
        return flatten_df(self.raw_table)  # .sort_index()

    def named_location_df(self):
        df = self.flatten()
        sites = list(df.Location.unique())
        named_sites = [site for site in sites if "~" not in site]
        return df[df.Location.isin(named_sites)]

    def grid_location_df(self):
        df = self.flatten()
        sites = list(df.Location.unique())
        grid_sites = [site for site in sites if "~" in site]
        return df[df.Location.isin(grid_sites)]

raw_table = raw_table instance-attribute

__init__(raw_table: pd.DataFrame)

Source code in nzssdt_2023/convert/sat_table.py
46
47
def __init__(self, raw_table: pd.DataFrame):
    self.raw_table = raw_table

flatten() cached

Source code in nzssdt_2023/convert/sat_table.py
49
50
51
@lru_cache
def flatten(self):
    return flatten_df(self.raw_table)  # .sort_index()

grid_location_df()

Source code in nzssdt_2023/convert/sat_table.py
59
60
61
62
63
def grid_location_df(self):
    df = self.flatten()
    sites = list(df.Location.unique())
    grid_sites = [site for site in sites if "~" in site]
    return df[df.Location.isin(grid_sites)]

named_location_df()

Source code in nzssdt_2023/convert/sat_table.py
53
54
55
56
57
def named_location_df(self):
    df = self.flatten()
    sites = list(df.Location.unique())
    named_sites = [site for site in sites if "~" not in site]
    return df[df.Location.isin(named_sites)]

flatten_df(df: pd.DataFrame)

Source code in nzssdt_2023/convert/sat_table.py
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
def flatten_df(df: pd.DataFrame):
    df2 = df.stack().stack().stack().reset_index()
    param_dfs = []
    for param_column in parameters:
        param_dfs.append(
            df2[df2.level_1 == param_column]
            .drop(columns=["level_1"])
            .rename(columns={0: param_column})
            .reset_index()
            .drop(columns=["index"])
        )

    df3 = param_dfs[0].merge(param_dfs[1]).merge(param_dfs[2])
    df3.level_2 = df3.level_2.apply(lambda x: x.replace("Site Soil Class ", ""))
    df3.level_3 = df3.level_3.apply(lambda x: int(x.replace("APoE: 1/", "")))
    df3 = df3.rename(
        columns={
            "level_0": "Location",
            "level_2": "Site Soil Class",
            "level_3": "APoE (1/n)",
        }
    )
    return df3.sort_values(by=["APoE (1/n)", "Site Soil Class"])