bertini.tracking

Tracking-specific things – trackers, configs

class bertini.tracking.AMPConfig((object)arg1)

Bases: instance

__init__( (object)arg1, (bertini._pybertini.system.System)arg2) -> None

__init__((object)arg1) None

__init__( (object)arg1, (bertini._pybertini.system.System)arg2) -> None

property coefficient_bound

None( (bertini._pybertini.tracking.AMPConfig)arg1) -> float

property degree_bound

None( (bertini._pybertini.tracking.AMPConfig)arg1) -> float

property epsilon

None( (bertini._pybertini.tracking.AMPConfig)arg1) -> float

classmethod from_dict(mapping)

Build a config from a dict (default-constructs, then update()).

property max_num_precision_decreases

None( (bertini._pybertini.tracking.AMPConfig)arg1) -> int

property maximum_precision

None( (bertini._pybertini.tracking.AMPConfig)arg1) -> int

property phi

None( (bertini._pybertini.tracking.AMPConfig)arg1) -> float

property psi

None( (bertini._pybertini.tracking.AMPConfig)arg1) -> float

property safety_digits_1

None( (bertini._pybertini.tracking.AMPConfig)arg1) -> int

property safety_digits_2

None( (bertini._pybertini.tracking.AMPConfig)arg1) -> int

set(**kwargs)

Set one or more fields at once; returns self so calls can chain.

Numeric fields accept strings (e.g. max_step_size=”0.05”), which are converted exactly to multiprecision values. Raises AttributeError on an unknown/misspelled field name.

set_amp_config_from((AMPConfig)arg1, (bertini._pybertini.system.System)arg2) None
set_bounds_and_epsilon_from((AMPConfig)arg1, (bertini._pybertini.system.System)arg2) None
set_phi_psi_from_bounds((AMPConfig)arg1) None
to_dict()

The config’s fields as an ordinary dict of {name: value}.

update(**kwargs)

Set one or more fields at once; returns self so calls can chain.

Numeric fields accept strings (e.g. max_step_size=”0.05”), which are converted exactly to multiprecision values. Raises AttributeError on an unknown/misspelled field name.

class bertini.tracking.AMPTracker((object)arg1, (bertini._pybertini.system.System)arg2)

Bases: Observable

The adaptive multiple precision (AMP) tracker. Ambient numeric type is multiple-precision (complex_mp). 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.

__init__((object)arg1, (bertini._pybertini.system.System)arg2) None
add_observer((object)self, (object)observer) None :

Attach an observer to this observable object

config_names()

The keyword names accepted by configure() for this owner.

config_types((AMPTracker)self) list :

List the configuration struct classes this object accepts.

configure(**kwargs)

Change settings on this owner’s configs in one call.

Each keyword names a config (e.g. stepping, newton, tolerances); its value is either a dict of fields to change, or a ready config object.

tracker.configure(stepping={‘max_step_size’: 0.1},

newton={‘max_num_newton_iterations’: 2})

Returns self.

current_point((AMPTracker)self) numpy.ndarray :

what is the current point?

current_precision((AMPTracker)self) int :

what is the current working precision?

current_stepsize((AMPTracker)self) bertini._pybertini.multiprec.real_mp :

what is the current stepsize? a real number.

current_time((AMPTracker)self) bertini._pybertini.multiprec.complex_mp :

what is the current time?

delta_t((AMPTracker)self) bertini._pybertini.multiprec.complex_mp :

what is the current delta_t, the time increment of the latest step? a complex number.

get_config((AMPTracker)self, (object)config_type) object :

Return a copy of this object’s stored configuration struct of the given class.

get_newton((AMPTracker)self) NewtonConfig :

Get the tracker’s internal configuration for Newton correction

get_settings()

This owner’s whole configuration as a carryable dict {config_name: config}.

Each value is a copy of one of the owner’s configs (e.g. {'stepping': SteppingConfig(...), 'tolerances': TolerancesConfig(...)}), keyed by the same short names config_names() lists. The configs are independent copies (and picklable), so the dict is a plain Python value you can stash, tweak, and apply to other owners – the way to carry one set of tracking settings across a series of related solves:

settings = first_solver.get_settings()
next_solver.set_settings(settings)

See set_settings() for applying one back.

get_stepping((AMPTracker)self) SteppingConfig :

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

get_system((AMPTracker)arg1) bertini._pybertini.system.System :

Gets an internal reference to the tracked system.

infinite_truncation((AMPTracker)self, (bool)val) None :

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

infinite_truncation( (AMPTracker)self) -> bool :

Get the bool for whether the tracker should truncate infinite paths. See also infinite_truncation_tolerance

infinite_truncation_tolerance((AMPTracker)self, (float)tol) None :

Set the path truncation tolerance for infinite paths for the tracker

infinite_truncation_tolerance( (AMPTracker)self) -> float :

Get the path truncation tolerance for infinite paths for the tracker

latest_condition_number((AMPTracker)self) float :

the most recent estimate of the condition number of the Jacobian. a real number.

latest_error_estimate((AMPTracker)self) float :

the most recent estimate of the error of a step. a real number.

latest_norm_of_step((AMPTracker)self) float :

the norm of the change in space resulting from the most recent step. a real number.

num_total_steps_taken((AMPTracker)self) int :

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

observers = <module 'bertini._pybertini.tracking.observers.amp'>
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)self) Predictor :

Query the current predictor method used by the tracker.

predictor( (AMPTracker)self, (Predictor)predictor) -> None :

Set the predictor method used by the tracker.

refine((AMPTracker)self, (numpy.ndarray)result, (numpy.ndarray)start_point, (complex)time) SuccessCode :

refine a point using this tracker, from start_point, at fixed time. returns a success code, computed refined point is in result.

refine( (AMPTracker)self, (numpy.ndarray)result, (numpy.ndarray)start_point, (bertini._pybertini.multiprec.complex_mp)time) -> SuccessCode :

refine a point using this tracker, from start_point, at fixed time. returns a success code, computed refined point is in result.

refine( (AMPTracker)self, (numpy.ndarray)result, (numpy.ndarray)start_point, (complex)time, (float)tolerance, (int)max_iterations) -> SuccessCode :

refine a point using this tracker, from start_point, at fixed time. returns a success code, computed refined point is in result.

refine( (AMPTracker)self, (numpy.ndarray)result, (numpy.ndarray)start_point, (bertini._pybertini.multiprec.complex_mp)time, (float)tolerance, (int)max_iterations) -> SuccessCode :

refine a point using this tracker, from start_point, at fixed time. returns a success code, computed refined point is in result.

reinitialize_initial_step_size((AMPTracker)self, (bool)val) 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)self, (object)observer) None :

Remove an observer to this observable object

set(**fields)

Set config fields on this owner by NAME, each routed to whichever config owns it.

You never name the config struct:

solver.update(final_tolerance="1e-11",          # -> TolerancesConfig
              max_num_crossed_path_resolve_attempts=3)   # -> ZeroDimConfig

Strings work for every numeric field (converted exactly). A field that none of this owner’s configs has raises AttributeError with the valid names – so a typo, or trying to set a tracker field on the algorithm (or vice versa), never silently does nothing. Returns self, so calls chain. To set a whole config at once, or to name the config explicitly, use configure().

set_config((AMPTracker)self, (SteppingConfig)config) None :

Store one of this object’s configuration structs (dispatched by the config’s type).

set_config( (AMPTracker)self, (NewtonConfig)config) -> None :

Store one of this object’s configuration structs (dispatched by the config’s type).

set_config( (AMPTracker)self, (AMPConfig)config) -> None :

Store one of this object’s configuration structs (dispatched by the config’s type).

set_newton((AMPTracker)self, (NewtonConfig)config) None :

Set the tracker’s internal configuration for Newton correction

set_settings(settings, strict=False)

Apply a settings dict (from get_settings()) onto this owner. Returns self.

settings is {config_name: config} (or {config_name: {field: value}}). By default only the configs this owner actually has are applied and the rest are skipped – so a bundle carried from one solver drops cleanly onto another whose config set differs (e.g. a different precision model, or a different algorithm stage). Pass strict=True to instead raise on any key this owner does not have.

set_stepping((AMPTracker)self, (SteppingConfig)config) None :

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

set_stepsize((AMPTracker)self, (bertini._pybertini.multiprec.real_mp)stepsize) None :

Set the stepsize for the tracker

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 bertini.tracking.

track_path((AMPTracker)self, (object)result, (bertini._pybertini.multiprec.complex_mp)start_time, (bertini._pybertini.multiprec.complex_mp)end_time, (numpy.ndarray)start_point) SuccessCode :

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

tracking_tolerance((AMPTracker)self) float :

Get. 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)self, (float)tol) -> None :

Set the tracking tolerance for the tracker

update(**fields)

Set config fields on this owner by NAME, each routed to whichever config owns it.

You never name the config struct:

solver.update(final_tolerance="1e-11",          # -> TolerancesConfig
              max_num_crossed_path_resolve_attempts=3)   # -> ZeroDimConfig

Strings work for every numeric field (converted exactly). A field that none of this owner’s configs has raises AttributeError with the valid names – so a typo, or trying to set a tracker field on the algorithm (or vice versa), never silently does nothing. Returns self, so calls chain. To set a whole config at once, or to name the config explicitly, use configure().

class bertini.tracking.DoublePrecisionTracker((object)arg1, (bertini._pybertini.system.System)arg2)

Bases: Observable

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.

__init__((object)arg1, (bertini._pybertini.system.System)arg2) None
add_observer((object)self, (object)observer) None :

Attach an observer to this observable object

config_names()

The keyword names accepted by configure() for this owner.

config_types((DoublePrecisionTracker)self) list :

List the configuration struct classes this object accepts.

configure(**kwargs)

Change settings on this owner’s configs in one call.

Each keyword names a config (e.g. stepping, newton, tolerances); its value is either a dict of fields to change, or a ready config object.

tracker.configure(stepping={‘max_step_size’: 0.1},

newton={‘max_num_newton_iterations’: 2})

Returns self.

current_point((DoublePrecisionTracker)self) numpy.ndarray :

what is the current point?

current_precision((DoublePrecisionTracker)self) int :

what is the current working precision?

current_stepsize((DoublePrecisionTracker)self) float :

what is the current stepsize? a real number.

current_time((DoublePrecisionTracker)self) complex :

what is the current time?

delta_t((DoublePrecisionTracker)self) complex :

what is the current delta_t, the time increment of the latest step? a complex number.

get_config((DoublePrecisionTracker)self, (object)config_type) object :

Return a copy of this object’s stored configuration struct of the given class.

get_newton((DoublePrecisionTracker)self) NewtonConfig :

Get the tracker’s internal configuration for Newton correction

get_settings()

This owner’s whole configuration as a carryable dict {config_name: config}.

Each value is a copy of one of the owner’s configs (e.g. {'stepping': SteppingConfig(...), 'tolerances': TolerancesConfig(...)}), keyed by the same short names config_names() lists. The configs are independent copies (and picklable), so the dict is a plain Python value you can stash, tweak, and apply to other owners – the way to carry one set of tracking settings across a series of related solves:

settings = first_solver.get_settings()
next_solver.set_settings(settings)

See set_settings() for applying one back.

get_stepping((DoublePrecisionTracker)self) SteppingConfig :

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

get_system((DoublePrecisionTracker)arg1) bertini._pybertini.system.System :

Gets an internal reference to the tracked system.

infinite_truncation((DoublePrecisionTracker)self, (bool)val) None :

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

infinite_truncation( (DoublePrecisionTracker)self) -> bool :

Get the bool for whether the tracker should truncate infinite paths. See also infinite_truncation_tolerance

infinite_truncation_tolerance((DoublePrecisionTracker)self, (float)tol) None :

Set the path truncation tolerance for infinite paths for the tracker

infinite_truncation_tolerance( (DoublePrecisionTracker)self) -> float :

Get the path truncation tolerance for infinite paths for the tracker

latest_condition_number((DoublePrecisionTracker)self) float :

the most recent estimate of the condition number of the Jacobian. a real number.

latest_error_estimate((DoublePrecisionTracker)self) float :

the most recent estimate of the error of a step. a real number.

latest_norm_of_step((DoublePrecisionTracker)self) float :

the norm of the change in space resulting from the most recent step. a real number.

num_total_steps_taken((DoublePrecisionTracker)self) int :

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

observers = <module 'bertini._pybertini.tracking.observers.double'>
predictor((DoublePrecisionTracker)self) Predictor :

Query the current predictor method used by the tracker.

predictor( (DoublePrecisionTracker)self, (Predictor)predictor) -> None :

Set the predictor method used by the tracker.

refine((DoublePrecisionTracker)self, (numpy.ndarray)result, (numpy.ndarray)start_point, (complex)time) SuccessCode :

refine a point using this tracker, from start_point, at fixed time. returns a success code, computed refined point is in result.

refine( (DoublePrecisionTracker)self, (numpy.ndarray)result, (numpy.ndarray)start_point, (complex)time, (float)tolerance, (int)max_iterations) -> SuccessCode :

refine a point using this tracker, from start_point, at fixed time. returns a success code, computed refined point is in result.

reinitialize_initial_step_size((DoublePrecisionTracker)self, (bool)val) 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)self, (object)observer) None :

Remove an observer to this observable object

set(**fields)

Set config fields on this owner by NAME, each routed to whichever config owns it.

You never name the config struct:

solver.update(final_tolerance="1e-11",          # -> TolerancesConfig
              max_num_crossed_path_resolve_attempts=3)   # -> ZeroDimConfig

Strings work for every numeric field (converted exactly). A field that none of this owner’s configs has raises AttributeError with the valid names – so a typo, or trying to set a tracker field on the algorithm (or vice versa), never silently does nothing. Returns self, so calls chain. To set a whole config at once, or to name the config explicitly, use configure().

set_config((DoublePrecisionTracker)self, (SteppingConfig)config) None :

Store one of this object’s configuration structs (dispatched by the config’s type).

set_config( (DoublePrecisionTracker)self, (NewtonConfig)config) -> None :

Store one of this object’s configuration structs (dispatched by the config’s type).

set_config( (DoublePrecisionTracker)self, (FixedPrecisionConfig)config) -> None :

Store one of this object’s configuration structs (dispatched by the config’s type).

set_newton((DoublePrecisionTracker)self, (NewtonConfig)config) None :

Set the tracker’s internal configuration for Newton correction

set_settings(settings, strict=False)

Apply a settings dict (from get_settings()) onto this owner. Returns self.

settings is {config_name: config} (or {config_name: {field: value}}). By default only the configs this owner actually has are applied and the rest are skipped – so a bundle carried from one solver drops cleanly onto another whose config set differs (e.g. a different precision model, or a different algorithm stage). Pass strict=True to instead raise on any key this owner does not have.

set_stepping((DoublePrecisionTracker)self, (SteppingConfig)config) None :

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

set_stepsize((DoublePrecisionTracker)self, (float)stepsize) None :

Set the stepsize for the tracker

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 bertini.tracking.

track_path((DoublePrecisionTracker)self, (object)result, (complex)start_time, (complex)end_time, (numpy.ndarray)start_point) SuccessCode :

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

tracking_tolerance((DoublePrecisionTracker)self) float :

Get. 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)self, (float)tol) -> None :

Set the tracking tolerance for the tracker

update(**fields)

Set config fields on this owner by NAME, each routed to whichever config owns it.

You never name the config struct:

solver.update(final_tolerance="1e-11",          # -> TolerancesConfig
              max_num_crossed_path_resolve_attempts=3)   # -> ZeroDimConfig

Strings work for every numeric field (converted exactly). A field that none of this owner’s configs has raises AttributeError with the valid names – so a typo, or trying to set a tracker field on the algorithm (or vice versa), never silently does nothing. Returns self, so calls chain. To set a whole config at once, or to name the config explicitly, use configure().

class bertini.tracking.FixedPrecisionConfig((object)arg1)

Bases: instance

__init__( (object)arg1, (bertini._pybertini.system.System)arg2) -> None

__init__((object)arg1) None

__init__( (object)arg1, (bertini._pybertini.system.System)arg2) -> None

classmethod from_dict(mapping)

Build a config from a dict (default-constructs, then update()).

property precision

The number of digits to always work at. For a double-precision tracker this is DoublePrecision() (16) and cannot be changed; for a fixed-multiple tracker it is the precision the whole solve runs at – set it to choose a different fixed precision. A tracker keeps this in sync with its actual precision, so reading it tells you the precision in effect.

set(**kwargs)

Set one or more fields at once; returns self so calls can chain.

Numeric fields accept strings (e.g. max_step_size=”0.05”), which are converted exactly to multiprecision values. Raises AttributeError on an unknown/misspelled field name.

to_dict()

The config’s fields as an ordinary dict of {name: value}.

update(**kwargs)

Set one or more fields at once; returns self so calls can chain.

Numeric fields accept strings (e.g. max_step_size=”0.05”), which are converted exactly to multiprecision values. Raises AttributeError on an unknown/misspelled field name.

class bertini.tracking.MultiplePrecisionTracker((object)arg1, (bertini._pybertini.system.System)arg2)

Bases: Observable

The fixed multiple precision tracker. Ambient numeric type is multiple-precision (complex_mp). Precision is the value of bertini.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.

__init__((object)arg1, (bertini._pybertini.system.System)arg2) None
add_observer((object)self, (object)observer) None :

Attach an observer to this observable object

config_names()

The keyword names accepted by configure() for this owner.

config_types((MultiplePrecisionTracker)self) list :

List the configuration struct classes this object accepts.

configure(**kwargs)

Change settings on this owner’s configs in one call.

Each keyword names a config (e.g. stepping, newton, tolerances); its value is either a dict of fields to change, or a ready config object.

tracker.configure(stepping={‘max_step_size’: 0.1},

newton={‘max_num_newton_iterations’: 2})

Returns self.

current_point((MultiplePrecisionTracker)self) numpy.ndarray :

what is the current point?

current_precision((MultiplePrecisionTracker)self) int :

what is the current working precision?

current_stepsize((MultiplePrecisionTracker)self) bertini._pybertini.multiprec.real_mp :

what is the current stepsize? a real number.

current_time((MultiplePrecisionTracker)self) bertini._pybertini.multiprec.complex_mp :

what is the current time?

delta_t((MultiplePrecisionTracker)self) bertini._pybertini.multiprec.complex_mp :

what is the current delta_t, the time increment of the latest step? a complex number.

get_config((MultiplePrecisionTracker)self, (object)config_type) object :

Return a copy of this object’s stored configuration struct of the given class.

get_newton((MultiplePrecisionTracker)self) NewtonConfig :

Get the tracker’s internal configuration for Newton correction

get_settings()

This owner’s whole configuration as a carryable dict {config_name: config}.

Each value is a copy of one of the owner’s configs (e.g. {'stepping': SteppingConfig(...), 'tolerances': TolerancesConfig(...)}), keyed by the same short names config_names() lists. The configs are independent copies (and picklable), so the dict is a plain Python value you can stash, tweak, and apply to other owners – the way to carry one set of tracking settings across a series of related solves:

settings = first_solver.get_settings()
next_solver.set_settings(settings)

See set_settings() for applying one back.

get_stepping((MultiplePrecisionTracker)self) SteppingConfig :

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

get_system((MultiplePrecisionTracker)arg1) bertini._pybertini.system.System :

Gets an internal reference to the tracked system.

infinite_truncation((MultiplePrecisionTracker)self, (bool)val) None :

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

infinite_truncation( (MultiplePrecisionTracker)self) -> bool :

Get the bool for whether the tracker should truncate infinite paths. See also infinite_truncation_tolerance

infinite_truncation_tolerance((MultiplePrecisionTracker)self, (float)tol) None :

Set the path truncation tolerance for infinite paths for the tracker

infinite_truncation_tolerance( (MultiplePrecisionTracker)self) -> float :

Get the path truncation tolerance for infinite paths for the tracker

latest_condition_number((MultiplePrecisionTracker)self) float :

the most recent estimate of the condition number of the Jacobian. a real number.

latest_error_estimate((MultiplePrecisionTracker)self) float :

the most recent estimate of the error of a step. a real number.

latest_norm_of_step((MultiplePrecisionTracker)self) float :

the norm of the change in space resulting from the most recent step. a real number.

num_total_steps_taken((MultiplePrecisionTracker)self) int :

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

observers = <module 'bertini._pybertini.tracking.observers.multiple'>
predictor((MultiplePrecisionTracker)self) Predictor :

Query the current predictor method used by the tracker.

predictor( (MultiplePrecisionTracker)self, (Predictor)predictor) -> None :

Set the predictor method used by the tracker.

refine((MultiplePrecisionTracker)self, (numpy.ndarray)result, (numpy.ndarray)start_point, (bertini._pybertini.multiprec.complex_mp)time) SuccessCode :

refine a point using this tracker, from start_point, at fixed time. returns a success code, computed refined point is in result.

refine( (MultiplePrecisionTracker)self, (numpy.ndarray)result, (numpy.ndarray)start_point, (bertini._pybertini.multiprec.complex_mp)time, (float)tolerance, (int)max_iterations) -> SuccessCode :

refine a point using this tracker, from start_point, at fixed time. returns a success code, computed refined point is in result.

reinitialize_initial_step_size((MultiplePrecisionTracker)self, (bool)val) 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)self, (object)observer) None :

Remove an observer to this observable object

set(**fields)

Set config fields on this owner by NAME, each routed to whichever config owns it.

You never name the config struct:

solver.update(final_tolerance="1e-11",          # -> TolerancesConfig
              max_num_crossed_path_resolve_attempts=3)   # -> ZeroDimConfig

Strings work for every numeric field (converted exactly). A field that none of this owner’s configs has raises AttributeError with the valid names – so a typo, or trying to set a tracker field on the algorithm (or vice versa), never silently does nothing. Returns self, so calls chain. To set a whole config at once, or to name the config explicitly, use configure().

set_config((MultiplePrecisionTracker)self, (SteppingConfig)config) None :

Store one of this object’s configuration structs (dispatched by the config’s type).

set_config( (MultiplePrecisionTracker)self, (NewtonConfig)config) -> None :

Store one of this object’s configuration structs (dispatched by the config’s type).

set_config( (MultiplePrecisionTracker)self, (FixedPrecisionConfig)config) -> None :

Store one of this object’s configuration structs (dispatched by the config’s type).

set_newton((MultiplePrecisionTracker)self, (NewtonConfig)config) None :

Set the tracker’s internal configuration for Newton correction

set_settings(settings, strict=False)

Apply a settings dict (from get_settings()) onto this owner. Returns self.

settings is {config_name: config} (or {config_name: {field: value}}). By default only the configs this owner actually has are applied and the rest are skipped – so a bundle carried from one solver drops cleanly onto another whose config set differs (e.g. a different precision model, or a different algorithm stage). Pass strict=True to instead raise on any key this owner does not have.

set_stepping((MultiplePrecisionTracker)self, (SteppingConfig)config) None :

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

set_stepsize((MultiplePrecisionTracker)self, (bertini._pybertini.multiprec.real_mp)stepsize) None :

Set the stepsize for the tracker

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 bertini.tracking.

track_path((MultiplePrecisionTracker)self, (object)result, (bertini._pybertini.multiprec.complex_mp)start_time, (bertini._pybertini.multiprec.complex_mp)end_time, (numpy.ndarray)start_point) SuccessCode :

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

tracking_tolerance((MultiplePrecisionTracker)self) float :

Get. 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)self, (float)tol) -> None :

Set the tracking tolerance for the tracker

update(**fields)

Set config fields on this owner by NAME, each routed to whichever config owns it.

You never name the config struct:

solver.update(final_tolerance="1e-11",          # -> TolerancesConfig
              max_num_crossed_path_resolve_attempts=3)   # -> ZeroDimConfig

Strings work for every numeric field (converted exactly). A field that none of this owner’s configs has raises AttributeError with the valid names – so a typo, or trying to set a tracker field on the algorithm (or vice versa), never silently does nothing. Returns self, so calls chain. To set a whole config at once, or to name the config explicitly, use configure().

class bertini.tracking.NewtonConfig((object)arg1)

Bases: instance

__init__((object)arg1) None
classmethod from_dict(mapping)

Build a config from a dict (default-constructs, then update()).

property max_num_newton_iterations

None( (bertini._pybertini.tracking.NewtonConfig)arg1) -> int

property min_num_newton_iterations

None( (bertini._pybertini.tracking.NewtonConfig)arg1) -> int

set(**kwargs)

Set one or more fields at once; returns self so calls can chain.

Numeric fields accept strings (e.g. max_step_size=”0.05”), which are converted exactly to multiprecision values. Raises AttributeError on an unknown/misspelled field name.

to_dict()

The config’s fields as an ordinary dict of {name: value}.

update(**kwargs)

Set one or more fields at once; returns self so calls can chain.

Numeric fields accept strings (e.g. max_step_size=”0.05”), which are converted exactly to multiprecision values. Raises AttributeError on an unknown/misspelled field name.

class bertini.tracking.Observable

Bases: instance

Raises an exception This class cannot be instantiated from Python

__init__()

Raises an exception This class cannot be instantiated from Python

class bertini.tracking.Predictor

Bases: enum

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

Bases: instance

__init__((object)arg1) None
property consecutive_successful_steps_before_stepsize_increase

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

property 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.

classmethod from_dict(mapping)

Build a config from a dict (default-constructs, then update()).

property initial_step_size

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

property max_num_steps

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

property max_step_size

The maximum allowed stepsize during tracking. See also min_num_steps

property 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.

property min_step_size

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

set(**kwargs)

Set one or more fields at once; returns self so calls can chain.

Numeric fields accept strings (e.g. max_step_size=”0.05”), which are converted exactly to multiprecision values. Raises AttributeError on an unknown/misspelled field name.

property step_size_fail_factor

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

property step_size_success_factor

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

to_dict()

The config’s fields as an ordinary dict of {name: value}.

update(**kwargs)

Set one or more fields at once; returns self so calls can chain.

Numeric fields accept strings (e.g. max_step_size=”0.05”), which are converted exactly to multiprecision values. Raises AttributeError on an unknown/misspelled field name.

class bertini.tracking.SuccessCode

Bases: enum

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

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

Submodules

observers

Observers built to watch a tracker