mcxmap - permute or remap the indices of graphs and matrices.

**mcxmap**
**-imx** fname (*input*)
**[-o** fname (*output*)**]**
**[-make-map** (*output map file name*)**]**
**[-make-mapc** (*output map file name*)**]**
**[-make-mapr** (*output map file name*)**]**
**[-cmul** a (*coefficient*)**]**
**[-cshift** b (*translate*)**]**
**[-rmul** c (*coefficient*)**]**
**[-rshift** d (*translate*)**]**
**[-mul** e (*coefficient*)**]**
**[-shift** f (*translate*)**]**
**[-map** fname (*row/col map file*)**]**
**[-rmap** fname (*row map file*)**]**
**[-cmap** fname (*column map file*)**]**
**[-mapi** fname (*row/col map file (use inverse)*)**]**
**[-rmapi** fname (*row map file (use inverse)*)**]**
**[-cmapi** fname (*column map file (use inverse)*)**]**
**[-tab** fname (*read (and map) tab file*)**]**

This utility relabels graphs or matrices. Its main use is in applying a
*map file* to a given matrix or graph. A map file contains a so called
*map matrix* in mcl format that has some special properties (given
further below). The functionality of mcxmap can also be provided by **mcx**, as
a mapped matrix (i.e. the result of applying a map matrix to another matrix)
is simply the usual matrix product of a matrix and a map matrix. However,
**mcx** will construct a new matrix and leave the original matrix to be mapped
alone. When dealing with huge matrices, considerable gains in efficiency
memory-wise and time-wise can be achieved by doing the mapping in-place.
This is what mcxmap does. In the future, its functionality may be
embedded in **mcx** with new mcx operators.

The special properties of a map matrix are

1m
1m
•
The column domain and row domain are
of the same cardinality.

1m
1m
•
Each column has exactly one entry.

1m
1m
•
Each row domain index occurs in exactly one column.

These properties imply that the matrix can be used
as a map from the column domain onto the row domain.
An example map matrix is found in the **EXAMPLES** Section.

2m
2m
**-o** fname (*output file*)

Output file.

2m
2m
**-imx** fname (*input file*)

Input file.

2m
2m
**-map** fname (*row/col map file)*)

2m
2m
**-rmap** fname (*row map file*)

2m
2m
**-cmap** fname (*column map file*)

2m
2m
**-mapi** fname (*row/col map file (use inverse)*)

2m
2m
**-rmapi** fname (*row map fil (use inverse)*)

2m
2m
**-cmapi** fname (*column map fil (use inverse)*)

Different ways to specify map files.

2m
2m
**-make-map** (*output map file name*)

2m
2m
**-make-mapc** (*output map file name*)

2m
2m
**-make-mapr** (*output map file name*)

Generate a map that maps the specified domain onto
the appropriate canonical domain and write the map
matrix to file.

2m
2m
**-cmul** a (*coefficient*)

2m
2m
**-cshift** b (*translate*)

These options have affect if neither a column map file nor column
canonification is specified. If any of the first two options is used,
column indices i are mapped to a*i+b.

2m
2m
**-rmul** c (*coefficient*)

2m
2m
**-rshift** d (*translate*)

These options have affect if neither a row map file nor row
canonification is specified. If any of the first two options is used,
indices i are mapped to c*i+d.

2m
2m
**-mul** e (*coefficient*)

2m
2m
**-shift** f (*translate*)

If a map file is specified for a given domain, neither a map file nor
canonification is specified. If any of the first two options is used, the
indices i will be mapped to e*i+f.

2m
2m
**-tab** fname (*read (and map) tab file*)

This option requires the **-map** option. **mcxmap** will output the
mapped tab definition.

The matrix below has two canonical domains which are identical. It denotes a map of the canonical domain onto itself, in which node 0 is relabeled to 8, node 1 is relabeled to 5, et cetera.

(mclheader mcltype matrix dimensions 12x12 ) (mclmatrix begin 0 8 $ 1 5 $ 2 3 $ 3 2 $ 4 4 $ 5 6 $ 6 7 $ 7 9 $ 8 1 $ 9 10 $ 10 11 $ 11 0 $ )

Stijn van Dongen.

**mcxio(5)**,
**mcx(1)**,
**mcxsubs(1)**,
and **mclfamily(7)** for an overview of all the documentation
and the utilities in the mcl family.

Time: 21:23:48 GMT, April 16, 2011