{ "info": { "author": "Martin Zhang, Fei Xia, James Zou", "author_email": "jinye@stanford.edu", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "## AdaFDR\n[![GitHub version](https://badge.fury.io/gh/martinjzhang%2Fadafdr.svg)](https://badge.fury.io/gh/martinjzhang%2Fadafdr) [![PyPI version](https://badge.fury.io/py/adafdr.svg)](https://badge.fury.io/py/adafdr)\n\nA fast and covariate-adaptive method for multiple hypothesis testing. \n\nSoftware accompanying the paper \"AdaFDR: a Fast, Powerful and Covariate-Adaptive Approach to Multiple Hypothesis Testing\", 2018.\n\n## Requirement\n* AdaFDR runs on python 3.6\n\n## Installation\n```\npip install adafdr\n```\n\n## Usage\n### Import package\n`adafdr.method` contains all methods while `adafdr.data_loader` contains the data.\nThey can be imported as \n```python\nimport adafdr.method as md\nimport adafdr.data_loader as dl\n```\nOther ways of importing are usually compatible. For example, one can import the package with `import adafdr`\nand call method `xxx` in the method module via `adafdr.method.xxx()`\n\n### Input format\nFor a set of N hypotheses, the input data includes the p-values `p` and the d-dimensional covariate `x`, \nwith the following format:\n\n* `p`: (N,) numpy.ndarray.\n* `x`: (N,d) numpy.ndarray. \n\nWhen d=1, `x` is allowed to be either (N,) numpy.ndarray \nor (N,1) numpy.ndarray.\n\n### Covariate visualization\nThe covariate visualization method `adafdr_explore` can be used as \n```python\nadafdr.method.adafdr_explore(p, x, output_folder=None, covariate_type=None)\n```\n* If the `output_folder` is not `None`, the covariate visualization figures will be \nsaved in `output_folder`. Otherwise, they will show up in the console. \n* `covariate_type` specifies the type of each covariate: 0 means numerical/ordinal while 1 means categorical. For example, `covariate_type=[0,1]` means there are 2 covariates, the first is numerical/ordinal and the second is categorical. If not specified, a covariate with more than 75 distinct values is regarded as numerical/ordinal and otherwise categorical.\n* See also [doc](https://htmlpreview.github.io/?https://raw.githubusercontent.com/martinjzhang/adafdr/master/doc/_build/html/api.html) for more details.\n\n### Multiple testing\nThe multiple hypothesis testing method `adafdr_test` can be used as \n* fast version (default): `res = adafdr.method.adafdr_test(p, x, alpha=0.1, covariate_type=None)`\n* regular version: `res = adafdr.method.adafdr_test(p, x, alpha=0.1, fast_mode=False, covariate_type=None)`\n* regular version with multi-core: `res = adafdr.method.adafdr_test(p, x, alpha=0.1, fast_mode=False, single_core=False, covariate_type=None)`\n\n`res` is a dictionary containing the results, including:\n* `res['decision']`: a (N,) boolean vector, decision for each hypothesis with value 1 meaning rejection.\n\n* `res['threshold']`: a (N,) float vector, threshold for each hypothesis.\n\nIf `output_folder` is a folder path, log files will be saved in the folder. \n\n`covariate_type` specifies the type of each covariate: 0 means numerical/ordinal while 1 means categorical. For example, `covariate_type=[0,1]` means there are 2 covariates, the first is numerical/ordinal and the second is categorical. If not specified, a covariate with more than 75 distinct values is regarded as numerical/ordinal and otherwise categorical.\n\nSee also [doc](https://htmlpreview.github.io/?https://raw.githubusercontent.com/martinjzhang/adafdr/master/doc/_build/html/api.html) for more details.\n\n## Example on airway RNA-seq data\nThe following is an example on the airway RNA-seq data\nused in the paper.\n### Import package and load data\nHere we load the *airway* data used in the paper.\nSee [vignettes](./vignettes) for other data accompanied with the package. \n```python\nimport adafdr.method as md\nimport adafdr.data_loader as dl\np,x = dl.data_airway()\n```\n\n### Covariate visualization using `adafdr_explore`\n```python\nmd.adafdr_explore(p, x, output_folder=None)\n```\n\n![p_scatter](https://raw.githubusercontent.com/martinjzhang/adafdr/master/images/explore_p_feature_1.png ) \n![ratio](https://raw.githubusercontent.com/martinjzhang/adafdr/master/images/explore_ratio_feature_1.png )\n\nHere, the left is a scatter plot of each hypothesis with p-values (y-axis) plotted against the covariate (x-axis). \nThe right panel shows the estimated null hypothesis distribution (blue) and the estimated alternative hypothesis \ndistribution (orange) with respect to the covariate. Here we can conclude that a hypothesis is more likely\nto be significant if the covariate (gene expression) value is higher.\n\n### Multiple hypothesis testing using `adafdr_test`\n```python\nres = md.adafdr_test(p, x, fast_mode=True, output_folder=None)\n```\n\nHere, the learned threshold `res['threshold']` looks as follows.\n\n![p_scatter](https://raw.githubusercontent.com/martinjzhang/adafdr/master/images/threshold.png)\n\nEach orange dot corresponds to the threhsold to one hypothesis. The discrepancy at the right is due to the difference between the thresholds learned by the two folds.\n\n## Quick Test\n\nHere is a quick test. First check if the package can be successfully imported:\n```python\nimport adafdr.method as md\nimport adafdr.data_loader as dl\n```\nNext, run a small example which should take a few seconds:\n```python\nimport numpy as np\np,x,h,_,_ = dl.load_1d_bump_slope()\nres = md.adafdr_test(p, x, alpha=0.1)\nt = res['threshold']\nD = np.sum(p<=t)\nFD = np.sum((p<=t)&(~h))\nprint('# AdaFDR successfully finished!')\nprint('# D=%d, FD=%d, FDP=%0.3f'%(D, FD, FD/D))\n```\nIt runs *AdaFDR-fast* on a 1d simulated data. If the package is successfully imported, \nthe result should look like:\n```\n# AdaFDR successfully finished! \n# D=837, FD=79, FDP=0.094\n```\n\n\n\n## Citation information\nZhang, Martin J., Fei Xia, and James Zou. \"AdaFDR: a Fast, Powerful and Covariate-Adaptive Approach to Multiple Hypothesis Testing.\" bioRxiv (2018): 496372.\n\nXia, Fei, et al. \"Neuralfdr: Learning discovery thresholds from hypothesis features.\" Advances in Neural Information Processing Systems. 2017.\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": "https://github.com/martinjzhang/adafdr", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "adafdr", "package_url": "https://pypi.org/project/adafdr/", "platform": "", "project_url": "https://pypi.org/project/adafdr/", "project_urls": { "Homepage": "https://github.com/martinjzhang/adafdr" }, "release_url": "https://pypi.org/project/adafdr/0.1.7/", "requires_dist": [ "numpy", "scipy", "scikit-learn", "torch (==0.3.1)", "matplotlib" ], "requires_python": "", "summary": "A fast and covariate-adaptive method for multiple hypothesis testing", "version": "0.1.7" }, "last_serial": 5250073, "releases": { "0.0.2": [ { "comment_text": "", "digests": { "md5": "50ea0b83afba397e3776a6b73eea3670", "sha256": "a8490de0bd3dd66dea39e8c9f3ae7360940e2dc064b89edb8ee3ebcb4053200f" }, "downloads": -1, "filename": "adafdr-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "50ea0b83afba397e3776a6b73eea3670", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2343823, "upload_time": "2018-10-31T07:31:29", "url": "https://files.pythonhosted.org/packages/09/d9/0e179ab6b0fae333c88a5c536bf2fe074c777dd519e84aa4ec02ab1b651d/adafdr-0.0.2-py3-none-any.whl" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "d8fb09e642d6afb19071dab6d407ef8e", "sha256": "7969cf02bba90f02a471b3094c761b07155e36be293f4413878af4e15314684e" }, "downloads": -1, "filename": "adafdr-0.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "d8fb09e642d6afb19071dab6d407ef8e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2343825, "upload_time": "2018-10-31T07:38:24", "url": "https://files.pythonhosted.org/packages/7e/9a/774432377f2fd8db5d0fcc3e4f9ed9f1635a085e2319c689f29327a995f7/adafdr-0.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8d416adc5671fc40f8b40320606085bd", "sha256": "c597901483dc6e1f9f57d7d193d404e433b7c77a4734209e21ef6ccfd5ff434c" }, "downloads": -1, "filename": "adafdr-0.0.5.tar.gz", "has_sig": false, "md5_digest": "8d416adc5671fc40f8b40320606085bd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2429825, "upload_time": "2018-10-31T07:38:26", "url": "https://files.pythonhosted.org/packages/90/d6/7e37d04310d10f6961b79466cf31637eb7fd1e0bc272a1eb96a7de83ae90/adafdr-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "bc212eb3d6f93047fdd08acf2ad00e6b", "sha256": "abc049547f85ea696a0dca625ad9c4412b804db479a0c5d3735fa692d6578f53" }, "downloads": -1, "filename": "adafdr-0.0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "bc212eb3d6f93047fdd08acf2ad00e6b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2343817, "upload_time": "2018-10-31T07:49:53", "url": "https://files.pythonhosted.org/packages/0a/7d/ef907efcb1c583a05b92157df71df3b6a19c24b5402f33c15f8d1981f900/adafdr-0.0.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "35395820f39c08938443e9f2ca934448", "sha256": "c58f836c7238acb8d7aaba2e5a7b7e09094a65cea8bee8f5193b5de64e284747" }, "downloads": -1, "filename": "adafdr-0.0.6.tar.gz", "has_sig": false, "md5_digest": "35395820f39c08938443e9f2ca934448", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2429822, "upload_time": "2018-10-31T07:49:55", "url": "https://files.pythonhosted.org/packages/de/77/35b4ae3fc9e0f84b48f0a32d58d451196688ecf1274476d24febdc5e4dac/adafdr-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "7748d4b458363bc55392df8672fa56f6", "sha256": "c5810071db4db4e36aaaea42e5215a933d04278458b3799eddba15be5d603205" }, "downloads": -1, "filename": "adafdr-0.0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "7748d4b458363bc55392df8672fa56f6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2343819, "upload_time": "2018-10-31T08:12:58", "url": "https://files.pythonhosted.org/packages/2b/60/b7fa5305e196281fd986dea29d11a3fe22c3cb419edf3c19238a5a7c42ca/adafdr-0.0.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "00b84dd2f64ce779c085a83dfabd6d9c", "sha256": "c47fdc8881a8272d58b04f987f727406c90d241928bb9d8d49dbecf28f691baa" }, "downloads": -1, "filename": "adafdr-0.0.7.tar.gz", "has_sig": false, "md5_digest": "00b84dd2f64ce779c085a83dfabd6d9c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2429829, "upload_time": "2018-10-31T08:13:01", "url": "https://files.pythonhosted.org/packages/b7/b3/d5018aadbd6af44ea818eb4c7a43d7f8301647acafabbf52f03f5df96a07/adafdr-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "2be81aabf0fcaee853cf767f86a325b9", "sha256": "4a82233a7438a6116bdf12ee255f75438c8f93de4eca92dd9a14e9a93c51ee4f" }, "downloads": -1, "filename": "adafdr-0.0.8-py3-none-any.whl", "has_sig": false, "md5_digest": "2be81aabf0fcaee853cf767f86a325b9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2344702, "upload_time": "2018-11-01T02:56:49", "url": "https://files.pythonhosted.org/packages/cf/d4/5e6e5ad11cb53d878bba722f33eaf0a8db60083ed26a565b9bf735ee42c5/adafdr-0.0.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8d18b576afe149a76666ab5e748119e2", "sha256": "511845d70088a490748e0e82f76e8b936bdf7ee1b417a1ecadd64ec1903fc290" }, "downloads": -1, "filename": "adafdr-0.0.8.tar.gz", "has_sig": false, "md5_digest": "8d18b576afe149a76666ab5e748119e2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2431031, "upload_time": "2018-11-01T02:56:52", "url": "https://files.pythonhosted.org/packages/44/0c/bd81dfe4139a74ebfd095e4b07daab7750ba6751b781b778eef95c1f288f/adafdr-0.0.8.tar.gz" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "6d70165124249ef576dd03ae29299a30", "sha256": "3858177a772f720c8cfae1934d6d3745c0710d154d4bba8c6306ccc1b1fc183b" }, "downloads": -1, "filename": "adafdr-0.0.9-py3-none-any.whl", "has_sig": false, "md5_digest": "6d70165124249ef576dd03ae29299a30", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2344703, "upload_time": "2018-11-01T04:53:15", "url": "https://files.pythonhosted.org/packages/47/4d/3ba03354a5c18cdbeec8442fddec652035875e81bb34bbb3b5f8eeda5a29/adafdr-0.0.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1f11eb21be77881b495c8906f031824b", "sha256": "9354e02dbc6851edbbf85150ba4ff517722f243ecefb9c4d00a04501aa20bb96" }, "downloads": -1, "filename": "adafdr-0.0.9.tar.gz", "has_sig": false, "md5_digest": "1f11eb21be77881b495c8906f031824b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2431043, "upload_time": "2018-11-01T04:53:17", "url": "https://files.pythonhosted.org/packages/aa/0b/1f74f2ba6bc5afab8e8b88b59db329d3332f930da911aec47ea92df62df9/adafdr-0.0.9.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "f7fa1fd4307e96d832503552543fa71f", "sha256": "1226076f29d7e246e6b2fb32a58037907c25acd66f51ffb277ce64ed80b2bc1b" }, "downloads": -1, "filename": "adafdr-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "f7fa1fd4307e96d832503552543fa71f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12128593, "upload_time": "2018-11-09T22:55:57", "url": "https://files.pythonhosted.org/packages/d7/2e/84c62231a0c53b543b18173968d12933c0057a24097c03043da708e13342/adafdr-0.1.0-py3-none-any.whl" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "b6daab68995d0688c98db468ed6df48d", "sha256": "f9da3c096fa95e44e9686e7c33cee6fe7b7d9f317b22af8916ad0a9b5a22c306" }, "downloads": -1, "filename": "adafdr-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "b6daab68995d0688c98db468ed6df48d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12128592, "upload_time": "2018-11-09T22:57:21", "url": "https://files.pythonhosted.org/packages/a3/97/817922db889eca0f179dafc478cb9e5ca978d47e102398cfe4d8245b2931/adafdr-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8fa9d18df277e06155808dbd0ffa3ef3", "sha256": "466bc3bad6551f43ea25b85837b0f9c6e8da1786ceab8fb9b005ce0eb1eb5f23" }, "downloads": -1, "filename": "adafdr-0.1.2.tar.gz", "has_sig": false, "md5_digest": "8fa9d18df277e06155808dbd0ffa3ef3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11967754, "upload_time": "2018-11-09T22:57:26", "url": "https://files.pythonhosted.org/packages/4f/94/34bfe93da71797c725faa888983392d5fbd01d08b281d4acae5448c31bdf/adafdr-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "5507c638043daf4c91047c4e5b102675", "sha256": "7bb99dad60699f7bb132ebcd8f47c5390babc9b2ea209de51aab8350858ca42a" }, "downloads": -1, "filename": "adafdr-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "5507c638043daf4c91047c4e5b102675", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12128592, "upload_time": "2018-11-09T23:24:58", "url": "https://files.pythonhosted.org/packages/2d/e9/6d765cdfc74e04b5803d2065f47308f535f523f013390f5328e7d4c355ec/adafdr-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a0a73b6c228abe2cc7b48b730fd0afe7", "sha256": "7677b514ad8882922aba8d337579e58539b86cc9eb90cddbe12ae0928b40e260" }, "downloads": -1, "filename": "adafdr-0.1.3.tar.gz", "has_sig": false, "md5_digest": "a0a73b6c228abe2cc7b48b730fd0afe7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11967743, "upload_time": "2018-11-09T23:25:03", "url": "https://files.pythonhosted.org/packages/b6/29/0e512110f160e8bfa5498b8c4a04b3a9dd00a11221664a44635371898b45/adafdr-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "b30b06f6f76a65f3e7a09eb8024a4942", "sha256": "e7cd28b2cf6f3af659259d0417c008f82497f1bdaf666be43b85f8aab23363a5" }, "downloads": -1, "filename": "adafdr-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "b30b06f6f76a65f3e7a09eb8024a4942", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12128691, "upload_time": "2018-12-19T09:17:11", "url": "https://files.pythonhosted.org/packages/72/42/bedce3822eea387e046680920aa8f3fb6038259d57b37bb63f36ccc76375/adafdr-0.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f8f1dbe9ae97ec7e3ea52f35f6b6ba37", "sha256": "535e83994dd05b6af8500c449ad7ce57f4b12be8ba55a20fb1f64167e01dea67" }, "downloads": -1, "filename": "adafdr-0.1.4.tar.gz", "has_sig": false, "md5_digest": "f8f1dbe9ae97ec7e3ea52f35f6b6ba37", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11967941, "upload_time": "2018-12-19T09:17:17", "url": "https://files.pythonhosted.org/packages/a1/23/af43a32f76e5b4dc201541a1aa1513b86d60c4f7ce56d1221c5918ae843d/adafdr-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "9811db0711f2b974679c171d8b0e6433", "sha256": "84f3b525e00bbe12b7cf728c2ba357ab39f7b0fbd773f0257fbf8cbadaef365a" }, "downloads": -1, "filename": "adafdr-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "9811db0711f2b974679c171d8b0e6433", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12129485, "upload_time": "2018-12-30T02:29:11", "url": "https://files.pythonhosted.org/packages/40/ec/7bbce5349f1055780f303ed382ffaafc96e34218d813cc1fb43287fcffad/adafdr-0.1.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8793f0859aed353461d7c4dc8e34fef0", "sha256": "fbc227787c21b34db1c8287f42b8f07a43807635e5825a9cb86c3cae8cad4327" }, "downloads": -1, "filename": "adafdr-0.1.5.tar.gz", "has_sig": false, "md5_digest": "8793f0859aed353461d7c4dc8e34fef0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11969472, "upload_time": "2018-12-30T02:29:15", "url": "https://files.pythonhosted.org/packages/02/ac/6e493ad04e621f28471416d0e13e422e8f88818feba8b251d1b8eff3d268/adafdr-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "293bd695d31860a7c97237f3d5283d6a", "sha256": "beb2168a1423b917a93cd3d1c6a4d74ba67f76677aa9661728503c78bc44516f" }, "downloads": -1, "filename": "adafdr-0.1.6-py3-none-any.whl", "has_sig": false, "md5_digest": "293bd695d31860a7c97237f3d5283d6a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12131388, "upload_time": "2019-05-10T00:13:10", "url": "https://files.pythonhosted.org/packages/32/98/caf9a524594113f18788bbd684901e7efbf9ce5284b16cdef385853d30f5/adafdr-0.1.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1c26cf9790eb2084fa98485c46ebd51e", "sha256": "ebdf7ae16b3288eb83d9b7142e458207d6d35c89a3976bf1a52598631cc4bb01" }, "downloads": -1, "filename": "adafdr-0.1.6.tar.gz", "has_sig": false, "md5_digest": "1c26cf9790eb2084fa98485c46ebd51e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11971670, "upload_time": "2019-05-10T00:13:15", "url": "https://files.pythonhosted.org/packages/fa/cc/6d94b43e4f1875d04d3205d85448b1caf23880d900cb8b456e0f25976b3e/adafdr-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "75d8908f8fd450500a0dd59c28d58fc3", "sha256": "7d7ba5db3c663bbc75426373475683a66ec0640c551f6e69135b10b6321199be" }, "downloads": -1, "filename": "adafdr-0.1.7-py3-none-any.whl", "has_sig": false, "md5_digest": "75d8908f8fd450500a0dd59c28d58fc3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12131386, "upload_time": "2019-05-10T00:16:47", "url": "https://files.pythonhosted.org/packages/a8/15/be3bfa04c2523cbac2564fa505258a682de3aa92c50a74c84743b729cf79/adafdr-0.1.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "59fec78f0ec5802c6c4b134bdd8a3181", "sha256": "a50b916da214bd75d923c1c07ae93618ab7e5fab6c2f6972c511a8ef27a12e51" }, "downloads": -1, "filename": "adafdr-0.1.7.tar.gz", "has_sig": false, "md5_digest": "59fec78f0ec5802c6c4b134bdd8a3181", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11971655, "upload_time": "2019-05-10T00:16:52", "url": "https://files.pythonhosted.org/packages/50/c4/32bfba84a04b183bb866353c7e2aac798659431fcaf962d2169a10bdced5/adafdr-0.1.7.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "75d8908f8fd450500a0dd59c28d58fc3", "sha256": "7d7ba5db3c663bbc75426373475683a66ec0640c551f6e69135b10b6321199be" }, "downloads": -1, "filename": "adafdr-0.1.7-py3-none-any.whl", "has_sig": false, "md5_digest": "75d8908f8fd450500a0dd59c28d58fc3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12131386, "upload_time": "2019-05-10T00:16:47", "url": "https://files.pythonhosted.org/packages/a8/15/be3bfa04c2523cbac2564fa505258a682de3aa92c50a74c84743b729cf79/adafdr-0.1.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "59fec78f0ec5802c6c4b134bdd8a3181", "sha256": "a50b916da214bd75d923c1c07ae93618ab7e5fab6c2f6972c511a8ef27a12e51" }, "downloads": -1, "filename": "adafdr-0.1.7.tar.gz", "has_sig": false, "md5_digest": "59fec78f0ec5802c6c4b134bdd8a3181", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11971655, "upload_time": "2019-05-10T00:16:52", "url": "https://files.pythonhosted.org/packages/50/c4/32bfba84a04b183bb866353c7e2aac798659431fcaf962d2169a10bdced5/adafdr-0.1.7.tar.gz" } ] }