8 Mar 2012
**mcx diameter**
12-068

mcx diameter — compute the diameter of a graph

**mcx diameter** [options]

mcxdiameter is not in actual fact a program. This manual
page documents the behaviour and options of the mcx program when
invoked in mode *diameter*. The options **-h**, **--apropos**,
**--version**, **-set**, **--nop**, **-progress** *<num>*
are accessible
in all **mcx** modes. They are described
in the mcx manual page.

**mcx diameter**
**[-abc** <fname> (*specify label input*)**]**
**[-imx** <fname> (*specify matrix input*)**]**
**[-o** <fname> (*output file name*)**]**
**[-tab** <fname> (*use tab file*)**]**
**[-t** <int> (*use <int> threads*)**]**
**[-J** <intJ> (*a total of <intJ> jobs are used*)**]**
**[-j** <intj> (*this job has index <intj>*)**]**
**[--summary** (*output diameter and average shortest path length*)**]**
**[--list** (*list eccentricity for all nodes*)**]**
**[-h** (*print synopsis, exit*)**]**
**[--apropos** (*print synopsis, exit*)**]**
**[--version** (*print version, exit*)**]**

**mcx diameter** computes the diameter of a graph. The input graph should be
symmetric. Results will be unpredictable for directed graphs.
For label input this is irrelevant as **mcx diameter** will create
a symmetric graph from the input.

The input graph/matrix, if specified with the **-imx** option, has to
be in mcl matrix/graph format. You can use label input instead by using the
**-abc** option.
Refer to mcxio for a description of these two input formats.
By default **mcx diameter** reads from STDIN *and expects matrix format*.
To specify label input from STDIN use **-abc** **-**.

The file name for input that is in label format.

The file name for input that is in mcl native matrix format.

The name of the file to write output to.

This option causes the output to be printed with the labels
found in the tab file.
With **-abc** this option will, additionally, construct
a graph only on the labels found in the tab file.
If this option is used in conjunction with **-imx** the
tab domain and the matrix domain are required to be identical.

Computing the diameter of a graph is time-intensive.
If you have multiple CPUs available consider using
as many threads. Additionally it is possible to
spread the computation over multiple jobs/machines.
Conceptually, each job takes a number of threads from
the total thread pool. If job control is used
(the **-J** option is used) then the number of jobs should
not exceed the number of threads. The total number of
threads divided by the total number of jobs defines
the number of threads that will be used by the current job.
Additionally, the number of threads specified signifies
the total added amount of all threads across all machines
and *must* be the same for all jobs. This number is used
by each job to infer its own set of tasks.
The following set of options, if given to as many commands,
defines three jobs, each running four threads.

-t 12 -G 3 -g 0
-t 12 -G 3 -g 1
-t 12 -G 3 -g 2

The default mode is **--list**, which results in output
of the eccentricity of all nodes. The eccentricity of
a node is the distance to any node that is the furthest
away from it. The diameter of a graph is the maximum
of the eccentricity taken over all nodes in a graph.
In this mode **mcx diameter** will not output the diameter
itself. Use **--summary** to output just the diameter
and the average eccentricity.

mcxio, and mclfamily for an overview of all the documentation and the utilities in the mcl family.