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.V_CB_AVG_DEFAULT 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, when there are discrete halos in the simulation. We raise an error if there is a gap in the simulated halo mass range, and a warning if the largest halo mass is below the maximum integral mass (without discrete halos). .. !! 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, ...] 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: float | None, att: attrs.Attribute) Convert from log to linear space. .. !! processed by numpydoc !! .. py:data:: FilterOptions .. py:data:: IntegralMethods .. py:data:: Planck18 .. py:data:: V_CB_AVG_DEFAULT :value: 27.0 .. py:data:: logger