8 Jan 2002   mcx version 1.00

1.
NAME
2.
SYNOPSIS
3.
DESCRIPTION
4.
OPERATORS
5.
INDEX
6.
AUTHOR
7.
SEE ALSO

NAME

mcx - a stack language interpreter for interaction with the mcl libraries.

SYNOPSIS

mcx (enter interactive mode)

mcx <mcx expression>

DESCRIPTION

mcx can be used both from the command line and interactively, and supports a rich set of operations such as transposition, scaling, column scaling, multiplication, Hadamard powers and products, et cetera. It has variables, control primitives, and stack manipulation primitives. The general aim is to support basic number and matrix arithmetic, as well as graph, set, and clustering operations. The language will be kept simple, and should serve only as a means of making the mcl framework a pleasant one for working with graphs, matrices, clusterings, and sets. The language is typed, and currently has the types integer, real, matrix, string, and block. Blocks are used both in control statements such as ifelse and while, and for defining compound statements resembling procedures or functions. Some of mcx's primitives are overloaded. The following is a very simple example of implementing and using mcl in this language.

 2.0 .i def                   # define inflation value.
 /small lm                    # load matrix in file 'small'.
 dim id add                   # add identity matrix.
 st .x def                    # make stochastic, bind to x.
 { xpn .i infl vm } .mcl def  # define one mcl iteration.
 20 .x .mcl repeat            # iterate 20 times
 imac                         # interpret matrix as clustering.
 vm                           # view matrix (clustering).

Somewhat misleadingly, '#' is not recognized as a comment symbol by mcx, so don't use it (yet).

mcx has quite a lot of primitives, and they are not all explained in here. However, mcx has several help facilities. mcx's munge modes (command line, interactive, and file) are discussed first, followed by some syntactic and semantic rules. Several groups of related primitives are then discussed. These are the help primitives help, grep, ops, and others, the binding primitives def, free, and unlink, the control primitives ifelse, do, repeat, and while, and the stack manipulation primitives pop, exch, dup, mdup, copy, roll, clear. And for the record, mcx has lt, lq, eq, gq, and gt. In the grandiloquently named INDEX section, you find a list of all current mcx primitives.

First, there is no difference as far as mcx is concerned whether you give it a bunch of operators and operands directly from the command line, or whether you do it in interactive mode. Interactive mode is line-based; each time you type a carriage return, mcx starts interpreting the line you typed. Newlines can be escaped by preceding them with a backslash; mcx will delay interpretation and keep building up your expression. Command line mode is the same as entering interactive mode and entering a single line. For non-batch processing, interactive mode is the safest, because mcx will simply refuse to carry out impossible operations, whereas in command line mode it will exit.

In interactive mode, mcx will by default list the stack after each line you type. This is verbosity level 1. There are four verbosity levels, namely 0, 1, 2, and 3 (in increasingly verbose order). Set the level with the vb primitive. Verbosity control is still a bit crude, this is one of the areas in which mcx will be improved.

There is another mcx munge mode which is entered when reading files with the lf (load file) primitive. This mode is not line-based, the whole file is interpreted in one go - there is little difference with line-based mode. Beware though, it is currently not possible (nor necessary) to escape newlines in files.

Currently, mcx parses lines of text into atoms in an extremely straightforward way: Whitespace is the only separator, and it is always a separator. This has as a consequence that the block delimiters { and } are not allowed to appear next to a non-whitels of granularity (in conjunction with clmdist).

clmconf - for inspecting local cluster structure. Computes how well nodes fit into the cluster in which they are located (for a given clustering) by looking at the (weighted) percentage of its edges going to that same cluster. Computes also the cohesiveness of a cluster, by computing and averaging the above over all nodes in a cluster. Useful for inspecting local cluster structure.

mcxsubs - compute a submatrix of a given matrix, where row and column index sets can be specified as lists of indices combined with list of clusters in a given clustering. Useful for inspecting local cluster structure.

mcxconvert - convert matrices from ascii mcl format to binary mcl format or vice versa.

REFERENCES

Graph Clustering by Flow Simulation (thesis)
http://www.library.uu.nl/digiarchief/dip/diss/1895620/inhoud.htm

A cluster algorithm for graphs (technical report)
http://www.cwi.nl/ftp/CWIreports/INS/INS-R0010.ps.Z

A stochastic uncoupling process for graphs (technical report)
http://www.cwi.nl/ftp/CWIreports/INS/INS-R0011.ps.Z

Performance criteria for graph clustering and Markov cluster experiments (technical report)
http://www.cwi.nl/ftp/CWIreports/INS/INS-R0012.ps.Z

An efficient algorithm for large-scale detection of protein families (preprint)
Not yet available.

NOTES

This page was generated from ZOEM manual macros. Both html and roff pages can be created from the same source without having to bother with all the usual conversion problems, while keeping some level of sophistication in the typesetting. The ZOEM primitives only provide macro expansion and filter capabilities; the proof of the typesetting is in striking the macros right. ./usr/share/doc/mcl/mcx.html0100644000000000000000000003245007430211166014626 0ustar rootroot The mcx manual

8 Jan 2002   mcx version 1.00

1.
NAME
2.
SYNOPSIS
3.
DESCRIPTION
4.
OPERATORS
5.
INDEX
6.
AUTHOR
7.
SEE ALSO

NAME

mcx - a stack language interpreter for interaction with the mcl libraries.

SYNOPSIS

mcx (enter interactive mode)

mcx <mcx expression>

DESCRIPTION

mcx can be used both from the command line and interactively, and supports a rich set of operations such as transposition, scaling, column scaling, multiplication, Hadamard powers and products, et cetera. It has variables, control primitives, and stack manipulation primitives. The general aim is to support basic number and matrix arithmetic, as well as graph, set, and clustering operations. The language will be kept simple, and should serve only as a means of making the mcl framework a pleasant one for working with graphs, matrices, clusterings, and sets. The language is typed, and currently has the types integer, real, matrix, string, and block. Blocks are used both in control statements such as ifelse and while, and for defining compound statements resembling procedures or functions. Some of mcx's primitives are overloaded. The following is a very simple example of implementing and using mcl in this language.

 2.0 .i def                   # define inflation value.
 /small lm                    # load matrix in file 'small'.
 dim id add                   # add identity matrix.
 st .x def                    # make stochastic, bind to x.
 { xpn .i infl vm } .mcl def  # define one mcl iteration.
 20 .x .mcl repeat            # iterate 20 times
 imac                         # interpret matrix as clustering.
 vm                           # view matrix (clustering).

Somewhat misleadingly, '#' is not recognized as a comment symbol by mcx, so don't use it (yet).

mcx has quite a lot of primitives, and they are not all explained in here. However, mcx has several help facilities. mcx's munge modes (command line, interactive, and file) are discussed first, followed by some syntactic and semantic rules. Several groups of related primitives are then discussed. These are the help primitives help, grep, ops, and others, the binding primitives def, free, and unlink, the control primitives ifelse, do, repeat, and while, and the stack manipulation primitives pop, exch, dup, mdup, copy, roll, clear. And for the record, mcx has lt, lq, eq, gq, and gt. In the grandiloquently named INDEX section, you find a list of all current mcx primitives.

First, there is no difference as far as mcx is concerned whether you give it a bunch of operators and operands directly from the command line, or whether you do it in interactive mode. Interactive mode is line-based; each time you type a carriage return, mcx starts interpreting the line you typed. Newlines can be escaped by preceding them with a backslash; mcx will delay interpretation and keep building up your expression. Command line mode is the same as entering interactive mode and entering a single line. For non-batch processing, interactive mode is the safest, because mcx will simply refuse to carry out impossible operations, whereas in command line mode it will exit.

In interactive mode, mcx will by default list the stack after each line you type. This is verbosity level 1. There are four verbosity levels, namely 0, 1, 2, and 3 (in increasingly verbose order). Set the level with the vb primitive. Verbosity control is still a bit crude, this is one of the areas in which mcx will be improved.

There is another mcx munge mode which is entered when reading files with the lf (load file) primitive. This mode is not line-based, the whole file is interpreted in one go - there is little difference with line-based mode. Beware though, it is currently not possible (nor necessary) to escape newlines in files.

Currently, mcx parses lines of text into atoms in an extremely straightforward way: Whitespace is the only separator, and it is always a separator. This has as a consequence that the block delimiters { and } are not allowed to appear next to a non-whitels of granularity (in conjunction with clmdist).

clmconf - for inspectin