pybertini.tracking

quick nav links:

Notes

Trackers in Bertini2 are stateful objects, that refer to a system they are tracking, hold their specific settings, and have a notion of current time and space value.

Here are some particular classes and functions to pay attention to:

Here are the implemented ODE predictors you can choose from:

Calls to track_path() return a pybertini.tracking.SuccessCode.

Auto-generated docs

Tracking-specific things – trackers, configs

class pybertini.tracking.AMPTracker((object)arg1, (System)arg2) → None

Bases: Boost.Python.instance

The adaptive multiple precision (AMP) tracker. Ambient numeric type is multiple-precision (mpfr_complex). Contruct one by feeding it a system – cannot be constructed without feeding it a system. Adjust its settings via configs and the setup function. Then, call method track_path.

add_observer((object)arg1, (object)arg2) → None
current_point((AMPTracker)arg1) → VectorXmp
current_precision((AMPTracker)arg1) → int
current_time((AMPTracker)arg1) → Complex
get_newton((AMPTracker)arg1) → NewtonConfig :

Get the tracker’s internal configuration for Newton correction

get_stepping((AMPTracker)arg1) → SteppingConfig :

Get the tracker’s internal configuration for things that control stepping behaviour

get_system((AMPTracker)arg1) → System :

Gets an internal reference to the tracked system.

infinite_truncation((AMPTracker)arg1, (bool)arg2) → None :

Decide whether the tracker should truncate infinite paths. See also infinite_truncation_tolerance

infinite_truncation( (AMPTracker)arg1) -> bool :
Get the bool for whether the tracker should truncate infinite paths. See also infinite_truncation_tolerance
infinite_truncation_tolerance((AMPTracker)arg1, (float)arg2) → None :

Set the path truncation tolerance for infinite paths for the tracker

infinite_truncation_tolerance( (AMPTracker)arg1) -> float :
Get the path truncation tolerance for infinite paths for the tracker
num_total_steps_taken((AMPTracker)arg1) → int :

Ask how many steps have been taken so far, including failures

precision_preservation((AMPTracker)arg1, (bool)arg2) → None :

Turn on or off the preservation of precision. That is, if this is on (true), then the precision of the final point will be the precision of the start point. Generally, you want to let precision drift, methinks.

precision_setup((AMPTracker)arg1, (AMPConfig)arg2) → None
predictor((AMPTracker)arg1) → Predictor :

Query the current predictor method used by the tracker.

predictor( (AMPTracker)arg1, (Predictor)arg2) -> None :
Set the predictor method used by the tracker.
refine() → object

refine() -> object

refine() -> object

refine() -> object

reinitialize_initial_step_size((AMPTracker)arg1, (bool)arg2) → None :

Set whether the tracker should re-set the stepsize to the configured-initial stepsize when it starts tracking. Feed it a bool

remove_observer((object)arg1, (object)arg2) → None
set_newton((AMPTracker)arg1, (NewtonConfig)arg2) → None :

Set the tracker’s internal configuration for Newton correction

set_stepping((AMPTracker)arg1, (SteppingConfig)arg2) → None :

Set the tracker’s internal configuration for things that control stepping behaviour

set_stepsize((AMPTracker)arg1, (Float)arg2) → None
setup((AMPTracker)arg1, (Predictor)predictor, (float)tolerance, (float)truncation, (SteppingConfig)stepping, (NewtonConfig)newton) → None :

Set values for the internal configuration of the tracker. tolerance and truncation are both real doubles. predictor is a valid value for predictor choice. stepping and newton are the config structs from pybertini.tracking.config.

track_path((AMPTracker)arg1, (VectorXmp)result, (Complex)start_time, (Complex)end_time, (VectorXmp)start_point) → SuccessCode :

The main function of the tracker, once its set up. Feed it, in (result, start_time, end_time, start_point

tracking_tolerance((AMPTracker)arg1) → float :

A step is labeled as a failure if newton correcting doesn’t yield a residual less than this tolerance. A real number, the smaller the slower tracking, generally speaking

tracking_tolerance( (AMPTracker)arg1, (float)arg2) -> None :
Set the tracking tolerance for the tracker
class pybertini.tracking.DoublePrecisionTracker((object)arg1, (System)arg2) → None

Bases: Boost.Python.instance

The double precision tracker. Tracks using only complex doubles. Ambient numeric type is double. Contruct one by feeding it a system – cannot be constructed without feeding it a system. Adjust its settings via configs and the setup function. Then, call method track_path.

add_observer((object)arg1, (object)arg2) → None
current_point((DoublePrecisionTracker)arg1) → VectorXd
current_precision((DoublePrecisionTracker)arg1) → int
current_time((DoublePrecisionTracker)arg1) → complex
get_newton((DoublePrecisionTracker)arg1) → NewtonConfig :

Get the tracker’s internal configuration for Newton correction

get_stepping((DoublePrecisionTracker)arg1) → SteppingConfig :

Get the tracker’s internal configuration for things that control stepping behaviour

get_system((DoublePrecisionTracker)arg1) → System :

Gets an internal reference to the tracked system.

infinite_truncation((DoublePrecisionTracker)arg1, (bool)arg2) → None :

Decide whether the tracker should truncate infinite paths. See also infinite_truncation_tolerance

infinite_truncation( (DoublePrecisionTracker)arg1) -> bool :
Get the bool for whether the tracker should truncate infinite paths. See also infinite_truncation_tolerance
infinite_truncation_tolerance((DoublePrecisionTracker)arg1, (float)arg2) → None :

Set the path truncation tolerance for infinite paths for the tracker

infinite_truncation_tolerance( (DoublePrecisionTracker)arg1) -> float :
Get the path truncation tolerance for infinite paths for the tracker
num_total_steps_taken((DoublePrecisionTracker)arg1) → int :

Ask how many steps have been taken so far, including failures

predictor((DoublePrecisionTracker)arg1) → Predictor :

Query the current predictor method used by the tracker.

predictor( (DoublePrecisionTracker)arg1, (Predictor)arg2) -> None :
Set the predictor method used by the tracker.
refine() → object

refine() -> object

reinitialize_initial_step_size((DoublePrecisionTracker)arg1, (bool)arg2) → None :

Set whether the tracker should re-set the stepsize to the configured-initial stepsize when it starts tracking. Feed it a bool

remove_observer((object)arg1, (object)arg2) → None
set_newton((DoublePrecisionTracker)arg1, (NewtonConfig)arg2) → None :

Set the tracker’s internal configuration for Newton correction

set_stepping((DoublePrecisionTracker)arg1, (SteppingConfig)arg2) → None :

Set the tracker’s internal configuration for things that control stepping behaviour

set_stepsize((DoublePrecisionTracker)arg1, (float)arg2) → None
setup((DoublePrecisionTracker)arg1, (Predictor)predictor, (float)tolerance, (float)truncation, (SteppingConfig)stepping, (NewtonConfig)newton) → None :

Set values for the internal configuration of the tracker. tolerance and truncation are both real doubles. predictor is a valid value for predictor choice. stepping and newton are the config structs from pybertini.tracking.config.

track_path((DoublePrecisionTracker)arg1, (VectorXd)result, (complex)start_time, (complex)end_time, (VectorXd)start_point) → SuccessCode :

The main function of the tracker, once its set up. Feed it, in (result, start_time, end_time, start_point

tracking_tolerance((DoublePrecisionTracker)arg1) → float :

A step is labeled as a failure if newton correcting doesn’t yield a residual less than this tolerance. A real number, the smaller the slower tracking, generally speaking

tracking_tolerance( (DoublePrecisionTracker)arg1, (float)arg2) -> None :
Set the tracking tolerance for the tracker
class pybertini.tracking.MultiplePrecisionTracker((object)arg1, (System)arg2) → None

Bases: Boost.Python.instance

The fixed multiple precision tracker. Ambient numeric type is multiple-precision (mpfr_complex). Precision is the value of pybertini.default_precision() at contruction. Errors if you try to feed it things not at that precision. Contruct one by feeding it a system – cannot be constructed without feeding it a system. Adjust its settings via configs and the setup function. Then, call method track_path.

add_observer((object)arg1, (object)arg2) → None
current_point((MultiplePrecisionTracker)arg1) → VectorXmp
current_precision((MultiplePrecisionTracker)arg1) → int
current_time((MultiplePrecisionTracker)arg1) → Complex
get_newton((MultiplePrecisionTracker)arg1) → NewtonConfig :

Get the tracker’s internal configuration for Newton correction

get_stepping((MultiplePrecisionTracker)arg1) → SteppingConfig :

Get the tracker’s internal configuration for things that control stepping behaviour

get_system((MultiplePrecisionTracker)arg1) → System :

Gets an internal reference to the tracked system.

infinite_truncation((MultiplePrecisionTracker)arg1, (bool)arg2) → None :

Decide whether the tracker should truncate infinite paths. See also infinite_truncation_tolerance

infinite_truncation( (MultiplePrecisionTracker)arg1) -> bool :
Get the bool for whether the tracker should truncate infinite paths. See also infinite_truncation_tolerance
infinite_truncation_tolerance((MultiplePrecisionTracker)arg1, (float)arg2) → None :

Set the path truncation tolerance for infinite paths for the tracker

infinite_truncation_tolerance( (MultiplePrecisionTracker)arg1) -> float :
Get the path truncation tolerance for infinite paths for the tracker
num_total_steps_taken((MultiplePrecisionTracker)arg1) → int :

Ask how many steps have been taken so far, including failures

predictor((MultiplePrecisionTracker)arg1) → Predictor :

Query the current predictor method used by the tracker.

predictor( (MultiplePrecisionTracker)arg1, (Predictor)arg2) -> None :
Set the predictor method used by the tracker.
refine() → object

refine() -> object

reinitialize_initial_step_size((MultiplePrecisionTracker)arg1, (bool)arg2) → None :

Set whether the tracker should re-set the stepsize to the configured-initial stepsize when it starts tracking. Feed it a bool

remove_observer((object)arg1, (object)arg2) → None
set_newton((MultiplePrecisionTracker)arg1, (NewtonConfig)arg2) → None :

Set the tracker’s internal configuration for Newton correction

set_stepping((MultiplePrecisionTracker)arg1, (SteppingConfig)arg2) → None :

Set the tracker’s internal configuration for things that control stepping behaviour

set_stepsize((MultiplePrecisionTracker)arg1, (Float)arg2) → None
setup((MultiplePrecisionTracker)arg1, (Predictor)predictor, (float)tolerance, (float)truncation, (SteppingConfig)stepping, (NewtonConfig)newton) → None :

Set values for the internal configuration of the tracker. tolerance and truncation are both real doubles. predictor is a valid value for predictor choice. stepping and newton are the config structs from pybertini.tracking.config.

track_path((MultiplePrecisionTracker)arg1, (VectorXmp)result, (Complex)start_time, (Complex)end_time, (VectorXmp)start_point) → SuccessCode :

The main function of the tracker, once its set up. Feed it, in (result, start_time, end_time, start_point

tracking_tolerance((MultiplePrecisionTracker)arg1) → float :

A step is labeled as a failure if newton correcting doesn’t yield a residual less than this tolerance. A real number, the smaller the slower tracking, generally speaking

tracking_tolerance( (MultiplePrecisionTracker)arg1, (float)arg2) -> None :
Set the tracking tolerance for the tracker
class pybertini.tracking.Predictor

Bases: Boost.Python.enum

Constant = _pybertini.tracking.Predictor.Constant
Euler = _pybertini.tracking.Predictor.Euler
Heun = _pybertini.tracking.Predictor.Heun
HeunEuler = _pybertini.tracking.Predictor.HeunEuler
RK4 = _pybertini.tracking.Predictor.RK4
RKCashKarp45 = _pybertini.tracking.Predictor.RKCashKarp45
RKDormandPrince56 = _pybertini.tracking.Predictor.RKDormandPrince56
RKF45 = _pybertini.tracking.Predictor.RKF45
RKNorsett34 = _pybertini.tracking.Predictor.RKNorsett34
RKVerner67 = _pybertini.tracking.Predictor.RKVerner67
names = {'Constant': _pybertini.tracking.Predictor.Constant, 'Euler': _pybertini.tracking.Predictor.Euler, 'Heun': _pybertini.tracking.Predictor.Heun, 'HeunEuler': _pybertini.tracking.Predictor.HeunEuler, 'RK4': _pybertini.tracking.Predictor.RK4, 'RKCashKarp45': _pybertini.tracking.Predictor.RKCashKarp45, 'RKDormandPrince56': _pybertini.tracking.Predictor.RKDormandPrince56, 'RKF45': _pybertini.tracking.Predictor.RKF45, 'RKNorsett34': _pybertini.tracking.Predictor.RKNorsett34, 'RKVerner67': _pybertini.tracking.Predictor.RKVerner67}
values = {0: _pybertini.tracking.Predictor.Constant, 1: _pybertini.tracking.Predictor.Euler, 2: _pybertini.tracking.Predictor.Heun, 3: _pybertini.tracking.Predictor.RK4, 4: _pybertini.tracking.Predictor.HeunEuler, 5: _pybertini.tracking.Predictor.RKNorsett34, 6: _pybertini.tracking.Predictor.RKF45, 7: _pybertini.tracking.Predictor.RKCashKarp45, 8: _pybertini.tracking.Predictor.RKDormandPrince56, 9: _pybertini.tracking.Predictor.RKVerner67}
class pybertini.tracking.SuccessCode

Bases: Boost.Python.enum

CycleNumTooHigh = _pybertini.tracking.SuccessCode.CycleNumTooHigh
ExternallyTerminated = _pybertini.tracking.SuccessCode.ExternallyTerminated
FailedToConverge = _pybertini.tracking.SuccessCode.FailedToConverge
Failure = _pybertini.tracking.SuccessCode.Failure
GoingToInfinity = _pybertini.tracking.SuccessCode.GoingToInfinity
HigherPrecisionNecessary = _pybertini.tracking.SuccessCode.HigherPrecisionNecessary
MatrixSolveFailure = _pybertini.tracking.SuccessCode.MatrixSolveFailure
MatrixSolveFailureFirstPartOfPrediction = _pybertini.tracking.SuccessCode.MatrixSolveFailureFirstPartOfPrediction
MaxNumStepsTaken = _pybertini.tracking.SuccessCode.MaxNumStepsTaken
MaxPrecisionReached = _pybertini.tracking.SuccessCode.MaxPrecisionReached
MinStepSizeReached = _pybertini.tracking.SuccessCode.MinStepSizeReached
MinTrackTimeReached = _pybertini.tracking.SuccessCode.MinTrackTimeReached
ReduceStepSize = _pybertini.tracking.SuccessCode.ReduceStepSize
SecurityMaxNormReached = _pybertini.tracking.SuccessCode.SecurityMaxNormReached
SingularStartPoint = _pybertini.tracking.SuccessCode.SingularStartPoint
Success = _pybertini.tracking.SuccessCode.Success
names = {'CycleNumTooHigh': _pybertini.tracking.SuccessCode.CycleNumTooHigh, 'ExternallyTerminated': _pybertini.tracking.SuccessCode.ExternallyTerminated, 'FailedToConverge': _pybertini.tracking.SuccessCode.FailedToConverge, 'Failure': _pybertini.tracking.SuccessCode.Failure, 'GoingToInfinity': _pybertini.tracking.SuccessCode.GoingToInfinity, 'HigherPrecisionNecessary': _pybertini.tracking.SuccessCode.HigherPrecisionNecessary, 'MatrixSolveFailure': _pybertini.tracking.SuccessCode.MatrixSolveFailure, 'MatrixSolveFailureFirstPartOfPrediction': _pybertini.tracking.SuccessCode.MatrixSolveFailureFirstPartOfPrediction, 'MaxNumStepsTaken': _pybertini.tracking.SuccessCode.MaxNumStepsTaken, 'MaxPrecisionReached': _pybertini.tracking.SuccessCode.MaxPrecisionReached, 'MinStepSizeReached': _pybertini.tracking.SuccessCode.MinStepSizeReached, 'MinTrackTimeReached': _pybertini.tracking.SuccessCode.MinTrackTimeReached, 'ReduceStepSize': _pybertini.tracking.SuccessCode.ReduceStepSize, 'SecurityMaxNormReached': _pybertini.tracking.SuccessCode.SecurityMaxNormReached, 'SingularStartPoint': _pybertini.tracking.SuccessCode.SingularStartPoint, 'Success': _pybertini.tracking.SuccessCode.Success}
values = {0: _pybertini.tracking.SuccessCode.Success, 1: _pybertini.tracking.SuccessCode.HigherPrecisionNecessary, 2: _pybertini.tracking.SuccessCode.ReduceStepSize, 3: _pybertini.tracking.SuccessCode.GoingToInfinity, 4: _pybertini.tracking.SuccessCode.FailedToConverge, 5: _pybertini.tracking.SuccessCode.MatrixSolveFailure, 6: _pybertini.tracking.SuccessCode.MatrixSolveFailureFirstPartOfPrediction, 7: _pybertini.tracking.SuccessCode.MaxNumStepsTaken, 8: _pybertini.tracking.SuccessCode.MaxPrecisionReached, 9: _pybertini.tracking.SuccessCode.MinStepSizeReached, 10: _pybertini.tracking.SuccessCode.Failure, 11: _pybertini.tracking.SuccessCode.SingularStartPoint, 12: _pybertini.tracking.SuccessCode.ExternallyTerminated, 13: _pybertini.tracking.SuccessCode.MinTrackTimeReached, 14: _pybertini.tracking.SuccessCode.SecurityMaxNormReached, 15: _pybertini.tracking.SuccessCode.CycleNumTooHigh}

pybertini.tracking.config

Tracking-specific things – trackers, configs

class pybertini.tracking.config.AMPConfig((object)arg1) → None

Bases: Boost.Python.instance

__init__( (object)arg1, (System)arg2) -> None

coefficient_bound
consecutive_successful_steps_before_precision_decrease
degree_bound
epsilon
max_num_precision_decreases
maximum_precision
phi
psi
safety_digits_1
safety_digits_2
set_amp_config_from((AMPConfig)arg1, (System)arg2) → None
set_bounds_and_epsilon_from((AMPConfig)arg1, (System)arg2) → None
set_phi_psi_from_bounds((AMPConfig)arg1) → None
class pybertini.tracking.config.FixedPrecisionConfig((object)arg1, (System)arg2) → None

Bases: Boost.Python.instance

class pybertini.tracking.config.NewtonConfig((object)arg1) → None

Bases: Boost.Python.instance

max_num_newton_iterations
min_num_newton_iterations
class pybertini.tracking.config.SteppingConfig((object)arg1) → None

Bases: Boost.Python.instance

consecutive_successful_steps_before_stepsize_increase

This number of successful steps have to taken consecutively, and then the stepsize is permitted to increase

frequency_of_CN_estimation

How frequently the condition number should be updated. Less frequently is faster (estimation requires an additional linear solve), but may cause precision adjustment to lag behind.

initial_step_size

The initial stepsize when tracking is started. See also tracking.AMPTracker.reinitialize_initial_step_size

max_num_steps

The maximum number of steps. Tracking will die if it tries to take more than this number, sad day.

max_step_size

The maximum allowed stepsize during tracking. See also min_num_steps

min_num_steps

The minimum number of steps the tracker can take between now and then. This is useful if you are tracking closely between times, and want to guarantee some number of steps are taken. Then again, this could be wasteful, too.

min_step_size

The minimum stepsize the tracker is allowed to take. See also max_step_size

step_size_fail_factor

The scale factor for stepsize, after a fail happens. See also step_size_success_factor

step_size_success_factor

The scale factor for stepsize, after some consecutive steps. See also consecutive_successful_steps_before_stepsize_increase

pybertini.tracking.config.amp_config_from((System)arg1) → AMPConfig :

make an AMPConfig from a System with generated settings for system-specific things, and default settings otherwise (such as safety digits).