Contents:
A package to define parameter spaces consisting of mixed types (continuous, integer,
categorical) with conditions and priors. It allows for easy specification of the
parameters and their dependencies. The ParameterSpace
object can then be used to
sample random configurations from the prior and convert any valid configuration
into a numerical representation. This numerical representation has the following
properties:
- it results in a Numpy
ndarray
of typefloat64
- transformed representation between 0 and 1 (uniform) including integers, ordinal and categorical parameters
- inactive parameters are masked as
numpy.nan
values
This allows to easily use optimizers that expect continuous domains to be used on more
complicated problems because parameterspace
can convert any numerical vector
representation inside the unit hypercube into a valid configuration. The function might
not be smooth, but for robust methods (like genetic algorithms/evolutionary strategies)
this might still be valuable.
This software is a research prototype. The software is not ready for production use. It has neither been developed nor tested for a specific use case. However, the license conditions of the applicable Open Source licenses allow you to adapt the software to your needs. Before using it in a safety relevant setting, make sure that the software fulfills your requirements and adjust it according to any applicable safety standards (e.g. ISO 26262).
Visit boschresearch.github.io/parameterspace
The parameterspace
package can be installed from pypi.org:
pip install parameterspace
- Python >= 3.8
- Poetry
To install the package and its dependencies for development run:
poetry install
Optionally install pre-commit hooks to check code standards before committing changes:
poetry run pre-commit install
The tests are located in the ./tests
folder. The pytest
framework is used for running them. To run the tests:
poetry run pytest ./tests
To built documentation run from the repository root:
poetry run mkdocs build --clean
For serving it locally while working on the documentation run:
poetry run mkdocs serve
In the context of naming parameters and using their name to fix them to constant
values or condition on them via lambda
expressions,
facing that only valid Python variable names can be used in conditions, and that
fixing parameters that do not have a valid parameter name can only be done like
fix(**{"invalid-variable:name": "const"})
we decided for requiring all parameter names to be valid Python variable names
to achieve early failure and communication of that convention to avoid surprises
when fixing and using conditions down the line, accepting that this rules out common
parameter names like lambda
and might require explicit translation between from and to
contexts that require incompatible names (e.g. predefined benchmarks).
parameterspace
is open-sourced under the Apache-2.0 license. See the
LICENSE file for details.
For a list of other open source components included in parameterspace
, see the file
3rd-party-licenses.txt.