empyrean.ParamDisposition

class ParamDisposition(*values)[source]

Bases: str, Enum

A parameter axis’s treatment in a fit.

Subclasses str so values serialize directly into the string columns that carry them, matching the convention CovarianceKind and non_grav.model already use.

The three are different operations with different mathematics, and using one where another is meant is silent — each produces a well-formed covariance:

  • FIXED — marginalized out of the prior. Contributes nothing and changes no number.

  • SOLVED — estimated from the data. Occupies a solved slot and comes back with a posterior variance.

  • CONSIDERED — not estimated, but uncertain: its prior uncertainty reaches the posterior through its measurement partials (Schmidt-Kalman consider analysis; Tapley, Byron D., Schutz, Bob E., and Born, George H., Statistical Orbit Determination, Elsevier Academic Press, 2004, ch. 6).

A considered axis is not a safety margin. Under an uncorrelated prior the correction strictly widens the posterior, but when the orbit supplies cross terms between the considered axis and the solved ones the correction is sign-indefinite and the posterior can come back tighter.

No boolean coercion

There is deliberately no from_bool and no truthiness contract beyond str’s. A disposition is a modelling statement, and a conversion that turned True into SOLVED would let a call site inherit one rather than state it. Passing True where a disposition is expected raises rather than resolving:

>>> ParamDisposition.parse(True)
Traceback (most recent call last):
  ...
TypeError: parameter disposition must be a string ...

Methods

encode([encoding, errors])

Encode the string using the codec registered for encoding.

replace(old, new[, count])

Return a copy with all occurrences of substring old replaced by new.

split([sep, maxsplit])

Return a list of the substrings in the string, using sep as the separator string.

rsplit([sep, maxsplit])

Return a list of the substrings in the string, using sep as the separator string.

join(iterable, /)

Concatenate any number of strings.

capitalize()

Return a capitalized version of the string.

casefold()

Return a version of the string suitable for caseless comparisons.

title()

Return a version of the string where each word is titlecased.

center(width[, fillchar])

Return a centered string of length width.

count(sub[, start[, end]])

Return the number of non-overlapping occurrences of substring sub in string S[start:end].

expandtabs([tabsize])

Return a copy where all tab characters are expanded using spaces.

find(sub[, start[, end]])

Return the lowest index in S where substring sub is found, such that sub is contained within S[start:end].

partition(sep, /)

Partition the string into three parts using the given separator.

index(sub[, start[, end]])

Return the lowest index in S where substring sub is found, such that sub is contained within S[start:end].

ljust(width[, fillchar])

Return a left-justified string of length width.

lower()

Return a copy of the string converted to lowercase.

lstrip([chars])

Return a copy of the string with leading whitespace removed.

rfind(sub[, start[, end]])

Return the highest index in S where substring sub is found, such that sub is contained within S[start:end].

rindex(sub[, start[, end]])

Return the highest index in S where substring sub is found, such that sub is contained within S[start:end].

rjust(width[, fillchar])

Return a right-justified string of length width.

rstrip([chars])

Return a copy of the string with trailing whitespace removed.

rpartition(sep, /)

Partition the string into three parts using the given separator.

splitlines([keepends])

Return a list of the lines in the string, breaking at line boundaries.

strip([chars])

Return a copy of the string with leading and trailing whitespace removed.

swapcase()

Convert uppercase characters to lowercase and lowercase characters to uppercase.

translate(table, /)

Replace each character in the string using the given translation table.

upper()

Return a copy of the string converted to uppercase.

startswith(prefix[, start[, end]])

Return True if S starts with the specified prefix, False otherwise.

endswith(suffix[, start[, end]])

Return True if S ends with the specified suffix, False otherwise.

removeprefix(prefix, /)

Return a str with the given prefix string removed if present.

removesuffix(suffix, /)

Return a str with the given suffix string removed if present.

isascii()

Return True if all characters in the string are ASCII, False otherwise.

islower()

Return True if the string is a lowercase string, False otherwise.

isupper()

Return True if the string is an uppercase string, False otherwise.

istitle()

Return True if the string is a title-cased string, False otherwise.

isspace()

Return True if the string is a whitespace string, False otherwise.

isdecimal()

Return True if the string is a decimal string, False otherwise.

isdigit()

Return True if the string is a digit string, False otherwise.

isnumeric()

Return True if the string is a numeric string, False otherwise.

isalpha()

Return True if the string is an alphabetic string, False otherwise.

isalnum()

Return True if the string is an alpha-numeric string, False otherwise.

isidentifier()

Return True if the string is a valid Python identifier, False otherwise.

isprintable()

Return True if all characters in the string are printable, False otherwise.

zfill(width, /)

Pad a numeric string with zeros on the left, to fill a field of the given width.

format(*args, **kwargs)

Return a formatted version of S, using substitutions from args and kwargs.

format_map(mapping)

Return a formatted version of S, using substitutions from mapping.

maketrans

Return a translation table usable for str.translate().

parse(value)

Parse a wire tag, refusing anything that is not one.

__init__(*args, **kwds)

Attributes

is_solved

Whether this axis is estimated (and so occupies a solved slot).

is_considered

Whether this axis inflates the posterior through consider analysis.

FIXED

SOLVED

CONSIDERED

FIXED = 'fixed'
SOLVED = 'solved'
CONSIDERED = 'considered'
classmethod parse(value)[source]

Parse a wire tag, refusing anything that is not one.

A bool is refused by name rather than coerced — the whole point of the tri-state is that “not solved” is two different answers, and False cannot say which.

Return type:

ParamDisposition

Parameters:

value (object)

property is_solved: bool

Whether this axis is estimated (and so occupies a solved slot).

property is_considered: bool

Whether this axis inflates the posterior through consider analysis.