HLSVDPRO
======
Overview - Black box fitting of Time Domain Signals
------
The HLSVDPRO package provides code to fit a model function (sum of lorentzians)
to time-domain data via a 'black box' state space approach (see references below).
One frequent use for this is by the clinical MRS community for residual water
removal from MRS signals in the time domain.
Internally, we use the PROPACK library which contains a set of functions for
computing the singular value decomposition (SVD) of large and sparse matrices.
The SVD routines are based on the Lanczos bidiagonalization algorithm with
partial reorthogonalization (BPRO).
The calculated singular values and column vectors are subsequently processed
into lists of parameters that describe the sum of lorentzians that approximate
the data based on the paper by Laudadio (see below). Parameters are numpy
arrays of: frequencies, damping factors, amplitudes, and phases.
**Example:**
```
import hlsvdpro
import numpy as np
import matplotlib.pyplot as plt
data = hlsvdpro.get_testdata()
npts = len(data)
indat = hlsvdpro.TESTDATA # this is a built-in dict with test data
dwell = float(indat['step_size'])
nsv_sought = indat['n_singular_values']
result = hlsvdpro.hlsvd(data, nsv_sought, dwell)
nsv_found, singvals, freq, damp, ampl, phas = result
print("np.allclose(freq, indat['freq0']) = ", np.allclose(freq, np.array(indat['freq0'])) )
fid = hlsvdpro.create_hlsvd_fids(result, npts, dwell, sum_results=True, convert=False)
chop = ((((np.arange(len(fid)) + 1) % 2) * 2) - 1)
dat = data * chop
fit = fid * chop
dat[0] *= 0.5
fit[0] *= 0.5
plt.plot(np.fft.fft(dat).real, color='r')
plt.plot(np.fft.fft(fit).real, color='b')
plt.plot(np.fft.fft(dat-fit).real, color='g')
plt.show()
```
HLSVDPRO Methods
------
- `hlsvdpro.hlsvdpro(data, nsv_sought, m=None, sparse=True)` - the main method
for running the hlsvdpro algorithm. It does not require the dwell time of the
time domain data, but it also does not convert the results to standard units. It
does allow the user to specify the dimensions of the Hankel matrix, and whether
a sparse SVD is performed or not.
- `hlsvdpro.hlsvd(data, nsv_sought, dwell_time)` - provides backwards
compatibility to the API for HLSVDPRO version 1.x. It calls the hlsvdpro() method
with default values corresponding to the algorithm used in version 1.x. See
docstring for more information on the default values used.
HLSVDPRO Utility Methods
------
- `hlsvdpro.create_hlsvd_fids(result, npts, dwell, sum_results=False, convert=True)` -
can be used to create FIDs from the results tuple from either the `hlsvd()`
or the `hlsvdpro()` methods. It can return either individual FIDs or a sum of
all FIDs as a result.
- `hlsvdpro.convert_hlsvd_result(result, dwell)` - uses the dwell time to
convert the `hlsvdpro()` result tuple to more standard units. Frequencies
convert to [kHz], and damping factors to [ms]. Phases convert to [degrees].
Singular values, amplitudes and row and column matrices are maintained at
their same values and output tuple locations. Note - the `hlsvd()` method
automatically calls this internally, so you don't have to convert values
if you use that method.
- `hlsvdpro.get_testdata()` - returns a numpy array of 1024 complex data
points that represents a real world short TE single voxel PRESS data set.
This function converts the base64 encoded string saved in the TESTDATA dict
into a numpy array for you. Additional information about the data and the
known values for fitting it via the hlsvd() method can be retrieved from
the TESTDATA dict. See 'Example' for more usage information.
Additional Functionality
------
As of version 2.0.0, HLSVDPRO also provides access to internal PROPACK SVD
functions via the 'propack' module. These have been compiled from PROPACK
version 2.1, and include:
- `hlsvdpro.propack.lansvd()` - matrix-vector product via user defined Python
callback
vector/matrix multiplication
- `hlsvdpro.propack.lansvd_irl()` - matrix-vector product via user defined Python
callback
- `hlsvdpro.propack.lansvd_aprod()` - matrix-vector product via fixed internal
Fortran call
- `hlsvdpro.propack.lansvd_irl_aprod()` - matrix-vector product via fixed internal
Fortran call
Technical Overview and References
------
The PROPACK SVD Fortran code was written by Rasmus Munk Larsen. Teresa Laudadio
and Diana Sima adapted it into HLSVDPRO algorithm. Brian J Soher adapted the
algorithm for PROPACK v2.1 use and the python wrappers used to access the code.
For complete copyright and license information, see the LICENSE file.
The Python wrapper is compatible with Python 2.7 and 3.x. The binaries
that the Python wrapper calls are 64-bit, so this code is not compatible with
32-bit Python.
The state space approach is described in: _S.Y. Kung, K.S. Arun and D.V. Bhaskar
Rao, J. Opt. Soc. Am. 73, 1799 (1983)._
HLSVDPRO version 1.0.x made use of code from PROPACK version 1.x and was
implemented based on the paper by: _W.W.F. Pijnappel, A. van den Boogaart, R. de
Beer, D. van Ormondt, J. Magn. Reson. 97, 122 (1992)._
HLSVDPRO version 2.0.0 was adaptated to use PROPACK library version 2.1 to
implement the HLSVDPRO algorithm as described in: _T. Laudadio, N. Mastronardi
L. Vanhamme, P. Van Hecke and S. Van Huffel, "Improved Lanczos algorithms for
blackbox MRS data quantitation", Journal of Magnetic Resonance, Volume 157,
pages 292-297, 2002._
The Python wrapper used to access the PROPACK library was adapted from the
pypropack repository create by Jake van der Plas on Github:
https://github.com/jakevdp/pypropack with extensions by Brian J Soher to
include the matrix-vector product calculation within the Fortran code.
Acknowlegements and Kudos
-------
We (the HLSVDPRO team) have made some minor modifications to this version of
HLSVDPRO. Most significantly, we have updated the PROPACK library to version
2.1, added Makefiles and Python wrappers for both the HLSVDPRO and PROPACK
methods. We are very grateful to all of the above scientists for sharing their
work and agreeing to release it under a BSD license.
Raw data
{
"_id": null,
"home_page": "http://scion.duhs.duke.edu/projects/hlsvdpro",
"name": "hlsvdpro",
"maintainer": "Brian J. Soher",
"docs_url": null,
"requires_python": "",
"maintainer_email": "bsoher@briansoher.com",
"keywords": "svd,hlsvd,hlsvdpro,propack,time domain,fitting",
"author": "Brian J. Soher",
"author_email": "bsoher@briansoher.com",
"download_url": "",
"platform": "Linux",
"description": "HLSVDPRO \r\n======\r\n\r\nOverview - Black box fitting of Time Domain Signals\r\n------\r\nThe HLSVDPRO package provides code to fit a model function (sum of lorentzians) \r\nto time-domain data via a 'black box' state space approach (see references below). \r\nOne frequent use for this is by the clinical MRS community for residual water \r\nremoval from MRS signals in the time domain. \r\n\r\nInternally, we use the PROPACK library which contains a set of functions for \r\ncomputing the singular value decomposition (SVD) of large and sparse matrices. \r\nThe SVD routines are based on the Lanczos bidiagonalization algorithm with \r\npartial reorthogonalization (BPRO). \r\n\r\nThe calculated singular values and column vectors are subsequently processed \r\ninto lists of parameters that describe the sum of lorentzians that approximate \r\nthe data based on the paper by Laudadio (see below). Parameters are numpy \r\narrays of: frequencies, damping factors, amplitudes, and phases. \r\n\r\n**Example:**\r\n\r\n```\r\nimport hlsvdpro\r\nimport numpy as np\r\nimport matplotlib.pyplot as plt\r\n\r\ndata = hlsvdpro.get_testdata()\r\nnpts = len(data)\r\nindat = hlsvdpro.TESTDATA \t\t# this is a built-in dict with test data \r\ndwell = float(indat['step_size'])\r\nnsv_sought = indat['n_singular_values']\r\n\r\nresult = hlsvdpro.hlsvd(data, nsv_sought, dwell)\r\n\r\nnsv_found, singvals, freq, damp, ampl, phas = result\r\n\r\nprint(\"np.allclose(freq, indat['freq0']) = \", np.allclose(freq, np.array(indat['freq0'])) )\r\n\r\nfid = hlsvdpro.create_hlsvd_fids(result, npts, dwell, sum_results=True, convert=False)\r\n\r\nchop = ((((np.arange(len(fid)) + 1) % 2) * 2) - 1)\r\ndat = data * chop\r\nfit = fid * chop\r\ndat[0] *= 0.5\r\nfit[0] *= 0.5\r\n\r\nplt.plot(np.fft.fft(dat).real, color='r') \r\nplt.plot(np.fft.fft(fit).real, color='b') \r\nplt.plot(np.fft.fft(dat-fit).real, color='g')\r\nplt.show()\r\n\r\n```\r\n\r\nHLSVDPRO Methods\r\n------\r\n\r\n- `hlsvdpro.hlsvdpro(data, nsv_sought, m=None, sparse=True)` - the main method \r\nfor running the hlsvdpro algorithm. It does not require the dwell time of the \r\ntime domain data, but it also does not convert the results to standard units. It\r\ndoes allow the user to specify the dimensions of the Hankel matrix, and whether\r\na sparse SVD is performed or not.\r\n\r\n- `hlsvdpro.hlsvd(data, nsv_sought, dwell_time)` - provides backwards \r\ncompatibility to the API for HLSVDPRO version 1.x. It calls the hlsvdpro() method\r\nwith default values corresponding to the algorithm used in version 1.x. See \r\ndocstring for more information on the default values used.\r\n\r\nHLSVDPRO Utility Methods\r\n------\r\n- `hlsvdpro.create_hlsvd_fids(result, npts, dwell, sum_results=False, convert=True)` - \r\ncan be used to create FIDs from the results tuple from either the `hlsvd()` \r\nor the `hlsvdpro()` methods. It can return either individual FIDs or a sum of \r\nall FIDs as a result. \r\n\r\n- `hlsvdpro.convert_hlsvd_result(result, dwell)` - uses the dwell time to \r\nconvert the `hlsvdpro()` result tuple to more standard units. Frequencies \r\nconvert to [kHz], and damping factors to [ms]. Phases convert to [degrees]. \r\nSingular values, amplitudes and row and column matrices are maintained at \r\ntheir same values and output tuple locations. Note - the `hlsvd()` method \r\nautomatically calls this internally, so you don't have to convert values\r\nif you use that method.\r\n\r\n- `hlsvdpro.get_testdata()` - returns a numpy array of 1024 complex data \r\npoints that represents a real world short TE single voxel PRESS data set.\r\nThis function converts the base64 encoded string saved in the TESTDATA dict\r\ninto a numpy array for you. Additional information about the data and the \r\nknown values for fitting it via the hlsvd() method can be retrieved from \r\nthe TESTDATA dict. See 'Example' for more usage information.\r\n\r\n\r\nAdditional Functionality\r\n------\r\n\r\nAs of version 2.0.0, HLSVDPRO also provides access to internal PROPACK SVD \r\nfunctions via the 'propack' module. These have been compiled from PROPACK \r\nversion 2.1, and include:\r\n\r\n- `hlsvdpro.propack.lansvd()` - matrix-vector product via user defined Python \r\ncallback \r\nvector/matrix multiplication\r\n- `hlsvdpro.propack.lansvd_irl()` - matrix-vector product via user defined Python \r\ncallback \r\n- `hlsvdpro.propack.lansvd_aprod()` - matrix-vector product via fixed internal \r\nFortran call \r\n- `hlsvdpro.propack.lansvd_irl_aprod()` - matrix-vector product via fixed internal \r\nFortran call\r\n\r\nTechnical Overview and References\r\n------\r\n\r\nThe PROPACK SVD Fortran code was written by Rasmus Munk Larsen. Teresa Laudadio \r\nand Diana Sima adapted it into HLSVDPRO algorithm. Brian J Soher adapted the \r\nalgorithm for PROPACK v2.1 use and the python wrappers used to access the code.\r\n\r\nFor complete copyright and license information, see the LICENSE file.\r\n\r\nThe Python wrapper is compatible with Python 2.7 and 3.x. The binaries\r\nthat the Python wrapper calls are 64-bit, so this code is not compatible with\r\n32-bit Python. \r\n\r\n\r\nThe state space approach is described in: _S.Y. Kung, K.S. Arun and D.V. Bhaskar\r\nRao, J. Opt. Soc. Am. 73, 1799 (1983)._\r\n\r\nHLSVDPRO version 1.0.x made use of code from PROPACK version 1.x and was \r\nimplemented based on the paper by: _W.W.F. Pijnappel, A. van den Boogaart, R. de \r\nBeer, D. van Ormondt, J. Magn. Reson. 97, 122 (1992)._\r\n\r\nHLSVDPRO version 2.0.0 was adaptated to use PROPACK library version 2.1 to \r\nimplement the HLSVDPRO algorithm as described in: _T. Laudadio, N. Mastronardi\r\nL. Vanhamme, P. Van Hecke and S. Van Huffel, \"Improved Lanczos algorithms for \r\nblackbox MRS data quantitation\", Journal of Magnetic Resonance, Volume 157, \r\npages 292-297, 2002._ \r\n\r\nThe Python wrapper used to access the PROPACK library was adapted from the \r\npypropack repository create by Jake van der Plas on Github: \r\nhttps://github.com/jakevdp/pypropack with extensions by Brian J Soher to \r\ninclude the matrix-vector product calculation within the Fortran code.\r\n\r\nAcknowlegements and Kudos\r\n-------\r\n\r\nWe (the HLSVDPRO team) have made some minor modifications to this version of\r\nHLSVDPRO. Most significantly, we have updated the PROPACK library to version \r\n2.1, added Makefiles and Python wrappers for both the HLSVDPRO and PROPACK \r\nmethods. We are very grateful to all of the above scientists for sharing their\r\nwork and agreeing to release it under a BSD license.\r\n\r\n\r\n",
"bugtrack_url": null,
"license": "https://opensource.org/licenses/BSD-3-Clause",
"summary": "HLSVDPRO provides code to fit a model function (sum of lorentzians) to time-domain data via a 'black box' state space approach. This is often used in clinical MRS to remove residual water from time domain signals.",
"version": "2.0.0",
"project_urls": {
"Homepage": "http://scion.duhs.duke.edu/projects/hlsvdpro"
},
"split_keywords": [
"svd",
"hlsvd",
"hlsvdpro",
"propack",
"time domain",
"fitting"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "967d9115e74741766ab1795eab1d2d7655a15cf80a8e43d59b765cac0a1bb8b6",
"md5": "ab103b7389045945e3c2e6811b5a35ce",
"sha256": "b83ab61607455eab66da2cdfb9a77088bd76647715045a48b9f62eb6c4c58205"
},
"downloads": -1,
"filename": "hlsvdpro-2.0.0-py27-none-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "ab103b7389045945e3c2e6811b5a35ce",
"packagetype": "bdist_wheel",
"python_version": "py27",
"requires_python": null,
"size": 1278549,
"upload_time": "2020-06-23T04:14:46",
"upload_time_iso_8601": "2020-06-23T04:14:46.853551Z",
"url": "https://files.pythonhosted.org/packages/96/7d/9115e74741766ab1795eab1d2d7655a15cf80a8e43d59b765cac0a1bb8b6/hlsvdpro-2.0.0-py27-none-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "84743daa81f60eb5f5929519975b7e1370194d4a9e3232f057ffc7da0619fec0",
"md5": "a45b40e7586891ccb9547e4132351215",
"sha256": "095ae59c706639d995fc7d49ad255d3d4a81677b66eb5d60fec2722a9da41e4c"
},
"downloads": -1,
"filename": "hlsvdpro-2.0.0-py27-none-manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "a45b40e7586891ccb9547e4132351215",
"packagetype": "bdist_wheel",
"python_version": "py27",
"requires_python": null,
"size": 1349938,
"upload_time": "2020-06-23T04:14:06",
"upload_time_iso_8601": "2020-06-23T04:14:06.532663Z",
"url": "https://files.pythonhosted.org/packages/84/74/3daa81f60eb5f5929519975b7e1370194d4a9e3232f057ffc7da0619fec0/hlsvdpro-2.0.0-py27-none-manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2e91bbe694a70ebe4952b38654c38c75b165a0676830778d1fbfe28f2a8950c5",
"md5": "89a8e9525befdfb947e4dc6c6709c9a3",
"sha256": "dadeb1db762dd3cca5025fd0ddb34c896934d19acd2f816da1048a064e244b96"
},
"downloads": -1,
"filename": "hlsvdpro-2.0.0-py27-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "89a8e9525befdfb947e4dc6c6709c9a3",
"packagetype": "bdist_wheel",
"python_version": "py27",
"requires_python": null,
"size": 1465123,
"upload_time": "2020-06-23T04:13:24",
"upload_time_iso_8601": "2020-06-23T04:13:24.373792Z",
"url": "https://files.pythonhosted.org/packages/2e/91/bbe694a70ebe4952b38654c38c75b165a0676830778d1fbfe28f2a8950c5/hlsvdpro-2.0.0-py27-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8ab28cf779155a37bfa394f79589610be85f6b86362d5c95dfe815973682e034",
"md5": "df8bb01b28047fe451b8ea4282cb99e3",
"sha256": "c976edcf07e074ffaef96bba4c798f597598995e6da3b2c4d28feeb4cda487e5"
},
"downloads": -1,
"filename": "hlsvdpro-2.0.0-py36-none-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "df8bb01b28047fe451b8ea4282cb99e3",
"packagetype": "bdist_wheel",
"python_version": "py36",
"requires_python": null,
"size": 1277714,
"upload_time": "2020-06-23T04:14:47",
"upload_time_iso_8601": "2020-06-23T04:14:47.931650Z",
"url": "https://files.pythonhosted.org/packages/8a/b2/8cf779155a37bfa394f79589610be85f6b86362d5c95dfe815973682e034/hlsvdpro-2.0.0-py36-none-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "dca862f5d998c8da8c129ca253d53a53be076abe105af9956a3475df863eda3d",
"md5": "f377348372b45cd5a97d9db5d263688c",
"sha256": "737f74c1b7a22e9a7815710ae4cc12e208bcbc7324b71330d35239191b3b3a66"
},
"downloads": -1,
"filename": "hlsvdpro-2.0.0-py36-none-manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "f377348372b45cd5a97d9db5d263688c",
"packagetype": "bdist_wheel",
"python_version": "py36",
"requires_python": null,
"size": 1362688,
"upload_time": "2020-06-23T04:14:08",
"upload_time_iso_8601": "2020-06-23T04:14:08.391048Z",
"url": "https://files.pythonhosted.org/packages/dc/a8/62f5d998c8da8c129ca253d53a53be076abe105af9956a3475df863eda3d/hlsvdpro-2.0.0-py36-none-manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "1c59b38a01bf81132cbac14a8c2f52fe3f83cbbd8213bc3451ce7e0f4cdde2d8",
"md5": "9c19964dcc7aafa50cf8c19157e36843",
"sha256": "064a943f6ea797418a7152b476ac262e3ddd515dd7319b36bdd7f8809826e45d"
},
"downloads": -1,
"filename": "hlsvdpro-2.0.0-py36-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "9c19964dcc7aafa50cf8c19157e36843",
"packagetype": "bdist_wheel",
"python_version": "py36",
"requires_python": null,
"size": 1482552,
"upload_time": "2020-06-23T04:13:26",
"upload_time_iso_8601": "2020-06-23T04:13:26.019038Z",
"url": "https://files.pythonhosted.org/packages/1c/59/b38a01bf81132cbac14a8c2f52fe3f83cbbd8213bc3451ce7e0f4cdde2d8/hlsvdpro-2.0.0-py36-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "78aef1df89f258bf4abd8face5683ddda567493d474811e352aaefd5db29777d",
"md5": "d32260f7464eded167874f17d072fdeb",
"sha256": "177fe7ecd2c07f3fb91dac81685c02e9538babc1c08152c810cbed647ea8bc0c"
},
"downloads": -1,
"filename": "hlsvdpro-2.0.0-py37-none-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "d32260f7464eded167874f17d072fdeb",
"packagetype": "bdist_wheel",
"python_version": "py37",
"requires_python": null,
"size": 1277707,
"upload_time": "2020-06-23T04:14:49",
"upload_time_iso_8601": "2020-06-23T04:14:49.243060Z",
"url": "https://files.pythonhosted.org/packages/78/ae/f1df89f258bf4abd8face5683ddda567493d474811e352aaefd5db29777d/hlsvdpro-2.0.0-py37-none-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4b70d1ef6877afe65558f7e04e9d707a769bf25ebfd0616b7ba88fdf6797ec0e",
"md5": "3ee476fdcc0f98ae48e165d7e2dd8981",
"sha256": "16ee00a0fd0104da761cfa1fd55515271b8fc00a51d7fb8a3e81505dd064b20c"
},
"downloads": -1,
"filename": "hlsvdpro-2.0.0-py37-none-manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "3ee476fdcc0f98ae48e165d7e2dd8981",
"packagetype": "bdist_wheel",
"python_version": "py37",
"requires_python": null,
"size": 1362651,
"upload_time": "2020-06-23T04:14:10",
"upload_time_iso_8601": "2020-06-23T04:14:10.521735Z",
"url": "https://files.pythonhosted.org/packages/4b/70/d1ef6877afe65558f7e04e9d707a769bf25ebfd0616b7ba88fdf6797ec0e/hlsvdpro-2.0.0-py37-none-manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f30b7197677b79abee88e70bfa9c4ef3404bf3a9a9f6baa81a857d274f02377f",
"md5": "868f9d3a5a346aefaabdef794261e088",
"sha256": "1115b9b7d5b0dc0ae4973d843264bad3d3a3a53c7b3e49b739a8104dbe17bef8"
},
"downloads": -1,
"filename": "hlsvdpro-2.0.0-py37-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "868f9d3a5a346aefaabdef794261e088",
"packagetype": "bdist_wheel",
"python_version": "py37",
"requires_python": null,
"size": 1490904,
"upload_time": "2020-06-23T04:13:27",
"upload_time_iso_8601": "2020-06-23T04:13:27.657348Z",
"url": "https://files.pythonhosted.org/packages/f3/0b/7197677b79abee88e70bfa9c4ef3404bf3a9a9f6baa81a857d274f02377f/hlsvdpro-2.0.0-py37-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "af7725ac60681e5678cd2ceff0d641de69354838f54fcef0becdecec27e3bb4f",
"md5": "fd7edbc1fc8c419056d47aeb38937cf1",
"sha256": "c242a2aaabe8d0cca46c8c87ca311fea141428ebc345720134032a9e50c45530"
},
"downloads": -1,
"filename": "hlsvdpro-2.0.0-py38-none-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "fd7edbc1fc8c419056d47aeb38937cf1",
"packagetype": "bdist_wheel",
"python_version": "py38",
"requires_python": null,
"size": 1277525,
"upload_time": "2020-06-23T04:14:50",
"upload_time_iso_8601": "2020-06-23T04:14:50.792958Z",
"url": "https://files.pythonhosted.org/packages/af/77/25ac60681e5678cd2ceff0d641de69354838f54fcef0becdecec27e3bb4f/hlsvdpro-2.0.0-py38-none-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "5a29bb69bc87140341111737ec03e0ef2a524a6b79000f1ba67d4a4ee5314d4d",
"md5": "1b4185207dea9479ad63139d2d4fe1a5",
"sha256": "7189e7e6206005049ecade801cf11b1a647bea6b1c210d28057abd0848e81d46"
},
"downloads": -1,
"filename": "hlsvdpro-2.0.0-py38-none-manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "1b4185207dea9479ad63139d2d4fe1a5",
"packagetype": "bdist_wheel",
"python_version": "py38",
"requires_python": null,
"size": 1370207,
"upload_time": "2020-06-23T04:14:12",
"upload_time_iso_8601": "2020-06-23T04:14:12.384897Z",
"url": "https://files.pythonhosted.org/packages/5a/29/bb69bc87140341111737ec03e0ef2a524a6b79000f1ba67d4a4ee5314d4d/hlsvdpro-2.0.0-py38-none-manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "86405f594f543837375d7183cda82c6eb79a4b7039cd66c5e975efa2a7b8dc1e",
"md5": "1da97c6d429e47945bff9110b55ef637",
"sha256": "34519b9c7a4748097f2d40925cbae852d487fbfb1eb79830916e64acba3f721b"
},
"downloads": -1,
"filename": "hlsvdpro-2.0.0-py38-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "1da97c6d429e47945bff9110b55ef637",
"packagetype": "bdist_wheel",
"python_version": "py38",
"requires_python": null,
"size": 1472978,
"upload_time": "2020-06-23T04:13:29",
"upload_time_iso_8601": "2020-06-23T04:13:29.606973Z",
"url": "https://files.pythonhosted.org/packages/86/40/5f594f543837375d7183cda82c6eb79a4b7039cd66c5e975efa2a7b8dc1e/hlsvdpro-2.0.0-py38-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2020-06-23 04:14:46",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "hlsvdpro"
}