2021-07-05T14:45:50,745 DEPRECATION: Python 3.5 reached the end of its life on September 13th, 2020. Please upgrade your Python as Python 3.5 is no longer maintained. pip 21.0 will drop support for Python 3.5 in January 2021. pip 21.0 will remove support for this functionality.
2021-07-05T14:45:51,461 Created temporary directory: /tmp/pip-ephem-wheel-cache-pq6792mh
2021-07-05T14:45:51,466 Created temporary directory: /tmp/pip-req-tracker-vnsiqyvf
2021-07-05T14:45:51,467 Initialized build tracking at /tmp/pip-req-tracker-vnsiqyvf
2021-07-05T14:45:51,468 Created build tracker: /tmp/pip-req-tracker-vnsiqyvf
2021-07-05T14:45:51,468 Entered build tracker: /tmp/pip-req-tracker-vnsiqyvf
2021-07-05T14:45:51,470 Created temporary directory: /tmp/pip-wheel-xro7nguy
2021-07-05T14:45:51,543 1 location(s) to search for versions of matrix-fact:
2021-07-05T14:45:51,543 * https://pypi.org/simple/matrix-fact/
2021-07-05T14:45:51,544 Fetching project page and analyzing links: https://pypi.org/simple/matrix-fact/
2021-07-05T14:45:51,546 Getting page https://pypi.org/simple/matrix-fact/
2021-07-05T14:45:51,551 Found index url https://pypi.org/simple
2021-07-05T14:45:51,873 Found link https://files.pythonhosted.org/packages/11/2e/c979994d0cff31bfb39218e8b5f26b632f651349582bd60a13a24955b285/matrix-fact-1.0.1.tar.gz#sha256=5488e7eca9842f32b0235ddf09c2678f27e900aefe7f00c3d6acf753b1a18c74 (from https://pypi.org/simple/matrix-fact/), version: 1.0.1
2021-07-05T14:45:51,874 Found link https://files.pythonhosted.org/packages/39/8a/e2d537aced3afacdb93d822823580f460ee95fc834d0b0f5ad25e21a1066/matrix-fact-1.1.0.tar.gz#sha256=850c6b9f4a3ca0d9e094e7691403779ed798afb9d0e2cc0c5221946769867e44 (from https://pypi.org/simple/matrix-fact/), version: 1.1.0
2021-07-05T14:45:51,875 Found link https://files.pythonhosted.org/packages/44/6d/a8144f7aa9e57d0de9278a6903f94cf771ba212608e089247fb098f78be7/matrix-fact-1.1.1.tar.gz#sha256=865250a0212fbe372e5c38c9d3979350517b0696def64a87eb6b35af33cbd0b6 (from https://pypi.org/simple/matrix-fact/), version: 1.1.1
2021-07-05T14:45:51,876 Found link https://files.pythonhosted.org/packages/e0/31/1221f472055654406d1c352f5110f031f4f255d5947692df73557b11f15f/matrix-fact-1.1.2.tar.gz#sha256=5ece899deafbb1912f8c01f92b54dddd889c5202447100044f335ccca52abc6e (from https://pypi.org/simple/matrix-fact/), version: 1.1.2
2021-07-05T14:45:51,906 Given no hashes to check 1 links for project 'matrix-fact': discarding no candidates
2021-07-05T14:45:51,939 Collecting matrix-fact==1.1.1
2021-07-05T14:45:51,943 Created temporary directory: /tmp/pip-unpack-0cvyson6
2021-07-05T14:45:52,174 Downloading matrix-fact-1.1.1.tar.gz (34 kB)
2021-07-05T14:45:52,497 Added matrix-fact==1.1.1 from https://files.pythonhosted.org/packages/44/6d/a8144f7aa9e57d0de9278a6903f94cf771ba212608e089247fb098f78be7/matrix-fact-1.1.1.tar.gz#sha256=865250a0212fbe372e5c38c9d3979350517b0696def64a87eb6b35af33cbd0b6 to build tracker '/tmp/pip-req-tracker-vnsiqyvf'
2021-07-05T14:45:52,499 Running setup.py (path:/tmp/pip-wheel-xro7nguy/matrix-fact_3e170dbf62784ade99e0a9cff08304c3/setup.py) egg_info for package matrix-fact
2021-07-05T14:45:52,500 Created temporary directory: /tmp/pip-pip-egg-info-dbfisdig
2021-07-05T14:45:52,501 Running command python setup.py egg_info
2021-07-05T14:45:54,820 ## MatrixFact
2021-07-05T14:45:54,822 ### Install
2021-07-05T14:45:54,822 ```
2021-07-05T14:45:54,823 pip install matrix-fact
2021-07-05T14:45:54,824 ```
2021-07-05T14:45:54,825 ### What is matrix-fact?
2021-07-05T14:45:54,825 matrix-fact contains modules for constrained/unconstrained matrix factorization (and related) methods for both sparse and dense matrices. The repository can be found at https://github.com/gentaiscool/matrix_fact. The code is based on https://github.com/ChrisSchinnerl/pymf3 and https://github.com/rikkhill/pymf. We updated the code to support the latest library. It requires cvxopt, numpy, scipy and torch. We just addded the support for PyTorch-based SNMF.
2021-07-05T14:45:54,827 ### Packages
2021-07-05T14:45:54,828 The package includes:
2021-07-05T14:45:54,829 * Non-negative matrix factorization (NMF) [three different optimizations used]
2021-07-05T14:45:54,829 * Convex non-negative matrix factorization (CNMF)
2021-07-05T14:45:54,830 * Semi non-negative matrix factorization (SNMF)
2021-07-05T14:45:54,831 * Archetypal analysis (AA)
2021-07-05T14:45:54,831 * Simplex volume maximization (SiVM) [and SiVM for CUR, GSAT, ... ]
2021-07-05T14:45:54,832 * Convex-hull non-negative matrix factorization (CHNMF)
2021-07-05T14:45:54,833 * Binary matrix factorization (BNMF)
2021-07-05T14:45:54,833 * Singular value decomposition (SVD)
2021-07-05T14:45:54,834 * Principal component analysis (PCA)
2021-07-05T14:45:54,834 * K-means clustering (Kmeans)
2021-07-05T14:45:54,835 * C-means clustering (Cmeans)
2021-07-05T14:45:54,836 * CUR decomposition (CUR)
2021-07-05T14:45:54,836 * Compaxt matrix decomposition (CMD)
2021-07-05T14:45:54,837 * PyTorch SNMF
2021-07-05T14:45:54,838 ### Usage
2021-07-05T14:45:54,839 Given a dataset, most factorization methods try to minimize the Frobenius norm | data - W*H|
by finding a suitable set of basis vectors W
and coefficients H. The syntax for calling the various methods is quite similar. Usually, one has to submit a desired number of basis vectors and the maximum number of iterations. For example, applying NMF to a dataset data aiming at 2 basis vectors within 10 iterations works as follows:
2021-07-05T14:45:54,840 ```python
2021-07-05T14:45:54,841 >>> import matrix_fact
2021-07-05T14:45:54,841 >>> import numpy as np
2021-07-05T14:45:54,842 >>> data = np.array([[1.0, 0.0, 2.0], [0.0, 1.0, 1.0]])
2021-07-05T14:45:54,842 >>> nmf_mdl = matrix_fact.NMF(data, num_bases=2, niter=10)
2021-07-05T14:45:54,843 >>> nmf_mdl.initialization()
2021-07-05T14:45:54,844 >>> nmf_mdl.factorize()
2021-07-05T14:45:54,844 ```
2021-07-05T14:45:54,845 The basis vectors are now stored in nmf_mdl.W
, the coefficients in nmf_mdl.H
. To compute coefficients for an existing set of basis vectors simply copy W to nmf_mdl.W, and set compW to False:
2021-07-05T14:45:54,847 ```python
2021-07-05T14:45:54,847 >>> data = np.array([[1.5], [1.2]])
2021-07-05T14:45:54,848 >>> W = np.array([[1.0, 0.0], [0.0, 1.0]])
2021-07-05T14:45:54,849 >>> nmf_mdl = matrix_fact.NMF(data, num_bases=2, niter=1, compW=False)
2021-07-05T14:45:54,849 >>> nmf_mdl.initialization()
2021-07-05T14:45:54,850 >>> nmf_mdl.W = W
2021-07-05T14:45:54,850 >>> nmf_mdl.factorize()
2021-07-05T14:45:54,851 ```
2021-07-05T14:45:54,852 By changing py_fact.NMF to e.g. py_fact.AA or py_fact.CNMF Archetypal Analysis or Convex-NMF can be applied. Some methods might allow other parameters, make sure to have a look at the corresponding >>>help(py_fact.AA)
documentation. For example, CUR, CMD, and SVD are handled slightly differently, as they factorize into three submatrices which requires appropriate arguments for row and column sampling.
2021-07-05T14:45:54,853 For PyTorch-SNMF
2021-07-05T14:45:54,854 ```python
2021-07-05T14:45:54,855 >>> data = torch.FloatTensor([[1.5], [1.2]])
2021-07-05T14:45:54,855 >>> nmf_mdl = matrix_fact.NMF(data, num_bases=2)
2021-07-05T14:45:54,856 >>> nmf_mdl.factorize(niter=1000)
2021-07-05T14:45:54,856 ```
2021-07-05T14:45:54,858 ### Very large datasets
2021-07-05T14:45:54,858 For handling larger datasets py_fact supports hdf5 via h5py. Usage is straight forward as h5py allows to map large numpy matrices to disk. Thus, instead of passing data as a np.array, you can simply send the corresponding hdf5 table. The following example shows how to apply py_fact to a random matrix that is entirely stored on disk. In this example the dataset does not have to fit into memory, the resulting low-rank factors W,H
have to.
2021-07-05T14:45:54,860 ```python
2021-07-05T14:45:54,860 >>> import h5py
2021-07-05T14:45:54,861 >>> import numpy as np
2021-07-05T14:45:54,861 >>> import matrix_fact
2021-07-05T14:45:54,862 >>>
2021-07-05T14:45:54,863 >>> file = h5py.File('myfile.hdf5', 'w')
2021-07-05T14:45:54,863 >>> file['dataset'] = np.random.random((100,1000))
2021-07-05T14:45:54,864 >>> sivm_mdl = matrix_fact.SIVM(file['dataset'], num_bases=10)
2021-07-05T14:45:54,865 >>> sivm_mdl.factorize()
2021-07-05T14:45:54,865 ```
2021-07-05T14:45:54,866 If the low-rank matrices W,H
also do not fit into memory, they can be initialized as a h5py matrix.
2021-07-05T14:45:54,868 ```python
2021-07-05T14:45:54,868 >>> import h5py
2021-07-05T14:45:54,869 >>> import numpy as np
2021-07-05T14:45:54,869 >>> import matrix_fact
2021-07-05T14:45:54,870 >>>
2021-07-05T14:45:54,871 >>> file = h5py.File('myfile.hdf5', 'w')
2021-07-05T14:45:54,871 >>> file['dataset'] = np.random.random((100,1000))
2021-07-05T14:45:54,872 >>> file['W'] = np.random.random((100,10))
2021-07-05T14:45:54,872 >>> file['H'] = np.random.random((10,1000))
2021-07-05T14:45:54,873 >>> sivm_mdl = matrix_fact.SIVM(file['dataset'], num_bases=10)
2021-07-05T14:45:54,873 >>> sivm_mdl.W = file['W']
2021-07-05T14:45:54,874 >>> sivm_mdl.H = file['H']
2021-07-05T14:45:54,874 >>> sivm_mdl.factorize()
2021-07-05T14:45:54,875 ```
2021-07-05T14:45:54,876 Please note that currently not all methods work well with hdf5. While they all accept hdf5 input matrices, they sometimes lead to very high memory consumption on intermediate computation steps. This is difficult to avoid unless we switch to a completely disk-based storage.
2021-07-05T14:45:54,878 running egg_info
2021-07-05T14:45:54,878 creating /tmp/pip-pip-egg-info-dbfisdig/matrix_fact.egg-info
2021-07-05T14:45:54,880 writing top-level names to /tmp/pip-pip-egg-info-dbfisdig/matrix_fact.egg-info/top_level.txt
2021-07-05T14:45:54,882 writing requirements to /tmp/pip-pip-egg-info-dbfisdig/matrix_fact.egg-info/requires.txt
2021-07-05T14:45:54,885 writing dependency_links to /tmp/pip-pip-egg-info-dbfisdig/matrix_fact.egg-info/dependency_links.txt
2021-07-05T14:45:54,887 writing /tmp/pip-pip-egg-info-dbfisdig/matrix_fact.egg-info/PKG-INFO
2021-07-05T14:45:54,894 writing manifest file '/tmp/pip-pip-egg-info-dbfisdig/matrix_fact.egg-info/SOURCES.txt'
2021-07-05T14:45:55,263 reading manifest file '/tmp/pip-pip-egg-info-dbfisdig/matrix_fact.egg-info/SOURCES.txt'
2021-07-05T14:45:55,274 writing manifest file '/tmp/pip-pip-egg-info-dbfisdig/matrix_fact.egg-info/SOURCES.txt'
2021-07-05T14:45:55,411 Source in /tmp/pip-wheel-xro7nguy/matrix-fact_3e170dbf62784ade99e0a9cff08304c3 has version 1.1.1, which satisfies requirement matrix-fact==1.1.1 from https://files.pythonhosted.org/packages/44/6d/a8144f7aa9e57d0de9278a6903f94cf771ba212608e089247fb098f78be7/matrix-fact-1.1.1.tar.gz#sha256=865250a0212fbe372e5c38c9d3979350517b0696def64a87eb6b35af33cbd0b6
2021-07-05T14:45:55,413 Removed matrix-fact==1.1.1 from https://files.pythonhosted.org/packages/44/6d/a8144f7aa9e57d0de9278a6903f94cf771ba212608e089247fb098f78be7/matrix-fact-1.1.1.tar.gz#sha256=865250a0212fbe372e5c38c9d3979350517b0696def64a87eb6b35af33cbd0b6 from build tracker '/tmp/pip-req-tracker-vnsiqyvf'
2021-07-05T14:45:55,422 Created temporary directory: /tmp/pip-unpack-hu8s0p5d
2021-07-05T14:45:55,423 Building wheels for collected packages: matrix-fact
2021-07-05T14:45:55,432 Created temporary directory: /tmp/pip-wheel-d3vknf4r
2021-07-05T14:45:55,433 Building wheel for matrix-fact (setup.py): started
2021-07-05T14:45:55,433 Destination directory: /tmp/pip-wheel-d3vknf4r
2021-07-05T14:45:55,434 Running command /usr/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-wheel-xro7nguy/matrix-fact_3e170dbf62784ade99e0a9cff08304c3/setup.py'"'"'; __file__='"'"'/tmp/pip-wheel-xro7nguy/matrix-fact_3e170dbf62784ade99e0a9cff08304c3/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-d3vknf4r
2021-07-05T14:45:57,291 ## MatrixFact
2021-07-05T14:45:57,293 ### Install
2021-07-05T14:45:57,293 ```
2021-07-05T14:45:57,294 pip install matrix-fact
2021-07-05T14:45:57,294 ```
2021-07-05T14:45:57,295 ### What is matrix-fact?
2021-07-05T14:45:57,296 matrix-fact contains modules for constrained/unconstrained matrix factorization (and related) methods for both sparse and dense matrices. The repository can be found at https://github.com/gentaiscool/matrix_fact. The code is based on https://github.com/ChrisSchinnerl/pymf3 and https://github.com/rikkhill/pymf. We updated the code to support the latest library. It requires cvxopt, numpy, scipy and torch. We just addded the support for PyTorch-based SNMF.
2021-07-05T14:45:57,297 ### Packages
2021-07-05T14:45:57,299 The package includes:
2021-07-05T14:45:57,299 * Non-negative matrix factorization (NMF) [three different optimizations used]
2021-07-05T14:45:57,300 * Convex non-negative matrix factorization (CNMF)
2021-07-05T14:45:57,300 * Semi non-negative matrix factorization (SNMF)
2021-07-05T14:45:57,301 * Archetypal analysis (AA)
2021-07-05T14:45:57,302 * Simplex volume maximization (SiVM) [and SiVM for CUR, GSAT, ... ]
2021-07-05T14:45:57,302 * Convex-hull non-negative matrix factorization (CHNMF)
2021-07-05T14:45:57,303 * Binary matrix factorization (BNMF)
2021-07-05T14:45:57,303 * Singular value decomposition (SVD)
2021-07-05T14:45:57,304 * Principal component analysis (PCA)
2021-07-05T14:45:57,305 * K-means clustering (Kmeans)
2021-07-05T14:45:57,305 * C-means clustering (Cmeans)
2021-07-05T14:45:57,306 * CUR decomposition (CUR)
2021-07-05T14:45:57,306 * Compaxt matrix decomposition (CMD)
2021-07-05T14:45:57,307 * PyTorch SNMF
2021-07-05T14:45:57,308 ### Usage
2021-07-05T14:45:57,309 Given a dataset, most factorization methods try to minimize the Frobenius norm | data - W*H|
by finding a suitable set of basis vectors W
and coefficients H. The syntax for calling the various methods is quite similar. Usually, one has to submit a desired number of basis vectors and the maximum number of iterations. For example, applying NMF to a dataset data aiming at 2 basis vectors within 10 iterations works as follows:
2021-07-05T14:45:57,310 ```python
2021-07-05T14:45:57,311 >>> import matrix_fact
2021-07-05T14:45:57,311 >>> import numpy as np
2021-07-05T14:45:57,312 >>> data = np.array([[1.0, 0.0, 2.0], [0.0, 1.0, 1.0]])
2021-07-05T14:45:57,313 >>> nmf_mdl = matrix_fact.NMF(data, num_bases=2, niter=10)
2021-07-05T14:45:57,313 >>> nmf_mdl.initialization()
2021-07-05T14:45:57,314 >>> nmf_mdl.factorize()
2021-07-05T14:45:57,314 ```
2021-07-05T14:45:57,315 The basis vectors are now stored in nmf_mdl.W
, the coefficients in nmf_mdl.H
. To compute coefficients for an existing set of basis vectors simply copy W to nmf_mdl.W, and set compW to False:
2021-07-05T14:45:57,316 ```python
2021-07-05T14:45:57,317 >>> data = np.array([[1.5], [1.2]])
2021-07-05T14:45:57,318 >>> W = np.array([[1.0, 0.0], [0.0, 1.0]])
2021-07-05T14:45:57,318 >>> nmf_mdl = matrix_fact.NMF(data, num_bases=2, niter=1, compW=False)
2021-07-05T14:45:57,319 >>> nmf_mdl.initialization()
2021-07-05T14:45:57,319 >>> nmf_mdl.W = W
2021-07-05T14:45:57,320 >>> nmf_mdl.factorize()
2021-07-05T14:45:57,320 ```
2021-07-05T14:45:57,322 By changing py_fact.NMF to e.g. py_fact.AA or py_fact.CNMF Archetypal Analysis or Convex-NMF can be applied. Some methods might allow other parameters, make sure to have a look at the corresponding >>>help(py_fact.AA)
documentation. For example, CUR, CMD, and SVD are handled slightly differently, as they factorize into three submatrices which requires appropriate arguments for row and column sampling.
2021-07-05T14:45:57,323 For PyTorch-SNMF
2021-07-05T14:45:57,323 ```python
2021-07-05T14:45:57,324 >>> data = torch.FloatTensor([[1.5], [1.2]])
2021-07-05T14:45:57,324 >>> nmf_mdl = matrix_fact.NMF(data, num_bases=2)
2021-07-05T14:45:57,325 >>> nmf_mdl.factorize(niter=1000)
2021-07-05T14:45:57,325 ```
2021-07-05T14:45:57,327 ### Very large datasets
2021-07-05T14:45:57,327 For handling larger datasets py_fact supports hdf5 via h5py. Usage is straight forward as h5py allows to map large numpy matrices to disk. Thus, instead of passing data as a np.array, you can simply send the corresponding hdf5 table. The following example shows how to apply py_fact to a random matrix that is entirely stored on disk. In this example the dataset does not have to fit into memory, the resulting low-rank factors W,H
have to.
2021-07-05T14:45:57,328 ```python
2021-07-05T14:45:57,329 >>> import h5py
2021-07-05T14:45:57,329 >>> import numpy as np
2021-07-05T14:45:57,330 >>> import matrix_fact
2021-07-05T14:45:57,330 >>>
2021-07-05T14:45:57,331 >>> file = h5py.File('myfile.hdf5', 'w')
2021-07-05T14:45:57,332 >>> file['dataset'] = np.random.random((100,1000))
2021-07-05T14:45:57,332 >>> sivm_mdl = matrix_fact.SIVM(file['dataset'], num_bases=10)
2021-07-05T14:45:57,333 >>> sivm_mdl.factorize()
2021-07-05T14:45:57,333 ```
2021-07-05T14:45:57,335 If the low-rank matrices W,H
also do not fit into memory, they can be initialized as a h5py matrix.
2021-07-05T14:45:57,336 ```python
2021-07-05T14:45:57,336 >>> import h5py
2021-07-05T14:45:57,337 >>> import numpy as np
2021-07-05T14:45:57,338 >>> import matrix_fact
2021-07-05T14:45:57,338 >>>
2021-07-05T14:45:57,339 >>> file = h5py.File('myfile.hdf5', 'w')
2021-07-05T14:45:57,339 >>> file['dataset'] = np.random.random((100,1000))
2021-07-05T14:45:57,340 >>> file['W'] = np.random.random((100,10))
2021-07-05T14:45:57,341 >>> file['H'] = np.random.random((10,1000))
2021-07-05T14:45:57,341 >>> sivm_mdl = matrix_fact.SIVM(file['dataset'], num_bases=10)
2021-07-05T14:45:57,342 >>> sivm_mdl.W = file['W']
2021-07-05T14:45:57,342 >>> sivm_mdl.H = file['H']
2021-07-05T14:45:57,343 >>> sivm_mdl.factorize()
2021-07-05T14:45:57,343 ```
2021-07-05T14:45:57,344 Please note that currently not all methods work well with hdf5. While they all accept hdf5 input matrices, they sometimes lead to very high memory consumption on intermediate computation steps. This is difficult to avoid unless we switch to a completely disk-based storage.
2021-07-05T14:45:57,743 running bdist_wheel
2021-07-05T14:45:57,759 running build
2021-07-05T14:45:57,760 running build_py
2021-07-05T14:45:58,096 creating build
2021-07-05T14:45:58,097 creating build/lib
2021-07-05T14:45:58,099 creating build/lib/matrix_fact
2021-07-05T14:45:58,101 copying matrix_fact/greedy.py -> build/lib/matrix_fact
2021-07-05T14:45:58,106 copying matrix_fact/cmde.py -> build/lib/matrix_fact
2021-07-05T14:45:58,110 copying matrix_fact/sivm.py -> build/lib/matrix_fact
2021-07-05T14:45:58,115 copying matrix_fact/cur.py -> build/lib/matrix_fact
2021-07-05T14:45:58,119 copying matrix_fact/dist.py -> build/lib/matrix_fact
2021-07-05T14:45:58,124 copying matrix_fact/__init__.py -> build/lib/matrix_fact
2021-07-05T14:45:58,127 copying matrix_fact/greedycur.py -> build/lib/matrix_fact
2021-07-05T14:45:58,132 copying matrix_fact/pmf.py -> build/lib/matrix_fact
2021-07-05T14:45:58,138 copying matrix_fact/base.py -> build/lib/matrix_fact
2021-07-05T14:45:58,145 copying matrix_fact/aa.py -> build/lib/matrix_fact
2021-07-05T14:45:58,151 copying matrix_fact/awnmf.py -> build/lib/matrix_fact
2021-07-05T14:45:58,156 copying matrix_fact/snmf.py -> build/lib/matrix_fact
2021-07-05T14:45:58,162 copying matrix_fact/nndsvd.py -> build/lib/matrix_fact
2021-07-05T14:45:58,167 copying matrix_fact/abnmf.py -> build/lib/matrix_fact
2021-07-05T14:45:58,173 copying matrix_fact/kmeans.py -> build/lib/matrix_fact
2021-07-05T14:45:58,178 copying matrix_fact/sivm_gsat.py -> build/lib/matrix_fact
2021-07-05T14:45:58,184 copying matrix_fact/laesa.py -> build/lib/matrix_fact
2021-07-05T14:45:58,190 copying matrix_fact/sivm_cur.py -> build/lib/matrix_fact
2021-07-05T14:45:58,195 copying matrix_fact/wnmf.py -> build/lib/matrix_fact
2021-07-05T14:45:58,200 copying matrix_fact/cursl.py -> build/lib/matrix_fact
2021-07-05T14:45:58,206 copying matrix_fact/svd.py -> build/lib/matrix_fact
2021-07-05T14:45:58,212 copying matrix_fact/torch_snmf.py -> build/lib/matrix_fact
2021-07-05T14:45:58,217 copying matrix_fact/bnmf.py -> build/lib/matrix_fact
2021-07-05T14:45:58,223 copying matrix_fact/cmeans.py -> build/lib/matrix_fact
2021-07-05T14:45:58,228 copying matrix_fact/cnmf.py -> build/lib/matrix_fact
2021-07-05T14:45:58,234 copying matrix_fact/nmf.py -> build/lib/matrix_fact
2021-07-05T14:45:58,241 copying matrix_fact/sivm_search.py -> build/lib/matrix_fact
2021-07-05T14:45:58,247 copying matrix_fact/pca.py -> build/lib/matrix_fact
2021-07-05T14:45:58,253 copying matrix_fact/chnmf.py -> build/lib/matrix_fact
2021-07-05T14:45:58,260 copying matrix_fact/sivm_sgreedy.py -> build/lib/matrix_fact
2021-07-05T14:45:58,282 installing to build/bdist.linux-armv7l/wheel
2021-07-05T14:45:58,283 running install
2021-07-05T14:45:58,285 running install_lib
2021-07-05T14:45:58,292 creating build/bdist.linux-armv7l
2021-07-05T14:45:58,293 creating build/bdist.linux-armv7l/wheel
2021-07-05T14:45:58,298 creating build/bdist.linux-armv7l/wheel/matrix_fact
2021-07-05T14:45:58,300 copying build/lib/matrix_fact/greedy.py -> build/bdist.linux-armv7l/wheel/matrix_fact
2021-07-05T14:45:58,305 copying build/lib/matrix_fact/cmde.py -> build/bdist.linux-armv7l/wheel/matrix_fact
2021-07-05T14:45:58,309 copying build/lib/matrix_fact/sivm.py -> build/bdist.linux-armv7l/wheel/matrix_fact
2021-07-05T14:45:58,314 copying build/lib/matrix_fact/cur.py -> build/bdist.linux-armv7l/wheel/matrix_fact
2021-07-05T14:45:58,320 copying build/lib/matrix_fact/dist.py -> build/bdist.linux-armv7l/wheel/matrix_fact
2021-07-05T14:45:58,326 copying build/lib/matrix_fact/__init__.py -> build/bdist.linux-armv7l/wheel/matrix_fact
2021-07-05T14:45:58,331 copying build/lib/matrix_fact/greedycur.py -> build/bdist.linux-armv7l/wheel/matrix_fact
2021-07-05T14:45:58,337 copying build/lib/matrix_fact/pmf.py -> build/bdist.linux-armv7l/wheel/matrix_fact
2021-07-05T14:45:58,343 copying build/lib/matrix_fact/base.py -> build/bdist.linux-armv7l/wheel/matrix_fact
2021-07-05T14:45:58,350 copying build/lib/matrix_fact/aa.py -> build/bdist.linux-armv7l/wheel/matrix_fact
2021-07-05T14:45:58,356 copying build/lib/matrix_fact/awnmf.py -> build/bdist.linux-armv7l/wheel/matrix_fact
2021-07-05T14:45:58,362 copying build/lib/matrix_fact/snmf.py -> build/bdist.linux-armv7l/wheel/matrix_fact
2021-07-05T14:45:58,367 copying build/lib/matrix_fact/nndsvd.py -> build/bdist.linux-armv7l/wheel/matrix_fact
2021-07-05T14:45:58,373 copying build/lib/matrix_fact/abnmf.py -> build/bdist.linux-armv7l/wheel/matrix_fact
2021-07-05T14:45:58,379 copying build/lib/matrix_fact/kmeans.py -> build/bdist.linux-armv7l/wheel/matrix_fact
2021-07-05T14:45:58,385 copying build/lib/matrix_fact/sivm_gsat.py -> build/bdist.linux-armv7l/wheel/matrix_fact
2021-07-05T14:45:58,391 copying build/lib/matrix_fact/laesa.py -> build/bdist.linux-armv7l/wheel/matrix_fact
2021-07-05T14:45:58,396 copying build/lib/matrix_fact/sivm_cur.py -> build/bdist.linux-armv7l/wheel/matrix_fact
2021-07-05T14:45:58,402 copying build/lib/matrix_fact/wnmf.py -> build/bdist.linux-armv7l/wheel/matrix_fact
2021-07-05T14:45:58,407 copying build/lib/matrix_fact/cursl.py -> build/bdist.linux-armv7l/wheel/matrix_fact
2021-07-05T14:45:58,413 copying build/lib/matrix_fact/svd.py -> build/bdist.linux-armv7l/wheel/matrix_fact
2021-07-05T14:45:58,419 copying build/lib/matrix_fact/torch_snmf.py -> build/bdist.linux-armv7l/wheel/matrix_fact
2021-07-05T14:45:58,425 copying build/lib/matrix_fact/bnmf.py -> build/bdist.linux-armv7l/wheel/matrix_fact
2021-07-05T14:45:58,431 copying build/lib/matrix_fact/cmeans.py -> build/bdist.linux-armv7l/wheel/matrix_fact
2021-07-05T14:45:58,436 copying build/lib/matrix_fact/cnmf.py -> build/bdist.linux-armv7l/wheel/matrix_fact
2021-07-05T14:45:58,442 copying build/lib/matrix_fact/nmf.py -> build/bdist.linux-armv7l/wheel/matrix_fact
2021-07-05T14:45:58,449 copying build/lib/matrix_fact/sivm_search.py -> build/bdist.linux-armv7l/wheel/matrix_fact
2021-07-05T14:45:58,455 copying build/lib/matrix_fact/pca.py -> build/bdist.linux-armv7l/wheel/matrix_fact
2021-07-05T14:45:58,463 copying build/lib/matrix_fact/chnmf.py -> build/bdist.linux-armv7l/wheel/matrix_fact
2021-07-05T14:45:58,472 copying build/lib/matrix_fact/sivm_sgreedy.py -> build/bdist.linux-armv7l/wheel/matrix_fact
2021-07-05T14:45:58,477 running install_egg_info
2021-07-05T14:45:58,535 running egg_info
2021-07-05T14:45:58,538 writing top-level names to matrix_fact.egg-info/top_level.txt
2021-07-05T14:45:58,540 writing matrix_fact.egg-info/PKG-INFO
2021-07-05T14:45:58,545 writing dependency_links to matrix_fact.egg-info/dependency_links.txt
2021-07-05T14:45:58,547 writing requirements to matrix_fact.egg-info/requires.txt
2021-07-05T14:45:58,569 reading manifest file 'matrix_fact.egg-info/SOURCES.txt'
2021-07-05T14:45:58,586 writing manifest file 'matrix_fact.egg-info/SOURCES.txt'
2021-07-05T14:45:58,589 Copying matrix_fact.egg-info to build/bdist.linux-armv7l/wheel/matrix_fact-1.1.1-py3.5.egg-info
2021-07-05T14:45:58,613 running install_scripts
2021-07-05T14:45:58,809 creating build/bdist.linux-armv7l/wheel/matrix_fact-1.1.1.dist-info/WHEEL
2021-07-05T14:45:59,141 Building wheel for matrix-fact (setup.py): finished with status 'done'
2021-07-05T14:45:59,145 Created wheel for matrix-fact: filename=matrix_fact-1.1.1-py3-none-any.whl size=57502 sha256=9541cc639e832e63b92907d4e604c43af9e0dde8c1f8fd7f0e067a11ed72fb1c
2021-07-05T14:45:59,146 Stored in directory: /tmp/pip-ephem-wheel-cache-pq6792mh/wheels/f1/fc/a2/dcaac7bdeaf666ca0ef04d7cf14ac4da1b6c9f948a425581a4
2021-07-05T14:45:59,167 Successfully built matrix-fact
2021-07-05T14:45:59,182 Removed build tracker: '/tmp/pip-req-tracker-vnsiqyvf'