{ "info": { "author": "Gregor Lichtner (python/C++ port); TurboReg Author: Philippe Th\u00e9venaz, Biomedical Imaging Group, Swiss Federal Institute of Technology Lausanne", "author_email": "", "bugtrack_url": null, "classifiers": [], "description": "pyStackReg\r\n==========\r\n\r\nSummary\r\n-------\r\nPython/C++ port of the ImageJ extension TurboReg/StackReg written by Philippe Thevenaz/EPFL.\r\n\r\nA python extension for the automatic alignment of a source image or a stack (movie) to a target image/reference frame.\r\n\r\nDescription\r\n-----------\r\npyStackReg is used to align (register) one or more images to a common reference image, as is required usually in time-resolved fluorescence or wide-field microscopy. It is directly ported from the source code of the ImageJ plugin ``TurboReg`` and provides additionally the functionality of the ImageJ plugin ``StackReg``, both of which were written by Philippe Thevenaz/EPFL (available at http://bigwww.epfl.ch/thevenaz/turboreg/).\r\n\r\npyStackReg provides the following four types of distortion:\r\n\r\n- translation\r\n- rigid body (translation + rotation)\r\n- scaled rotation (translation + rotation + scaling)\r\n- affine (translation + rotation + scaling + shearing)\r\n- bilinear (non-linear transformation; does not preserve straight lines)\r\n\r\npyStackReg supports the full functionality of StackReg plus some additional options, e.g., using different reference images and having access to the actual transformation matrices (please see the examples below).\r\n\r\nPlease note: The bilinear transformation cannot be propagated, as a combination of bilinear transformations does not generally result in a bilinear transformation. Therefore, stack registration/transform functions won't work with bilinear transformation when using \"previous\" image as reference image. You can either use another reference (\"first\" or \"mean\" for first or mean image, respectively), or try to register/transform each image of the stack separately to its respective previous image (and use the already transformed previous image as reference for the next image).\r\n\r\n\r\nInstallation\r\n------------\r\nThe package is available on PyPi. Install it using:\r\n\r\n.. code-block:: python\r\n\r\n pip install pystackreg\r\n\r\n\r\nDocumentation\r\n-------------\r\nThe documentation can be found on readthedocs:\r\n\r\nhttps://pystackreg.readthedocs.io/\r\n\r\n\r\n\r\nUsage\r\n-----\r\nThe following example opens two different files and registers them using all different possible transformations\r\n\r\n.. code-block:: python\r\n\r\n from pystackreg import StackReg\r\n from skimage import io\r\n\r\n #load reference and \"moved\" image\r\n ref = io.imread('some_original_image.tif')\r\n mov = io.imread('some_changed_image.tif')\r\n\r\n #Translational transformation\r\n sr = StackReg(StackReg.TRANSLATION)\r\n out_tra = sr.register_transform(ref, mov)\r\n\r\n #Rigid Body transformation\r\n sr = StackReg(StackReg.RIGID_BODY)\r\n out_rot = sr.register_transform(ref, mov)\r\n\r\n #Scaled Rotation transformation\r\n sr = StackReg(StackReg.SCALED_ROTATION)\r\n out_sca = sr.register_transform(ref, mov)\r\n\r\n #Affine transformation\r\n sr = StackReg(StackReg.AFFINE)\r\n out_aff = sr.register_transform(ref, mov)\r\n\r\n #Bilinear transformation\r\n sr = StackReg(StackReg.BILINEAR)\r\n out_bil = sr.register_transform(ref, mov)\r\n\r\n\r\nThe next example shows how to separate registration from transformation (e.g., to register in one color channel and then use that information to transform another color channel):\r\n\r\n\r\n.. code-block:: python\r\n\r\n from pystackreg import StackReg\r\n from skimage import io\r\n\r\n img0 = io.imread('some_multiframe_image.tif')\r\n img1 = io.imread('another_multiframe_image.tif')\r\n # img0.shape: frames x width x height (3D)\r\n\r\n sr = StackReg(StackReg.RIGID_BODY)\r\n\r\n # register 2nd image to 1st\r\n sr.register(img0[0, :, :], img0[1,:,:])\r\n\r\n # use the transformation from the above registration to register another frame\r\n out = sr.transform(img1[1,:,:]) \r\n\r\nThe next examples shows how to register and transform a whole stack:\r\n\r\n.. code-block:: python\r\n\r\n from pystackreg import StackReg\r\n from skimage import io\r\n\r\n img0 = io.imread('some_multiframe_image.tif') # 3 dimensions : frames x width x height\r\n\r\n sr = StackReg(StackReg.RIGID_BODY)\r\n\r\n # register each frame to the previous (already registered) one \r\n # this is what the original StackReg ImageJ plugin uses\r\n out_previous = sr.register_transform_stack(img0, reference='previous')\r\n\r\n # register to first image\r\n out_first = sr.register_transform_stack(img0, reference='first')\r\n\r\n # register to mean image\r\n out_mean = sr.register_transform_stack(img0, reference='mean')\r\n\r\n # register to mean of first 10 images\r\n out_first10 = sr.register_transform_stack(img0, reference='first', n_frames=10)\r\n\r\n # calculate a moving average of 10 images, then register the moving average to the mean of \r\n # the first 10 images and transform the original image (not the moving average)\r\n out_moving10 = sr.register_transform_stack(img0, reference='first', n_frames=10, moving_average = 10)\r\n\r\nThe next example shows how to separate registration from transformation for a stack (e.g., to register in one color channel and then use that information to transform another color channel):\r\n\r\n.. code-block:: python\r\n\r\n from pystackreg import StackReg\r\n from skimage import io\r\n\r\n img0 = io.imread('some_multiframe_image.tif') # 3 dimensions : frames x width x height\r\n img1 = io.imread('another_multiframe_image.tif') # same shape as img0\r\n\r\n # both stacks must have the same shape\r\n assert img0.shape == img1.shape\r\n\r\n sr = StackReg(StackReg.RIGID_BODY)\r\n\r\n # register each frame to the previous (already registered) one \r\n # this is what the original StackReg ImageJ plugin uses\r\n tmats = sr.register_stack(img0, reference='previous')\r\n out = sr.transform_stack(img1)\r\n\r\n # tmats contains the transformation matrices -> they can be saved\r\n # and loaded at another time\r\n import numpy as np\r\n np.save('transformation_matrices.npy', tmats)\r\n\r\n tmats_loaded = np.load('transformation_matrices.npy')\r\n\r\n # make sure you use the correct transformation here!\r\n sr = StackReg(StackReg.RIGID_BODY) \r\n\r\n # transform stack using the tmats loaded from file\r\n sr.transform_stack(img1, tmats=tmats_loaded)\r\n\r\n # with the transformation matrices at hand you can also\r\n # use the transformation algorithms from other packages:\r\n from skimage import transform as tf\r\n\r\n out = np.zeros(img0.shape).astype(np.float)\r\n\r\n for i in range(tmats.shape[0]):\r\n tform = tf.AffineTransform(matrix=tmats[i, :, :])\r\n out[i, :, :] = tf.warp(img1[i, :, :], tform)\r\n\r\n\r\nAuthor information\r\n-------------------\r\nThis is a port of the original Java code by Philippe Thevenaz to C++ with a Python wrapper around it. All credit goes to the original author:\r\n::\r\n\r\n /*====================================================================\r\n | Philippe Thevenaz\r\n | EPFL/STI/IMT/LIB/BM.4.137\r\n | Station 17\r\n | CH-1015 Lausanne VD\r\n | Switzerland\r\n |\r\n | phone (CET): +41(21)693.51.61\r\n | fax: +41(21)693.37.01\r\n | RFC-822: philippe.thevenaz@epfl.ch\r\n | X-400: /C=ch/A=400net/P=switch/O=epfl/S=thevenaz/G=philippe/\r\n | URL: http://bigwww.epfl.ch/\r\n \\===================================================================*/\r\n\r\n /*====================================================================\r\n | This work is based on the following paper:\r\n |\r\n | P. Thevenaz, U.E. Ruttimann, M. Unser\r\n | A Pyramid Approach to Subpixel Registration Based on Intensity\r\n | IEEE Transactions on Image Processing\r\n | vol. 7, no. 1, pp. 27-41, January 1998.\r\n |\r\n | This paper is available on-line at\r\n | http://bigwww.epfl.ch/publications/thevenaz9801.html\r\n |\r\n | Other relevant on-line publications are available at\r\n | http://bigwww.epfl.ch/publications/\r\n \\===================================================================*/\r\n\r\nLicense\r\n-------\r\n\r\n::\r\n\r\n You are free to use this software for commercial and non-commercial\r\n purposes. However, we expect you to include a citation or acknowledgement\r\n whenever you present or publish research results that are based\r\n on this software. You are free to modify this software or derive\r\n works from it, but you are only allowed to distribute it under the\r\n same terms as this license specifies. Additionally, you must include\r\n a reference to the research paper above in all software and works\r\n derived from this software.\r\n\r\n\r\n\r\n\r\n\r\n\r\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/glichtner/pystackreg", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "pystackreg", "package_url": "https://pypi.org/project/pystackreg/", "platform": "", "project_url": "https://pypi.org/project/pystackreg/", "project_urls": { "Homepage": "https://github.com/glichtner/pystackreg" }, "release_url": "https://pypi.org/project/pystackreg/0.2.2/", "requires_dist": [ "numpy", "tqdm" ], "requires_python": "", "summary": "Python implementation of the ImageJ/FIJI Plugin TurboReg/StackReg", "version": "0.2.2" }, "last_serial": 5999747, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "ab22d7a209f55e91d19e55cb7aac1179", "sha256": "4c8d1d64573693618a4132fc2d20a9bc8cb2e44e712b1f2fa5e8ad9b4a5bd21a" }, "downloads": -1, "filename": "pystackreg-0.1.0-cp27-cp27m-win32.whl", "has_sig": false, "md5_digest": "ab22d7a209f55e91d19e55cb7aac1179", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 57910, "upload_time": "2018-06-29T17:28:59", "url": "https://files.pythonhosted.org/packages/90/98/5e0af34e28674387707aeedd351a68d1ca6fc1a6d58105e10bd182eab152/pystackreg-0.1.0-cp27-cp27m-win32.whl" }, { "comment_text": "", "digests": { "md5": "bd180ea435e01d76aa81547a2be42560", "sha256": "38b67d162049882daca06dc4484c5c5673efb91720853e373d1ad45dbb7407ae" }, "downloads": -1, "filename": "pystackreg-0.1.0-cp27-cp27m-win_amd64.whl", "has_sig": false, "md5_digest": "bd180ea435e01d76aa81547a2be42560", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 69034, "upload_time": "2018-06-29T17:29:01", "url": "https://files.pythonhosted.org/packages/f5/45/4bba000f6e6ba7a81acc9f2d089dbf30c208044de4857aee928a4d7e40d8/pystackreg-0.1.0-cp27-cp27m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "5ebb1cb19c50dc9ed5d3c3a885605e7f", "sha256": "85bfaee18852d14498005e7840caaaa3da4f099ef0b94803eb1e37c3e0f2bbf4" }, "downloads": -1, "filename": "pystackreg-0.1.0-cp36-cp36m-win32.whl", "has_sig": false, "md5_digest": "5ebb1cb19c50dc9ed5d3c3a885605e7f", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 50359, "upload_time": "2018-06-29T17:29:02", "url": "https://files.pythonhosted.org/packages/ee/1f/b58195c9b53d230fe8637c8aa2d7ae9d3a52879f727396f897d7794021ba/pystackreg-0.1.0-cp36-cp36m-win32.whl" }, { "comment_text": "", "digests": { "md5": "7371408aebe80485bb25f262268d2765", "sha256": "09a170dc35d9c78c1587887d5758b1d52b7e042468efa3e71bfd04b13b0e206c" }, "downloads": -1, "filename": "pystackreg-0.1.0-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "7371408aebe80485bb25f262268d2765", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 57039, "upload_time": "2018-06-29T17:29:03", "url": "https://files.pythonhosted.org/packages/c6/ac/cc78b761958ec0987d6f0bacd71ce784c470edafdce2f6308fd781d2a6ff/pystackreg-0.1.0-cp36-cp36m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "8835f4118c4ba79408af38c75b858ef6", "sha256": "69746e89f62290a7964d1ab4f37c8d7510ca76f9c76fba07795f3b20fd98f6b1" }, "downloads": -1, "filename": "pystackreg-0.1.0.tar.gz", "has_sig": false, "md5_digest": "8835f4118c4ba79408af38c75b858ef6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29467, "upload_time": "2018-06-29T17:29:04", "url": "https://files.pythonhosted.org/packages/92/c0/b9523566730db0be9bde54159bc1654ea2c6c3c0814e475cad504e6ed870/pystackreg-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "118ae41c722804e97954ce212e17fb3d", "sha256": "0e497a4a0a8b98ebd2437c51b5f0ff086e46347394645e87d46cf2c7f87730eb" }, "downloads": -1, "filename": "pystackreg-0.1.1-cp27-cp27m-win32.whl", "has_sig": false, "md5_digest": "118ae41c722804e97954ce212e17fb3d", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 60295, "upload_time": "2018-07-10T14:12:30", "url": "https://files.pythonhosted.org/packages/57/a2/2b2ad84c880b3d1b386662b8fc974fe0158ffe169dbfba2ab5803bcbe601/pystackreg-0.1.1-cp27-cp27m-win32.whl" }, { "comment_text": "", "digests": { "md5": "e7a591f7839f2f2f028ca26f9e4e492f", "sha256": "f325232ed131713f64b50f84c11aa893eb0acf9c765e01699556991776f13813" }, "downloads": -1, "filename": "pystackreg-0.1.1-cp27-cp27m-win_amd64.whl", "has_sig": false, "md5_digest": "e7a591f7839f2f2f028ca26f9e4e492f", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 71478, "upload_time": "2018-07-10T14:12:31", "url": "https://files.pythonhosted.org/packages/e6/d4/dbd35d7fb030ade00d8ad8b9b1c97739d601c72ba3f5563db4072c0a63d6/pystackreg-0.1.1-cp27-cp27m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "8379a0a6bdf55ea01f10c55dcaabf3d2", "sha256": "297db135ce5df44bae918eb6dd149db3ef598dd784e1e34534a88e6134d990ed" }, "downloads": -1, "filename": "pystackreg-0.1.1-cp36-cp36m-win32.whl", "has_sig": false, "md5_digest": "8379a0a6bdf55ea01f10c55dcaabf3d2", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 52718, "upload_time": "2018-07-10T14:12:33", "url": "https://files.pythonhosted.org/packages/88/4a/ca8d36523f6309a64665c74223fe1e75c082f9ab9bd807390bf51f23128f/pystackreg-0.1.1-cp36-cp36m-win32.whl" }, { "comment_text": "", "digests": { "md5": "011f315384f87aee355b392d1b4aa665", "sha256": "ab452b8ef7b371f8ec1bd0a2fa7802b978a4b8c827b1c9f36184c10333299adb" }, "downloads": -1, "filename": "pystackreg-0.1.1-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "011f315384f87aee355b392d1b4aa665", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 59376, "upload_time": "2018-07-10T14:12:35", "url": "https://files.pythonhosted.org/packages/71/7b/5c68a5b02f6bb25d83f162707ac9d8f876f82e4368625d772232366a375f/pystackreg-0.1.1-cp36-cp36m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "fc72ac9971e53bdd07a04c8e96a8f527", "sha256": "ba49370090ab00bd741fcad7fba0826043b452e09bc01af3ec26cbe2b9a06218" }, "downloads": -1, "filename": "pystackreg-0.1.1.tar.gz", "has_sig": false, "md5_digest": "fc72ac9971e53bdd07a04c8e96a8f527", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32872, "upload_time": "2018-07-10T14:12:36", "url": "https://files.pythonhosted.org/packages/fd/90/d7512ed9d2e82b86d8dafa4b252c288cfa3504622fe933f7e4fb3c4034ce/pystackreg-0.1.1.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "3834b7a075f7d69a91152b8b58c1fefe", "sha256": "b911874df1aff1679833d40916067ac621877bf325628a3c01cdfa60c2fd0870" }, "downloads": -1, "filename": "pystackreg-0.2.0-cp27-cp27m-win32.whl", "has_sig": false, "md5_digest": "3834b7a075f7d69a91152b8b58c1fefe", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 60979, "upload_time": "2018-09-27T09:26:06", "url": "https://files.pythonhosted.org/packages/f3/88/6535e963a44b5f42aac6229559507e61d65b1ab3e93f6b2189f4f973dae1/pystackreg-0.2.0-cp27-cp27m-win32.whl" }, { "comment_text": "", "digests": { "md5": "07bf1de4380b63602c41ed838c5ad0e0", "sha256": "4e7c54b270b5d1673ca3894e54529952db7500d1f9ac0e6257cca058af7ecd9c" }, "downloads": -1, "filename": "pystackreg-0.2.0-cp27-cp27m-win_amd64.whl", "has_sig": false, "md5_digest": "07bf1de4380b63602c41ed838c5ad0e0", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 72130, "upload_time": "2018-09-27T09:26:08", "url": "https://files.pythonhosted.org/packages/9a/2d/f3dc4eef1c11032c8fd20ff8af70827b299fdafd6a27348ccd39bb83686e/pystackreg-0.2.0-cp27-cp27m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "8c89f5cc54758819864ee0f767e57e67", "sha256": "a57fee1ab596cd8ee695562e75a12e77e72df0be9363c8f94ef346104950c283" }, "downloads": -1, "filename": "pystackreg-0.2.0-cp36-cp36m-win32.whl", "has_sig": false, "md5_digest": "8c89f5cc54758819864ee0f767e57e67", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 53391, "upload_time": "2018-09-27T09:26:10", "url": "https://files.pythonhosted.org/packages/7e/be/b69b032a933ed004afb54dc13b4f43ef87c1aa7602e1819ace7b3051f817/pystackreg-0.2.0-cp36-cp36m-win32.whl" }, { "comment_text": "", "digests": { "md5": "d6a8026fcbd7ff5675a88a5281ef638a", "sha256": "b158d75989d719f19c4c51b640d8ac3ec08a111d25c265679372c8fa4dca60ec" }, "downloads": -1, "filename": "pystackreg-0.2.0-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "d6a8026fcbd7ff5675a88a5281ef638a", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 60125, "upload_time": "2018-09-27T09:26:11", "url": "https://files.pythonhosted.org/packages/7a/a8/fcb6aa02f483c04cb8b5fa1ec290a965a1f74b31bd4081d2320f526c3adf/pystackreg-0.2.0-cp36-cp36m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "231ef85f998edafc195e1902aa2bf9d5", "sha256": "31324f77136d9666a0c25922edfd38af50d174386cf6661dc2dbcf2e95af67d8" }, "downloads": -1, "filename": "pystackreg-0.2.0.tar.gz", "has_sig": false, "md5_digest": "231ef85f998edafc195e1902aa2bf9d5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33630, "upload_time": "2018-09-27T09:26:13", "url": "https://files.pythonhosted.org/packages/08/f4/70e3c997f412b9d9e1476f041636b20da8dd1541ff4556199be01178d53d/pystackreg-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "4f2f24f40909498f8961a5bfdb154cec", "sha256": "b12f3eeddc8da39a09253e9017e6b17e6bdda3dfb3c09728d9d06c03b7587294" }, "downloads": -1, "filename": "pystackreg-0.2.1-cp27-cp27m-win32.whl", "has_sig": false, "md5_digest": "4f2f24f40909498f8961a5bfdb154cec", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 61690, "upload_time": "2019-04-01T12:17:02", "url": "https://files.pythonhosted.org/packages/7e/49/b1be3daf3968d71e205d5441484e45a20c98c6ef34907f19d5d5c3d44c61/pystackreg-0.2.1-cp27-cp27m-win32.whl" }, { "comment_text": "", "digests": { "md5": "83b6d3d29da3e7ec3372c34204e6e1df", "sha256": "96eb69736882e6d87d6be36a2b603ae5b8e36b09e18e568a429930191580d532" }, "downloads": -1, "filename": "pystackreg-0.2.1-cp27-cp27m-win_amd64.whl", "has_sig": false, "md5_digest": "83b6d3d29da3e7ec3372c34204e6e1df", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 73232, "upload_time": "2019-04-01T12:17:04", "url": "https://files.pythonhosted.org/packages/14/1f/c5fcb249adf82cfce13ea74862637f97c67a7502f31daa01b014c39b630b/pystackreg-0.2.1-cp27-cp27m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "511162fa859b757bf5a05ca166a5882c", "sha256": "0509f7e0c38efedb9afe75d9d8decd9c7d56f3e1c4b316aea6b7ac93fe485d9e" }, "downloads": -1, "filename": "pystackreg-0.2.1-cp36-cp36m-win32.whl", "has_sig": false, "md5_digest": "511162fa859b757bf5a05ca166a5882c", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 54461, "upload_time": "2019-04-01T12:17:06", "url": "https://files.pythonhosted.org/packages/1c/89/4146fc2bf7fb77b78b5c8bb07bafafea2f3d6a86df93f52b434dd4183407/pystackreg-0.2.1-cp36-cp36m-win32.whl" }, { "comment_text": "", "digests": { "md5": "e9ebdcad0cc4e4636f3018ca57f6e9f5", "sha256": "ab59923b40be58d3e53e81a507d8d059e85f129c34c78c542483945f994558ba" }, "downloads": -1, "filename": "pystackreg-0.2.1-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "e9ebdcad0cc4e4636f3018ca57f6e9f5", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 61126, "upload_time": "2019-04-01T12:17:07", "url": "https://files.pythonhosted.org/packages/74/1b/9e9ff1e8aece8d13f29af84cfda6d4bba02f60fcc1baf12118a7f3048ff7/pystackreg-0.2.1-cp36-cp36m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "fedb89f005a015326939a4dfa0d4485d", "sha256": "3c6d046f18c3cacc6163a54b6ad74f1124822fa0eb27f198354c4eece767ce9c" }, "downloads": -1, "filename": "pystackreg-0.2.1-cp37-cp37m-win32.whl", "has_sig": false, "md5_digest": "fedb89f005a015326939a4dfa0d4485d", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 54464, "upload_time": "2019-04-01T12:17:09", "url": "https://files.pythonhosted.org/packages/da/b3/bb71bf605394f3653dea4ce893fcb4e538e86abe656b0cd5225389a9fb11/pystackreg-0.2.1-cp37-cp37m-win32.whl" }, { "comment_text": "", "digests": { "md5": "06ff0e953a45d999994dc30957d9ec08", "sha256": "c961c5c63d188c9d4a45f56d2a9fe8a22cb90906c39259855d749117ee8fdd1c" }, "downloads": -1, "filename": "pystackreg-0.2.1-cp37-cp37m-win_amd64.whl", "has_sig": false, "md5_digest": "06ff0e953a45d999994dc30957d9ec08", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 61130, "upload_time": "2019-04-01T12:17:11", "url": "https://files.pythonhosted.org/packages/80/83/8f6dbdfb30599afe97e909f717b947c70393980521310f7dbe8dbae1902d/pystackreg-0.2.1-cp37-cp37m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "99e2108ce420e3c917c8ad9ffae72196", "sha256": "4ab1c2cee5233a96faf29de47b8ace3892270f2334a7a3cb49e3369fb2db8fec" }, "downloads": -1, "filename": "pystackreg-0.2.1.tar.gz", "has_sig": false, "md5_digest": "99e2108ce420e3c917c8ad9ffae72196", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30290, "upload_time": "2019-04-01T12:17:13", "url": "https://files.pythonhosted.org/packages/24/60/d845d03364bcb77c4d468c705622061fb4409b773830e01845793ce40d7d/pystackreg-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "49972ead92a6af0b01ff4b17cb3059c1", "sha256": "7cadb9712e2632486f58e293ca754561837654a8fb317fa55d85e1385bcd5dc6" }, "downloads": -1, "filename": "pystackreg-0.2.2-cp27-cp27m-win32.whl", "has_sig": false, "md5_digest": "49972ead92a6af0b01ff4b17cb3059c1", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 61847, "upload_time": "2019-10-19T12:28:28", "url": "https://files.pythonhosted.org/packages/9e/30/b6048773f2e4108e7c5cd90fedebbca0e1ebbbbd502441b03bd9ea2789ce/pystackreg-0.2.2-cp27-cp27m-win32.whl" }, { "comment_text": "", "digests": { "md5": "35b08a1627b59207200121ba6b3710cf", "sha256": "672523a7dde3f61ae8cd671f0c4c2c278375788312eb7c53fbb2d4407b181200" }, "downloads": -1, "filename": "pystackreg-0.2.2-cp27-cp27m-win_amd64.whl", "has_sig": false, "md5_digest": "35b08a1627b59207200121ba6b3710cf", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 73382, "upload_time": "2019-10-19T12:28:31", "url": "https://files.pythonhosted.org/packages/3d/7d/907ec5422a51d8ac8ddc9dbefdb49ac225c01fd8c879f37fdd12653f9645/pystackreg-0.2.2-cp27-cp27m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "cd4aca37a977ffe46a172df23210a871", "sha256": "d2a46e4e076c03680bf44276f6cd7e61cfa3586debb7e4f19da50490156548db" }, "downloads": -1, "filename": "pystackreg-0.2.2-cp36-cp36m-win32.whl", "has_sig": false, "md5_digest": "cd4aca37a977ffe46a172df23210a871", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 61133, "upload_time": "2019-10-19T12:28:33", "url": "https://files.pythonhosted.org/packages/ff/59/e4a3fe84a8221b83fb35f4ba30387996389584b61f66d7f4fbc2e77126a4/pystackreg-0.2.2-cp36-cp36m-win32.whl" }, { "comment_text": "", "digests": { "md5": "4677bb9b47980c234be4e1197b1711f5", "sha256": "611795a842f96bb3f94cc1dbadefe2aa23d61d5bc9fb18efa7a80afe47af4ffd" }, "downloads": -1, "filename": "pystackreg-0.2.2-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "4677bb9b47980c234be4e1197b1711f5", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 72148, "upload_time": "2019-10-19T12:28:35", "url": "https://files.pythonhosted.org/packages/f2/df/ec6a9a91e9c64932cdd3a8ed52d6907aa736dab86ec5eed834687ca9d7f0/pystackreg-0.2.2-cp36-cp36m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "f71c38b52b3d529610f0c087f5593eeb", "sha256": "717dc5d905623fb765783af3c403fede119b09c8568219c2052afacf3aaaedb2" }, "downloads": -1, "filename": "pystackreg-0.2.2-cp37-cp37m-win32.whl", "has_sig": false, "md5_digest": "f71c38b52b3d529610f0c087f5593eeb", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 61135, "upload_time": "2019-10-19T12:28:37", "url": "https://files.pythonhosted.org/packages/35/63/49cc32731b5ed1e78fd008c44b919be3c7ed9b039fa26ec58c3d3208bd40/pystackreg-0.2.2-cp37-cp37m-win32.whl" }, { "comment_text": "", "digests": { "md5": "2c561ccf66922ca9e4cf629a091e280a", "sha256": "5ab2b29543b20ef095c5ec5d4d33f7f7593f1bee95fd29cf652543d08accd391" }, "downloads": -1, "filename": "pystackreg-0.2.2-cp37-cp37m-win_amd64.whl", "has_sig": false, "md5_digest": "2c561ccf66922ca9e4cf629a091e280a", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 72148, "upload_time": "2019-10-19T12:28:39", "url": "https://files.pythonhosted.org/packages/9e/27/58f0cfedcbb7bb78100bfbf1d3c035373bfeab6c29063d7ea8fd71a498bc/pystackreg-0.2.2-cp37-cp37m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "5e8890fcd6170399993852f40ceaed8f", "sha256": "2bc8bdac892bb827cd2725b8ee45bbcdb8835f2fb1d41863f6d50c77f7e36ccc" }, "downloads": -1, "filename": "pystackreg-0.2.2.tar.gz", "has_sig": false, "md5_digest": "5e8890fcd6170399993852f40ceaed8f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33544, "upload_time": "2019-10-19T12:28:41", "url": "https://files.pythonhosted.org/packages/9a/c3/d2a84134739dbff00aab3079d6d1371a76713d9f9f29a4315a29b45364d4/pystackreg-0.2.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "49972ead92a6af0b01ff4b17cb3059c1", "sha256": "7cadb9712e2632486f58e293ca754561837654a8fb317fa55d85e1385bcd5dc6" }, "downloads": -1, "filename": "pystackreg-0.2.2-cp27-cp27m-win32.whl", "has_sig": false, "md5_digest": "49972ead92a6af0b01ff4b17cb3059c1", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 61847, "upload_time": "2019-10-19T12:28:28", "url": "https://files.pythonhosted.org/packages/9e/30/b6048773f2e4108e7c5cd90fedebbca0e1ebbbbd502441b03bd9ea2789ce/pystackreg-0.2.2-cp27-cp27m-win32.whl" }, { "comment_text": "", "digests": { "md5": "35b08a1627b59207200121ba6b3710cf", "sha256": "672523a7dde3f61ae8cd671f0c4c2c278375788312eb7c53fbb2d4407b181200" }, "downloads": -1, "filename": "pystackreg-0.2.2-cp27-cp27m-win_amd64.whl", "has_sig": false, "md5_digest": "35b08a1627b59207200121ba6b3710cf", "packagetype": "bdist_wheel", "python_version": "cp27", "requires_python": null, "size": 73382, "upload_time": "2019-10-19T12:28:31", "url": "https://files.pythonhosted.org/packages/3d/7d/907ec5422a51d8ac8ddc9dbefdb49ac225c01fd8c879f37fdd12653f9645/pystackreg-0.2.2-cp27-cp27m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "cd4aca37a977ffe46a172df23210a871", "sha256": "d2a46e4e076c03680bf44276f6cd7e61cfa3586debb7e4f19da50490156548db" }, "downloads": -1, "filename": "pystackreg-0.2.2-cp36-cp36m-win32.whl", "has_sig": false, "md5_digest": "cd4aca37a977ffe46a172df23210a871", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 61133, "upload_time": "2019-10-19T12:28:33", "url": "https://files.pythonhosted.org/packages/ff/59/e4a3fe84a8221b83fb35f4ba30387996389584b61f66d7f4fbc2e77126a4/pystackreg-0.2.2-cp36-cp36m-win32.whl" }, { "comment_text": "", "digests": { "md5": "4677bb9b47980c234be4e1197b1711f5", "sha256": "611795a842f96bb3f94cc1dbadefe2aa23d61d5bc9fb18efa7a80afe47af4ffd" }, "downloads": -1, "filename": "pystackreg-0.2.2-cp36-cp36m-win_amd64.whl", "has_sig": false, "md5_digest": "4677bb9b47980c234be4e1197b1711f5", "packagetype": "bdist_wheel", "python_version": "cp36", "requires_python": null, "size": 72148, "upload_time": "2019-10-19T12:28:35", "url": "https://files.pythonhosted.org/packages/f2/df/ec6a9a91e9c64932cdd3a8ed52d6907aa736dab86ec5eed834687ca9d7f0/pystackreg-0.2.2-cp36-cp36m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "f71c38b52b3d529610f0c087f5593eeb", "sha256": "717dc5d905623fb765783af3c403fede119b09c8568219c2052afacf3aaaedb2" }, "downloads": -1, "filename": "pystackreg-0.2.2-cp37-cp37m-win32.whl", "has_sig": false, "md5_digest": "f71c38b52b3d529610f0c087f5593eeb", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 61135, "upload_time": "2019-10-19T12:28:37", "url": "https://files.pythonhosted.org/packages/35/63/49cc32731b5ed1e78fd008c44b919be3c7ed9b039fa26ec58c3d3208bd40/pystackreg-0.2.2-cp37-cp37m-win32.whl" }, { "comment_text": "", "digests": { "md5": "2c561ccf66922ca9e4cf629a091e280a", "sha256": "5ab2b29543b20ef095c5ec5d4d33f7f7593f1bee95fd29cf652543d08accd391" }, "downloads": -1, "filename": "pystackreg-0.2.2-cp37-cp37m-win_amd64.whl", "has_sig": false, "md5_digest": "2c561ccf66922ca9e4cf629a091e280a", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 72148, "upload_time": "2019-10-19T12:28:39", "url": "https://files.pythonhosted.org/packages/9e/27/58f0cfedcbb7bb78100bfbf1d3c035373bfeab6c29063d7ea8fd71a498bc/pystackreg-0.2.2-cp37-cp37m-win_amd64.whl" }, { "comment_text": "", "digests": { "md5": "5e8890fcd6170399993852f40ceaed8f", "sha256": "2bc8bdac892bb827cd2725b8ee45bbcdb8835f2fb1d41863f6d50c77f7e36ccc" }, "downloads": -1, "filename": "pystackreg-0.2.2.tar.gz", "has_sig": false, "md5_digest": "5e8890fcd6170399993852f40ceaed8f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33544, "upload_time": "2019-10-19T12:28:41", "url": "https://files.pythonhosted.org/packages/9a/c3/d2a84134739dbff00aab3079d6d1371a76713d9f9f29a4315a29b45364d4/pystackreg-0.2.2.tar.gz" } ] }