{
"info": {
"author": "Simon Ekstr\u00f6m",
"author_email": "",
"bugtrack_url": null,
"classifiers": [],
"description": "# deform\n\ndeform is an implementation of an efficient graph-cut based method for dense deformable image registration. If you find this useful, please cite https://arxiv.org/abs/1810.08427.\n\nThe method can be used either as a module through Python (recommended) or a standalone executable. Currently no pre-built binaries for the standalone executable are provided, but the Python module (excluding GPU support) can be installed through pip.\n\n## Install\n\nTo download and install the pre-compiled Python module from pip:\n\n```\npip install pydeform\n```\n\nNote: to enable GPU-supported registration you're currently required to compile the software yourself. See the section below. \n\n## Building\n\n### Prerequisites\n* CMake : https://cmake.org/\n\nOptional\n* ISPC : https://ispc.github.io/\n\n### Download\n\nRetrieve the repository and associated dependencies by running\n\n```\n$ git clone https://github.com/simeks/deform.git\n$ cd deform\n$ git submodule update --init --recursive\n```\n\n### Build\n\nUse CMake (>=3.8) to generate build options of your own choosing.\n\nIf CMake cannot find the ISPC executable on your installation, it is possible\nto hint the installation directory with `-DISPC_DIR_HINTS`, or to specify the\nfull path to the executable with `-DISPC_EXECUTABLE`.\n\n#### Build options\n\nThe build can be configured with the following CMake boolean options:\n\n+ `DF_BUILD_TESTS`: Build unit tests (default: `OFF`)\n+ `DF_BUILD_DOCS`: Build Sphinx docs (default: `OFF`)\n+ `DF_BUILD_EXECUTABLE`: Build registration executable (default: `ON`)\n+ `DF_BUILD_UTILS`: Build utils executable (default: `ON`)\n+ `DF_BUILD_PYTHON_WRAPPER`: Build Python wrapper (default: `OFF`)\n+ `DF_USE_CUDA`: Enable CUDA support (default: `OFF`)\n+ `DF_USE_ISPC`: Enable ISPC support (default: `OFF`)\n+ `DF_WARNINGS_ARE_ERRORS`: Warnings are treated as errors (default: `OFF`)\n+ `DF_BUILD_WITH_DEBUG_INFO`: Include debug info in release builds (default: `OFF`)\n+ `DF_ENABLE_FAST_MATH`: Enable fast math (default: `OFF`)\n+ `DF_ITK_BRIDGE`: Add support to interoperate with ITK (default: `OFF`)\n+ `DF_STACK_TRACE`: Print a stack trace on errors (default: `OFF`)\n+ `DF_ENABLE_MICROPROFILE`: Enable `microprofile` profiler (default: `OFF`)\n+ `DF_ENABLE_NVTOOLSEXT`: Enable `nvtoolsext` profiler (default: `OFF`)\n\n### Build and install Python wrapper\n```\n# python setup.py install\n```\n\nFlags accepted by `setup.py`:\n* `--use-cuda`: build with CUDA support\n* `--use-ispc`: build with ISPC support\n* `--use-itk`: build with ITK support\n* `--debug`: build with debug symbols\n\nAdditional flags starting with `-D` are also recognised and forwarded to CMake.\n\n# Run\nTo perform a registration using the standalone executable\n\n`deform registration -p -f0 ... -f -m0 ... -m `\n\n| Argument | |\n| --------------------------- | ------------------------------------------- |\n| `-f ` | Filename of the i:th fixed image.\u2020 |\n| `-m ` | Filename of the i:th moving image.\u2020 |\n| `-fm ` | Filename of the fixed mask.\u2021 |\n| `-mm ` | Filename of the moving mask.\u2021 |\n| `-fp ` | Filename for the fixed landmarks. |\n| `-mp ` | Filename for the moving landmarks. |\n| `-d0 ` | Filename for initial deformation field. |\n| `-constraint_mask ` | Filename for constraint mask. |\n| `-constraint_values ` | Filename for constraint values. |\n| `-p ` | Filename of the parameter file. |\n| `-o ` | Filename of the resulting deformation field |\n| `-j ` | Filename of the resulting jacobian map |\n| `-t ` | Filename of the transformed moving volume |\n| `--gpu` | Enables GPU assisted registration. |\n\n\n\u2020 Requires a matching number of fixed and moving images.\n\n\u2021 Fuzzy masks in floating point format, whose values denote the confidence on\n the image intensity at each point.\n\n### Parameter file example\n\n```yaml\npyramid_levels: 6\npyramid_stop_level: 0\nregularize_initial_displacement: false\nconstraints_weight: 1000.0\nlandmarks_weight: 1.0\nlandmarks_decay: 2.0\nlandmarks_stop_level: 0\nblock_size: [16, 16, 16]\nblock_energy_epsilon: 1e-7\nmax_iteration_count: -1\nstep_size: 0.5\nregularization_weight: 0.1\nregularization_scale: 1.0\nregularization_exponent: 2.0\n\nlevels:\n 0:\n regularization_weight: 0.1\n 1:\n regularization_weight: 0.2\n step_size: 0.01\n\nimage_slots:\n\n # water\n - resampler: gaussian\n normalize: true\n cost_function:\n - function: ssd\n weight: 0.3\n - function: ncc\n weight: 0.4\n radius: 2\n window: cube\n - function: mi\n weight: 0.6\n sigma: 4.5\n bins: 256\n update_interval: 1\n interpolator: nearest\n - function: gradient_ssd\n weight: 0.7\n sigma: 1.0\n\n # sfcm\n - resampler: gaussian\n normalize: true\n cost_function: ssd\n```\n\nFirst two parameters, `pyramid_levels` and `pyramid_stop_level`, defines the\nsize of the pyramid and at which level to stop the registration. Each level\nhalves the resolution of the input volumes. Setting `pyramid_stop_level` to > 0\nspecifies that the registration should not be run on the original resolution\n(level 0).\n\n`regularize_initial_displacement` controls whether to include the initial\ndisplacement in the regularization. This is disabled by default, meaning the\ninitial displacement have no effect on the regularization.\n\n`constraints_weight` sets the weight that is applied for constrained voxels. A\nreally high value means hard constraints while a lower value may allow\nconstraints to move a certain amount. Cost for constrained voxels are applied\nas constraint_weight * squared_distance, where squared_distance is the distance\nfrom the constraint target. See cost function for more info.\n\n`landmarks_weight` sets the weight for the landmark cost term when performing\nlandmark-based registration. In order to perform landmark-based registration,\na set of fixed and moving landmarks must be supplied. The implementation of\nthe landmark-based unary energy term is inspired to [[2]](#2), but the cost in\neach term of the sum is also proportional to the distance between the current\ndisplacement and the landmark displacement. It is possible to limit the usage\nof the landmarks up to a certain height of the resolution pyramid by assigning\nto `landmarks_stop_level` a value greater than zero. `landmarks_decay` controls\nthe exponential decay of the landmarks effect with respect to distance in image\nspace: higher values correspond to faster decay.\n\n`block_size` size of the block (in voxels) for the block-wise solver. A block\nsize of (0,0,0) will result in a single block for the whole volume.\n\n`block_energy_epsilon`, minimum percentage decrease of the block energy\nrequired to accept a solution. Higher epsilon will result in lower run time but\nalso lower quality.\n\n`max_iteration_count`, maximum number of iterations run on each registration\nlevel. Setting this to -1 (default) allows an unlimited number of iterations.\n\n`step_size`, this is the step size in `mm` that the solver will use. Can be a\nsingle `float` value, in that case the same step size will be used in all\ndirections, or a sequence `[sx, sy, sz]` of three `float` specifying the size\nfor each direction.\n\n`regularization_weight`, `regularization_scale`, and `regularization_exponent`\ncontrol the importance of the regularization term. The cost function is\nspecified as `cost = D + a*((b*R)^c)`, where `D = \u03a3w_i*C_i` is the data term\ngiven by the cost functions `C_i` with weights `w_i`, `R` is the regularization\nterm, `a` is the regularization weight, `b` the regularization scale, and `c`\nthe regularization exponent.\n\n`levels`, specifies parameters on a per-level basis. The key indicates which\nlevel the parameters apply to, where 0 is the bottom of the resolution pyramid\n(last level). The level identifier can not exceed `pyramid_levels`. Parameters\navailable on a per-level basis are: `constraints_weight`, `landmarks_weight`,\n`block_size`, `block_energy_epsilon`, `max_iteration_count`, `step_size`, and\n`regularization_weight`.\n\n`image_slots`, specifies how to use the input images. `resampler` only supports\n`gaussian` for now, `normalize` specifies whether the volumes should be\nnormalized before the registration, and `cost_function` allows to provide one\nor more cost functions to use. Its value can be the name of a single function\n(`ssd` for squared distance, `ncc` for normalized cross correlation, `mi` for\nmutual information, `gradient_ssd` for squared distance of the gradients), in\nwhich case its weight is assumed to be `1.0`, otherwise one or multiple\nweighted components can be specified by listing each function and its weight.\nEach function can accept a set of parameters.\n\nThe parameters available for each function are:\n+ `ssd`: no parameters available\n+ `ncc`:\n + `window` (`string`): shape of the correlation window, either `sphere` or\n `cube` (default: `spere`). Note that `cube` is available only if the\n program is built with ISPC support. For a given number of samples, the\n sphere has a better spatial distribution of the samples, yielding a\n slightly superior quality. When running on the CPU, for the same number\n of samples (e.g., roughly, a sphere of radius `2` and a cube of radius\n `1`) the cube can be significantly faster to compute.\n + `radius` (`int`): radius of the cross-correlation kernel (default: `2`).\n For `window=sphere`, given a point where NCC is evaluated, samples are\n taken in all the voxels such that the Euclidean distance of each sample\n from the point is lesser or equal to `radius`. For `window=cube`,\n samples are taken on all voxels within a cube centred on the point and\n with side `2\u00d7radius + 1`.\n+ `mi`:\n + `bins` (`int`): number of histogram bins used in the approximation of\n probability densities (default: `255`)\n + `sigma` (`float`): standard deviation of the Gaussian kernel used to\n approximate probability densities (default: `4.5`)\n + `update_interval` (`int`): interval (in iterations) between updates of the\n entropy estimates (default: `1`). If `0`, updates are disabled.\n + `interpolator` (`'linear'` or `'nearest'`): interpolator used in the update\n the entropy estimates (default: `'nearest'`)\n+ `gradient_ssd`:\n + `sigma` (`float`): Gaussian smoothing applied to the images before\n computing the Sobel operator (default: `0.0`)\n\n### GPU\n\nGPU assisted registration is supported on newer CUDA supported hardware. First\nstep to enable GPU registration is to compile with the `DF_USE_CUDA=1` flag,\nthis is set when generating the project with CMake. When both these\nprerequisites are met, you simply add the `--gpu` flag to the command-line.\n\nAs for now the GPU implementation is considered a pre-release and not all cost\nfunctions and features from the original registration implementation are\nsupported. Currently the only two supported cost functions are `ssd` and `ncc`.\n\n### Logging\n\nThe file name for the log file can be specified through the environment\nvariable `DF_LOG_FILE`. The minimum level for log messages to be reported can\nbe set through the environment variable `DF_LOG_LEVEL`, and the possible values\nare `Verbose`, `Info`, `Warning`, `Error`, and `Fatal`.\n\n### Masks\n\nIt is possible to optionally specify fuzzy masks for the fixed and moving image\nspace. The two masks can be set independently, and it is possible to use no\nmask, only one of the two (either fixed or moving) or both. The masks should be\ngiven in floating point format, and they denote the level of confidence on\nimage intensity at each voxel. If the mask value `m(x, y, z)` at a certain\nlocation `(x, y, z)` is lesser than or equal to zero, then samples taken at\nthat location will not contribute to the matching cost. If `m(x, y, z)` is\ngreater than zero, then the sample will contribute and its cost given at that\nlocation by the image metric will by multiplied by `m(x, y, z)`.\n\nThe fixed mask allows to denote a ROI in reference space, formed by all voxels\nwith strictly positive mask values; for all samples outside such ROI the cost\nfunction will not be computed at all, having the side effect of making the\nregistration process faster. If a sample belongs to a valid region, then its\nmapping through the displacement will be computed and, if a mask for the moving\nimage is specified, the sample will contribute only if it falls within a valid\nROI in the moving image space, otherwise it will be discarded. The\nregularisation term is not weighted by the masks, and it will be always\ncomputed over all the volume, regardless of the mask values.\n\nThe moving mask should be used carefully because it can affect the quality of\nthe result, since there is no penalty for mapping from valid samples in\nreference space to regions outside of the moving image mask.\n\n## References\n\n+ [1] Junhwan Kim, Vladimir Kolmogorov, Ramin Zabih:\n *Visual correspondence using energy minimization and mutual information.*\n Proceedings of the Ninth IEEE International Conference on Computer Vision,\n 1033-1040, 2003.\n\n+ [2] Herve Lombaert, Yiyong Sun, Farida Cheriet:\n *Landmark-based non-rigid registration via graph cuts*,\n International Conference Image Analysis and Recognition, 166\u2013175, 2007\n\n\n",
"description_content_type": "text/markdown",
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "",
"keywords": "",
"license": "",
"maintainer": "",
"maintainer_email": "",
"name": "pydeform",
"package_url": "https://pypi.org/project/pydeform/",
"platform": "",
"project_url": "https://pypi.org/project/pydeform/",
"project_urls": null,
"release_url": "https://pypi.org/project/pydeform/0.4.1/",
"requires_dist": [
"numpy",
"PyYAML"
],
"requires_python": "",
"summary": "",
"version": "0.4.1"
},
"last_serial": 5743014,
"releases": {
"0.0.1": [
{
"comment_text": "",
"digests": {
"md5": "9d16201fbb437d9997460ec85fa30432",
"sha256": "0759fe55bf6ab6b4d869a7d8e731136315e9701f9ba5062574a03bc6ae871763"
},
"downloads": -1,
"filename": "pydeform-0.0.1.tar.gz",
"has_sig": false,
"md5_digest": "9d16201fbb437d9997460ec85fa30432",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 3426292,
"upload_time": "2019-08-09T14:19:43",
"url": "https://files.pythonhosted.org/packages/30/3b/b3d95cec0bf30c72858e73a49f6a2f8c0a307c420650adc59c96d2a378ec/pydeform-0.0.1.tar.gz"
}
],
"0.3": [
{
"comment_text": "",
"digests": {
"md5": "86f92f4b4a0820132707d2d62f074468",
"sha256": "8a3a35ed4d90f13af5d1869f9c1a1682aeb3ccda082aa6c8913f2f45d6727dc5"
},
"downloads": -1,
"filename": "pydeform-0.3-cp36-cp36m-manylinux2010_x86_64.whl",
"has_sig": false,
"md5_digest": "86f92f4b4a0820132707d2d62f074468",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": null,
"size": 773762,
"upload_time": "2019-08-12T15:19:35",
"url": "https://files.pythonhosted.org/packages/08/e8/19efe7bc4d9ef647be47cd106b0e30a9ff4175c450733da0919b009814b6/pydeform-0.3-cp36-cp36m-manylinux2010_x86_64.whl"
},
{
"comment_text": "",
"digests": {
"md5": "883d4a9949fe697c7a0be815feabbbf1",
"sha256": "237d49a30e9b1def56c1c9f46dc02ac3efeb0d5cff59f1b2c6cd8411d6f0685d"
},
"downloads": -1,
"filename": "pydeform-0.3-cp36-cp36m-win_amd64.whl",
"has_sig": false,
"md5_digest": "883d4a9949fe697c7a0be815feabbbf1",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": null,
"size": 308916,
"upload_time": "2019-06-15T23:36:48",
"url": "https://files.pythonhosted.org/packages/60/51/16f3b9e96b83d5ade03560beb197c61ddd27e33c13a39aab2b62aa94bba0/pydeform-0.3-cp36-cp36m-win_amd64.whl"
},
{
"comment_text": "",
"digests": {
"md5": "f567449cc25bd140756b0f093209ede8",
"sha256": "090c1ef543932c7dc7fe11dc34ecd2e635fc2cde37ad4afff7691ad5ff134b51"
},
"downloads": -1,
"filename": "pydeform-0.3.tar.gz",
"has_sig": false,
"md5_digest": "f567449cc25bd140756b0f093209ede8",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 3459206,
"upload_time": "2019-06-15T23:36:53",
"url": "https://files.pythonhosted.org/packages/3d/f2/d180ede15cdce561d5418e59dc7b24b31a9b34bd0c5133b8771ff57915f6/pydeform-0.3.tar.gz"
}
],
"0.4": [
{
"comment_text": "",
"digests": {
"md5": "4652bd68e4412735a746a649d9eb3fcf",
"sha256": "fd7bc424439d87f8cdce278256f46e23605f6e9af823f40e361628f9087d9d38"
},
"downloads": -1,
"filename": "pydeform-0.4-cp34-cp34m-manylinux1_x86_64.whl",
"has_sig": false,
"md5_digest": "4652bd68e4412735a746a649d9eb3fcf",
"packagetype": "bdist_wheel",
"python_version": "cp34",
"requires_python": null,
"size": 668448,
"upload_time": "2019-08-20T16:10:13",
"url": "https://files.pythonhosted.org/packages/b1/cd/7310d5dfdfe6ce54681d1a7a130ad4f1bb4371477c11e57bad86eff64417/pydeform-0.4-cp34-cp34m-manylinux1_x86_64.whl"
},
{
"comment_text": "",
"digests": {
"md5": "1fe0bdb0c5ed9d784e3e732c9b678e61",
"sha256": "bc741b8d6f1e199cb60a869bf9cfac9c812b184086eebd5cbd926640b7eae137"
},
"downloads": -1,
"filename": "pydeform-0.4-cp35-cp35m-manylinux1_x86_64.whl",
"has_sig": false,
"md5_digest": "1fe0bdb0c5ed9d784e3e732c9b678e61",
"packagetype": "bdist_wheel",
"python_version": "cp35",
"requires_python": null,
"size": 668312,
"upload_time": "2019-08-20T16:00:09",
"url": "https://files.pythonhosted.org/packages/51/15/5f798ff2ba60cdd8776f554d91a9cfcbec9f4af70546b40e485ac6645c20/pydeform-0.4-cp35-cp35m-manylinux1_x86_64.whl"
},
{
"comment_text": "",
"digests": {
"md5": "082a82dbef99fddbfd65eac2393ac89f",
"sha256": "cc66e5ec089d9ced034b4030344a2a6a55af0ce65abe18472b606c657413c198"
},
"downloads": -1,
"filename": "pydeform-0.4-cp36-cp36m-manylinux1_x86_64.whl",
"has_sig": false,
"md5_digest": "082a82dbef99fddbfd65eac2393ac89f",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": null,
"size": 668312,
"upload_time": "2019-08-20T15:57:44",
"url": "https://files.pythonhosted.org/packages/db/a0/863cf31d9ba1c985ff684e388094e158749ec99b3af2d7067cced66cf0f7/pydeform-0.4-cp36-cp36m-manylinux1_x86_64.whl"
},
{
"comment_text": "",
"digests": {
"md5": "bdef6ffb4fb9adfe290ed63b515cb5e7",
"sha256": "b01634070d54e1bb8e4715afd9ee4a46d9d2b4c2545f404ef4e36d959bf1677b"
},
"downloads": -1,
"filename": "pydeform-0.4-cp37-cp37m-manylinux1_x86_64.whl",
"has_sig": false,
"md5_digest": "bdef6ffb4fb9adfe290ed63b515cb5e7",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": null,
"size": 668574,
"upload_time": "2019-08-20T16:10:19",
"url": "https://files.pythonhosted.org/packages/b7/4c/2a5cc8a835dabacc1811e983d1dc3100044afd3838d2e63ca90c0a304967/pydeform-0.4-cp37-cp37m-manylinux1_x86_64.whl"
},
{
"comment_text": "",
"digests": {
"md5": "3966ded05870c5454aca6996f5c63b85",
"sha256": "8d53d8b914284bc8cacdb62d0d429147864a6c0e3bb8e92c4fd22f1e671b880a"
},
"downloads": -1,
"filename": "pydeform-0.4.tar.gz",
"has_sig": false,
"md5_digest": "3966ded05870c5454aca6996f5c63b85",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 3434466,
"upload_time": "2019-08-21T09:30:56",
"url": "https://files.pythonhosted.org/packages/0e/e6/8019cd77790ef103932fba1ee73796e9395c4413b08d1c408c6600b15473/pydeform-0.4.tar.gz"
}
],
"0.4.1": [
{
"comment_text": "",
"digests": {
"md5": "30975768210d3b5f3c39b1b3ec37404f",
"sha256": "26e2a2b30a81e7c5cc19c67bbef088cbf6ded50afd5eafe753cb56d6384ac353"
},
"downloads": -1,
"filename": "pydeform-0.4.1-cp34-cp34m-manylinux1_x86_64.whl",
"has_sig": false,
"md5_digest": "30975768210d3b5f3c39b1b3ec37404f",
"packagetype": "bdist_wheel",
"python_version": "cp34",
"requires_python": null,
"size": 660049,
"upload_time": "2019-08-22T07:13:19",
"url": "https://files.pythonhosted.org/packages/ae/72/3445b6cef95cc7453105a5be32eb7bfdcc8448f2cba6b5f83d148428d711/pydeform-0.4.1-cp34-cp34m-manylinux1_x86_64.whl"
},
{
"comment_text": "",
"digests": {
"md5": "407049e8961c0810e2fc453042fdbbb5",
"sha256": "2383dbaa5fbf53080847088a89e2179a2ef71d0233772729ac62a3c0567e6490"
},
"downloads": -1,
"filename": "pydeform-0.4.1-cp34-cp34m-win_amd64.whl",
"has_sig": false,
"md5_digest": "407049e8961c0810e2fc453042fdbbb5",
"packagetype": "bdist_wheel",
"python_version": "cp34",
"requires_python": null,
"size": 301181,
"upload_time": "2019-08-21T10:52:20",
"url": "https://files.pythonhosted.org/packages/5b/99/8e28660d70ad9613bd6087f86d2f574dfec464cd5ace9f8fcef5fba1a175/pydeform-0.4.1-cp34-cp34m-win_amd64.whl"
},
{
"comment_text": "",
"digests": {
"md5": "7897251fe3cf7d3b8cdcfaef56cb8dc9",
"sha256": "578c39a47b75bb0a8dfb666d92ea105faf22321c657a55f55457bf8b2503952a"
},
"downloads": -1,
"filename": "pydeform-0.4.1-cp35-cp35m-macosx_10_6_intel.whl",
"has_sig": false,
"md5_digest": "7897251fe3cf7d3b8cdcfaef56cb8dc9",
"packagetype": "bdist_wheel",
"python_version": "cp35",
"requires_python": null,
"size": 639406,
"upload_time": "2019-08-28T14:37:10",
"url": "https://files.pythonhosted.org/packages/7a/5f/31883ce26ba0b94dfc3feadbed9c443bc240f7887402af0b99a01cb8c810/pydeform-0.4.1-cp35-cp35m-macosx_10_6_intel.whl"
},
{
"comment_text": "",
"digests": {
"md5": "722239699965440f6f5e972900acaab5",
"sha256": "c072b4a578279baee04ce61108b309bb9346bd501c9484fb8a568a387ac6c695"
},
"downloads": -1,
"filename": "pydeform-0.4.1-cp35-cp35m-manylinux1_x86_64.whl",
"has_sig": false,
"md5_digest": "722239699965440f6f5e972900acaab5",
"packagetype": "bdist_wheel",
"python_version": "cp35",
"requires_python": null,
"size": 659918,
"upload_time": "2019-08-22T07:13:21",
"url": "https://files.pythonhosted.org/packages/48/62/9f9dfdc70caae3117680a46b0f87e63a3b4b0e2640be85e3741ba0de88be/pydeform-0.4.1-cp35-cp35m-manylinux1_x86_64.whl"
},
{
"comment_text": "",
"digests": {
"md5": "a33143447199791c5df730c267ea88b5",
"sha256": "abf503a838f94ff918b49a462f07d2a8e885c219ce6336580c5a61327cc96768"
},
"downloads": -1,
"filename": "pydeform-0.4.1-cp35-cp35m-win_amd64.whl",
"has_sig": false,
"md5_digest": "a33143447199791c5df730c267ea88b5",
"packagetype": "bdist_wheel",
"python_version": "cp35",
"requires_python": null,
"size": 301169,
"upload_time": "2019-08-21T10:52:21",
"url": "https://files.pythonhosted.org/packages/41/14/5abbb2236f868540999bfff03b44cbfb3e9a92c8686280e8ddc577710b49/pydeform-0.4.1-cp35-cp35m-win_amd64.whl"
},
{
"comment_text": "",
"digests": {
"md5": "05f95c2f97fa95bcee10773f73c23757",
"sha256": "5e530025a4c5748b02ed0182e636cf9f166b98832fd4176d94882fa899d6d869"
},
"downloads": -1,
"filename": "pydeform-0.4.1-cp36-cp36m-macosx_10_6_intel.whl",
"has_sig": false,
"md5_digest": "05f95c2f97fa95bcee10773f73c23757",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": null,
"size": 639407,
"upload_time": "2019-08-28T14:37:30",
"url": "https://files.pythonhosted.org/packages/4d/d2/839b18ca98d04160f219e37c305b74c5484e3a4263793e20e5f7a2781427/pydeform-0.4.1-cp36-cp36m-macosx_10_6_intel.whl"
},
{
"comment_text": "",
"digests": {
"md5": "42d5be7a789ddbb08af3223bcf0b294b",
"sha256": "2f204213810af8811e7d07144a25ba9710aaa643fa7aad57dfc26294b317869c"
},
"downloads": -1,
"filename": "pydeform-0.4.1-cp36-cp36m-manylinux1_x86_64.whl",
"has_sig": false,
"md5_digest": "42d5be7a789ddbb08af3223bcf0b294b",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": null,
"size": 659918,
"upload_time": "2019-08-22T07:13:23",
"url": "https://files.pythonhosted.org/packages/87/d7/4d663dbe3e724b93f6ab6342aa7ac37cb448c562ccbca889cd5d9bfd8a7d/pydeform-0.4.1-cp36-cp36m-manylinux1_x86_64.whl"
},
{
"comment_text": "",
"digests": {
"md5": "37879db75d1cd0e45d62b43e1b87e125",
"sha256": "494cb10f1abb65c205cc0affbe9564ecd76a3571f02782a7f2576ee5fb4a0d1c"
},
"downloads": -1,
"filename": "pydeform-0.4.1-cp36-cp36m-win_amd64.whl",
"has_sig": false,
"md5_digest": "37879db75d1cd0e45d62b43e1b87e125",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": null,
"size": 301169,
"upload_time": "2019-08-21T10:52:23",
"url": "https://files.pythonhosted.org/packages/20/ce/29372e05e8733ebfe78fbf3c472c896335dba6fbd91146ac1d5d9aec2c79/pydeform-0.4.1-cp36-cp36m-win_amd64.whl"
},
{
"comment_text": "",
"digests": {
"md5": "43a1c84b32eb9bd2d9966b52651cf3c6",
"sha256": "80a0bd5c1552c474908ad53ca0cebb74c50babd8669b26e314f18e17b1f9a28b"
},
"downloads": -1,
"filename": "pydeform-0.4.1-cp37-cp37m-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "43a1c84b32eb9bd2d9966b52651cf3c6",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": null,
"size": 332848,
"upload_time": "2019-08-28T14:37:42",
"url": "https://files.pythonhosted.org/packages/3a/4a/14c7ba39234ea21010d4594f680cc4ea2e1afc11283391c64f01c54d68b4/pydeform-0.4.1-cp37-cp37m-macosx_10_9_x86_64.whl"
},
{
"comment_text": "",
"digests": {
"md5": "7b6dd7566af7b547e5b54315ac665e07",
"sha256": "9a227f20901ff85b8e12fca862e69448050d46c4eeb74aa9b9e454d3bb27ee30"
},
"downloads": -1,
"filename": "pydeform-0.4.1-cp37-cp37m-manylinux1_x86_64.whl",
"has_sig": false,
"md5_digest": "7b6dd7566af7b547e5b54315ac665e07",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": null,
"size": 660178,
"upload_time": "2019-08-22T07:13:25",
"url": "https://files.pythonhosted.org/packages/4a/eb/6e527af65db5ca26fe40780ee7b257edb46d17bb564a83a4b161b5567e64/pydeform-0.4.1-cp37-cp37m-manylinux1_x86_64.whl"
},
{
"comment_text": "",
"digests": {
"md5": "caabba3b5f7bc444df7ce0a93a5f7732",
"sha256": "d39da6d3d3626c7b97d615f3ed6100ae41f253ef144e70a89918b85a6ef929c8"
},
"downloads": -1,
"filename": "pydeform-0.4.1-cp37-cp37m-win_amd64.whl",
"has_sig": false,
"md5_digest": "caabba3b5f7bc444df7ce0a93a5f7732",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": null,
"size": 301116,
"upload_time": "2019-08-21T10:52:24",
"url": "https://files.pythonhosted.org/packages/43/de/59fafeae6dc36955e7fcf7c88fb1b47d9f58340f7376e789a3c11aaf264e/pydeform-0.4.1-cp37-cp37m-win_amd64.whl"
},
{
"comment_text": "",
"digests": {
"md5": "9e049a4d5a61fc9c37726f6e69fde1c4",
"sha256": "310e56e3a48e82b6e17012f8d7b9457b2171f7dc9697aef356e5f62ce41ff238"
},
"downloads": -1,
"filename": "pydeform-0.4.1.tar.gz",
"has_sig": false,
"md5_digest": "9e049a4d5a61fc9c37726f6e69fde1c4",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 263580,
"upload_time": "2019-08-21T11:07:30",
"url": "https://files.pythonhosted.org/packages/75/81/98b7186db319540ae1c8eaf86a8c752ea920414351299536f9205d189e01/pydeform-0.4.1.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "30975768210d3b5f3c39b1b3ec37404f",
"sha256": "26e2a2b30a81e7c5cc19c67bbef088cbf6ded50afd5eafe753cb56d6384ac353"
},
"downloads": -1,
"filename": "pydeform-0.4.1-cp34-cp34m-manylinux1_x86_64.whl",
"has_sig": false,
"md5_digest": "30975768210d3b5f3c39b1b3ec37404f",
"packagetype": "bdist_wheel",
"python_version": "cp34",
"requires_python": null,
"size": 660049,
"upload_time": "2019-08-22T07:13:19",
"url": "https://files.pythonhosted.org/packages/ae/72/3445b6cef95cc7453105a5be32eb7bfdcc8448f2cba6b5f83d148428d711/pydeform-0.4.1-cp34-cp34m-manylinux1_x86_64.whl"
},
{
"comment_text": "",
"digests": {
"md5": "407049e8961c0810e2fc453042fdbbb5",
"sha256": "2383dbaa5fbf53080847088a89e2179a2ef71d0233772729ac62a3c0567e6490"
},
"downloads": -1,
"filename": "pydeform-0.4.1-cp34-cp34m-win_amd64.whl",
"has_sig": false,
"md5_digest": "407049e8961c0810e2fc453042fdbbb5",
"packagetype": "bdist_wheel",
"python_version": "cp34",
"requires_python": null,
"size": 301181,
"upload_time": "2019-08-21T10:52:20",
"url": "https://files.pythonhosted.org/packages/5b/99/8e28660d70ad9613bd6087f86d2f574dfec464cd5ace9f8fcef5fba1a175/pydeform-0.4.1-cp34-cp34m-win_amd64.whl"
},
{
"comment_text": "",
"digests": {
"md5": "7897251fe3cf7d3b8cdcfaef56cb8dc9",
"sha256": "578c39a47b75bb0a8dfb666d92ea105faf22321c657a55f55457bf8b2503952a"
},
"downloads": -1,
"filename": "pydeform-0.4.1-cp35-cp35m-macosx_10_6_intel.whl",
"has_sig": false,
"md5_digest": "7897251fe3cf7d3b8cdcfaef56cb8dc9",
"packagetype": "bdist_wheel",
"python_version": "cp35",
"requires_python": null,
"size": 639406,
"upload_time": "2019-08-28T14:37:10",
"url": "https://files.pythonhosted.org/packages/7a/5f/31883ce26ba0b94dfc3feadbed9c443bc240f7887402af0b99a01cb8c810/pydeform-0.4.1-cp35-cp35m-macosx_10_6_intel.whl"
},
{
"comment_text": "",
"digests": {
"md5": "722239699965440f6f5e972900acaab5",
"sha256": "c072b4a578279baee04ce61108b309bb9346bd501c9484fb8a568a387ac6c695"
},
"downloads": -1,
"filename": "pydeform-0.4.1-cp35-cp35m-manylinux1_x86_64.whl",
"has_sig": false,
"md5_digest": "722239699965440f6f5e972900acaab5",
"packagetype": "bdist_wheel",
"python_version": "cp35",
"requires_python": null,
"size": 659918,
"upload_time": "2019-08-22T07:13:21",
"url": "https://files.pythonhosted.org/packages/48/62/9f9dfdc70caae3117680a46b0f87e63a3b4b0e2640be85e3741ba0de88be/pydeform-0.4.1-cp35-cp35m-manylinux1_x86_64.whl"
},
{
"comment_text": "",
"digests": {
"md5": "a33143447199791c5df730c267ea88b5",
"sha256": "abf503a838f94ff918b49a462f07d2a8e885c219ce6336580c5a61327cc96768"
},
"downloads": -1,
"filename": "pydeform-0.4.1-cp35-cp35m-win_amd64.whl",
"has_sig": false,
"md5_digest": "a33143447199791c5df730c267ea88b5",
"packagetype": "bdist_wheel",
"python_version": "cp35",
"requires_python": null,
"size": 301169,
"upload_time": "2019-08-21T10:52:21",
"url": "https://files.pythonhosted.org/packages/41/14/5abbb2236f868540999bfff03b44cbfb3e9a92c8686280e8ddc577710b49/pydeform-0.4.1-cp35-cp35m-win_amd64.whl"
},
{
"comment_text": "",
"digests": {
"md5": "05f95c2f97fa95bcee10773f73c23757",
"sha256": "5e530025a4c5748b02ed0182e636cf9f166b98832fd4176d94882fa899d6d869"
},
"downloads": -1,
"filename": "pydeform-0.4.1-cp36-cp36m-macosx_10_6_intel.whl",
"has_sig": false,
"md5_digest": "05f95c2f97fa95bcee10773f73c23757",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": null,
"size": 639407,
"upload_time": "2019-08-28T14:37:30",
"url": "https://files.pythonhosted.org/packages/4d/d2/839b18ca98d04160f219e37c305b74c5484e3a4263793e20e5f7a2781427/pydeform-0.4.1-cp36-cp36m-macosx_10_6_intel.whl"
},
{
"comment_text": "",
"digests": {
"md5": "42d5be7a789ddbb08af3223bcf0b294b",
"sha256": "2f204213810af8811e7d07144a25ba9710aaa643fa7aad57dfc26294b317869c"
},
"downloads": -1,
"filename": "pydeform-0.4.1-cp36-cp36m-manylinux1_x86_64.whl",
"has_sig": false,
"md5_digest": "42d5be7a789ddbb08af3223bcf0b294b",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": null,
"size": 659918,
"upload_time": "2019-08-22T07:13:23",
"url": "https://files.pythonhosted.org/packages/87/d7/4d663dbe3e724b93f6ab6342aa7ac37cb448c562ccbca889cd5d9bfd8a7d/pydeform-0.4.1-cp36-cp36m-manylinux1_x86_64.whl"
},
{
"comment_text": "",
"digests": {
"md5": "37879db75d1cd0e45d62b43e1b87e125",
"sha256": "494cb10f1abb65c205cc0affbe9564ecd76a3571f02782a7f2576ee5fb4a0d1c"
},
"downloads": -1,
"filename": "pydeform-0.4.1-cp36-cp36m-win_amd64.whl",
"has_sig": false,
"md5_digest": "37879db75d1cd0e45d62b43e1b87e125",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": null,
"size": 301169,
"upload_time": "2019-08-21T10:52:23",
"url": "https://files.pythonhosted.org/packages/20/ce/29372e05e8733ebfe78fbf3c472c896335dba6fbd91146ac1d5d9aec2c79/pydeform-0.4.1-cp36-cp36m-win_amd64.whl"
},
{
"comment_text": "",
"digests": {
"md5": "43a1c84b32eb9bd2d9966b52651cf3c6",
"sha256": "80a0bd5c1552c474908ad53ca0cebb74c50babd8669b26e314f18e17b1f9a28b"
},
"downloads": -1,
"filename": "pydeform-0.4.1-cp37-cp37m-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "43a1c84b32eb9bd2d9966b52651cf3c6",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": null,
"size": 332848,
"upload_time": "2019-08-28T14:37:42",
"url": "https://files.pythonhosted.org/packages/3a/4a/14c7ba39234ea21010d4594f680cc4ea2e1afc11283391c64f01c54d68b4/pydeform-0.4.1-cp37-cp37m-macosx_10_9_x86_64.whl"
},
{
"comment_text": "",
"digests": {
"md5": "7b6dd7566af7b547e5b54315ac665e07",
"sha256": "9a227f20901ff85b8e12fca862e69448050d46c4eeb74aa9b9e454d3bb27ee30"
},
"downloads": -1,
"filename": "pydeform-0.4.1-cp37-cp37m-manylinux1_x86_64.whl",
"has_sig": false,
"md5_digest": "7b6dd7566af7b547e5b54315ac665e07",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": null,
"size": 660178,
"upload_time": "2019-08-22T07:13:25",
"url": "https://files.pythonhosted.org/packages/4a/eb/6e527af65db5ca26fe40780ee7b257edb46d17bb564a83a4b161b5567e64/pydeform-0.4.1-cp37-cp37m-manylinux1_x86_64.whl"
},
{
"comment_text": "",
"digests": {
"md5": "caabba3b5f7bc444df7ce0a93a5f7732",
"sha256": "d39da6d3d3626c7b97d615f3ed6100ae41f253ef144e70a89918b85a6ef929c8"
},
"downloads": -1,
"filename": "pydeform-0.4.1-cp37-cp37m-win_amd64.whl",
"has_sig": false,
"md5_digest": "caabba3b5f7bc444df7ce0a93a5f7732",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": null,
"size": 301116,
"upload_time": "2019-08-21T10:52:24",
"url": "https://files.pythonhosted.org/packages/43/de/59fafeae6dc36955e7fcf7c88fb1b47d9f58340f7376e789a3c11aaf264e/pydeform-0.4.1-cp37-cp37m-win_amd64.whl"
},
{
"comment_text": "",
"digests": {
"md5": "9e049a4d5a61fc9c37726f6e69fde1c4",
"sha256": "310e56e3a48e82b6e17012f8d7b9457b2171f7dc9697aef356e5f62ce41ff238"
},
"downloads": -1,
"filename": "pydeform-0.4.1.tar.gz",
"has_sig": false,
"md5_digest": "9e049a4d5a61fc9c37726f6e69fde1c4",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 263580,
"upload_time": "2019-08-21T11:07:30",
"url": "https://files.pythonhosted.org/packages/75/81/98b7186db319540ae1c8eaf86a8c752ea920414351299536f9205d189e01/pydeform-0.4.1.tar.gz"
}
]
}