"""General configuration for respy.""" from pathlib import Path import numpy as np # Obtain the root directory of the package. Do not import respy which creates a circular # import. [docs]ROOT_DIR = Path(__file__).parent # Directory with additional resources for the testing harness [docs]TEST_DIR = ROOT_DIR / "tests" [docs]TEST_RESOURCES_DIR = ROOT_DIR / "tests" / "resources" # Set maximum numbers to 1e200 and log(1e200) = 460. [docs]MAX_FLOAT = 1e200 [docs]MIN_FLOAT = -MAX_FLOAT [docs]MAX_LOG_FLOAT = 460 [docs]MIN_LOG_FLOAT = -MAX_LOG_FLOAT [docs]COVARIATES_DOT_PRODUCT_DTYPE = np.float64 """numpy.dtype : Dtype of covariates before being used in a dot product. If you convert a DataFrame with boolean variables and others to an NumPy array, the resulting array will have an 'object' dtype. Having an 'object' dtype array causes a lot of problems as functions like :func:`numpy.exp` will fail raising an uninformative error message. """ [docs]DTYPE_STATES = np.uint8 [docs]INDEXER_DTYPE = np.int32 """numpy.dtype : Data type for the entries in the state space indexer.""" [docs]INDEXER_INVALID_INDEX = np.iinfo(INDEXER_DTYPE).min """int : Identifier for invalid states. Every valid state has a unique number which is stored in the state space indexer at the correct position. Invalid entries in the indexer are filled with :data:`INDEXER_INVALID_INDEX` which is the most negative value for :data:`INDEXER_DTYPE`. Using the invalid value as an index likely raises an :class:`IndexError` as negative indices cannot exceed the length of the indexed array dimension. """ # Some assert functions take rtol instead of decimals [docs]TOL_REGRESSION_TESTS = 1e-10 [docs]SEED_STARTUP_ITERATION_GAP = 1_000_000 [docs]DEFAULT_OPTIONS = { "estimation_draws": 200, "estimation_seed": 1, "estimation_tau": 500, "interpolation_points": -1, "simulation_agents": 1000, "simulation_seed": 2, "solution_draws": 200, "solution_seed": 3, "core_state_space_filters": [], "negative_choice_set": {}, "monte_carlo_sequence": "sobol", "state_space_compression": "snappy", } [docs]KEANE_WOLPIN_1994_MODELS = [f"kw_94_{suffix}" for suffix in ["one", "two", "three"]] [docs]KEANE_WOLPIN_1997_MODELS = ["kw_97_basic", "kw_97_extended"] [docs]KEANE_WOLPIN_2000_MODELS = ["kw_2000"] [docs]ROBINSON_CRUSOE_MODELS = [ "robinson_crusoe_basic", "robinson_crusoe_extended", "robinson_crusoe_with_observed_characteristics", ] [docs]EXAMPLE_MODELS = ( KEANE_WOLPIN_1994_MODELS + KEANE_WOLPIN_1997_MODELS + KEANE_WOLPIN_2000_MODELS + ROBINSON_CRUSOE_MODELS )