decogo.util.block_vector

Implements sparse and dense block vector data structures

Functions

infinity_norm(x)

Computes infinity norm, i.e. \(||x||_\infty = \max\limits_{k \in K, i \in n_k}|x_{ki}|\).

Classes

BlockVector([blocks_size])

This class stores dense vector with the respect to blocks

SparseBlockVector(values, blocks_size)

Class for storing the values in sparse format blockwise.

class decogo.util.block_vector.SparseBlockVector(values, blocks_size)[source]

Class for storing the values in sparse format blockwise. It consists of k blocks. Each block uses the standard Python sparse matrix with dimension \(1 \times n_k\), where \(n_k\) is the block size

Parameters:
  • vectors (dict) – Sparse matrices stored blockwise

  • blocks_size (list) – Size of the blocks

  • blocks (list) – Block ids which contain nonzero values

__init__(values, blocks_size)[source]

Constructor method

Parameters:
  • values (list) – List of tuples (block_id, index, value)

  • blocks_size (list) – Number of variables per block

__getitem__(item)[source]

Index operator

Parameters:

item (tuple) – Input index as tuple: (block_id, index)

Returns:

Value associated with the given index

Return type:

float

scalar_prod(x)[source]

Scalar product computation (or dot product) computed blockwise, \(v=\sum_{k \in K}a_k^Tx_k\)

Parameters:

x (SparseBlockVector or BlockVector) – Input vector

Returns:

Value for scalar product \(v\)

Return type:

float

maxabs(block_id=None)[source]

Finds maximum element by absolute value

Parameters:

block_id (int, optional) – Block id where to look for the maximum value

Returns:

Max element by absolute value

Return type:

float or None

property num_blocks

Return number of blocks

Returns:

Return number of blocks

Return type:

int

get_block(block_id)[source]

Gets vector associated with the given block id

Parameters:

block_id (int) – Given block identifier

Returns:

Sparse vector (matrix)

Return type:

coo_matrix or None

get_block_size(k)[source]

Get block size associated with the given block id

Parameters:

k (int) – Given block identifier

Returns:

Block size

Return type:

int

get_norm()[source]
class decogo.util.block_vector.BlockVector(blocks_size=None)[source]

This class stores dense vector with the respect to blocks

Parameters:
  • vectors (dict) – Dense vectors stored blockwise

  • blocks_size (list) – Size of the blocks

  • blocks (list) – Block identifiers

__init__(blocks_size=None)[source]

Constructor method

__getitem__(item)[source]

Index operator

Parameters:

item (tuple) – Input index in tuple (block_id, index)

Returns:

Value associated to index

Return type:

float

get_block(block_id)[source]

Get vector associated to the blocks

Parameters:

block_id – Block identifier

Returns:

Vector

Return type:

ndarray

set_block(block_id, array)[source]

Sets vector associated to block

Parameters:
  • block_id (int) – Block identifier

  • array (ndarray) – Array to set

__setitem__(key, value)[source]

Index operator

Parameters:
  • key (tuple) – Index as tuple: (block_id, index)

  • value (float) – Value to set

__str__()[source]

String operator

Returns:

Nicer way of string representation

Return type:

str

property num_blocks

Return number of blocks

Returns:

Number of blocks

Return type:

int

__add__(other)[source]

Operator +

Parameters:

other (BlockVector) – Other vector

Returns:

Sum of two vectors

Return type:

BlockVector

__sub__(other)[source]

Operator -

Parameters:

other (BlockVector) – Other vector

Returns:

Difference of two vectors

Return type:

BlockVector

__eq__(other)[source]

Operator ==, checks if two vectors are equal

Parameters:

other (BlockVector) – Other vector

Returns:

True or False

Return type:

bool

__mul__(other)[source]

Multiplication operator. Currently supports only scalar types for multiplication

Parameters:

other (float) – Scalar value

Returns:

Vector multiplied by scalar value

Return type:

BlockVector

Raises:

ValueError – If other is not a sequence

__truediv__(other)[source]

True division operator. Currently supports only scalar types for division

Parameters:

other (float) – Scalar value

Returns:

Vector divided by scalar value

Return type:

BlockVector

Raises:

ValueError – If other is not a sequence

__abs__()[source]

Absolute value operator

Returns:

New vector with absolute values

Return type:

BlockVector

decogo.util.block_vector.infinity_norm(x)[source]

Computes infinity norm, i.e. \(||x||_\infty = \max\limits_{k \in K, i \in n_k}|x_{ki}|\)

Parameters:

x (BlockVector or SparseBlockVector) – Input vector

Returns:

Value of infinity norm

Return type:

float