Affinity propagation (AP) is a relatively new clustering algorithm that has been introduced by Brendan J. Frey and Delbert Dueck. The authors themselves describe affinity propagation as follows:
"An algorithm that identifies exemplars among data points and forms clusters of data points around these exemplars. It operates by simultaneously considering all data point as potential exemplars and exchanging messages between data points until a good set of exemplars and clusters emerges."
AP has been applied in various fields recently, among which bioinformatics is becoming increasingly important. Frey and Dueck have made their algorithm available as Matlab code. Matlab, however, is relatively uncommon in bioinformatics. Instead, the statistical computing platform R has become a widely accepted standard in this field. In order to leverage affinity propagation for bioinformatics applications, we have implemented affinity propagation as an R package. Note, however, that the given package is in no way restricted to bioinformatics applications. It is as generally applicable as Frey’s and Dueck’s original Matlab code.
The package further implements exemplar-based agglomerative clustering and various tools for visual analysis of clustering results.
- Changes to previous version:
- updated citation
- minor corrections in help pages and vignette
- BibTeX Entry: Download
- Corresponding Paper BibTeX Entry: Download
- URL: Project Homepage
- Supported Operating Systems: Platform Independent
- Data Formats: Any Format Supported By R
- Tags: Clustering, Kernels, Distance Function, Clustering Algorithm, Affinity Propagation, Similarity Measure
- Archive: download here
Other available revisons
Version Changelog Date 1.4.1
- fixes in C++ code of sparse affinity propagation
December 10, 2014, 12:58:29 1.4.0
- added apcluster() method for sparse similarity matrices; as a consequence, the package now imports the 'Matrix' package and is now also able to handle non-sparse matrix classes defined by the 'Matrix' package. Moreover, similarity functions supplied to the apcluster() method may now also return any matrix type defined by the 'Matrix' package.
- fix of apcluster() for dense matrices to better support -Inf similarities
- added apclusterK() method for sparse similarity matrices
- preferenceRange() is now an S4 generic; re-implementation in C++ to speed up function; changed handling of -Inf similarities for consistency with sparse version
- added preferenceRange() methods for sparse matrices and dense matrix objects from the 'Matrix' package
- new conversion methods implemented for converting dense similarity matrices to sparse ones and vice versa; consequently, sparseToFull() is marked as deprecated.
- adaptation of heatmap() function for improved handling of -Inf similarities
- adaptations of signatures of '[' and '[[' accessor methods
- renamed help page of methods for computing similarity matrices to 'similarities' in order to avoid confusion with the accessor method 'similarity'
- corresponding updates of help pages and vignette
December 3, 2014, 12:56:50 1.3.5
- memory access fixes in C++ code called from apclusterL()
- minor updates of vignette
June 30, 2014, 08:32:01 1.3.4
- added sort() function to rearrange clusters according to sort criterion; note that this is an S3 method (see help page for explanation)
- improvements and bug fixes of apclusterL() method for signature 'matrix,missing'
- performance optimizations of apcluster() and apclusterL()
- plotting of clustering results superimposed in scatter plot matrices now also works for 'AggExResult' objects
- improvements of consistency of error and warning messages
- according adaptations of documentation and vignette
- adapted dependency and linking to Rcpp version 0.11.1 (to avoid issues on Mac OS)
- minor correction of package namespace
June 30, 2014, 08:30:36 1.3.3
- adapted dependencies and linking to Rcpp version 0.11.0
- cleared up package dependencies
February 24, 2014, 09:38:11 1.3.2
- plotting of clustering results extended to data sets with more than two dimensions (resulting in the clustering result being superimposed in a scatterplot matrix); the variant that plot() can be used to draw a heatmap has been removed. From now on, heatmap() must always be used.
- improved NA handling
- correction of input check in apcluster() and apclusterL() (previously, both functions issued a warning whenever argument p had length > 1)
- corresponding updates and further improvements of help pages and vignette
June 12, 2013, 11:38:01 1.3.1
- re-implementation of heatmap() method: dendrograms can now be plotted even for APResult and ExClust objects as well as for cluster hierarchies based on prior clusterings; color bars can now be switched off and colors can be changed by user (by new 'sideColor' argument); dendrograms can be switched on and off (by 'Rowv' and 'Colv' arguments);
- added as.hclust() and as.dendrogram() methods
- added new arguments 'base', 'showSamples', and 'horiz' to the plot() method with signature (x="AggExResult", y="missing"); moreover, parameters for changing the appearance of the height axis are now respected as well
- streamlining of methods (redundant definition of inherited methods removed)
- various minor improvements of code and documentation
April 23, 2013, 08:53:15 1.3.0
- added Leveraged Affinity Propagation Clustering
- re-implementation of main functions as S4 generic methods in order to facilitate the convenient internal computation of similarity matrices
- for convenience, similarity matrices can be stored as part of clustering results
- heatmap plotting now done by heatmap() which has been defined as S4 generic
- extended interface to functions for computing similarity matrices
- added function corSimMat()
- implementation of length() method for classes APResult, AggExResult, and ExClust
- added accessor function to extract clustering levels from AggExResult objects
- correction of exemplars returned by apcluster() for details=TRUE in slot idxAll of returned APResult object
- when using data stored in a data frame, now categorical columns are explicitly omitted, thereby, avoiding warnings
- all clustering methods now store their calls into the result objects
- updates and extensions of help pages and vignette
January 9, 2013, 08:07:12 1.2.1
- added convenient accessor functions to extracting cluster indices from APResult and ExClust objects
- added a function for coercing an APResult object into an ExClust object
- correction of color bar on the left side of heatmaps (default behavior of RowSideColors parameter changed with R 2.15)
June 14, 2012, 08:18:19 1.2.0
- reimplementation of apcluster() in C++ using the Rcpp package which reduces computation times by a factor of 9-10
- obsolete function apclusterLM() removed
- updates of help pages and vignette
March 27, 2012, 09:40:50 1.1.1
- updated citation
- minor corrections in help pages and vignette
September 8, 2011, 11:38:00 1.1.0
- exemplar-based agglomerative clustering (function aggExCluster()) added
- added various plotting functions, e.g. for dendrograms and heatmaps
- added sequence analysis example to vignette
- extension of vignette according to new functionality
- re-organization of variable names in vignette
- added option 'verbose' to apclusterK()
- numerous minor corrections in help pages and vignette
June 16, 2011, 10:34:48 1.0.3
1.0.3: - Easier access to package vignette.
March 15, 2011, 08:43:38 1.0.2
Initial Announcement on mloss.org.
July 28, 2010, 15:55:26
No one has posted any comments yet. Perhaps you'd like to be the first?
Leave a comment
You must be logged in to post comments.