Oliver Ebenhöh

# NAME

Bio::Metabolic::MatrixOps - Operations on PDL::Matrix objects

# SYNOPSIS

``  use Bio::Metabolic::MatrixOps;``

# DESCRIPTION

This module contains all matrix operations that are needed for calculations involving the stoichiometric matrix

# AUTHOR

Oliver Ebenhoeh, oliver.ebenhoeh@rz.hu-berlin.de

Bio::Metabolic Bio::Metabolic::Substrate Bio::Metabolic::Substrate::Cluster Bio::Metabolic::Reaction Bio::Metabolic::Network

# METHODS

## method xrow

\$m->xrow(\$r1,\$r2); Exchanges rows \$r1 and \$r2 in matrix \$m.

## method xcol

\$m->xcol(\$r1,\$r2); Exchanges columns \$r1 and \$r2 in matrix \$m.

## method delcol

\$m->delcol(\$c); Sets all coefficients in the column \$c to zero.

## method delcols

\$m->delcols(@c); Sets all coefficients in the columns specified in @c to zero.

## method delrow

\$m->delrow(\$r); Sets all coefficients in the row \$r to zero.

## method delrows

\$m->delrows(@r); Sets all coefficients in the rows specified in @r to zero.

## method det # probably obsolete!!!! Check with PDL::Matrix / PDL::MatrixOps

\$det = \$m->det; Returns the determinant of matrix \$m, undef if \$m is not square.

## method is_pos_def

\$m->is_pos_def; Returns true if matrix \$m is truely positive definite, false otherwise

## method row_echelon_int;

\$row_echelon_matrix = \$m->row_echelon_int; (\$row_echelon_matrix, \$permutation_vector, \$rank) = \$m->row_echelon_int;

Returns the integer row echelon form of matrix \$m. In array context also returns the permutation vector indication how the rows of \$m were permuted while calculating the row echelon form and the rank of the matrix \$m.

## method cutrow

\$mnew = \$m->cutrow(\$r); Returns a matrix without row \$r, i.e. the number of rows is reduced by one.

## method cutcol

\$mnew = \$m->cutcol(\$c); Returns a matrix without column \$c, i.e. the number of columns is reduced by one.

## method cutrows

\$mnew = \$m->cutrows(@r); Returns a matrix without all rows specified in @r, i.e. the number of rows is reduced by the number of elements in @r.

## method cutcols

\$mnew = \$m->cutcols(@c); Returns a matrix without all columns specified in @c, i.e. the number of columns is reduced by the number of elements in @c.

## method permrows

\$mnew = \$m->permrows(\$permutation_vector);

Returns a matrix with the rows permuted as specified by \$permutation_vector. \$permutation_vector must be a PDL.

EXAMPLE: If \$m is a 3x3 matrix, then \$p = \$m->permrows(pdl [2,0,1]); will return a matrix with the last row of \$m as first row, the first row of \$m as the second and the second row of \$m as the last row.

## method kernel

\$ker = \$m->kernel; Returns the kernel of matrix \$m, i.e. the matrix with linearly independent column vectors \$c satisfying the equation \$m x \$c = 0.

## method invert # probably obsolete!!!! Check with PDL::Matrix / PDL::MatrixOps

\$inv = \$m->invert; Returns the inverse of \$m, undef if \$m is not invertible.

## method char_pol

\$coefficient_vector = \$m->char_pol;

Returns a PDL with the coefficients of the characteristic polynomial of \$m.

EXAMPLE: [1 2 1] The matrix M=[2 0 3] has the characeristic polynomial [1 1 1] p(x) = det(M-x1) = a_3 x^3 + a_2 x^2 + a_1 x + a_0 = -x^3+2x^2+7x+1.

``````  \$m = mdpl [[1,2,1],[2,0,3],[1,1,1]];
\$cp = \$m->char_pol;
This returns [1,7,2,-1]. \$cp->at(n) contains the coefficient a_n.``````

## method to_Hurwitz

\$hurwitz_matrix = \$m->to_Hurwitz;

Returns the Hurwitz matrix. The coefficients of the Hurwitz matrix are defined to be: H_ij = a_{n-2i+j} if 0 < 2i-j <= n, 0 otherwise where a_n are the coefficients of the characteristic polynomial.

## method Hurwitz_crit

if (\$m->Hurwitz_crit) { ... }

Returns true if the Hurwitz condition is fulfilled, i.e. if all sub-determinants are larger than zero and a_n/a_0 > 0 for all n >= 1.