metawards.VariableSet

class metawards.VariableSet(variables: Optional[Dict[str, float]] = None, repeat_index: int = 1, names: Optional[List[str]] = None, values: Optional[List[float]] = None)[source]

This class holds a single set of adjustable variables that are used to adjust the variables as part of a model run

Examples

>>> v = VariableSet()
>>> v["beta[1]"] = 0.95
>>> v["beta[2]"] = 0.9
>>> print(v.fingerprint())
(beta[1]=0.95, beta[2]=0.9)[repeat 1]
>>> params = Parameters()
>>> params.set_disease("ncov")
>>> v.adjust(params)
>>> print(params.disease_params.beta[1],
>>>       params.disease_params.beta[2])
0.95 0.9
__init__(variables: Optional[Dict[str, float]] = None, repeat_index: int = 1, names: Optional[List[str]] = None, values: Optional[List[float]] = None)[source]

Construct a new VariableSet from the passed adjusted variable values.

Parameters
  • names (List[str]) – The list of the names of the variables to adjust

  • values (List[float]) – The values of the variables to adjust (same order as names)

  • variables (Dict[str, float]) – names and values of variables to adjust passed as a dictionary

  • repeat_index (int) – the index used to distinguish different repeats of the same VariableSet from one another

Examples

>>> v = VariableSet()
>>> v["beta[1]"] = 0.95
>>> v["beta[2]"] = 0.9
>>> print(v.fingerprint())
(beta[1]=0.95, beta[2]=0.9)[repeat 1]

Methods

__delattr__(name, /)

Implement delattr(self, name).

__dir__()

Default dir() implementation.

__eq__(other)

Return self==value.

__format__(format_spec, /)

Default object formatter.

__ge__(value, /)

Return self>=value.

__getattribute__(name, /)

Return getattr(self, name).

__getitem__(key)

__gt__(value, /)

Return self>value.

__init__([variables, repeat_index, names, …])

Construct a new VariableSet from the passed adjusted variable values.

__init_subclass__

This method is called when a class is subclassed.

__le__(value, /)

Return self<=value.

__len__()

__lt__(value, /)

Return self<value.

__ne__(value, /)

Return self!=value.

__new__(**kwargs)

Create and return a new object.

__reduce__()

Helper for pickle.

__reduce_ex__(protocol, /)

Helper for pickle.

__repr__()

Return repr(self).

__setattr__(name, value, /)

Implement setattr(self, name, value).

__setitem__(key, value)

__sizeof__()

Size of object in memory, in bytes.

__str__()

Return a printable representation of the variables to be adjusted

__subclasshook__

Abstract classes can override this to customize issubclass().

_add(name, value)

Internal function to add a new variable called ‘name’ to be varied - it will be set equal to ‘value’

_extract_values(fingerprint)

adjust(params)

Use the variables in this set to adjust the passed parameters.

adjustable_help()

Return a string that contains some help that is useful for finding out which variables can be adjusted

create_fingerprint(vals[, index, include_index])

Create the fingerprint for the passed values

extract_values(fingerprint)

Return the original values from the passed fingerprint or filename.

fingerprint([include_index])

Return a fingerprint for this VariableSet.

from_data(data)

Build a VariableSet from the passed data dictionary (which may have been deserialised from json

from_json(s)

Construct and return VariableSet loaded from the passed json file

get_value(key)

Return the value of ‘key’

is_empty()

Return whether or not there is nothing to change

make_compatible_with(other)

Return a copy of this VariableSet which has been made compatible with ‘other’.

output_dir()

Return the output directory in which runs using this variable set should be placed.

read(filename)

Read a single set of adjustable variables from the passed file.

repeat_index()

Return the repeat index of this set.

set_value(key, value)

Set the value of ‘key’ to ‘value’

to_data()

Return a data dictionary that can be serialised to json

to_json([filename, indent, auto_bzip])

Serialise the VariableSet to JSON.

variable_names()

Return the names of the variables that will be adjusted by this VariableSet

variable_values()

Return the values that the variables will be adjusted to.

variables()

Return the variables (name and values) to be adjusted

Attributes

__dict__

__doc__

__hash__

__module__

__weakref__

list of weak references to the object (if defined)

__eq__(other)[source]

Return self==value.

__init__(variables: Optional[Dict[str, float]] = None, repeat_index: int = 1, names: Optional[List[str]] = None, values: Optional[List[float]] = None)[source]

Construct a new VariableSet from the passed adjusted variable values.

Parameters
  • names (List[str]) – The list of the names of the variables to adjust

  • values (List[float]) – The values of the variables to adjust (same order as names)

  • variables (Dict[str, float]) – names and values of variables to adjust passed as a dictionary

  • repeat_index (int) – the index used to distinguish different repeats of the same VariableSet from one another

Examples

>>> v = VariableSet()
>>> v["beta[1]"] = 0.95
>>> v["beta[2]"] = 0.9
>>> print(v.fingerprint())
(beta[1]=0.95, beta[2]=0.9)[repeat 1]
__repr__()[source]

Return repr(self).

__str__()[source]

Return a printable representation of the variables to be adjusted

adjust(params)[source]

Use the variables in this set to adjust the passed parameters. Note that this directly modifies ‘params’

Parameters

params (Parameters) – The parameters whose variables will be adjusted

Returns

Return type

None

Examples

>>> v = VariableSet()
>>> v["beta[1]"] = 0.95
>>> v["beta[2]"] = 0.9
>>> print(v.fingerprint())
(beta[1]=0.95, beta[2]=0.9)[repeat 1]
>>> params = Parameters()
>>> params.set_disease("ncov")
>>> v.adjust(params)
>>> print(params.disease_params.beta[1],
>>>       params.disease_params.beta[2])
0.95 0.9
static adjustable_help()[source]

Return a string that contains some help that is useful for finding out which variables can be adjusted

static create_fingerprint(vals: List[float], index: Optional[int] = None, include_index: bool = False)[source]

Create the fingerprint for the passed values

static extract_values(fingerprint: str)[source]

Return the original values from the passed fingerprint or filename. This assumes that the fingerprint was created using the ‘fingerprint’ function, namely that any integers are actually 0.INTEGER

Parameters

fingerprint (str) – The fingerprint (or filename) to decode

Returns

(values, repeat) – The list of values of the variables and the repeat index. The repeat index is None if it wasn’t included in the fingerprint

Return type

(List[float], int)

fingerprint(include_index: bool = False)[source]

Return a fingerprint for this VariableSet. This can be used to quickly identify and distinguish the values of the variables in this set from the values in other VariableSets which have the same adjustable variables, but different parameters

Parameters

include_index (bool) – Whether or not to include the repeat_index in the fingerprint

Returns

fingerprint – The fingerprint for this VariableSet

Return type

str

static from_data(data)[source]

Build a VariableSet from the passed data dictionary (which may have been deserialised from json

static from_json(s: str)[source]

Construct and return VariableSet loaded from the passed json file

get_value(key)[source]

Return the value of ‘key’

is_empty()[source]

Return whether or not there is nothing to change

make_compatible_with(other)[source]

Return a copy of this VariableSet which has been made compatible with ‘other’. This means that it will change the same variables as ‘other’, e.g. by adding ‘None’ changes for missing variables. This will raise an error if it is not possible to make this set compatible

Parameters

other (VariableSet) – The passed VariableSet for which this should be made compatible

Returns

result – A copy of this VariableSet which is now compatible with ‘other’

Return type

VariableSet

Example

>>> v1 = VariableSet()
>>> v1["beta[1]"] = 0.9
>>> v1["beta[2]"] = 0.8
>>> v2 = VariableSet()
>>> v2["beta[1]"] = 0.6
>>> v2 = v2.make_compatible_with(v1)
>>> print(v2)
(beta[1]=0.6, beta[2]=0.8)[repeat 1]
output_dir()[source]

Return the output directory in which runs using this variable set should be placed. Normally this would be the fingerprint of the variable set, but users may prefer to specify their own naming scheme, which can be added via a design file

static read(filename: str)[source]

Read a single set of adjustable variables from the passed file. The file can either write the variables in horizontal or vertical mode, using space or comma separated values.

This is useful for when you want to set a global set of parameters at the start of a calculation and don’t want to use a large VariableSets

Parameters

filename (str) – The name of the file containing the VariableSet

Returns

variables – The VariableSet that has been read

Return type

VariableSet

repeat_index()[source]

Return the repeat index of this set. The repeat index is the ID of this set if the VariableSet is repeated. The index should range from 1 to nrepeats

Returns

index – The repeat index of this set

Return type

int

set_value(key, value)[source]

Set the value of ‘key’ to ‘value’

to_data()[source]

Return a data dictionary that can be serialised to json

to_json(filename: Optional[str] = None, indent: Optional[int] = None, auto_bzip: bool = True)str[source]

Serialise the VariableSet to JSON. This will write to a file if filename is set, otherwise it will return a JSON string.

Parameters
  • filename (str) – The name of the file to write the JSON to. The absolute path to the written file will be returned. If filename is None then this will serialise to a JSON string which will be returned.

  • indent (int) – The number of spaces of indent to use when writing the json

  • auto_bzip (bool) – Whether or not to automatically bzip2 the written json file

Returns

Returns either the absolute path to the written file, or the json-serialised string

Return type

str

variable_names()[source]

Return the names of the variables that will be adjusted by this VariableSet

Returns

names – The list of names of variables to be adjusted

Return type

List[str]

variable_values()[source]

Return the values that the variables will be adjusted to. Note that ‘None’ means that the variable won’t be adjusted from its default (original) value

Returns

values – The list of values for variables to be adjusted to

Return type

List[float]

variables()[source]

Return the variables (name and values) to be adjusted

Returns

variables – The dictionary mapping the names of the variables that with be adjusted to their desired values

Return type

Dict[str, float]