Skip to main content

A Python implementation of the SOM training functionality of FlowSOM

Project description

pyFlowSOM

CI / CD CI Coverage Status
Package PyPI - Version PyPI - Downloads PyPI - Python Version
Meta PyPI - License

Python runner for the FlowSOM library.

Basic usage:

import numpy as np
import pandas as pd
from pyFlowSOM import map_data_to_nodes, som

# generate example input data, rows are observations (e.g. cells), columns are features (e.g. proteins)
df = pd.DataFrame(np.random.rand(500, 16))

# alternatively, specify path to your own input data
df = pd.read_csv('path/to/som/input.csv')

example_som_input_arr = df.to_numpy()

# train the SOM
node_output = som(example_som_input_arr, xdim=10, ydim=10, rlen=10)

# use trained SOM to assign clusters to each observation in your data
clusters, dists = map_data_to_nodes(node_output, example_som_input_arr)

To put the data back into dataframes:

eno = pd.DataFrame(data=node_output, columns=df.columns)
eco = pd.DataFrame(data=clusters, columns=["cluster"])

To export to csv:

eno.to_csv('examples/example_node_output.csv', index=False)
eco.to_csv('examples/example_clusters_output.csv', index=False)

To plot the output as a heatmap:

import seaborn as sns

# Append results to the input data
df['cluster'] = clusters

# Find mean of each cluster
df_mean = df.groupby(['cluster']).mean()

# Make heatmap
sns_plot = sns.clustermap(df_mean, z_score=1, cmap="vlag", center=0, yticklabels=True)
sns_plot.figure.savefig(f"example_cluster_heatmap.png")

Develop

The C code (pyFlowSOM/flowsom.c) is wrapped using Cython (pyFlowSOM/cyFlowSOM.cyx).

Tests do an exact comparison to cluster id ground truth and an approximate comparison to node values only because of floating point differences. Randomness works in tandem to the seed flag to the som function.

To run the tests, use the following command:

pytest

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyFlowSOM-0.1.16.tar.gz (184.1 kB view hashes)

Uploaded Source

Built Distributions

pyFlowSOM-0.1.16-cp312-cp312-win_arm64.whl (80.6 kB view hashes)

Uploaded CPython 3.12 Windows ARM64

pyFlowSOM-0.1.16-cp312-cp312-win_amd64.whl (97.5 kB view hashes)

Uploaded CPython 3.12 Windows x86-64

pyFlowSOM-0.1.16-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl (754.8 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.28+ x86-64

pyFlowSOM-0.1.16-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl (737.8 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64 manylinux: glibc 2.28+ ARM64

pyFlowSOM-0.1.16-cp312-cp312-macosx_11_0_arm64.whl (259.6 kB view hashes)

Uploaded CPython 3.12 macOS 11.0+ ARM64

pyFlowSOM-0.1.16-cp312-cp312-macosx_10_9_x86_64.whl (266.5 kB view hashes)

Uploaded CPython 3.12 macOS 10.9+ x86-64

pyFlowSOM-0.1.16-cp312-cp312-macosx_10_9_universal2.whl (361.4 kB view hashes)

Uploaded CPython 3.12 macOS 10.9+ universal2 (ARM64, x86-64)

pyFlowSOM-0.1.16-cp311-cp311-win_arm64.whl (82.2 kB view hashes)

Uploaded CPython 3.11 Windows ARM64

pyFlowSOM-0.1.16-cp311-cp311-win_amd64.whl (98.1 kB view hashes)

Uploaded CPython 3.11 Windows x86-64

pyFlowSOM-0.1.16-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl (761.3 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.28+ x86-64

pyFlowSOM-0.1.16-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl (746.9 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64 manylinux: glibc 2.28+ ARM64

pyFlowSOM-0.1.16-cp311-cp311-macosx_11_0_arm64.whl (259.1 kB view hashes)

Uploaded CPython 3.11 macOS 11.0+ ARM64

pyFlowSOM-0.1.16-cp311-cp311-macosx_10_9_x86_64.whl (266.3 kB view hashes)

Uploaded CPython 3.11 macOS 10.9+ x86-64

pyFlowSOM-0.1.16-cp311-cp311-macosx_10_9_universal2.whl (360.6 kB view hashes)

Uploaded CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64)

pyFlowSOM-0.1.16-cp310-cp310-win_arm64.whl (82.1 kB view hashes)

Uploaded CPython 3.10 Windows ARM64

pyFlowSOM-0.1.16-cp310-cp310-win_amd64.whl (98.2 kB view hashes)

Uploaded CPython 3.10 Windows x86-64

pyFlowSOM-0.1.16-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl (714.0 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.28+ x86-64

pyFlowSOM-0.1.16-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl (701.6 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64 manylinux: glibc 2.28+ ARM64

pyFlowSOM-0.1.16-cp310-cp310-macosx_11_0_arm64.whl (259.3 kB view hashes)

Uploaded CPython 3.10 macOS 11.0+ ARM64

pyFlowSOM-0.1.16-cp310-cp310-macosx_10_9_x86_64.whl (266.4 kB view hashes)

Uploaded CPython 3.10 macOS 10.9+ x86-64

pyFlowSOM-0.1.16-cp310-cp310-macosx_10_9_universal2.whl (360.9 kB view hashes)

Uploaded CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64)

pyFlowSOM-0.1.16-cp39-cp39-win_amd64.whl (98.7 kB view hashes)

Uploaded CPython 3.9 Windows x86-64

pyFlowSOM-0.1.16-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl (716.5 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.28+ x86-64

pyFlowSOM-0.1.16-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl (704.4 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64 manylinux: glibc 2.28+ ARM64

pyFlowSOM-0.1.16-cp39-cp39-macosx_11_0_arm64.whl (259.8 kB view hashes)

Uploaded CPython 3.9 macOS 11.0+ ARM64

pyFlowSOM-0.1.16-cp39-cp39-macosx_10_9_x86_64.whl (267.1 kB view hashes)

Uploaded CPython 3.9 macOS 10.9+ x86-64

pyFlowSOM-0.1.16-cp39-cp39-macosx_10_9_universal2.whl (362.1 kB view hashes)

Uploaded CPython 3.9 macOS 10.9+ universal2 (ARM64, x86-64)

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page