py21cmfast.wrapper.inputs ========================= .. py:module:: py21cmfast.wrapper.inputs .. autoapi-nested-parse:: Input parameter classes. There are four input parameter/option classes, not all of which are required for any given function. They are :class:`SimulationOptions`, :class:`CosmoParams`, :class:`AstroParams` and :class:`AstroOptions`. Each of them defines a number of variables, and all of these have default values, to minimize the burden on the user. These defaults are accessed via the ``_defaults_`` class attribute of each class. The available parameters for each are listed in the documentation for each class below. .. !! processed by numpydoc !! Attributes ---------- .. autoapisummary:: py21cmfast.wrapper.inputs.FilterOptions py21cmfast.wrapper.inputs.IntegralMethods py21cmfast.wrapper.inputs.Planck18 py21cmfast.wrapper.inputs.logger Exceptions ---------- .. toctree:: :hidden: /autoapi/py21cmfast/wrapper/inputs/InputCrossValidationError .. autoapisummary:: py21cmfast.wrapper.inputs.InputCrossValidationError Classes ------- .. toctree:: :hidden: /autoapi/py21cmfast/wrapper/inputs/AstroOptions /autoapi/py21cmfast/wrapper/inputs/AstroParams /autoapi/py21cmfast/wrapper/inputs/CosmoParams /autoapi/py21cmfast/wrapper/inputs/CosmoTables /autoapi/py21cmfast/wrapper/inputs/InputParameters /autoapi/py21cmfast/wrapper/inputs/InputStruct /autoapi/py21cmfast/wrapper/inputs/MatterOptions /autoapi/py21cmfast/wrapper/inputs/SimulationOptions /autoapi/py21cmfast/wrapper/inputs/Table1D .. autoapisummary:: py21cmfast.wrapper.inputs.AstroOptions py21cmfast.wrapper.inputs.AstroParams py21cmfast.wrapper.inputs.CosmoParams py21cmfast.wrapper.inputs.CosmoTables py21cmfast.wrapper.inputs.InputParameters py21cmfast.wrapper.inputs.InputStruct py21cmfast.wrapper.inputs.MatterOptions py21cmfast.wrapper.inputs.SimulationOptions py21cmfast.wrapper.inputs.Table1D Functions --------- .. autoapisummary:: py21cmfast.wrapper.inputs.between py21cmfast.wrapper.inputs.check_halomass_range py21cmfast.wrapper.inputs.choice_field py21cmfast.wrapper.inputs.choice_transformer py21cmfast.wrapper.inputs.choice_validator py21cmfast.wrapper.inputs.dex2exp_transformer py21cmfast.wrapper.inputs.field py21cmfast.wrapper.inputs.get_logspaced_redshifts py21cmfast.wrapper.inputs.input_param_field py21cmfast.wrapper.inputs.logtransformer Module Contents --------------- .. py:function:: between(mn, mx) Validate that a value is between two values. .. !! processed by numpydoc !! .. py:function:: check_halomass_range(inputs: InputParameters) -> None Check that the halo mass range is sensible given the parameters. This function checks that the minimum halo mass set by the various resolutions and flags does not have any gaps. We raise an error if there is a gap, and a warning if it is above the turnover mass. .. !! processed by numpydoc !! .. py:function:: choice_field(*, validator=None, **kwargs) Create an attrs.field that is a choice. .. !! processed by numpydoc !! .. py:function:: choice_transformer(choice: str, att: attrs.Attribute) -> int Produce a transformer that converts a string to int. The function must be passed a list of string choices. The resulting int is the index of the choice made. .. !! processed by numpydoc !! .. py:function:: choice_validator(inst, att: attrs.Attribute, val) Validate that a value is one of the choices. .. !! processed by numpydoc !! .. py:function:: dex2exp_transformer(x, att: attrs.Attribute) Convert from dex to exponential space. .. rubric:: Notes The reason why we convert our sigma parameters (the width of the lognormal distributions) from base-10 to base-e is because the C code works with lognormal distributions in base-e, for the following reasons: 1. If HALO_SCALING_RELATIONS_MEDIAN = False, the mu parameter of the distribution has to be adjusted by a factor of the form exp(-sigma^2 /2), if the distribution and sigma are in base-e, or by a factor of the form 10^{-ln(10)*sigma^2 /2} if the distribution and sigma are in base-10. Using base-e in the C code saves us from multiplying by ln(10). 2. In the case of stellar mass (stellar fraction), there is a multiplicative term of the form exp(-M_turn/M). Numerically, it is more efficient to combine the arguments of this exponent with the normally distributed random variable (to make the distribution log-normal), which is what the C code does. Working with base-10 in the C could would require having an expression like 10^[-M_turn/M /ln(10)], if we wish to combine the arguments in the power-law. Since the C code works with base-e, it saves the need to divide by ln(10). While the multiplication/division by ln(10) is not a major overhead for one halo, when the box contains billions of halos that are evolved through various redshift snapshots, the work with base-e in the C code saves us from executing billions of unnecessary multiplications/divisions. .. !! processed by numpydoc !! .. py:function:: field(*, transformer=None, **kw) Define an attrs field with a 'transformer' property. The transformer, if given, should be a function of a single variable, which will be the attribute's value. It will be used to transform the value before usage in C-code (e.g. by transformin from log to linear space). .. !! processed by numpydoc !! .. py:function:: get_logspaced_redshifts(min_redshift: float, z_step_factor: float, max_redshift: float) -> tuple[float, Ellipsis] Compute a sequence of redshifts to evolve over that are log-spaced. .. !! processed by numpydoc !! .. py:function:: input_param_field(kls: InputStruct) Create an attrs field that must be an InputStruct. :Parameters: **kls** (*InputStruct subclass*) -- The parameter structure which should be returned as an attrs field .. !! processed by numpydoc !! .. py:function:: logtransformer(x, att: attrs.Attribute) Convert from log to linear space. .. !! processed by numpydoc !! .. py:data:: FilterOptions .. py:data:: IntegralMethods .. py:data:: Planck18 .. py:data:: logger