
Fri, 03 Oct 2003

   *  mcl-03-276 released (mainly a maintenance release).

   *  added clmmate manual page. Use it to find best pairs of
      clusters between two clusterings (use the -twins option).

   *  fixed mcxmap functional bug.

   *  mcxassemble and mcxdeblast were improved, including fixes and
      suggestions from (at different stages) Abel Ureta-Vidal and
      Dinakarpandian Deendayal.

   *  The documentation now uses the zoem manual NAME macro (recently added),
      so that the troff output is apropos (whatis, man -k) compatible.

   *  fixed trivial bug in mclpipeline.

Tue, 02 Sep 2003

   *  mcl-03-245 released (mainly a maintenance release).

   *  Fixed bug which caused mcl and siblings to crash or go haywire (exit
      for the wrong reaon) when presented with non-conforming input.  The bug
      was introduced during the previous IO module rewrite that brought raw
      matrix format and mcxassemble.  So versions >= 03-154 probably feature
      this bug.

   *  Added mcxarray for creating cosine or pearson matrix from microarray
      data.  Not yet installable, no manpage, -h gives manual.

   *  Added speed/complexity section to mclfaq.

   *  Fixed clmmeet, which appeared to be broken since 03-010.

   *  Added mclgraga, a simple script for granularity gauging. Use as in
      clmformat -icl cluster-fu -dump - | mclgraga --range=0,10,2000 (and in
      other ways as well).  It's not installable though and has no manpage.
      One has to copy it from the source distribution

   *  Changed mclgrep to be not installable; one has to copy it from
      the source distribution. It has no manpage either.

   *  clmformat has -dump <stream>, -pi <infl>, -dump-node-sep <sep> options.

   *  clminfo has -pi <infl>, -ap (append performance measures),
      -ag (append granularity measurs), -do/dont <header|rule>  options.

Fri, 04 Jul 2003

   *  mcl-03-185 released (maintenance release).

   *  Added mclgrep, which can grep sections from an mcl file.
      e.g. 'mclgrep clm foo' will display 'clm' section(s) in the file foo,
      if present. Handy for comparing granularity and performance
      characteristics.

   *  Behold the mcl '-do clm' option; it will include performance criteria
      and granularity characteristics in the cluster output file.

   *  Fixed embarassing clminfo bug (introduced in mcl-03-178).

   *  Fixed mcx broken interactive mode (introduced in mcl-03-178).

Fri, 27 Jun 2003

   *  mcl-03-178 released (maintenance release).

   *  Fixed a bug causing the jury marks, the jury synopsis, and the
      pruning percentages to be wrong.

   *  Added several new features, yet to be documented here
      (documented in the manual pages though).
      Look for the mcl -do and -dont options.

Tue, 03 Jun 2003

   *  mcl-03-154 released.

   *  Encouraged the version number up to 1.003.

   *  Added mcxassemble, clmformat, mclpipeline, mclblastline, mcxdeblast.
      Removed clmconf, its functionality was assimilated by clmformat.

   *  Added -pi <pre-inflation> option to mcl for skewing input weights.

   *  Added automatic output naming facilities to mcl.  By default (if the
      -o option is not used) it will write to out.fname.suf, where fname is the
      name of the input file, and suf is automatically constructed. The -ap and
      -aa options allow further customization.

      For example:
         mcl small.mci -I 3 -c 2.5 -pi 0.8 -scheme 5

      will result in a file named
         out.small.mci.I30s5c25pi08

      It is possible to obtain the file name corresponding with a given run
      by using the -az option.

   *  Removed longtime deprecated -a option.

   *  mclpipeline implements a generic pipeline implementing the
      stages from data file (application-specific input) until
      formatted output (clusters represented in terms of
      application-specific labels).

   *  mclblastline implements a particular mcl pipeline tailored
      to BLAST files.

   *  mcxdeblast added, for parsing BLAST files (beta version).

   *  display result results in readable form using clmformat.

   *  Added mcxassemble, which takes as input simple raw cooccurrence
      data in a very free format, and turns it into mcl matrix format.
      Options for adding, maxing, multiplying, and discarding repeated
      entries as well as repeated vectors.

      Nodes can be relabeled by specifying a map file.  This makes it
      easy and fast e.g. to do a one-pass Blast file parse, write the
      cooccurrence data and a prefered node labeling, and then construct
      the final matrix.  The setup for transforming application-specific
      data into raw data is this:

      -  Parse cooccurrence data from some external format.
      -  Transform cooccurrence data to raw mcl data as you parse.
      -  When done, write out required header and domain information
            to a separate file. The domain information can be built during
            the parsing stage.
      -  Use mcxassemble to construct a valid matrix from the raw data
            and the header information.
      -  Nodes can be relabeled as needed using a separate map file,
            which takes the form of a very thin matrix file.

   *  mcxmap uses the new permutation/relabeling mechanism; permutations
      are now fully supported.

   *  IO internals underwent major rewrite in order to support mcxassemble
      raw data munging and mapping functionality (in mcxmap and mcxassemble)

   *  Vector part of impala library was made somewhat safer;
      new mclpAR* type for dealing with multisets of ivps.

   *  # now acts as a comment within the (mclmatrix ... ) section,
      onwards from the begin keyword.

   *  MCL should be straigthforward to compile under Wintel using Cygwin,
      as now verified by SvD (small fix was needed; log2 seems defined
      as macro under cygwin).

   *  clean-ups in underlying util and impala libraries.

   *  implemented
         -DVALUE_AS_DOUBLE and
         -DINDEX_AS_LONG compiler options.
      The first for matrix entries cq edge weights, the second
      for matrix indices cq node identifiers.

   *  revamped
      -DRUNTIME_INTEGRITY compiler option.

   *  clm apps now have --version option.

Fri, 10 Jan 2003

   *  mcl-03-010 released.

      This is a MAJOR overhaul, with increased power in the MCL libraries and
      utilities. The mcl family can now deal with a much more general
      representation of matrices/graphs. This is detailed in several benefits
      listed below. There is a drawback: mcl itself is now approximately 15-20
      percent slower than before (measured on not so large graphs).  Some of
      this loss can perhaps be recouped by forthcoming changes; regardless,
      the benefits were deemed to far outweigh this minor performance loss.

   *  Increased version number to 1.002. The difference between versions
      1.001 and 1.002 is much larger than that between versions 1.001 and
      1.002 - the version numbering scheme is very minimalistic.

   *  mcl's input format was extended (existing graphs are still acceptable).
      See mcx(5) / mcxformat.html.

   *  mcl's internals were rewritten to allow fully sparse matrix/graph
      representation. Formely, the nodes of a graph had to be indexed
      sequentially, starting at zero. This is no longer the case.

      mcl can now internally deal with sparsely indexed graphs.
         Example:
       | (mclheader
       | mcltype matrix
       | dimensions 12x12
       | )
       | (mcldoms
       | 11 22 33 44 55 66 77 88 99 123 456 789 $
       | )
       | (mclmatrix
       | begin
       | 11    22  66  77  123 $
       | 22    11  33  55 $
       | 33    22  44  55 $
       | 44    33  88  99 456 $
       | 55    22  33  77  88 $
       | 66    11  123 $
       | 77    11  55  123 $
       | 88    44  55  99 456 $
       | 99    44  88 456 789 $
       | 123   11  66  77 $
       | 456   44  88  99 789 $
       | 789   99 456 $
       | )

      Besides being useful from a user-point of view, this new setup is a
      first step in enabling mcl for grid or cluster computing. 

      Look at the mcx(5) / mcxformat.html page for more information.
      
   *  mcl sibling programs are able to handle clusterings in which the
      clusters have nonconsecutive identifiers.

   *  The low level API is now totally permissive of all kinds of domain
      combinations. It is up to higher levels to enforce domain identity or
      subsumption etc. Also,

      The low level API leaves it up to the caller whether a node is not
      represented because it is not part of the domain or whether it is not
      represented because it has no neighbours.  It is up to the higher levels
      to decide.

      The low level API (and most of the higher level API) allows 0x0, Kx0,
      and 0xK matrices.  mcl will happily cluster a 0x0 graph.

   *  renamed the src/nonema directory to src/impala (permanently).
      renamed src/intalg to src/taurus (tentatively).

   *  renamed mcximac to clmimac.

   *  added mcxmap

   *  added clmresidue

   *  clmdist can now also compute the Jacquard index and the variance of
      information measure (the -mode option). Its output looks nicer and can be
      changed using the -parts, -digits, -width, --nolegend, and --noindex
      options.

   *  The underlying library code for clminfo was thoroughly cleansed.
      An untraced FPEfault was reported for earlier versions; hopefully
      that is now gone.

   *  mcl now accepts
         -sort revsize (default, large clusters first)
         -sort size  (small clusters first)
         -sort lex   (lexicographical ordering)
         -sort none  (clusters as found by interpretation routine)

   *  mcxsubs now
         -  acts on rectangular matrices as well.
         -  can select on value (being >=/> low and/or <=/< high).
         -  can remap the domain of a selected matrix to range 0-N-1,
            for only columns, only rows, or both columns and rows.
         -  can make the selected matrix characteristic.
         -  can transpose the final result.
         -  has fairly horrid looking specification strings.

      It can be used for removing tough nodes from a graph, where toughness is
      measured according to output resulting from running mcl with '-dump
      chr'.

   *  fixed problem with documentation in mcl-02-277.
      verbatim env in html looked rotten under IE.

Fri, 4 Oct 2002

   *  mcl-02-277 released.
      Mostly a maintenance release. Perhaps the extra FAQ entry is most
      noteworthy. Read e.g. http://micans.org/mcl/doc/mclfaq.html#checksymmetry
      A new release featuring support for removal/projection of tough nodes is
      in the pipeline. That release will be more interesting.

   *  Added faq {How do I check that my graph/matrix is symmetric/undirected?}
      Please do check this people!

   *  Several additions and fixes in the util library, nothing much affecting
      mcl.

   *  Added field to '-dump chr' output (loop value before rescaling).

   *  Removed unnecessary 'thou shalt not have values < 0' commandment.

   *  Some small doc additions.

Fri, 21 Jun 2002

   *  mcl-02-172 released.

   *  Fixed --log output format error.

   *  Some autotools fixes, and some changes in documentation generation
      (immaterial for mcl users).

   *  [Joost] configure.ac.in: added AM_MAINTAINER_MODE: by default,
      don't rebuild e.g. Makefile.in from Makefile.am.  Default users are
      not maintainers.

Thu, 30 May 2002

   *  mcl-02-150 released.

   *  Applied valgrind to mcl, and fixed all memory leaks thus found.
      Standard computation paths are clean (if no errors).  Inserted several
      clean-up routines.

   *  Retrofitted this file to include version 02-095.

   *  [Joost] Added acinclude.m4, including acx_pthread.m4 by Steven G.
      Johnson and Alejandro Forero Cuervo, so that we'll build out-of-the-box
      on systems like Tru64Unix/OSF1 which need special compiler flags when
      dealing with pthread stuff.  Thanks to Martin Mokrejs for reporting the
      bug.

   *  Fixed bug present in version 02-095 and 02-116, caused by
      the computation of the average of inhomogeneity over all vectors
      and a very buggy mclVectorMaxValue -- it removes all zero entries from
      vectors. Bug, reported by Martin Mokrejs, manifested itself when
      inhomogeneity was exactly zero for all vectors,

   *  Compiled mcl with checkergcc, and tested a few computation paths.
      No errors found.

   *  [Anton] Updated tribe software after bug report by Maring Mokrejs.

   *  [Joost] Separated Zoem from mcl, modularized util and separated it
      as well. It is still tacked on in the distribution though.

   *  [Joost] Enabled --enable-tribe, the tribe module written by Anton
      Enright.

   *  [Anton] Inserted tribe software.

   *  Removed -dump att option, added more general -dump chr option.

Fri, 26 Apr 2002

   *  mcl-02-116 released, bumped version number to 1.001.

   *  Added mcximac utility for interpreting MCL iterands as clusterings.

   *  Automated versioning; documents and --version sensitive apps
      now generate consistent date and version tags.

Fri, 05 Apr 2002

   *  mcl-02-095 released.

   *  Added mclfaq document (supported in html, roff, ps).

   *  Added --log option to mcl, appends a log section to
      the clustering output. MUST-DO for large graphs. It is not a default
      because I don't want to scare new users.  This option works with
      --expand-only as well. Logging includes information on kept mass, vector
      footprints, recoveries, selections, and time taken by expansion.

   *  -nw, -nl, -nj, --log, --show-log, -how-much-ram, --jury-charter are new.

   *  Added extensive window monitoring of mass averages for the worst k
      instances, k=1,2,5,10,20,50 .. 20000, 50000.

   *  The mcl -h output is now less frightening, or so I hope.

   *  Added 'jury synopsis' remark classifying the pruning quality.
      It is meant as indication only. Pruning quality is now measured
      in the following flavours:
         perfect exceptional superior excellent good acceptable mediocre poor
      bad lousy miserable awful wretched atrocious

   *  Streamlined command line parsing a lot, using new util/opt.[ch].
      Separated parsing from validation; the framework should be usable for
      setting parameters when calling mcl parts from code.

   *  Modularized the mcl code a lot. It is now close to being
      usable as shared object code with all the command-line functionality
      still accessible.
         moved the lion's part of shmcl/mcl.c to mcl/alg.c. Created
      mcl/alg.[ch], mcl/proc.[ch], mcl/procinit.[ch] mcl/inflate.[ch],
      mcl/expand.[ch], removed mcl/params.[ch] mcl/mcl.[ch].
      shmcl/mcl.c looks acceptable again.

   *  Added util/opt.[ch] util/err.[ch] mcl/init.[ch],
      added mcxHashMerge to util/hash.[ch], streamlined error messages in
      terms of mcxErr, mcxWarn, mcxTell.

   *  Rewrote the mcl manual page so that all pruning-related options
      are now in a separate section.

   *  Documented existing --dense and --thick flags (unlikely
      you need them though).

   *  Cleaned up html documentation a lot. It should now look good in
      most browsers. Moved from <dl> to <table>

   *  Began first ever so slight reworking of taurus. renamed Ilist to mcxIL
      and its 'list' member to 'L'. Terse!

   *  Compiled zoem util mcl shmcl shcl shmcx shmx nonema
      with gcc -pedantic -Wall -ansi, and fixed all the nitty gritty stuff
      thus found, including an erroneous pthread_create argument cast and two
      functions whose declaration was hidden (not in the header file).

Mon, 04 Mar 2002

   *  mcl-02-063 released.

   *  Fixed the missing '#include <string.h>' in taurus/ilist.c,
      and fixed the bug caused by #defining TRUE and FALSE without
      checking whether they were previously defined.

Wed, 27 Feb 2002
   
   *  mcl-02-058 released.

   *  Mcl-related changes are all updates in the documentation,
      plus small changes in the underlying 'util' library.  No functional
      changes.

   *  Zoem has changed significantly since the previous release.
      It needs to be separated from mcl.  (zoem is the tool with which mcl
      documentation is generated).

Fri, 15 Feb 2002

   *  mcl-02-047 released.

Tue,  5 Feb 2002

   *  mcl-02-035 released.

Wed, 12 Dec 2001

   *  mcl-20011211 released.

