# CluGen.jl

**CluGen.jl** is a Julia implementation of the *clugen* algorithm for generating
multidimensional clusters with arbitrary distributions. Each cluster is supported
by a line segment, the position, orientation and length of which guide where the
respective points are placed.

See the documentation and examples for more details.

## Installation

Pkg.add("CluGen")

## Quick start

using CluGen, Plots

o = clugen(2, 4, 400, [1, 0], pi / 8, [20, 10], 10, 1, 1.5)
p = plot(o.points[:, 1], o.points[:, 2], seriestype=:scatter, group=o.clusters)

o = clugen(3, 4, 1000, [1, 0, 1], pi / 8, [20, 15, 25], 16, 4, 3.5)
p = plot(o.points[:, 1], o.points[:, 2], o.points[:, 3], seriestype=:scatter, group=o.clusters)

## See also

- pyclugen, a Python implementation of
the
*clugen*algorithm. - clugenr, an R implementation of the
*clugen*algorithm. - MOCluGen, a MATLAB/Octave implementation
of the
*clugen*algorithm.

## Reference

If you use this software, please cite the following reference:

- Fachada, N. & de Andrade, D. (2023). Generating multidimensional clusters
with support lines.
*Knowledge-Based Systems*, 277, 110836. https://doi.org/10.1016/j.knosys.2023.110836 (arXiv preprint)