QuTiP settings
QuTiP has multiple settings that control it’s behaviour:
qutip.settings
contains installation and runtime information. Most of these parameters are readonly. But systems paths used by QuTiP are also included here and could need updating in none standard environment.qutip.settings.core
contains options for operations withQobj
and other qutip’s class. All options are writable.qutip.settings.compile
has options that control compilation of string coefficients to cython modules. All options are writable.
Environment settings
qutip.settings
has information about the run time environment:
Setting |
Read Only |
Description |
---|---|---|
has_mkl |
True |
Whether qutip can find mkl libraries. mkl sparse linear equation solver can be used when True. |
mkl_lib_location |
False |
Path of the mkl library. |
mkl_lib |
True |
Mkl libraries loaded with ctypes. |
ipython |
True |
Whether running in IPython. |
eigh_unsafe |
True |
When true, SciPy’s eigh and eigvalsh are replaced with custom implementations that call eig and eigvals instead. This setting exists because in some environments SciPy’s eigh segfaults or gives invalid results. |
coeffroot |
False |
Directory in which QuTiP creates cython modules for string coefficient. |
coeff_write_ok |
True |
Whether QuTiP has write permission for coeffroot. |
idxint_size |
True |
Whether QuTiP’s sparse matrix indices use 32 or 64 bits. Sparse matrices’ size are limited to 2**(idxint_size-1) rows and columns. |
num_cpus |
True |
Detected number of cpus. |
colorblind_safe |
False |
Control the default cmap in visualization functions. |
It may be needed to update coeffroot
if the default HOME is not writable. It can be done with:
>>> qutip.settings.coeffroot = "path/to/string/coeff/directory"
In QuTiP version 5 and later, strings compiled in a session are kept for future sessions.
As long as the same coeffroot
is used, each string will only be compiled once.
Modifying Internal QuTiP Settings
User Accessible Parameters
In this section we show how to modify a few of the internal parameters used by Qobj
.
The settings that can be modified are given in the following table:
Options |
Description |
type [default] |
---|---|---|
auto_tidyup |
Automatically tidyup sparse quantum objects. |
bool [True] |
auto_tidyup_atol |
Tolerance used by tidyup. (sparse only) |
float [1e-14] |
auto_tidyup_dims |
Whether the scalar dimension are contracted |
bool [False] |
atol |
General absolute tolerance. |
float [1e-12] |
rtol |
General relative tolerance. |
float [1e-12] |
function_coefficient_style |
Signature expected by function coefficients. |
{[“auto”], “pythonic”, “dict”} |
default_dtype |
Data format used when creating Qobj from
QuTiP functions, such as |
{[None], “CSR”, “Dense”, “Dia”} + other from plugins |
See also CoreOptions
.
Example: Changing Settings
The two most important settings are auto_tidyup
and auto_tidyup_atol
as
they control whether the small elements of a quantum object should be removed,
and what number should be considered as the cut-off tolerance.
Modifying these, or any other parameters, is quite simple:
>>> qutip.settings.core["auto_tidyup"] = False
The settings can also be changed for a code block:
>>> with qutip.CoreOptions(atol=1e-5):
>>> assert qutip.qeye(2) * 1e-9 == qutip.qzero(2)
String Coefficient Parameters
String based coefficient used for time dependent system are compiled using Cython when available.
Speeding the simulations, it tries to set c types to passed variables.
qutip.settings.compile
has multiple options for compilation.
There are options are about to whether to compile.
Options |
Description |
---|---|
use_cython |
Whether to compile string using cython or using |
recompile |
Whether to force recompilation or use a previously constructed coefficient if available. |
Some options passed to cython and the compiler (for advanced user).
Options |
Description |
---|---|
compiler_flags |
C++ compiler flags. |
link_flags |
C++ linker flags. |
build_dir |
cythonize’s build_dir. |
extra_import |
import or cimport line of code to add to the cython file. |
clean_on_error |
Whether to erase the created file if compilation failed. |
Lastly some options control how qutip tries to detect C types (for advanced user).
Options |
Description |
---|---|
try_parse |
Whether QuTiP parses the string to detect common patterns. When True, “cos(w * t)” and “cos(a * t)” will use the same compiled coefficient. |
static_types |
If False, every variable will be typed as If True, scalar (int, float, complex), string and Data types are detected. |
accept_int |
Whether to type Per default it is True when subscription ( |
accept_float |
Whether to type Per default it is True when comparison ( |
These options can be set at a global level in qutip.settings.compile
or by passing a CompilationOptions
instance to the coefficient
functions.
>>> qutip.coefficient("cos(t)", compile_opt=CompilationOptions(recompile=True))