%global _empty_manifest_terminate_build 0 Name: python-pymde Version: 0.1.18 Release: 1 Summary: Minimum-Distortion Embedding License: Apache License, Version 2.0 URL: https://github.com/cvxgrp/pymde Source0: https://mirrors.nju.edu.cn/pypi/web/packages/a0/8e/21406b5c87e93f73b84992441652e340079725dfc8722be710fb46232a6d/pymde-0.1.18.tar.gz Requires: python3-matplotlib Requires: python3-numpy Requires: python3-pynndescent Requires: python3-scipy Requires: python3-torch Requires: python3-torchvision Requires: python3-requests %description # PyMDE ![](https://github.com/cvxgrp/pymde/workflows/Test/badge.svg) ![](https://github.com/cvxgrp/pymde/workflows/Deploy/badge.svg) [![PyPI version](https://badge.fury.io/py/pymde.svg)](https://pypi.org/project/pymde/) [![Conda Version](https://img.shields.io/conda/vn/conda-forge/pymde.svg)](https://anaconda.org/conda-forge/pymde) *The official documentation for PyMDE is available at www.pymde.org.* This repository accompanies the monograph [*Minimum-Distortion Embedding*](https://web.stanford.edu/~boyd/papers/min_dist_emb.html). PyMDE is a Python library for computing vector embeddings for finite sets of items, such as images, biological cells, nodes in a network, or any other abstract object. What sets PyMDE apart from other embedding libraries is that it provides a simple but general framework for embedding, called _Minimum-Distortion Embedding_ (MDE). With MDE, it is easy to recreate well-known embeddings and to create new ones, tailored to your particular application. PyMDE is competitive in runtime with more specialized embedding methods. With a GPU, it can be even faster. ## Overview PyMDE can be enjoyed by beginners and experts alike. It can be used to: * visualize datasets, small or large; * generate feature vectors for supervised learning; * compress high-dimensional vector data; * draw graphs (in up to orders of magnitude less time than packages like NetworkX); * create custom embeddings, with custom objective functions and constraints (such as having uncorrelated feature columns); * and more. PyMDE is very young software, under active development. If you run into issues, or have any feedback, please reach out by [filing a Github issue](https://github.com/cvxgrp/pymde/issues). This README gives a very brief overview of PyMDE. Make sure to read the official documentation at www.pymde.org, which has in-depth tutorials and API documentation. - [Installation](#installation) - [Getting started](#getting-started) - [Example notebooks](#example-notebooks) - [Citing](#citing) ## Installation PyMDE is available on the Python Package Index, and on Conda Forge. To install with pip, use ``` pip install pymde ``` Alternatively, to install with conda, use ``` conda install -c pytorch -c conda-forge pymde ``` PyMDE has the following requirements: * Python >= 3.7 * numpy >= 1.17.5 * scipy * torch >= 1.7.1 * torchvision >= 0.8.2 * pynndescent * requests ## Getting started Getting started with PyMDE is easy. For embeddings that work out-of-the box, we provide two main functions: ```python3 pymde.preserve_neighbors ``` which preserves the local structure of original data, and ```python3 pymde.preserve_distances ``` which preserves pairwise distances or dissimilarity scores in the original data. **Arguments.** The input to these functions is the original data, represented either as a data matrix in which each row is a feature vector, or as a (possibly sparse) graph encoding pairwise distances. The embedding dimension is specified by the `embedding_dim` keyword argument, which is `2` by default. **Return value.** The return value is an `MDE` object. Calling the `embed()` method on this object returns an embedding, which is a matrix (`torch.Tensor`) in which each row is an embedding vector. For example, if the original input is a data matrix of shape `(n_items, n_features)`, then the embedding matrix has shape `(n_items, embeddimg_dim)`. We give examples of using these functions below. ### Preserving neighbors The following code produces an embedding of the MNIST dataset (images of handwritten digits), in a fashion similar to LargeVis, t-SNE, UMAP, and other neighborhood-based embeddings. The original data is a matrix of shape `(70000, 784)`, with each row representing an image. ```python3 import pymde mnist = pymde.datasets.MNIST() embedding = pymde.preserve_neighbors(mnist.data, verbose=True).embed() pymde.plot(embedding, color_by=mnist.attributes['digits']) ``` ![](https://github.com/cvxgrp/pymde/blob/main/images/mnist.png?raw=true) Unlike most other embedding methods, PyMDE can compute embeddings that satisfy constraints. For example: ```python3 embedding = pymde.preserve_neighbors(mnist.data, constraint=pymde.Standardized(), verbose=True).embed() pymde.plot(embedding, color_by=mnist.attributes['digits']) ``` ![](https://github.com/cvxgrp/pymde/blob/main/images/mnist_std.png?raw=true) The standardization constraint enforces the embedding vectors to be centered and have uncorrelated features. ### Preserving distances The function `pymde.preserve_distances` is useful when you're more interested in preserving the gross global structure instead of local structure. Here's an example that produces an embedding of an academic coauthorship network, from Google Scholar. The original data is a sparse graph on roughly 40,000 authors, with an edge between authors who have collaborated on at least one paper. ```python3 import pymde google_scholar = pymde.datasets.google_scholar() embedding = pymde.preserve_distances(google_scholar.data, verbose=True).embed() pymde.plot(embedding, color_by=google_scholar.attributes['coauthors'], color_map='viridis', background_color='black') ``` ![](https://github.com/cvxgrp/pymde/blob/main/images/scholar.jpg?raw=true) More collaborative authors are colored brighter, and are near the center of the embedding. ## Example notebooks We have several [example notebooks](https://github.com/cvxgrp/pymde/tree/main/examples) that show how to use PyMDE on real (and synthetic) datasets. ## Citing To cite our work, please use the following BibTex entry. ``` @article{agrawal2021minimum, author = {Agrawal, Akshay and Ali, Alnur and Boyd, Stephen}, title = {Minimum-Distortion Embedding}, journal = {arXiv}, year = {2021}, } ``` PyMDE was designed and developed by [Akshay Agrawal](https://www.akshayagrawal.com/). %package -n python3-pymde Summary: Minimum-Distortion Embedding Provides: python-pymde BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip BuildRequires: python3-cffi BuildRequires: gcc BuildRequires: gdb %description -n python3-pymde # PyMDE ![](https://github.com/cvxgrp/pymde/workflows/Test/badge.svg) ![](https://github.com/cvxgrp/pymde/workflows/Deploy/badge.svg) [![PyPI version](https://badge.fury.io/py/pymde.svg)](https://pypi.org/project/pymde/) [![Conda Version](https://img.shields.io/conda/vn/conda-forge/pymde.svg)](https://anaconda.org/conda-forge/pymde) *The official documentation for PyMDE is available at www.pymde.org.* This repository accompanies the monograph [*Minimum-Distortion Embedding*](https://web.stanford.edu/~boyd/papers/min_dist_emb.html). PyMDE is a Python library for computing vector embeddings for finite sets of items, such as images, biological cells, nodes in a network, or any other abstract object. What sets PyMDE apart from other embedding libraries is that it provides a simple but general framework for embedding, called _Minimum-Distortion Embedding_ (MDE). With MDE, it is easy to recreate well-known embeddings and to create new ones, tailored to your particular application. PyMDE is competitive in runtime with more specialized embedding methods. With a GPU, it can be even faster. ## Overview PyMDE can be enjoyed by beginners and experts alike. It can be used to: * visualize datasets, small or large; * generate feature vectors for supervised learning; * compress high-dimensional vector data; * draw graphs (in up to orders of magnitude less time than packages like NetworkX); * create custom embeddings, with custom objective functions and constraints (such as having uncorrelated feature columns); * and more. PyMDE is very young software, under active development. If you run into issues, or have any feedback, please reach out by [filing a Github issue](https://github.com/cvxgrp/pymde/issues). This README gives a very brief overview of PyMDE. Make sure to read the official documentation at www.pymde.org, which has in-depth tutorials and API documentation. - [Installation](#installation) - [Getting started](#getting-started) - [Example notebooks](#example-notebooks) - [Citing](#citing) ## Installation PyMDE is available on the Python Package Index, and on Conda Forge. To install with pip, use ``` pip install pymde ``` Alternatively, to install with conda, use ``` conda install -c pytorch -c conda-forge pymde ``` PyMDE has the following requirements: * Python >= 3.7 * numpy >= 1.17.5 * scipy * torch >= 1.7.1 * torchvision >= 0.8.2 * pynndescent * requests ## Getting started Getting started with PyMDE is easy. For embeddings that work out-of-the box, we provide two main functions: ```python3 pymde.preserve_neighbors ``` which preserves the local structure of original data, and ```python3 pymde.preserve_distances ``` which preserves pairwise distances or dissimilarity scores in the original data. **Arguments.** The input to these functions is the original data, represented either as a data matrix in which each row is a feature vector, or as a (possibly sparse) graph encoding pairwise distances. The embedding dimension is specified by the `embedding_dim` keyword argument, which is `2` by default. **Return value.** The return value is an `MDE` object. Calling the `embed()` method on this object returns an embedding, which is a matrix (`torch.Tensor`) in which each row is an embedding vector. For example, if the original input is a data matrix of shape `(n_items, n_features)`, then the embedding matrix has shape `(n_items, embeddimg_dim)`. We give examples of using these functions below. ### Preserving neighbors The following code produces an embedding of the MNIST dataset (images of handwritten digits), in a fashion similar to LargeVis, t-SNE, UMAP, and other neighborhood-based embeddings. The original data is a matrix of shape `(70000, 784)`, with each row representing an image. ```python3 import pymde mnist = pymde.datasets.MNIST() embedding = pymde.preserve_neighbors(mnist.data, verbose=True).embed() pymde.plot(embedding, color_by=mnist.attributes['digits']) ``` ![](https://github.com/cvxgrp/pymde/blob/main/images/mnist.png?raw=true) Unlike most other embedding methods, PyMDE can compute embeddings that satisfy constraints. For example: ```python3 embedding = pymde.preserve_neighbors(mnist.data, constraint=pymde.Standardized(), verbose=True).embed() pymde.plot(embedding, color_by=mnist.attributes['digits']) ``` ![](https://github.com/cvxgrp/pymde/blob/main/images/mnist_std.png?raw=true) The standardization constraint enforces the embedding vectors to be centered and have uncorrelated features. ### Preserving distances The function `pymde.preserve_distances` is useful when you're more interested in preserving the gross global structure instead of local structure. Here's an example that produces an embedding of an academic coauthorship network, from Google Scholar. The original data is a sparse graph on roughly 40,000 authors, with an edge between authors who have collaborated on at least one paper. ```python3 import pymde google_scholar = pymde.datasets.google_scholar() embedding = pymde.preserve_distances(google_scholar.data, verbose=True).embed() pymde.plot(embedding, color_by=google_scholar.attributes['coauthors'], color_map='viridis', background_color='black') ``` ![](https://github.com/cvxgrp/pymde/blob/main/images/scholar.jpg?raw=true) More collaborative authors are colored brighter, and are near the center of the embedding. ## Example notebooks We have several [example notebooks](https://github.com/cvxgrp/pymde/tree/main/examples) that show how to use PyMDE on real (and synthetic) datasets. ## Citing To cite our work, please use the following BibTex entry. ``` @article{agrawal2021minimum, author = {Agrawal, Akshay and Ali, Alnur and Boyd, Stephen}, title = {Minimum-Distortion Embedding}, journal = {arXiv}, year = {2021}, } ``` PyMDE was designed and developed by [Akshay Agrawal](https://www.akshayagrawal.com/). %package help Summary: Development documents and examples for pymde Provides: python3-pymde-doc %description help # PyMDE ![](https://github.com/cvxgrp/pymde/workflows/Test/badge.svg) ![](https://github.com/cvxgrp/pymde/workflows/Deploy/badge.svg) [![PyPI version](https://badge.fury.io/py/pymde.svg)](https://pypi.org/project/pymde/) [![Conda Version](https://img.shields.io/conda/vn/conda-forge/pymde.svg)](https://anaconda.org/conda-forge/pymde) *The official documentation for PyMDE is available at www.pymde.org.* This repository accompanies the monograph [*Minimum-Distortion Embedding*](https://web.stanford.edu/~boyd/papers/min_dist_emb.html). PyMDE is a Python library for computing vector embeddings for finite sets of items, such as images, biological cells, nodes in a network, or any other abstract object. What sets PyMDE apart from other embedding libraries is that it provides a simple but general framework for embedding, called _Minimum-Distortion Embedding_ (MDE). With MDE, it is easy to recreate well-known embeddings and to create new ones, tailored to your particular application. PyMDE is competitive in runtime with more specialized embedding methods. With a GPU, it can be even faster. ## Overview PyMDE can be enjoyed by beginners and experts alike. It can be used to: * visualize datasets, small or large; * generate feature vectors for supervised learning; * compress high-dimensional vector data; * draw graphs (in up to orders of magnitude less time than packages like NetworkX); * create custom embeddings, with custom objective functions and constraints (such as having uncorrelated feature columns); * and more. PyMDE is very young software, under active development. If you run into issues, or have any feedback, please reach out by [filing a Github issue](https://github.com/cvxgrp/pymde/issues). This README gives a very brief overview of PyMDE. Make sure to read the official documentation at www.pymde.org, which has in-depth tutorials and API documentation. - [Installation](#installation) - [Getting started](#getting-started) - [Example notebooks](#example-notebooks) - [Citing](#citing) ## Installation PyMDE is available on the Python Package Index, and on Conda Forge. To install with pip, use ``` pip install pymde ``` Alternatively, to install with conda, use ``` conda install -c pytorch -c conda-forge pymde ``` PyMDE has the following requirements: * Python >= 3.7 * numpy >= 1.17.5 * scipy * torch >= 1.7.1 * torchvision >= 0.8.2 * pynndescent * requests ## Getting started Getting started with PyMDE is easy. For embeddings that work out-of-the box, we provide two main functions: ```python3 pymde.preserve_neighbors ``` which preserves the local structure of original data, and ```python3 pymde.preserve_distances ``` which preserves pairwise distances or dissimilarity scores in the original data. **Arguments.** The input to these functions is the original data, represented either as a data matrix in which each row is a feature vector, or as a (possibly sparse) graph encoding pairwise distances. The embedding dimension is specified by the `embedding_dim` keyword argument, which is `2` by default. **Return value.** The return value is an `MDE` object. Calling the `embed()` method on this object returns an embedding, which is a matrix (`torch.Tensor`) in which each row is an embedding vector. For example, if the original input is a data matrix of shape `(n_items, n_features)`, then the embedding matrix has shape `(n_items, embeddimg_dim)`. We give examples of using these functions below. ### Preserving neighbors The following code produces an embedding of the MNIST dataset (images of handwritten digits), in a fashion similar to LargeVis, t-SNE, UMAP, and other neighborhood-based embeddings. The original data is a matrix of shape `(70000, 784)`, with each row representing an image. ```python3 import pymde mnist = pymde.datasets.MNIST() embedding = pymde.preserve_neighbors(mnist.data, verbose=True).embed() pymde.plot(embedding, color_by=mnist.attributes['digits']) ``` ![](https://github.com/cvxgrp/pymde/blob/main/images/mnist.png?raw=true) Unlike most other embedding methods, PyMDE can compute embeddings that satisfy constraints. For example: ```python3 embedding = pymde.preserve_neighbors(mnist.data, constraint=pymde.Standardized(), verbose=True).embed() pymde.plot(embedding, color_by=mnist.attributes['digits']) ``` ![](https://github.com/cvxgrp/pymde/blob/main/images/mnist_std.png?raw=true) The standardization constraint enforces the embedding vectors to be centered and have uncorrelated features. ### Preserving distances The function `pymde.preserve_distances` is useful when you're more interested in preserving the gross global structure instead of local structure. Here's an example that produces an embedding of an academic coauthorship network, from Google Scholar. The original data is a sparse graph on roughly 40,000 authors, with an edge between authors who have collaborated on at least one paper. ```python3 import pymde google_scholar = pymde.datasets.google_scholar() embedding = pymde.preserve_distances(google_scholar.data, verbose=True).embed() pymde.plot(embedding, color_by=google_scholar.attributes['coauthors'], color_map='viridis', background_color='black') ``` ![](https://github.com/cvxgrp/pymde/blob/main/images/scholar.jpg?raw=true) More collaborative authors are colored brighter, and are near the center of the embedding. ## Example notebooks We have several [example notebooks](https://github.com/cvxgrp/pymde/tree/main/examples) that show how to use PyMDE on real (and synthetic) datasets. ## Citing To cite our work, please use the following BibTex entry. ``` @article{agrawal2021minimum, author = {Agrawal, Akshay and Ali, Alnur and Boyd, Stephen}, title = {Minimum-Distortion Embedding}, journal = {arXiv}, year = {2021}, } ``` PyMDE was designed and developed by [Akshay Agrawal](https://www.akshayagrawal.com/). %prep %autosetup -n pymde-0.1.18 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-pymde -f filelist.lst %dir %{python3_sitearch}/* %files help -f doclist.lst %{_docdir}/* %changelog * Fri May 05 2023 Python_Bot - 0.1.18-1 - Package Spec generated