Matrix Exploratory Data Analysis
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


PyMEDA is a python package for matrix exploratory data analysis (MEDA). It is inspired by the MEDA R package.



PyMEDA is a data visualization package for understanding high dimensional data. It is powered by Redlemur and

System Requirements

  • PyMEDA was developed in Python 3.6. Currently, there is no plan to support Python 2.
  • Was developed and tested primarily on Mac OS (Sierra 10.12.6). It does not currently support Windows.
  • Requires no non-standard hardware to run.
  • Complete visualizations take roughly 2-3 minutes for data with >20 dimensions and >106 data points on a laptop (2.9GHz Intel i5, 8 GB RAM).

The following lists the dependencies for PyMEDA. Note that this not a comprehensive list of all the dependencies. Please check via pip freeze once PyMEDA is installed.


Installation Guide

PyMEDA can be installed either from pip or Github as shown below.

Install from pip

pip install pymeda

Install from Github

git clone
cd pymeda
python install


PyMEDA is available through Dockerhub, and can be run directly with the following container (and any additional options you may require for Docker, such as volume mounting):

docker run -p 8888:8888 nomads/pymeda:latest

You should see message that is similar to below:

Executing the command: jupyter notebook
[I 15:33:00.567 NotebookApp] Writing notebook server cookie secret to /home/jovyan/.local/share/jupyter/runtime/notebook_cookie_secret
[W 15:33:01.084 NotebookApp] WARNING: The notebook server is listening on all IP addresses and not using encryption. This is not recommended.
[I 15:33:01.150 NotebookApp] JupyterLab alpha preview extension loaded from /opt/conda/lib/python3.6/site-packages/jupyterlab
[I 15:33:01.150 NotebookApp] JupyterLab application directory is /opt/conda/share/jupyter/lab
[I 15:33:01.155 NotebookApp] Serving notebooks from local directory: /home/jovyan
[I 15:33:01.156 NotebookApp] 0 active kernels
[I 15:33:01.156 NotebookApp] The Jupyter Notebook is running at:
[I 15:33:01.157 NotebookApp] http://[all ip addresses on your system]:8888/?token=112bb073331f1460b73768c76dffb2f87ac1d4ca7870d46a
[I 15:33:01.157 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 15:33:01.160 NotebookApp]

    Copy/paste this URL into your browser when you connect for the first time,
    to login with a token:

Copy and paste the URL into your browser, and you can now use PyMEDA in Jupyter.

Potential Installation Errors Due to Cython Dependency

1. Xcode is out of date

In file included from knor/cknor/libkcommon/clusters.cpp:23:
knor/cknor/libkcommon/util.hpp:29:10: fatal error: ‘random’ file not found
#include <random>
1 error generated.
error: command ‘/usr/bin/clang’ failed with exit status 1


Update your Xcode and Xcode command line tools to the latest version.

2. Cython installation error

from Cython.Build import cythonize
ImportError: No module named Cython.Build


Install Cython via pip install --upgrade cython. This will install Cython, then install PyMEDA via one of the methods above.

3. GCC compiler not installed

knor/cknor/libkcommon/util.cpp:27:10: fatal error: numa.h: No such file or directory
 #include <numa.h>
compilation terminated.
error: command 'gcc' failed with exit status 1


Install GCC compiler. Use apt-get install build essential or yum install build-essential depending on your linux distribution.


It is highly recommended that you use PyMEDA inside Jupyter notebook, which allows PyMEDA visualizations to be easily embedded. However, PyMEDA also supports embedding in static HTML pages.

Please see demo here to view the usages using the iris dataset.

If you are using Docker, then there should be a folder called work with the Demo already downloaded for you.