Generate different types of sparsity pattern for sparse matrices.
Project description
sparsity-pattern
Generate different types of sparsity pattern for sparse matrices.
Installation
The sparsity-pattern
git repo is available as PyPi package
pip install sparsity-pattern
pip install git+ssh://git@github.com/ulf1/sparsity-pattern.git
Usage
The block
-diagonal pattern for tensorflow
import sparsity_pattern
import tensorflow as tf
n_rows, n_cols = 10, 12
idx = sparsity_pattern.get('block', min(n_rows, n_cols), block_sizes=[3, 1, 2])
mat = tf.sparse.SparseTensor(
dense_shape=(n_rows, n_cols),
indices=tf.convert_to_tensor(idx, dtype=tf.int64),
values=range(1, len(idx)+1))
print(tf.sparse.to_dense(mat))
The circle
pattern for pytorch
import sparsity_pattern
import torch
n_rows, n_cols = 5, 7
idx = sparsity_pattern.get('circle', min(n_rows, n_cols), offsets=[1, 2])
mat = torch.sparse_coo_tensor(
indices=torch.tensor(idx).transpose(0, 1),
values=range(1, len(idx)+1),
size=[n_rows, n_cols])
print(mat.to_dense())
The triu
pattern for scipy
import sparsity_pattern
import scipy.sparse
import numpy as np
n, k = 4, -1
idx = sparsity_pattern.get('triu', n, k)
idx_rows, idx_cols = np.array(idx)[:, 0], np.array(idx)[:, 1]
mat = scipy.sparse.lil_matrix((n, n), dtype=np.int64)
mat[idx_rows, idx_cols] = range(1, len(idx)+1)
print(mat.todense())
Check the examples folder for more notebooks.
Appendix
Install a virtual environment
python3.6 -m venv .venv
source .venv/bin/activate
pip3 install --upgrade pip
pip3 install -r requirements.txt
(If your git repo is stored in a folder with whitespaces, then don't use the subfolder .venv
. Use an absolute path without whitespaces.)
Python commands
- Jupyter for the examples:
jupyter lab
- Check syntax:
flake8 --ignore=F401 --exclude=$(grep -v '^#' .gitignore | xargs | sed -e 's/ /,/g')
- Run Unit Tests:
pytest
- Upload to PyPi with twine:
python setup.py sdist && twine upload -r pypi dist/*
Clean up
find . -type f -name "*.pyc" | xargs rm
find . -type d -name "__pycache__" | xargs rm -r
rm -r .pytest_cache
rm -r .venv
Support
Please open an issue for support.
Contributing
Please contribute using Github Flow. Create a branch, add commits, and open a pull request.
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
sparsity-pattern-0.3.0.tar.gz
(5.5 kB
view hashes)