A mix of jcfaracco/xpysom-dask and fcomitani/simpsom, with heavy modifications
Project description
XPySom-dask
Self Organizing Maps with Dask Support and pretty hexagonal plot.
Simpsom-Dask is a partial rewrite of XPySom-Dask with vizualisation elements introduced in Simpsom. Some optimizations have been added, and the vizualisation elements have been improved, mostly to fit my needs.
Installation
You can download XPySom-dask from PyPi:
pip install simpsom-dask
By default, dependencies for GPU execution are not downloaded.
You can also choose to clone this repo and then run
cd simpsom-dask
pip install -e .
if you would like to modify things on the fly.
How to use it
The module interface is similar to MiniSom. In the following only the basics of the usage are reported, for an overview of all the features, please refer to the original MiniSom examples you can refer to: https://github.com/JustGlowing/minisom/tree/master/examples (you can find the same examples also in this repository but they have not been updated yet).
In order to use Simpsom you need your data organized as a Numpy matrix where each row corresponds to an observation or as list of lists like the following:
chunks = (4, 2)
data = [[ 0.80, 0.55, 0.22, 0.03],
[ 0.82, 0.50, 0.23, 0.03],
[ 0.80, 0.54, 0.22, 0.03],
[ 0.80, 0.53, 0.26, 0.03],
[ 0.79, 0.56, 0.22, 0.03],
[ 0.75, 0.60, 0.25, 0.03],
[ 0.77, 0.59, 0.22, 0.03]]
Then you can train XPySom just as follows:
from simsom_dask import Simpsom
import dask.array as da
from dask.distributed import Client, LocalCluster
client = Client(LocalCluster())
dask_data = da.from_array(data, chunks=chunks)
som = Simpsom(6, 6, 4, sigma=0.3, learning_rate=0.5, use_dask=True, chunks=chunks) # initialization of 6x6 SOM
som.train(dask_data, 100) # trains the SOM with 100 iterations
You can obtain the position of the winning neuron on the map for a given sample as follows:
som.winner(data[0])
Differences with MiniSom
- The batch SOM algorithm is used (instead of the online used in MiniSom). Therefore, use only
trainto train the SOM,train_randomandtrain_batchare not present. decay_functioninput parameter is no longer a function but one of'linear','exponential','asymptotic'. As a consequence of this change,sigmaNandlearning_rateNhave been added as input parameters to represent the values at the last iteration.- New input parameter
std_coeff, used to calculate gaussian exponent denominatord = 2*std_coeff**2*sigma**2. Default value is 0.5 (as in Somoclu, which is different from MiniSom original value sqrt(pi)). - New input parameter
xp(default =cupymodule). Back-end to use for computations. - New input parameter
n_parallelto set size of the mini-batch (how many input samples to elaborate at a time). - Hexagonal grid support is recommended.
Authors
Copyright (C) 2025 Hugo Banderier
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file simpsom_dask-1.0.3.tar.gz.
File metadata
- Download URL: simpsom_dask-1.0.3.tar.gz
- Upload date:
- Size: 29.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
389f10e005b9599e9af335f066966eae98840f8f73e4261d96bdf9bfda145cde
|
|
| MD5 |
150ac25e3ddda50825b82d12074c2423
|
|
| BLAKE2b-256 |
a0768cd3bdcacdf0034e05e22d4dac119dd9481401747c4f9828d680034e2060
|
File details
Details for the file simpsom_dask-1.0.3-py3-none-any.whl.
File metadata
- Download URL: simpsom_dask-1.0.3-py3-none-any.whl
- Upload date:
- Size: 29.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4ae3cf9a9bc12ddc9955bc82d6a3ad18e39f59b0dc01f7694094d5411531a6cf
|
|
| MD5 |
065bfe03d7a93754731cfef5c465a20d
|
|
| BLAKE2b-256 |
0c33109d68bb2fe9904ea19c34a38dccd9704892ac2cd66b51d3fdab0139d31f
|