Transport-for-the-North / NorMITs-Demand

GNU General Public License v3.0
5 stars 10 forks source link

REMOVE THIS ONCE ATTRACTION DEV OVER #253

Closed github-actions[bot] closed 3 years ago

github-actions[bot] commented 3 years ago

REMOVE THIS ONCE ATTRACTION DEV OVER

Replace with path builder

https://github.com/Transport-for-the-North/NorMITs-Demand/blob/c9323a8e35f075337ea3d47b58c0bc7110260200/efs_attraction_generator.py#L99


    def run(self,
            base_year: str,
            future_years: List[str],

            # Employment Growth
            employment_growth: pd.DataFrame,
            employment_constraint: pd.DataFrame,
            worker_values: pd.DataFrame,  # Probs remove
            worker_split: pd.DataFrame,  # Probs remove

            # Build import paths
            import_home: str,
            msoa_conversion_path: str,

            # Alternate population/attraction creation files
            attraction_weights=None,

            # Production control file
            ntem_control_dir: str = None,
            lad_lookup_dir: str = None,
            control_attractions: bool = True,

            # D-Log
            d_log: pd.DataFrame = None,
            d_log_split: pd.DataFrame = None,

            # Employment constraints
            constraint_required: List[bool] = consts.DEFAULT_ATTRACTION_CONSTRAINTS,
            constraint_method: str = "Percentage",  # Percentage, Average
            constraint_area: str = "Designated",  # Zone, Designated, All
            constraint_on: str = "Growth",  # Growth, All
            constraint_source: str = "Grown Base",  # Default, Grown Base, Model Grown Base
            designated_area: pd.DataFrame = None,

            # Segmentation controls
            m_needed: List[int] = consts.MODES_NEEDED,
            external_zone_col: str = 'model_zone_id',

            # Handle outputs
            audits: bool = True,
            out_path: str = None,
            recreate_attractions: bool = True,
            ) -> pd.DataFrame:
        """
        TODO: Write attraction model documentation
        """
        # Init
        internal_zone_col = 'msoa_zone_id'
        all_years = [str(x) for x in [base_year] + future_years]
        integrate_d_log = d_log is not None and d_log_split is not None
        if integrate_d_log:
            d_log = d_log.copy()
            d_log_split = d_log_split.copy()

        # Fix column naming if different
        if external_zone_col != internal_zone_col:
            employment_growth = employment_growth.copy().rename(
                columns={external_zone_col: internal_zone_col}
            )
            designated_area = designated_area.copy().rename(
                columns={external_zone_col: internal_zone_col}
            )
            employment_constraint = employment_constraint.rename(
                columns={external_zone_col: internal_zone_col}
            )

        # TODO: REMOVE THIS ONCE ATTRACTION DEV OVER
        # Replace with path builder
        soc_to_sic_path = r"Y:\NorMITs Synthesiser\import\attraction_data\soc_2_digit_sic_2018.csv"
        employment_path = r"Y:\NorMITs Synthesiser\import\attraction_data\non_freight_msoa_2018.csv"

        # ## BASE YEAR EMPLOYMENT ## #
        print("Loading the base year employment data...")
        base_year_emp = get_employment_data(import_path=employment_path)

        # Audit employment numbers
        du.print_w_toggle("Base Year Employment: %d" % base_year_emp.values.sum(),
                          echo=audits)

        # ## FUTURE YEAR EMPLOYMENT ## #
        # Write this!!!!!!!
        print("Generating future year employment data...")
        # employment = self.grow_employment(
        #     base_year_emp,
        #     employment_growth,
        #     base_year,
        #     future_years
        # )

        print(base_year_emp)
        print(employment_growth)

        # DO we need these? TfN segmentation!
        # soc_weights = get_soc_weights(soc_to_sic_path=soc_to_sic_path)

        exit()

        # OLD ATTRACTION MODEL BELOW HERE

        # TODO: Attractions don't use the D-Log
        if integrate_d_log:
            if d_log is not None:
                d_log = d_log.copy()
            else:
                print("No development_log dataframe passed to worker "
                      + "generator but development_log is indicated to be "

a03660391a206c67e8d6f1a267f000215fda8c04

github-actions[bot] commented 3 years ago

Closed in dc5573c5eb450d77e6287a81b7a54cb1e43aedee