Matrix

To reduce overhead and external dependencies, PyHPO uses an internal data matrix, pyhpo.Matrix. It is used for row- and columnwise comparisons of HPOSets.

Matrix should not be used for other purposes, as it does not contain much error handling and expects conform clients.

Matrix class

class pyhpo.matrix.Matrix(rows: int, cols: int, data: Optional[List[Any]] = None)[source]

# noqa: E501 Poor man’s implementation of a DataFrame/Matrix

This is used to calculate similarities between HPO sets and is surprisingly much faster than using pandas DataFrames

Note

Pandas:

===== COMPARING SETS ======
23806489 function calls (23770661 primitive calls) in 19.705 seconds

ncalls  tottime  percall  cumtime  percall filename:lineno(function)
....
9900    0.267    0.000   19.106    0.002 set.py:318(similarity)
9900    1.124    0.000   14.330    0.001 set.py:477(_sim_score)
....

Matrix:

===== COMPARING SETS ======
12870433 function calls in 6.642 seconds

ncalls  tottime  percall  cumtime  percall filename:lineno(function)
....
9900    0.048    0.000    6.424    0.001 set.py:316(similarity)
9900    0.928    0.000    5.112    0.001 set.py:432(_sim_score)
....

Warning

This Matrix should not be used as a public interface. It’s only used internally for calculations.

Parameters
  • rows (int) – The number of rows in the Matrix

  • cols (int) – The number of columns in the Matrix

  • data (list of values, default None) – A list with values to fill the Matrix.

n_rows

The number of rows in the Matrix

Type

int

n_cols

The number of columns in the Matrix

Type

int

rows

Iterator over all rows

Example:

print(matrix)

>>    ||   0|   1|   2|   3|
>> =========================
>> 0  ||  11|  12|  13|  14|
>> 1  ||  21|  22|  23|  24|
>> 2  ||  31|  32|  33|  34|

for row in matrix.rows:
    print(row)

>> [11, 12, 13, 14]
>> [21, 22, 23, 24]
>> [31, 32, 33, 34]
Type

iterator

columns

Iterator over all columns

Example:

print(matrix)

>>    ||   0|   1|   2|   3|
>> =========================
>> 0  ||  11|  12|  13|  14|
>> 1  ||  21|  22|  23|  24|
>> 2  ||  31|  32|  33|  34|

for col in matrix.columns:
    print(col)

>> [11, 21, 31]
>> [12, 22, 32]
>> [13, 23, 33]
>> [14, 24, 34]
Type

iterator