relentless.collections.PairMatrix#
- class relentless.collections.PairMatrix(keys, default=None)#
Generic matrix of values per-pair.
Defines a symmetric matrix of parameters corresponding to
(i,j)pairs. The matrix is essentially a dictionary of dictionaries, keyed on(i,j). There is an equivalent virtual entry for(j,i). (The pairs that are actually saved havej >= i.) The dictionary associated with each pair can have any number of entries in it, although a common use case is to have the same parameter stored per-pair.The pairs in the matrix are frozen from the list of types specified when the object is constructed. It is an error to access pairs that cannot be formed from
types.The pair matrix emulates a dictionary, and its pairs are iterable.
- Parameters:
types (array_like) – List of types (A type must be a
str).- Raises:
ValueError – If initialization occurs with empty
types.TypeError – If
typesdoes not consist of only strings.
Examples
Create a pair matrix:
m = PairMatrix(types=('A','B'))
Set a pair matrix value:
m['A','A']['energy'] = 1.0 m['A','B']['energy'] = -1.0 m['B','B']['energy'] = 1.0
Get a pair matrix value:
>>> m['A','A']['energy'] 1.0 >>> m['A','B']['energy'] -1.0 >>> m['B','A']['energy'] -1.0
Iterate a pair matrix:
for pair in m: m[pair]['mass'] = 1.0
Multiple parameters are a dictionary:
>>> m['A','B'] {'energy': -1.0, 'mass': 1.0}
Single-type matrix still needs
typesas a tuple:PairMatrix(types=('A',))
Methods
clear()Clear entries in the dictionary, resetting to default.
get(k[,d])items()keys()pop(k[,d])If key is not found, d is returned if given, otherwise KeyError is raised.
popitem()as a 2-tuple; but raise KeyError if D is empty.
setdefault(k[,d])update([E, ]**F)If E present and has a .keys() method, does: for k in E: D[k] = E[k] If E present and lacks .keys() method, does: for (k, v) in E: D[k] = v In either case, this is followed by: for k, v in F.items(): D[k] = v
values()- clear()#
Clear entries in the dictionary, resetting to default.
- get(k[, d]) D[k] if k in D, else d. d defaults to None.#
- items() a set-like object providing a view on D's items#
- keys() a set-like object providing a view on D's keys#
- pop(k[, d]) v, remove specified key and return the corresponding value.#
If key is not found, d is returned if given, otherwise KeyError is raised.
- popitem() (k, v), remove and return some (key, value) pair#
as a 2-tuple; but raise KeyError if D is empty.
- setdefault(k[, d]) D.get(k,d), also set D[k]=d if k not in D#
- update([E, ]**F) None. Update D from mapping/iterable E and F.#
If E present and has a .keys() method, does: for k in E: D[k] = E[k] If E present and lacks .keys() method, does: for (k, v) in E: D[k] = v In either case, this is followed by: for k, v in F.items(): D[k] = v
- values() an object providing a view on D's values#