# $Id: README,v 1.25 2003/05/02 10:09:00 flux Exp $

   If you use this software in writing scientific papers, include at
   least one of the following citations:

      Stijn van Dongen, Graph Clustering by Flow Simulation.
      PhD thesis, University of Utrecht, May 2000.
      ( http://www.library.uu.nl/digiarchief/dip/diss/1895620/inhoud.htm )

      Stijn van Dongen. A cluster algorithm for graphs.  Technical Report
      INS-R0010, National Research Institute for Mathematics and Computer
      Science in the Netherlands, Amsterdam, May 2000.
      ( http://www.cwi.nl/ftp/CWIreports/INS/INS-R0010.ps.Z )

   and proper attributions to mcl's home http://micans.org/mcl/
   and its author, Stijn van Dongen.

   For BLAST users, consider using the blast package that is very well
   integrated with the core mcl libraries and offers many options and
   extensive configurability. The entry point is called mclblastline
   and is enabled by adding --enable-blast to the configure options.
   
   In case you use the TribeMCL module, include proper citations to the
   TribeMCL copyright holder EMBL-EBI and its author Anton Enright.

   MCL documentation is in doc/, in various formats. It gets
   installed in <prefix>/share/doc/mcl/. A few example input graphs
   are in graphs/, in the mcl matrix format; these are installed
   in <prefix>/share/doc/mcl/examples/. The MCL webpage is at
   http://micans.org/mcl/ .

   MCL development is discussed on mcl-devel@lists.mdcc.cx, this list is
   archived at http://lists.mdcc.cx/mcl-devel/ . You can use this
   forum also for asking any MCL-related question.

   The version tag, which is of the form dd-ddd, encodes the year and
   day in year in which the distribution was made. So 02-058 encodes the
   58-th day of the year 2002.

Configure and compiler options

   By default, MCL is compiled using C ints and floats -- the ints are used to
   encode graph nodes/matrix indices, and the floats are used to encode edge
   weights / matrix entries.  These can be changed respectively to long and
   double, by adding '-DINDEX_AS_LONG', and/or '-DVALUE_AS_DOUBLE' to the
   CFLAGS environment variable.  The first enables a possibly wider range of
   indices to be used, the second increases the precision (which is presumably
   not useful in the vast majority of cases).  Using gcc under bash, you might
   for example do

      export CFLAGS='-g -O2 -Wall -ansi -pedantic -DVALUE_AS_DOUBLE'

   before doing ./configure and make. If you are rebuilding, make sure to do
   'make clean' first.  You need not use doubles though; MCL does fine with
   floats.  These features (changing the basic types) have not yet been tested
   thoroughly.

   For enabling rudimentary runtime integrity checks, add -DRUNTIME_INTEGRITY.
   I wonder why I bothered to add this though. Is there a sufficiently large
   difference between recovering the erroneous computation path in a debugger
   after segfaulting, and between doing the same just by setting a breakpoint
   at exit?

   MCL comes nowadays packaged with the BLAST parsing script
   mcxdeblast and the pipeline script mclblastline. It encapsulates all the
   stages of parsing, matrix creation, running mcl, and formatting the result
   into a single application. These scripts can be used in place of the tribe
   module. Enable them by adding --enable-blast to ./configure.

   MCL comes with a module called TribeMCL, containing the tribe
   software that wraps around mcl. In order to build and install this
   module, add the option '--enable-tribe' when doing './configure'
   (see INSTALL). See http://www.ebi.ac.uk/research/cgg/tribe/ for more
   information on the tribe module.

See also

   LICENSE for copyright and licensing, THANKS for contributors, INSTALL for
   generic installation instructions.
