brainpy.analysis.highdim.SlowPointFinder#

class brainpy.analysis.highdim.SlowPointFinder(f_cell, f_type='continuous', f_loss_batch=None, verbose=True)[source]#

Find fixed/slow points by numerical optimization.

This class can help you:

  • optimize to find the closest fixed points / slow points

  • exclude any fixed points whose fixed point loss is above threshold

  • exclude any non-unique fixed points according to a tolerance

  • exclude any far-away “outlier” fixed points

This model implementation is inspired by https://github.com/google-research/computation-thru-dynamics.

Parameters
  • f_cell (callable, function) – The function to compute the recurrent units.

  • f_type (str) –

    The system’s type: continuous system or discrete system.

    • ’continuous’: continuous derivative function, denotes this is a continuous system, or

    • ’discrete’: discrete update function, denotes this is a discrete system.

  • f_loss_batch (callable, function) – The function to compute the loss.

  • verbose (bool) – Whether print the optimization progress.

__init__(f_cell, f_type='continuous', f_loss_batch=None, verbose=True)[source]#

Methods

__init__(f_cell[, f_type, f_loss_batch, verbose])

compute_jacobians(points)

Compute the jacobian matrices at the points.

decompose_eigenvalues(matrices[, sort_by, ...])

Compute the eigenvalues of the matrices.

exclude_outliers([tolerance])

Exclude points whose closest neighbor is further than threshold.

filter_loss([tolerance])

Filter fixed points whose speed larger than a given tolerance.

find_fps_with_gd_method(candidates[, ...])

Optimize fixed points with gradient descent methods.

find_fps_with_opt_solver(candidates[, ...])

Optimize fixed points with nonlinear optimization solvers.

keep_unique([tolerance])

Filter unique fixed points by choosing a representative within tolerance.

Attributes

fixed_points

The final fixed points found.

losses

Losses of fixed points.

selected_ids

The selected ids of candidate points.