{ "info": { "author": "Manodeep Sinha", "author_email": "manodeep@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: POSIX", "Programming Language :: C", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "description": "|logo| \n\n|Release| |PyPI| |MIT licensed| |ASCL| |Travis Build| |Issues| |RTD|\n\nDescription\n===========\n\nThis repo contains a set of codes to calculate correlation functions and \nother clustering statistics in a cosmological box (co-moving XYZ)\nor on a mock (RA, DEC, CZ). Read the documentation on `corrfunc.rtfd.io `_. \n\nWhy Should You Use it\n======================\n\n1. **Fast** Theory pair-counting is **7x** faster than ``SciPy cKDTree``, and at least **2x** faster than all existing public codes.\n2. **OpenMP Parallel** All pair-counting codes can be done in parallel (with strong scaling efficiency >~ 95% up to 10 cores)\n3. **Python Extensions** Python extensions allow you to do the compute-heavy bits using C while retaining all of the user-friendliness of python. \n4. **Weights** All correlation functions now support *arbitrary, user-specified* weights for individual points\n5. **Modular** The code is written in a modular fashion and is easily extensible to compute arbitrary clustering statistics. \n6. **Future-proof** As I get access to newer instruction-sets, the codes will get updated to use the latest and greatest CPU features. \n\n*If you use the codes for your analysis, please star this repo -- that helps us keep track of the number of users.*\n\nBenchmark against Existing Codes\n================================\n\nPlease see this\n`gist `__ for\nsome benchmarks with current codes. If you have a pair-counter that you would like to compare, please add in a corresponding function and update the timings. \n\nInstallation\n============\n\nPre-requisites\n--------------\n\n1. ``make >= 3.80``\n2. OpenMP capable compiler like ``icc``, ``gcc>=4.6`` or ``clang >= 3.7``. If\n not available, please disable ``USE_OMP`` option option in\n ``theory.options`` and ``mocks.options``. You might need to ask your\n sys-admin for system-wide installs of the compiler; if you prefer to\n install your own then ``conda install gcc`` (MAC/linux) or\n ``(sudo) port install gcc5`` (on MAC) should work. \n3. ``gsl >= 2.4``. Use either\n ``conda install -c conda-forge gsl``\n (MAC/linux) or ``(sudo) port install gsl`` (MAC) to install ``gsl``\n if necessary.\n4. ``python >= 2.7`` or ``python>=3.4`` for compiling the C extensions.\n5. ``numpy>=1.7`` for compiling the C extensions.\n\nPreferred Install Method\n-------------------------\n\n::\n\n $ git clone https://github.com/manodeep/Corrfunc/\n $ make \n $ make install\n $ python setup.py install (--user)\n $ make tests \n\nAssuming you have ``gcc`` in your ``PATH``, ``make`` and\n``make install`` should compile and install the C libraries + python\nextensions within the source directory. If you would like to install the\npython C extensions in your environment, then\n``python setup.py install (--user)`` should be sufficient. If you are primarily\ninterested in the ``python`` interface, you can condense all of the steps\nby using ``python setup.py install CC=yourcompiler (--user)`` after ``git clone``.\n\nCompilation Notes\n------------------\n\n- If python and/or numpy are not available, then the C extensions will not be compiled.\n\n- ``make install`` simply copies files into the ``lib/bin/include`` sub-directories. You do not need ``root`` permissions\n\n- Default compiler on MAC is set to ``clang``, if you want to specify a different compiler, you will have to call ``make CC=yourcompiler``, ``make install CC=yourcompiler``, ``make tests CC=yourcompiler`` etc. If you want to permanently change the default compiler, then please edit the `common.mk `__ file in the base directory.\n\n- If you are directly using ``python setup.py install CC=yourcompiler (--user)``, please run a ``make distclean`` beforehand (especially if switching compilers)\n\n\nAlternate Install Method\n-------------------------\n\nThe python package is directly installable via ``pip install Corrfunc``. However, in that case you will lose the ability to recompile the code according to your needs. Installing via ``pip`` is **not** recommended, please open an install issue on this repo first; doing so helps improve the code-base and saves future users from running into similar install issues. \n\nInstallation notes\n------------------\n\nIf compilation went smoothly, please run ``make tests`` to ensure the\ncode is working correctly. Depending on the hardware and compilation\noptions, the tests might take more than a few minutes. *Note that the\ntests are exhaustive and not traditional unit tests*.\n\nWhile I have tried to ensure that the package compiles and runs out of\nthe box, cross-platform compatibility turns out to be incredibly hard.\nIf you run into any issues during compilation and you have all of the\npre-requisites, please see the `FAQ `__ or `email\nthe Corrfunc mailing list `__. Also, feel free to create a new issue\nwith the ``Installation`` label.\n\nClustering Measures on a Cosmological box\n-----------------------------------------\n\nAll codes that work on cosmological boxes with co-moving positions are\nlocated in the ``theory`` directory. The various clustering measures\nare:\n\n1. ``DD`` -- Measures auto/cross-correlations between two boxes.\n The boxes do not need to be cubes.\n\n2. ``xi`` -- Measures 3-d auto-correlation in a cubic cosmological box.\n Assumes PERIODIC boundary conditions.\n\n3. ``wp`` -- Measures auto 2-d point projected correlation function in a\n cubic cosmological box. Assumes PERIODIC boundary conditions.\n\n4. ``DDrppi`` -- Measures the auto/cross correlation function between\n two boxes. The boxes do not need to be cubes.\n\n5. ``DDsmu`` -- Measures the auto/cross correlation function between\n two boxes. The boxes do not need to be cubes.\n\n6. ``vpf`` -- Measures the void probability function + counts-in-cells.\n\nClustering measures on a Mock\n-----------------------------\n\nAll codes that work on mock catalogs (RA, DEC, CZ) are located in the\n``mocks`` directory. The various clustering measures are:\n\n1. ``DDrppi_mocks`` -- The standard auto/cross correlation between two data\n sets. The outputs, DD, DR and RR can be combined using ``wprp`` to\n produce the Landy-Szalay estimator for `wp(rp)`.\n\n2. ``DDsmu_mocks`` -- The standard auto/cross correlation between two data\n sets. The outputs, DD, DR and RR can be combined using the python utility \n ``convert_3d_counts_to_cf`` to produce the Landy-Szalay estimator for `xi(s, mu)`.\n \n3. ``DDtheta_mocks`` -- Computes angular correlation function between two data\n sets. The outputs from ``DDtheta_mocks`` need to be combined with\n ``wtheta`` to get the full `\\omega(\\theta)`\n\n4. ``vpf_mocks`` -- Computes the void probability function on mocks.\n\nScience options\n===============\n\nIf you plan to use the command-line, then you will have to specify the\ncode runtime options at compile-time. For theory routines, these options\nare in the file `theory.options `__ while for the mocks, these options are\nin file `mocks.options `__.\n\n**Note** All options can be specified at \nruntime if you use the python interface or the static libraries. Each one of\nthe following ``Makefile`` option has a corresponding entry for the runtime\nlibraries. \n\nTheory (in `theory.options `__)\n-------------------------------------------------\n\n1. ``PERIODIC`` (ignored in case of wp/xi) -- switches periodic boundary\n conditions on/off. Enabled by default.\n\n2. ``OUTPUT_RPAVG`` -- switches on output of ```` in each ``rp``\n bin. Can be a massive performance hit (~ 2.2x in case of wp).\n Disabled by default. \n\n3. ``DOUBLE_PREC`` -- switches on calculations in double precision. Disabled\n by default (i.e., calculations are performed in single precision by default).\n \nMocks (in `mocks.options `__)\n----------------------------------------------\n\n1. ``OUTPUT_RPAVG`` -- switches on output of ```` in each ``rp``\n bin for ``DDrppi_mocks``. Enabled by default.\n\n2. ``OUTPUT_THETAAVG`` -- switches on output of in each theta bin. Can\n be extremely slow (~5x) depending on compiler, and CPU capabilities.\n Disabled by default.\n\n3. ``DOUBLE_PREC`` -- switches on calculations in double precision. Disabled\n by default (i.e., calculations are performed in single precision by default).\n \n4. ``LINK_IN_DEC`` -- creates binning in declination for ``DDtheta``. Please\n check that for your desired limits ``\\theta``, this binning does not \n produce incorrect results (due to numerical precision). Generally speaking,\n if your ``\\thetamax`` (the max. ``\\theta`` to consider pairs within) is too\n small (probaly less than 1 degree), then you should check with and without\n this option. Errors are typically sub-percent level. \n\n5. ``LINK_IN_RA`` -- creates binning in RA once binning in DEC has been\n enabled. Same numerical issues as ``LINK_IN_DEC``\n\n6. ``FAST_DIVIDE`` -- Disabled by default. Divisions are slow but required\n ``DD(r_p,\\pi)``. Enabling this option, replaces\n the divisions with a reciprocal followed by a Newton-Raphson. The code\n will run ~20% faster at the expense of some numerical precision.\n Please check that the loss of precision is not important for your\n use-case. \n\n7. ``FAST_ACOS`` -- Relevant only when ``OUTPUT_THETAAVG`` is enabled. Disabled \n by default. An ``arccos`` is required to calculate ``<\\theta>``. In absence of vectorized\n ``arccos`` (intel compiler, ``icc`` provides one via intel Short Vector Math \n Library), this calculation is extremely slow. However, we can approximate\n ``arccos`` using polynomials (with `Remez Algorithm `_).\n The approximations are taken from implementations released by `Geometric Tools `_.\n Depending on the level of accuracy desired, this implementation of ``fast acos`` \n can be tweaked in the file `utils/fast_acos.h `__. An alternate, less\n accurate implementation is already present in that file. Please check that the loss of \n precision is not important for your use-case. \n\n8. ``COMOVING_DIST`` -- Currently there is no support in ``Corrfunc`` for different cosmologies. However, for the\n mocks routines like, ``DDrppi_mocks`` and ``vpf_mocks``, cosmology parameters are required to convert between\n redshift and co-moving distance. Both ``DDrppi_mocks`` and ``vpf_mocks`` expects to receive a ``redshift`` array \n as input; however, with this option enabled, the ``redshift`` array will be assumed to contain already converted\n co-moving distances. So, if you have redshifts and want to use an arbitrary cosmology, then convert the redshifts\n into co-moving distances, enable this option, and pass the co-moving distance array into the routines. \n\nRunning the codes\n=================\n\nRead the documentation on `corrfunc.rtfd.io `_.\n\n\nUsing the command-line interface\n--------------------------------\n\nNavigate to the correct directory. Make sure that the options, set in\neither `theory.options `__ or `mocks.options `__ in the root directory are\nwhat you want. If not, edit those two files (and possibly\n`common.mk `__), and recompile. Then, you can use the command-line\nexecutables in each individual subdirectory corresponding to the\nclustering measure you are interested in. For example, if you want to\ncompute the full 3-D correlation function, ``\\xi(r)``, then run the \nexecutable ``theory/xi/xi``. If you run executables without any arguments, \nthe program will output a message with all the required arguments.\n\nCalling from C\n--------------\n\nLook under the `run_correlations.c `__ and\n`run_correlations_mocks.c `__ to see examples of\ncalling the C API directly. If you run the executables,\n``run_correlations`` and ``run_correlations_mocks``, the output will\nalso show how to call the command-line interface for the various\nclustering measures.\n\nCalling from Python\n-------------------\n\nIf all went well, the codes can be directly called from ``python``.\nPlease see `call_correlation_functions.py `__ and\n`call_correlation_functions_mocks.py `__ for examples on how to\nuse the C extensions directly. Here are a few examples:\n\n.. code:: python\n\n from __future__ import print_function\n import os.path as path\n import numpy as np\n import Corrfunc\n from Corrfunc.theory import wp\n\n # Setup the problem for wp\n boxsize = 500.0\n pimax = 40.0\n nthreads = 4\n\n # Create a fake data-set.\n Npts = 100000\n x = np.float32(np.random.random(Npts))\n y = np.float32(np.random.random(Npts))\n z = np.float32(np.random.random(Npts))\n x *= boxsize\n y *= boxsize\n z *= boxsize\n\n # Setup the bins\n rmin = 0.1\n rmax = 20.0\n nbins = 20\n \n # Create the bins\n rbins = np.logspace(np.log10(0.1), np.log10(rmax), nbins + 1)\n\n # Call wp\n wp_results = wp(boxsize, pimax, nthreads, rbins, x, y, z, verbose=True, output_rpavg=True)\n\n # Print the results\n print(\"#############################################################################\")\n print(\"## rmin rmax rpavg wp npairs\")\n print(\"#############################################################################\")\n print(wp_results)\n \n\nCommon Code options for both Mocks and Cosmological Boxes\n=========================================================\n\n1. ``USE_OMP`` -- uses OpenMP parallelization. Scaling is great for DD\n (close to perfect scaling up to 12 threads in our tests) and okay (runtime\n becomes constant ~6-8 threads in our tests) for ``DDrppi`` and ``wp``.\n Enabled by default. The ``Makefile`` will compare the `CC` variable with\n known OpenMP enabled compilers and set compile options accordingly. \n Set in `common.mk `__ by default. \n\n*Optimization for your architecture*\n\n1. The values of ``bin_refine_factor`` and/or ``zbin_refine_factor`` in\n the ``countpairs\\_\\*.c`` files control the cache-misses, and\n consequently, the runtime. In my trial-and-error methods, I have seen\n any values larger than 3 are always slower. But some different\n combination of 1/2 for ``(z)bin_refine_factor`` might be faster on\n your platform.\n\n2. If you have AVX2/AVX-512/KNC, you will need to add a new kernel within\n the ``*_kernels.c`` and edit the runtime dispatch code to call this new\n kernel. \n\nAuthor & Maintainers \n=====================\n\nCorrfunc was designed by Manodeep Sinha and is currently maintained by\n`Lehman Garrison `_ and `Manodeep Sinha `_\n\nCiting\n======\n\nIf you use the code, please cite using the `ascl entry `_ as indexed by `ADS `_. The BibTex entry for the code is\n\n::\n\n @misc{2017ascl.soft03003S,\n author = {{Sinha}, M. and {Garrison}, L.},\n title = \"{Corrfunc: Blazing fast correlation functions on the CPU}\",\n keywords = {Software},\n howpublished = {Astrophysics Source Code Library},\n year = 2017,\n month = mar,\n archivePrefix = \"ascl\",\n eprint = {1703.003},\n adsurl = {http://adsabs.harvard.edu/abs/2017ascl.soft03003S},\n adsnote = {Provided by the SAO/NASA Astrophysics Data System}\n }\n\nIf you are using ``Corrfunc v2.3.0`` or later, please additionally cite this paper:\n\n::\n\n @InProceedings{10.1007/978-981-13-7729-7_1,\n author=\"Sinha, Manodeep and Garrison, Lehman\",\n editor=\"Majumdar, Amit and Arora, Ritu\",\n title=\"CORRFUNC: Blazing Fast Correlation Functions with AVX512F SIMD Intrinsics\",\n booktitle=\"Software Challenges to Exascale Computing\",\n year=\"2019\",\n publisher=\"Springer Singapore\",\n address=\"Singapore\",\n pages=\"3--20\",\n isbn=\"978-981-13-7729-7\",\n url={https://doi.org/10.1007/978-981-13-7729-7_1}\n }\n\n\n\nMailing list\n============\n\nIf you have questions or comments about the package, please do so on the\nmailing list: https://groups.google.com/forum/#!forum/corrfunc\n\nLICENSE\n=======\n\nCorrfunc is released under the MIT license. Basically, do what you want\nwith the code, including using it in commercial application.\n\nProject URL\n===========\n\n- documentation (http://corrfunc.rtfd.io/) \n- version control (https://github.com/manodeep/Corrfunc)\n\n.. |logo| image:: https://github.com/manodeep/Corrfunc/blob/master/corrfunc_logo.png\n :target: https://github.com/manodeep/Corrfunc\n :alt: Corrfunc logo \n.. |Release| image:: https://img.shields.io/github/release/manodeep/Corrfunc.svg\n :target: https://github.com/manodeep/Corrfunc/releases/latest\n :alt: Latest Release\n.. |PyPI| image:: https://img.shields.io/pypi/v/Corrfunc.svg\n :target: https://pypi.python.org/pypi/Corrfunc\n :alt: PyPI Release\n.. |MIT licensed| image:: https://img.shields.io/badge/license-MIT-blue.svg\n :target: https://raw.githubusercontent.com/manodeep/Corrfunc/master/LICENSE\n :alt: MIT License\n.. |ASCL| image:: https://img.shields.io/badge/ascl-1703.003-blue.svg?colorB=262255\n :target: http://ascl.net/1703.003\n :alt: ascl:1703.003\n.. |Travis Build| image:: https://travis-ci.org/manodeep/Corrfunc.svg?branch=master\n :target: https://travis-ci.org/manodeep/Corrfunc\n :alt: Build Status\n.. |Issues| image:: https://img.shields.io/github/issues/manodeep/Corrfunc.svg\n :target: https://github.com/manodeep/Corrfunc/issues\n :alt: Open Issues\n.. |RTD| image:: https://readthedocs.org/projects/corrfunc/badge/?version=master\n :target: http://corrfunc.readthedocs.io/en/master/?badge=master\n :alt: Documentation Status", "description_content_type": "", "docs_url": null, "download_url": "https://github.com/manodeep/Corrfunc/archive/Corrfunc-2.3.1.tar.gz", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/manodeep/Corrfunc", "keywords": "correlation functions,simulations,surveys,galaxies", "license": "MIT", "maintainer": "Manodeep Sinha", "maintainer_email": "manodeep@gmail.com", "name": "Corrfunc", "package_url": "https://pypi.org/project/Corrfunc/", "platform": "Linux", "project_url": "https://pypi.org/project/Corrfunc/", "project_urls": { "Download": "https://github.com/manodeep/Corrfunc/archive/Corrfunc-2.3.1.tar.gz", "Homepage": "https://github.com/manodeep/Corrfunc" }, "release_url": "https://pypi.org/project/Corrfunc/2.3.1/", "requires_dist": null, "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "summary": "Blazing fast correlation functions on the CPU", "version": "2.3.1" }, "last_serial": 5432865, "releases": { "0.2.2": [ { "comment_text": "", "digests": { "md5": "20e4a0e0f78275308cdcae23b270e9c9", "sha256": "8955c9b0780d5913c968856ce3456316c3fc9fb1bccaa8fc92c92e123a53e8f2" }, "downloads": -1, "filename": "Corrfunc-0.2.2.tar.gz", "has_sig": true, "md5_digest": "20e4a0e0f78275308cdcae23b270e9c9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32341581, "upload_time": "2016-02-09T07:10:32", "url": "https://files.pythonhosted.org/packages/9b/7d/e63bf224672af72a58a7f04490910cc83afeabe0f46006282168839e3b38/Corrfunc-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "320b10018fa23a27fe409dc0440ad4de", "sha256": "2875e22fdac535d2523b59634c62da0665c5f2d84f28a1e26d1e125dc2fd8768" }, "downloads": -1, "filename": "Corrfunc-0.2.3.tar.gz", "has_sig": true, "md5_digest": "320b10018fa23a27fe409dc0440ad4de", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32357675, "upload_time": "2016-03-30T02:43:25", "url": "https://files.pythonhosted.org/packages/75/90/7f6c891c4b19ebf23361566228d4c67c620c058d4a40506c11eb869c32b6/Corrfunc-0.2.3.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "1d1ec7b56bca4ddc06edc981291f4008", "sha256": "1a2e43c6fc4c902111d5cd43b8936e581883b334522558277c07a55a3048945a" }, "downloads": -1, "filename": "Corrfunc-1.0.0.tar.gz", "has_sig": true, "md5_digest": "1d1ec7b56bca4ddc06edc981291f4008", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32360529, "upload_time": "2016-04-14T08:30:09", "url": "https://files.pythonhosted.org/packages/ef/3b/2a81e0cb6d05a0084bd795d11d2074e67b75cdcf78298345f477b7683f8a/Corrfunc-1.0.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "918ad7ed0559c601daee69f047539580", "sha256": "46ca28ecd0daf1baebdc37b74ac519c24fb364f5ca3fb3e36c7d7a7687c6e5b1" }, "downloads": -1, "filename": "Corrfunc-1.1.0.tar.gz", "has_sig": true, "md5_digest": "918ad7ed0559c601daee69f047539580", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32371854, "upload_time": "2016-06-08T07:53:50", "url": "https://files.pythonhosted.org/packages/12/0f/b6bafcb41103b65b807c29d8f045811ea82db933be7524241b28f2e3d7f9/Corrfunc-1.1.0.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "1ef4ba2d917929aede23efddfcfbc78a", "sha256": "22176ee45188a3606df298af31f869fb9073957ad4de9417d3dfae683cb621e4" }, "downloads": -1, "filename": "Corrfunc-2.0.0.tar.gz", "has_sig": false, "md5_digest": "1ef4ba2d917929aede23efddfcfbc78a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25948875, "upload_time": "2017-04-06T06:53:31", "url": "https://files.pythonhosted.org/packages/ee/db/20c8e79de6c26eb2cc08c0a4181b04193bbc6d0beabd40eb5ea716c06ab3/Corrfunc-2.0.0.tar.gz" } ], "2.1.0": [ { "comment_text": "", "digests": { "md5": "9fa4e4d94e120bd9ab4671c99af31dad", "sha256": "017e8297c8741fed7ca6d66e2f3fcec1782cf263c377c39f5b239b745105b92a" }, "downloads": -1, "filename": "Corrfunc-2.1.0.tar.gz", "has_sig": false, "md5_digest": "9fa4e4d94e120bd9ab4671c99af31dad", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26041258, "upload_time": "2018-08-17T21:58:29", "url": "https://files.pythonhosted.org/packages/8e/06/59ff1e5c05b96961eef93a998e14cca2e5d15faff83bfe46d6fafd259f8a/Corrfunc-2.1.0.tar.gz" } ], "2.2.0": [ { "comment_text": "", "digests": { "md5": "aba091d90f69e72cf6764a48b6940984", "sha256": "9a62ca59c13685de0bca3e74f89666eaa8d19fb63b1d3586a5688b0674a0fc23" }, "downloads": -1, "filename": "Corrfunc-2.2.0.tar.gz", "has_sig": true, "md5_digest": "aba091d90f69e72cf6764a48b6940984", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 26041728, "upload_time": "2018-08-19T00:10:45", "url": "https://files.pythonhosted.org/packages/3c/17/b79988e20800a981e2ed8459f294e98d31e9da4f1e9caba4af3c6f1c8b96/Corrfunc-2.2.0.tar.gz" } ], "2.3.0": [ { "comment_text": "", "digests": { "md5": "2a3a9dd11476fc6ae0c745289f800b6a", "sha256": "6d873d098eff3fb5da0cf26368b62365751aefaa6c7c19dea5c8864c6c34ab02" }, "downloads": -1, "filename": "Corrfunc-2.3.0.tar.gz", "has_sig": false, "md5_digest": "2a3a9dd11476fc6ae0c745289f800b6a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26046581, "upload_time": "2019-05-21T08:26:57", "url": "https://files.pythonhosted.org/packages/9b/f3/af25e81e97286ecee79bdabc53e72673e766f326f79717540c17f2c5d69d/Corrfunc-2.3.0.tar.gz" } ], "2.3.1": [ { "comment_text": "", "digests": { "md5": "885f795fb03b3791b4f9fff5a439ad5e", "sha256": "32d0c6c2e6bc3dc237a4eabcdebadd27b3ebd16a1290c03f762d02e0af5d889f" }, "downloads": -1, "filename": "Corrfunc-2.3.1.tar.gz", "has_sig": false, "md5_digest": "885f795fb03b3791b4f9fff5a439ad5e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 26072917, "upload_time": "2019-06-21T21:14:55", "url": "https://files.pythonhosted.org/packages/57/4c/ce270409fce8183076a636be0cb59d1f3a132c5fca3af2134c5f40bd09b9/Corrfunc-2.3.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "885f795fb03b3791b4f9fff5a439ad5e", "sha256": "32d0c6c2e6bc3dc237a4eabcdebadd27b3ebd16a1290c03f762d02e0af5d889f" }, "downloads": -1, "filename": "Corrfunc-2.3.1.tar.gz", "has_sig": false, "md5_digest": "885f795fb03b3791b4f9fff5a439ad5e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4", "size": 26072917, "upload_time": "2019-06-21T21:14:55", "url": "https://files.pythonhosted.org/packages/57/4c/ce270409fce8183076a636be0cb59d1f3a132c5fca3af2134c5f40bd09b9/Corrfunc-2.3.1.tar.gz" } ] }