def compute_and_save_periods(rrlyrae, Model, outfile,
                             model_args=None, model_kwds=None,
                             Nperiods=5, save_every=5,
                             parallel=True, client=None,
                             num_results=None):
    """Function to compute periods and save the results"""
    cache = NumpyCache(outfile)
    lcids = rrlyrae.ids
    if num_results is not None:
        lcids = lcids[:num_results]

    # Define a function which, given an lcid, computes the desired periods.
    def find_periods(lcid, Nperiods=Nperiods,
                     rrlyrae=rrlyrae, Model=Model,
                     model_args=model_args, model_kwds=model_kwds):
        t, y, dy, filts = rrlyrae.get_lightcurve(lcid)
        model = Model(*(model_args or ()), **(model_kwds or {}))
        model.optimizer.period_range = (0.2, 1.2)
        model.optimizer.verbose = 0
        model.fit(t, y, dy, filts)
        return lcid, model.find_best_periods(Nperiods)

    return compute_parallel(cache, find_periods, lcids,
                            save_every=save_every,
                            parallel=parallel, client=client)
def compute_and_save_periods(Model,
                             outfile,
                             pointing_indices,
                             ndays,
                             gmags,
                             template_indices,
                             model_args=None,
                             model_kwds=None,
                             Nperiods=5,
                             save_every=5,
                             parallel=True,
                             client=None,
                             num_results=None):
    """Function to compute periods and save the results"""
    cache = NumpyCache(outfile)
    keys = list(np.broadcast(pointing_indices, ndays, gmags, template_indices))

    if num_results is not None:
        keys = keys[:num_results]

    # Define a function which, given a key, computes the desired periods.
    def find_periods(key,
                     Nperiods=Nperiods,
                     Model=Model,
                     LSSTsims=LSSTsims,
                     model_args=model_args,
                     model_kwds=model_kwds):
        import numpy as np
        lsstsim = LSSTsims()
        t, y, dy, filts = lsstsim.generate_lc(*key, random_state=0)

        model = Model(*(model_args or ()), **(model_kwds or {}))
        model.optimizer.period_range = (0.2, 1.2)
        model.optimizer.verbose = 0
        model.fit(t, y, dy, filts)

        try:
            periods = model.find_best_periods(Nperiods)
        except np.linalg.LinAlgError:
            periods = np.nan + np.zeros(Nperiods)
        except ValueError:
            periods = np.nan + np.zeros(Nperiods)
        return key, periods

    results = compute_parallel(cache,
                               find_periods,
                               keys,
                               save_every=save_every,
                               parallel=parallel,
                               client=client)

    if num_results is not None:
        return results
    else:
        return gather_results(outfile, pointing_indices, ndays, gmags,
                              template_indices)
def compute_and_save_periods(
    Model,
    outfile,
    pointing_indices,
    ndays,
    gmags,
    template_indices,
    model_args=None,
    model_kwds=None,
    Nperiods=5,
    save_every=5,
    parallel=True,
    client=None,
    num_results=None,
):
    """Function to compute periods and save the results"""
    cache = NumpyCache(outfile)
    keys = list(np.broadcast(pointing_indices, ndays, gmags, template_indices))

    if num_results is not None:
        keys = keys[:num_results]

    # Define a function which, given a key, computes the desired periods.
    def find_periods(
        key, Nperiods=Nperiods, Model=Model, LSSTsims=LSSTsims, model_args=model_args, model_kwds=model_kwds
    ):
        import numpy as np

        lsstsim = LSSTsims()
        t, y, dy, filts = lsstsim.generate_lc(*key, random_state=0)

        model = Model(*(model_args or ()), **(model_kwds or {}))
        model.optimizer.period_range = (0.2, 1.2)
        model.optimizer.verbose = 0
        model.fit(t, y, dy, filts)

        try:
            periods = model.find_best_periods(Nperiods)
        except np.linalg.LinAlgError:
            periods = np.nan + np.zeros(Nperiods)
        except ValueError:
            periods = np.nan + np.zeros(Nperiods)
        return key, periods

    results = compute_parallel(cache, find_periods, keys, save_every=save_every, parallel=parallel, client=client)

    if num_results is not None:
        return results
    else:
        return gather_results(outfile, pointing_indices, ndays, gmags, template_indices)
def compute_and_save_periods(rrlyrae,
                             Model,
                             outfile,
                             model_args=None,
                             model_kwds=None,
                             Nperiods=5,
                             save_every=5,
                             parallel=True,
                             client=None,
                             num_results=None):
    """Function to compute periods and save the results"""
    cache = NumpyCache(outfile)
    lcids = rrlyrae.ids
    if num_results is not None:
        lcids = lcids[:num_results]

    # Define a function which, given an lcid, computes the desired periods.
    def find_periods(lcid,
                     Nperiods=Nperiods,
                     rrlyrae=rrlyrae,
                     Model=Model,
                     model_args=model_args,
                     model_kwds=model_kwds):
        t, y, dy, filts = rrlyrae.get_lightcurve(lcid)
        model = Model(*(model_args or ()), **(model_kwds or {}))
        model.optimizer.period_range = (0.2, 1.2)
        model.optimizer.verbose = 0
        model.fit(t, y, dy, filts)
        return lcid, model.find_best_periods(Nperiods)

    return compute_parallel(cache,
                            find_periods,
                            lcids,
                            save_every=save_every,
                            parallel=parallel,
                            client=client)