{ "info": { "author": "Qingyang Ding", "author_email": "dingqy14@mails.tsinghua.edu.cn", "bugtrack_url": null, "classifiers": [], "description": "# VISAR\n\n### VISAR: an interactive tool for dissecting chemical features learned by deep neural network QSAR models\n\nQingyang Ding, Siyu Hou, Songpeng Zu, Yonghui Zhang, Shao Li\n\nBioinformatics Division and Center for Synthetic and Systems Biology, TNLIST/Department of Automation, Tsinghua University, Beijing 100084, China\n\nSchool of Pharmaceutical Science, Tsinghua University, Beijing 100084,\nChina.\n\nPlease contact dingqy14@mails.tsinghua.edu.cn if you have question or suggestions.\n\n## Table of contents \n* [Aims of this project](#aims-of-this-project)\n* [Workflow](#workflow)\n* [Usage instructions](#usage-instructions)\n\n## Aims of this project\n\n(Back to [Table of contents](#table-of-contents).)\n\nWhile many previous works focus on improving predictive merits of the models, few looked into the trained model and check if the model is learning what's truly important, as well as link what have been learned by the model back to useful insights.\n\nHere we took a step forward to interpret the learned features from deep neural network QSAR models, and present VISAR, an interactive tool for visualizing structure-activity relationship and the chemical activity landscape based on the learned features, thus providing deeper insights of the neural network 'black-box'.\nFor a learning task, VISAR firstly provided users with useful functions to build, train and test the deep neural network models.\n\nThe rationale of VISAR workflow is shown in the schematic diagram below:\n\n![avatar](rationale.png)\n\nStarting from a series of trained weights of the neural network QSAR models, VISAR provided visualization tools for dissecting the learned chemical features on 3 levels: 1) on the macro-level, compounds with weighted features are clustered and forming different chemical landscapes regarding different tasks; 2) on the meso-level, within each local cluster of chemicals on the chemical landscape sharing similar sturcture and similar activity, pharmacophoric features could be identified; 3) on the micro-level, the SAR pattern is built for each compound regarding each task.\n\nThe VISAR workflow features:\n- For a learning task, VISAR firstly provided users with useful functions to build, train and test the neural network models.\n- The learned parameters of the models were then mapped back as weights of each atom and were visualized as structural-activity relationship (SAR) patterns, demonstrating the positive and negative contributor substructure suggested by the trained model.\n- VISAR took the transformed features of the chemicals and build activity landscapes, showing the correlation between the descriptor space after model training and the experimental activity space.\n- With the interactive web application of VISAR, users could interactively explore the chemical space and the SAR pattern for each chemical.\n- Users could provide their compounds of interest, and predict target profiles with the trained model, as well as map them on the chemical space for further analysis.\n- The clusters of chemicals on the landscape could be then subject to analysis of active pharmacophores.\n\nWe proposed that VISAR could serve as a helpful workflow for training and interactive analysis of the deep neural network QSAR model.\n\n## Workflow\n\n(Back to [Table of contents](#table-of-contents).)\n\n![avatar](workflow.png)\n\nThe training, testing and result processing pipeline is available in template jupyter notebooks:\n\n- [Train single task regression model](https://github.com/Svvord/visar/blob/master/Template%20--%20single%20task%20regressor%20training%20and%20analysis.ipynb)\n- [Train robust multitask regression model](https://github.com/Svvord/visar/blob/master/Template%20--%20multi-task%20model%20training%20and%20analysis.ipynb)\n\n![avatar](webapp_demo.png)\n\nThe general steps for interactive analysis are:\n- Set the location (including the prefix) of the pre-composed dataframes and the mode of your training. After clicking \"Run\" button on the upper panel, the whole interface would update according to your settings.\n\t- For single task sample dataset, set \"Prefix of the input data:\" as 'VISAR_webapp/data/T107_rep2_50_' with 'Mode of the model:' as 'ST', and then click \"Run\";\n\t- For multitask sample dataset, set 'Prefix of the input data:' as 'VISAR_webapp/data/output_' with 'Mode of the model:' as 'RobustMT', and then click \"Run\".\n\n- Explore the activity profile of the chemical space on the left panel.\nThere are several places allowing for interactive exploring, including: A. color options for the scatter plotting, enabling different color rendering based on eg. different activity of the compounds; B. number of bi-clusters, which correlated with the arrangement of the heatmap on the bottom panel (through trying out different bi-cluster numbers, users could gain an idea of how the activity profile is distributed on the chemical landscape); E. information fo the compounds when hovering your mouse on the scatter plot, displaying its ID, batch ID and the color code for the bi-cluster where it belongs; F. information of the batch when hovering your mouse on the heatmap, displaying its ID and color code for the bi-cluster where it belongs.\n\n- Upon selecting the batch or indivisual compounds on the left panel, visualize chemical structures along with the SAR pattern on the right panel. There are two ways for batch selection: first is to directly click on the heatmap, second is to use the drop-down list (C). As for compound selection, use the tap mode of the scatter plot and click on the points. Since for RobustMT mode, multiple tasks give their corresponding SAR patterns for the compound; thus by selecting SAR task (D), the SAR pattern of the compounds would update accordingly.\n\n- If a custom file is provided during the generation of RUNKEY dataframe, the predictive results for custom compounds could then be displayed by clicking the 'custom data' radio button. This function would allow the users to quickly explore the possible key atoms of their compounds of interests, and facilitate the experiment design.\n\n\n## Usage instructions\n\n(Back to [Table of contents](#table-of-contents).)\n\n1. For model training, a working environment with python=3.6 and CUDA 9.0 is recommended,\nand the environment is depended on: Deepchem, Rdkit,\nTensorflow, Numpy, Pandas, Sklearn, Scipy.\nThe VISAR python package is available for pip install.\n\n```bash\n## Create an environment for model training which depends on deepchem\nconda create -n deepchem_visar python=3.6\nconda activate deepchem_visar\n\n## Install packages\npip install tensorflow-gpu==1.12.0\nconda install scipy # also install six\nconda install matplotlib\nconda install pandas\nconda install seaborn\n\nconda install -c conda-forge scikit-learn # also install joblib\npip install deepchem==2.1.1.dev353\npip install visar # also install bokeh\n\nconda install -c rdkit rdkit # Installs also numpy and pandas\n\nconda install jupyter # Installs also ipykernel\npython -m ipykernel install --user --name deepchem_visar\n```\n\n2. For using VISAR web application in visualising the trained models, the requirements\nfor the environment is fewer, independent of GPU, and could be easily applied\non desktops or laptops of either Windows or macOS platforms with chrome browsers.\nTo use the interactive application, users need to firstly get the local copy of the\nVISAR repository by direct dowloading or\n\n```bash\ngit lfs install # enable large file downloading\ngit lfs clone https://github.com/Svvord/visar.git\n```\n\nThe installation steps are as follows:\n```bash\n## Create an environment for visualization using VISAR web application\nconda create -n visar_viz python=3.6\nconda activate visar_viz\n\n## install packages\nconda install -c conda-forge rdkit # also install numpy and pandas\nconda install -c conda-forge scikit-learn # also install scipy\nconda install matplotlib\nconda install bokeh\nconda install cairosvg\n\n# start the web app\ncd /path/of/visar\nbokeh serve --show VISAR_webapp\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/Svvord/visar", "keywords": "Chemoinformatics,neural network,visualized structure-activity relationship,chemical landscape", "license": "MIT Licence", "maintainer": "S. Hou", "maintainer_email": "housy17@mails.tsinghua.edu.cn", "name": "visar", "package_url": "https://pypi.org/project/visar/", "platform": "any", "project_url": "https://pypi.org/project/visar/", "project_urls": { "Homepage": "https://github.com/Svvord/visar" }, "release_url": "https://pypi.org/project/visar/0.5.0/", "requires_dist": null, "requires_python": "", "summary": "This project aims to train neural networks by compound-protein interactions and provides interpretation of the learned model by interactively showing transformed chemical landscape and visualized SAR for chemicals of interest.", "version": "0.5.0", "yanked": false, "yanked_reason": null }, "last_serial": 6924689, "releases": { "0.1.2": [ { "comment_text": "", "digests": { "md5": "68cb1d50f916d71f7409e3e7f6aaec98", "sha256": "66e55094f1172f19f89a975955fce62b1eb1cb435dc49643265f91e4e0211040" }, "downloads": -1, "filename": "visar-0.1.2.tar.gz", "has_sig": false, "md5_digest": "68cb1d50f916d71f7409e3e7f6aaec98", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13534, "upload_time": "2019-04-14T15:02:28", "upload_time_iso_8601": "2019-04-14T15:02:28.428037Z", "url": "https://files.pythonhosted.org/packages/2d/82/207842db01eb874a65a096a9bab8272a685d92a054170ac567b605ade922/visar-0.1.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "f38b22d63410ba45afa9fe971e648848", "sha256": "fe221f1e088e85a7dbf13f68f0fdb60a584c1845cb9587e1a72e0abe4e896325" }, "downloads": -1, "filename": "visar-0.1.3.tar.gz", "has_sig": false, "md5_digest": "f38b22d63410ba45afa9fe971e648848", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17590, "upload_time": "2019-04-20T05:50:02", "upload_time_iso_8601": "2019-04-20T05:50:02.303863Z", "url": "https://files.pythonhosted.org/packages/4f/6b/55525ff8cd0d6bf1098766e6c2995fe6a1665fab387157f6c77ba840c178/visar-0.1.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.3.1": [ { "comment_text": "", "digests": { "md5": "4ffb324348cb42db073431b32244e625", "sha256": "95a21e96556185fd8adf70db214731220c112d942f3ccf7a2d3c6450f873615b" }, "downloads": -1, "filename": "visar-0.1.3.1.tar.gz", "has_sig": false, "md5_digest": "4ffb324348cb42db073431b32244e625", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17634, "upload_time": "2019-04-20T05:56:09", "upload_time_iso_8601": "2019-04-20T05:56:09.992292Z", "url": "https://files.pythonhosted.org/packages/e5/a7/6f88d38a2b02f6307d9252b0479fa4047ce594b39114548662665f3a727e/visar-0.1.3.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.3.2": [ { "comment_text": "", "digests": { "md5": "eb12bb7c997f69c8927835e086afd840", "sha256": "f64c4d8bf934cdacae4e91bd7182bc2c5bbd3f3637f10a13ac50a3e7d566490b" }, "downloads": -1, "filename": "visar-0.1.3.2.tar.gz", "has_sig": false, "md5_digest": "eb12bb7c997f69c8927835e086afd840", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17651, "upload_time": "2019-04-20T06:01:01", "upload_time_iso_8601": "2019-04-20T06:01:01.180984Z", "url": "https://files.pythonhosted.org/packages/1d/66/2d96b16f79eb15aa70783a19d92e935444521ab507d993dd48618b352ca5/visar-0.1.3.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "16f5b3b71dacbf17d50566ee7f75f1bd", "sha256": "2a33d5e2416e9a43f8ce0eec95eefc2dc1b08cee76242dde072e649e41f5518a" }, "downloads": -1, "filename": "visar-0.1.5.tar.gz", "has_sig": false, "md5_digest": "16f5b3b71dacbf17d50566ee7f75f1bd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21689, "upload_time": "2019-04-20T06:31:15", "upload_time_iso_8601": "2019-04-20T06:31:15.824786Z", "url": "https://files.pythonhosted.org/packages/0b/85/b393591a05de343020043d47797482d2b4dcb852f864e08a077c00e46404/visar-0.1.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.5.1": [ { "comment_text": "", "digests": { "md5": "024ebdb8ff944f86664d0ffc7775113c", "sha256": "4b32a686d963718e4d771254fb484f595df7b3a1482db23030712a00236cae39" }, "downloads": -1, "filename": "visar-0.1.5.1.tar.gz", "has_sig": false, "md5_digest": "024ebdb8ff944f86664d0ffc7775113c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21696, "upload_time": "2019-04-20T09:34:16", "upload_time_iso_8601": "2019-04-20T09:34:16.122549Z", "url": "https://files.pythonhosted.org/packages/a7/37/24e2318773eacf15fa9b080cd00b59ee61824c3f3d36bae6edbc9337cc5e/visar-0.1.5.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.5.2": [ { "comment_text": "", "digests": { "md5": "8db789d3c44ec26af081197a3af88914", "sha256": "a8c6584599bc0c9da675ffeac8098240e25d6ab92455c186b2f5f4e372ae2812" }, "downloads": -1, "filename": "visar-0.1.5.2.tar.gz", "has_sig": false, "md5_digest": "8db789d3c44ec26af081197a3af88914", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21686, "upload_time": "2019-04-25T07:01:30", "upload_time_iso_8601": "2019-04-25T07:01:30.579077Z", "url": "https://files.pythonhosted.org/packages/37/4d/4157cfb0426b297b6ccfd32413aebc5556fe860dbf00391c010c47fb8749/visar-0.1.5.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "b94869c4b28b3edcc0274d2202e8ddfa", "sha256": "58827aaeb35bd20a8c604a63c1db95f24136987b30d8a8ec54aa57238a14c752" }, "downloads": -1, "filename": "visar-0.2.0.tar.gz", "has_sig": false, "md5_digest": "b94869c4b28b3edcc0274d2202e8ddfa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23745, "upload_time": "2019-05-15T04:44:22", "upload_time_iso_8601": "2019-05-15T04:44:22.847596Z", "url": "https://files.pythonhosted.org/packages/24/c7/1a857afba59e2c4ed925bb9531074735fec74ae61b98c40413540f4f3637/visar-0.2.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "8ec9cf209ecae1911720e8d7294a1b57", "sha256": "a213729767d24312f6cc7179d18ddd4da4808a8a0f2a944d4cf2d1abdabd6661" }, "downloads": -1, "filename": "visar-0.3.0.tar.gz", "has_sig": false, "md5_digest": "8ec9cf209ecae1911720e8d7294a1b57", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 46196, "upload_time": "2019-08-23T07:31:55", "upload_time_iso_8601": "2019-08-23T07:31:55.982527Z", "url": "https://files.pythonhosted.org/packages/e8/79/9abf5ead773f2db31ea235df9495752bc47da2ec215de0c76246b063af0d/visar-0.3.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "06cdf3fbed2b879dee3e4833839d8859", "sha256": "2e08245bb20e19dc160db1b69bf8db951f95a9710946d172ec434ee2b015ad35" }, "downloads": -1, "filename": "visar-0.3.1.tar.gz", "has_sig": false, "md5_digest": "06cdf3fbed2b879dee3e4833839d8859", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 46192, "upload_time": "2019-08-23T08:13:06", "upload_time_iso_8601": "2019-08-23T08:13:06.239823Z", "url": "https://files.pythonhosted.org/packages/55/0a/5801d70c59e6f3c31df9f071fb8d9176b1f4513a118f463d2613ffa1dabb/visar-0.3.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "e19e7232bdc59a25242c7430e7588b1f", "sha256": "bc2265e3e44ceefaf8c12b6b72c432b9fc7ea3d3f488638ab67dd484b3962500" }, "downloads": -1, "filename": "visar-0.3.2.tar.gz", "has_sig": false, "md5_digest": "e19e7232bdc59a25242c7430e7588b1f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14316, "upload_time": "2019-08-26T05:54:11", "upload_time_iso_8601": "2019-08-26T05:54:11.182369Z", "url": "https://files.pythonhosted.org/packages/7e/22/361f1843771849d6dc7e919b5559af63af652d28b1baa842ce71af6c89d6/visar-0.3.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "570a0b05c754bd2b3028cb94c9e7ee62", "sha256": "c658f8ba449c157f486a521af7436de4ed244772c156e3198d7127d0ced32f79" }, "downloads": -1, "filename": "visar-0.3.3.tar.gz", "has_sig": false, "md5_digest": "570a0b05c754bd2b3028cb94c9e7ee62", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14259, "upload_time": "2019-08-28T06:21:30", "upload_time_iso_8601": "2019-08-28T06:21:30.839199Z", "url": "https://files.pythonhosted.org/packages/ad/7a/65744278ef2b2848c0f7434660b640a38728f55c55d3d876c638fe9c37b7/visar-0.3.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.4": [ { "comment_text": "", "digests": { "md5": "b6128075eb618e598b7b28c949d11744", "sha256": "07bd14dfeb08a1cce2d41e9a56b6aa3ed8d03246e185217e1e244b7d3e2c565b" }, "downloads": -1, "filename": "visar-0.3.4.tar.gz", "has_sig": false, "md5_digest": "b6128075eb618e598b7b28c949d11744", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25842, "upload_time": "2019-08-28T07:11:25", "upload_time_iso_8601": "2019-08-28T07:11:25.530479Z", "url": "https://files.pythonhosted.org/packages/e0/c5/05319a9f03ee49f74da668b273139748a4b5eb9c90ab16010fe04132b999/visar-0.3.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.5": [ { "comment_text": "", "digests": { "md5": "cec3719e3c7498f79a33674048ce5479", "sha256": "5d509006a645ca179161aee5405ca470e9f146825d375c7200baa3c2c355846c" }, "downloads": -1, "filename": "visar-0.3.5.tar.gz", "has_sig": false, "md5_digest": "cec3719e3c7498f79a33674048ce5479", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14911, "upload_time": "2019-08-30T11:57:34", "upload_time_iso_8601": "2019-08-30T11:57:34.229849Z", "url": "https://files.pythonhosted.org/packages/3d/b5/0f0fbc9146631721ba1d6f4cb459e3faa174f1ca0f875915a3562d0ff6b3/visar-0.3.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.6": [ { "comment_text": "", "digests": { "md5": "c09b4d8d395991ba0f5b70e3af107128", "sha256": "721b59f981a6016655842946dda01e75d448baeba984fceecd3834cd293158a2" }, "downloads": -1, "filename": "visar-0.3.6.tar.gz", "has_sig": false, "md5_digest": "c09b4d8d395991ba0f5b70e3af107128", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4435, "upload_time": "2019-10-22T02:06:35", "upload_time_iso_8601": "2019-10-22T02:06:35.489843Z", "url": "https://files.pythonhosted.org/packages/93/9b/01334d14ad57f5a03a3788cf56375816d0e37e852a116d0b2b3a8454f16e/visar-0.3.6.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.7": [ { "comment_text": "", "digests": { "md5": "d65ece48719fd115c3f7f33c740c1f16", "sha256": "f19288b15c4f24fc8ede2705851ddf929e2528e18718976570acaf6aa29a6134" }, "downloads": -1, "filename": "visar-0.3.7.tar.gz", "has_sig": false, "md5_digest": "d65ece48719fd115c3f7f33c740c1f16", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4433, "upload_time": "2019-11-18T05:07:00", "upload_time_iso_8601": "2019-11-18T05:07:00.380653Z", "url": "https://files.pythonhosted.org/packages/ed/e2/5437790322e986d2f11f901a93c8e9e47b4699c3a262a4be164c71784344/visar-0.3.7.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.8": [ { "comment_text": "", "digests": { "md5": "2941b518eb2fb30527f5f6da3d1a4b4a", "sha256": "163eee3f181b7147ee1a732fcbee2e361b29a18f29bd47b7454c8afd6e0fd37e" }, "downloads": -1, "filename": "visar-0.3.8.tar.gz", "has_sig": false, "md5_digest": "2941b518eb2fb30527f5f6da3d1a4b4a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4439, "upload_time": "2019-12-02T14:51:24", "upload_time_iso_8601": "2019-12-02T14:51:24.571030Z", "url": "https://files.pythonhosted.org/packages/d9/12/af4bf76fd075a7dc4d4a3f2d1f7300f946814b18fb1295ee084a66bcade9/visar-0.3.8.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "6bddce50c0d39b3d8f54c60f1b7a80c6", "sha256": "a35d8cc1ce7e555cdcb2883e50658b4dac055c6b0d413d0e89a69f7236b2f684" }, "downloads": -1, "filename": "visar-0.4.0.tar.gz", "has_sig": false, "md5_digest": "6bddce50c0d39b3d8f54c60f1b7a80c6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15091, "upload_time": "2019-12-04T11:19:51", "upload_time_iso_8601": "2019-12-04T11:19:51.608286Z", "url": "https://files.pythonhosted.org/packages/4a/ce/7d3984952b8d962834ae67c9fec6b23bf957988b0c192ab636f86467bf08/visar-0.4.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "001fea657af4ff4863a34abd8877ee42", "sha256": "e0a79ac4bd4ac248df0767d5c87339c78bd9a13f28d62e3a86e9da5c3862c9c3" }, "downloads": -1, "filename": "visar-0.4.1.tar.gz", "has_sig": false, "md5_digest": "001fea657af4ff4863a34abd8877ee42", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15345, "upload_time": "2019-12-12T08:04:41", "upload_time_iso_8601": "2019-12-12T08:04:41.730952Z", "url": "https://files.pythonhosted.org/packages/4f/14/718e28b6b8a93525582c62ba140220ce761c610d0ac5589ad9d7c63d110f/visar-0.4.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "ada729b0033367a99064a23fa3f6a2ee", "sha256": "19c87443212fdc27c04984346edb36c82ed6c71ffb7e29ac2063cf16e5e80b13" }, "downloads": -1, "filename": "visar-0.5.0.tar.gz", "has_sig": false, "md5_digest": "ada729b0033367a99064a23fa3f6a2ee", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14008, "upload_time": "2020-04-01T02:02:33", "upload_time_iso_8601": "2020-04-01T02:02:33.418195Z", "url": "https://files.pythonhosted.org/packages/e6/e3/c59e72f9c31099c1fc97a756517179193a23ba2bdf62ddae45a900b03d33/visar-0.5.0.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "ada729b0033367a99064a23fa3f6a2ee", "sha256": "19c87443212fdc27c04984346edb36c82ed6c71ffb7e29ac2063cf16e5e80b13" }, "downloads": -1, "filename": "visar-0.5.0.tar.gz", "has_sig": false, "md5_digest": "ada729b0033367a99064a23fa3f6a2ee", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14008, "upload_time": "2020-04-01T02:02:33", "upload_time_iso_8601": "2020-04-01T02:02:33.418195Z", "url": "https://files.pythonhosted.org/packages/e6/e3/c59e72f9c31099c1fc97a756517179193a23ba2bdf62ddae45a900b03d33/visar-0.5.0.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }