@classmethod
def run(cls, plexos_nodes, rev_sc, reeds_build, cf_fpath, forecast_fpath=
    None, build_year=2050, exclusion_area=0.0081, max_workers=None):
    """Run plexos aggregation.

        Parameters
        ----------
        plexos_nodes : pd.DataFrame
            Plexos node meta data including gid, lat/lon, voltage.
        rev_sc : pd.DataFrame
            reV supply curve results table including SC gid, lat/lon,
            res_gids, res_id_counts.
        reeds_build : pd.DataFrame
            REEDS buildout with rows for built capacity at each reV SC point.
        cf_fpath : str
            File path to capacity factor file to get profiles from.
        forecast_fpath : str | None
            Forecasted capacity factor .h5 file path (reV results).
            If not None, the generation profiles are sourced from this file.
        build_year : int
            REEDS year of interest.
        exclusion_area : float
            Area in km2 of an exclusion pixel.
        max_workers : int | None
            Do node aggregation on max_workers.

        Returns
        -------
        plexos_meta : pd.DataFrame
            Plexos node meta data with built capacities.
        time_index : pd.datetimeindex
            Time index for the profiles.
        profiles : np.ndarray
            Generation profile timeseries at each plexos node.
        """
    pa = cls(plexos_nodes, rev_sc, reeds_build, cf_fpath, forecast_fpath=
        forecast_fpath, build_year=build_year, exclusion_area=
        exclusion_area, max_workers=max_workers)
    profiles = pa._make_profiles()
    return pa.plexos_meta, pa.time_index, profiles
