{ "info": { "author": "Upamanyu Ghose, Arvind Srinivasan", "author_email": "titoghose@gmail.com, 96arvind@gmail.com", "bugtrack_url": null, "classifiers": [ "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "[![Documentation Status](https://readthedocs.org/projects/pytrack-ntu/badge/?version=latest)](https://pytrack-ntu.readthedocs.io/en/latest/?badge=latest)\n[![Build Status](https://travis-ci.org/titoghose/PyTrack.svg?branch=master)](https://travis-ci.org/titoghose/PyTrack)\n[![codecov](https://codecov.io/gh/titoghose/PyTrack/branch/master/graph/badge.svg)](https://codecov.io/gh/titoghose/PyTrack)\n[![Documentation Status](https://readthedocs.org/projects/pytrack-ntu/badge/?style=flat-square)](https://pytrack-ntu.rtfd.io)\n\n# PyTrack\n\nThis is a toolkit to analyse and visualize eye tracking data. It provides the following functionality:\n\n## Feature Extraction\nThis involves extraction of parameters or meta-data related to blinks, fixations, saccades, microsaccades and pupil diameter. The features extracted are as follows:\n\n| Blink | Fixations | Saccades | Microsaccades | Pupil | Revisits to AOI/ROI |\n|------------ | ----------- | --------- | ------------- | ---------------- |--------------------- |\n| Count | Count | Count | Count | Size | Count |\n| Avg Duration | Avg Duration | Velocity | Velocity | Time to Peak | First Pass Duration |\n| Max Duration | Max Duration | Amplitude | Amplitude | Peak Size | Second Pass Duration |\n| | | Duration | Duration | Avg Size | |\n| | | | | Slope | |\n| | | | | Area Under Curve | |\n\n## Statistical Analysis\nAfter extraction of features, PyTrack can perform tests such as the student T-Test, Welch T-Test, ANOVA, RMANOVA, n-way ANOVA and Mixed ANOVA. The between and within group factors can be specified.\n\n## Visualization\nPyTrack can generate a variety of plots. The visualization is through an interactive GUI. The plots that can be generated are as follows:\n1. Fixation plot\n2. Individual subject gaze heat map\n3. Aggregate subject gaze heat map\n4. Dynamic pupil size and gaze plot\n5. Microsaccade position and velocity plot\n6. Microsaccade main sequence plot\n\n\n\n# Table of Contents\n- [PyTrack](#PyTrack)\n - [Feature Extraction](#Feature-Extraction)\n - [Statistical Analysis](#Statistical-Analysis)\n - [Visualization](#Visualization)\n- [Table of Contents](#Table-of-Contents)\n- [Documentation](#Documentation)\n- [Installation](#Installation)\n- [Sample Data](#Sample-Data)\n- [Using PyTrack](#Using-PyTrack)\n - [Setup](#Setup)\n - [Running PyTrack](#Running-PyTrack)\n- [Advanced Functionality](#Advanced-Functionality)\n - [Statistical Tests](#Statistical-Tests)\n - [Accessing extracted features as a dictionary](#Accessing-extracted-features-as-a-dictionary)\n - [Using PyTrack in Stand-alone mode](#Using-PyTrack-in-Stand-alone-mode)\n- [Authors](#Authors)\n- [License](#License)\n- [Acknowledgments](#Acknowledgments)\n\n# Documentation\nThe detailed documentation for the methods and classes of PyTrack can be found [here](https://pytrack-ntu.readthedocs.io/en/latest/)\n\n# Installation\n\nPyTrack is built for Python3 because support for the Python2 is going to be stopped at the end of 2019. In order to install PyTrack please use any of the following:\n\n```\npython3 -m pip install PyTrack-NTU\npip install PyTrack-NTU\npip3 install PyTrack-NTU\n```\n\nPlease make sure that pip is for Python3 and not Python2. Python3 can be found [here](https://www.python.org/downloads/) or Anaconda Python3 can be found [here](https://www.anaconda.com/distribution/).\n\n**NOTE:** Python3 can be installed alongside Python2\n\n# Sample Data\nIn order to test the toolkit some sample data in SMI, EyeLink and Tobii formats can be found [here](https://osf.io/f9mey/files/). The .txt file in the folder describes the data found. The SMI and Tobii files have been taken from [here](http://www2.hu-berlin.de/eyetracking-eeg/testdata.html).\n\n# Using PyTrack\n\n## Setup\n\nBefore running the framework, lets setup the folder so PyTrack can read and save all the generated figures in one central location and things are organised.\n\nCreate a directory structure like the one shown below. It is essential for the listed directories to be present for the proper functioning of PyTrack.\n\n**NOTE:** The sample data has a folder called NTU_Experiment which is already organised in the following manner. It can be used as reference.\n\n```\n[Experiment-Name]\n|\n\u00e2\u201d\u201d\u00e2\u201d\u20ac\u00e2\u201d\u20ac Data/\n\u00e2\u201d\u201a \u00e2\u201d\u201a subject_001.[asc/txt/tsv/...]\n\u00e2\u201d\u201a \u00e2\u201d\u201a subject_002.[asc/txt/tsv/...]\n| |__ ......\n\u00e2\u201d\u201a\n\u00e2\u201d\u201d\u00e2\u201d\u20ac\u00e2\u201d\u20ac Stimulus/\n\u00e2\u201d\u201a \u00e2\u201d\u201a stim_1.[jpg/jpeg]\n\u00e2\u201d\u201a \u00e2\u201d\u201a stim_2.[jpg/jpeg]\n| |__ ......\n|\n\u00e2\u201d\u201d\u00e2\u201d\u20ac\u00e2\u201d\u20ac [Experiment-Name].json\n\n```\n*[Experiment-Name]* stands for the name of your experiment. The rest of the steps will use *NTU_Experiment* as the *[Experiment-Name]* folder.\n\nNow, follow these steps:\n\n1. Place the data of all your subjects in the *Data* folder under the main *NTU_Experiment* folder. Make sure the name of each of the data files is the name of the subjects/paticipants. Replace all spaces( ) with underscores (_).\n\n eg. *waffle_buttersnaps.asc* or *subject_001.asc*\n\n2. For proper visualization of gaze data, its best if you include the stimuli presented during your experiment inside the *Stimuli* folder. Make sure the images have either **jpg, jpeg** or **png** extensions and the names match the names of the stimuli as present in your recorded data.\n\n eg. *stim_1.jpg* or *random_picture.png*\n\n3. The last and final step to setup the experiment directory is to include the experiment description json file. This file should contain the essential details of your experiment. It contains specifications regarding your experiment such as the stimuli you wish to analyse or the participants/subjects you wish to include. Mentioned below is the json file structure. The content below can be copied and pasted in a file called *NTU_Experiment*.json\n\n * \"*Experiment_name*\" should be the same name as the json file without the extension and \"*Path*\" should be the absolute path to your experiment directory without the final \"/\" at the end.\n * The subjects should be added under the \"*Subjects*\" field. You may specify one or more groups of division for your subjects (recommended for between group statistical analysis). **There must be atleast 1 group**.\n * The stimuli names should be added under the \"*Stimuli*\" field and again you may specify one or more types (recommended for between/within stimulus type statistical analysis). **There must be atleast 1 type**.\n * The \"*Control_Questions*\" field is optional. In case you have some stimuli that should be used to standardise/normalise features extracted from all stimuli, specify the names here. **These stimuli must be present under the \"*Stimuli*\" field under one of the types**.\n * **The field marked \"*Columns_of_interest*\" should not be altered**.\n * Under \"*Analysis_Params*\", just change the values of \"Sampling_Freq\", \"Display_height\" and \"Display_width\" to match the values of your experiment.\n\n **Note**: If you wish to analyse only a subset of your stimuli or subjects, specify only the ones of interest in the json file. The analysis and visualization will be done only for the ones mentioned in the json file.\n\n**NOTE:** A sample json file is present in the NTU_Experiment folder in the sample data. You can just edit it to make your work simpler.\n\n```json\n{\n \"Experiment_name\":\"NTU_Experiment\",\n \"Path\":\"abcd/efgh/NTU_Experiment\",\n \"Subjects\":{\n \"group1\":[\n \"Subject_01\",\n \"Subject_02\"\n ],\n \"group2\":[\n \"Subject_03\",\n \"Subject_04\"\n ]\n },\n \"Stimuli\":{\n \"Type_1\":[\n \"Stim_1\",\n \"Stim_2\"\n ],\n \"Type_2\":[\n \"Stim_3\",\n \"Stim_4\"\n ],\n },\n \"Control_Questions\":[\n \"Stim_1\"\n ],\n \"Columns_of_interest\":{\n \"EyeTracker\":[\n \"GazeLeftx\",\n \"GazeLefty\",\n \"GazeRightx\",\n \"GazeRighty\",\n \"PupilLeft\",\n \"PupilRight\",\n \"FixationSeq\",\n \"GazeAOI\"\n ],\n \"Extra\":[\n \"EventSource\"\n ]\n },\n \"Analysis_Params\":{\n \"EyeTracker\":{\n \"Sampling_Freq\": 1000,\n \"Display_width\": 1920,\n \"Display_height\": 1280\n }\n }\n}\n\n```\n\n## Running PyTrack\n\n**NOTE:** All sample segments shown below are for the NTU_Experiment folder in the sample data.\n\n1. In order to use the features, the **first step is to convert the raw data into a readable format**. In order to do so, the following code segment can be used:\n\n ```python\n from PyTrack.formatBridge import generateCompatibleFormat\n\n # For windows the path will look like \n # a. exp_path=\"complete\\\\path\\\\to\\\\NTU_Experiment\"\n # or b. exp_path=r\"complete\\path\\to\\NTU_Experiment\"\n generateCompatibleFormat(exp_path=\"complete/path/to/NTU_Experiment\",\n device=\"eyelink\",\n stim_list_mode='NA',\n start='start_trial',\n stop='stop_trial',\n eye='B')\n\n ```\n\n To get a detailed understanding of the parameters of *generateCompatibleFormats* and modify it to your needs see the documentation [here](https://pytrack-ntu.readthedocs.io/en/latest/PyTrack.html#formatBridge.generateCompatibleFormat).\n\n2. The **second step is to create an object of the Experiment class**.\n\n ```python\n from PyTrack.Experiment import Experiment\n\n # Creating an object of the Experiment class\n exp = Experiment(json_file=\"complete/path/to/NTU_Experiment/NTU_Experiment.json\")\n ```\n\n3. Now you can run the **feature extraction and statistical tests**\n\n ```python\n # Instantiate the meta_matrix_dict of an Experiment to find and extract all features from the raw data\n exp.metaMatrixInitialisation()\n\n # Calling the function for the statistical analysis of the data\n exp.analyse(parameter_list={\"all\"},\n between_factor_list=[\"Subject_type\"],\n within_factor_list=[\"Stimuli_type\"],\n statistical_test=\"anova\",\n file_creation=True)\n\n # Does not run any statistical test. Just saves all the data as csv files.\n exp.analyse(parameter_list={\"all\"},\n statistical_test=\"None\",\n file_creation=True)\n\n ```\n To get a detailed understanding of the parameters of the *analyse* function: [here](https://pytrack-ntu.readthedocs.io/en/latest/PyTrack.html#experiment.analyse)\n\n To get a detailed understanding of the parameters of the *metaMatrixInitialisation* function: [here](https://pytrack-ntu.readthedocs.io/en/latest/PyTrack.html#experiment.metaMatrixInitialisation)\n\n4. For **visualization**\n\n ```python\n # This function call will open up a GUI which you can use to navigate the entire visualization process\n exp.visualizeData()\n ```\n\n\n# Advanced Functionality\n\n## Statistical Tests\nThe Experiment class contains a function called analyse() which is used to perform statistical analysis (eg: ANOVA or T test), by default there is only 1 between group factor (\"Subject_type\") and 1 within group factor (\"Stimuli_type\") that is considered. If additional factors need to be considered they need to added to the json file.\n\n* For example if Gender is to be considered as an additional between group factor then in the json file, under \"Subjects\", for each subject, a corresponding dicitionary must be created where you mention the factor name and the corresponding value. Please also note that the square brackets ('[', ']') after group type need to be changed to curly brackets ('{', '}').\n\n* Similarly for Stimuli, for example, if you are showing Words and Pictures to elicit different responses from a user and you additonally have 2 different brightness levels (\"High\" and \"Low\") then mention Brightness as an additional within group factor.\n\n\n```json\n{\n \"Subjects\":{\n \"group1\":{\n \"Subject_01\": {\"Gender\": \"M\"},\n \"Subject_02\": {\"Gender\": \"F\"}\n },\n \"group2\":{\n \"Subject_03\": {\"Gender\": \"F\"},\n \"Subject_04\": {\"Gender\": \"M\"}\n }\n },\n \"Stimuli\":{\n \"Type_1\":{\n \"Stim_1\": {\"Brightness\": \"High\"},\n \"Stim_2\": {\"Brightness\": \"Low\"}\n },\n \"Type_2\":{\n \"Stim_3\": {\"Brightness\": \"Low\"},\n \"Stim_4\": {\"Brightness\": \"High\"}\n },\n },\n}\n\n```\nSample code segment to use the advanced statistical test:\n\n```python\nfrom PyTrack.Experiment import Experiment\n\nexp = Experiment(json_file=\"abcd/efgh/NTU_Experiment/NTU_Experiment.json\")\n\nexp.metaMatrixInitialisation()\n\nexp.analyse(parameter_list={\"all\"},\n between_factor_list=[\"Subject_type\", \"Gender\"],\n within_factor_list=[\"Stimuli_type\", \"Brightness\"],\n statistical_test=\"anova\",\n file_creation=True)\n\n```\n\n## Accessing extracted features as a dictionary\n\nIn case you wish to get the extracted features for a particilar Subject on a particular Stimulus:\n\n```python\nfrom PyTrack.Experiment import Experiment\n\nexp = Experiment(json_file=\"complete/path/to/NTU_Experiment/NTU_Experiment.json\")\n\nsubject_name = \"sub_333\" #specify your own subject's name (must be in json file)\nstimulus_name = \"Alpha1\" #specify your own stimulus name (must be in json file)\n\n# Access metadata dictionary for particular subject and stimulus\nexp.metaMatrixInitialisation()\nsingle_meta = exp.getMetaData(sub=subject_name,\n stim=stimulus_name)\n\n# Access metadata dictionary for particular subject and averaged for stimulus types\nexp.metaMatrixInitialisation(average_flag=True)\nagg_type_meta = exp.getMetaData(sub=subject_name,\n stim=None)\n\n```\n\n## Using PyTrack in Stand-alone mode\nThe stand-alone design requires only interaction with tyhe Stimulus class. This is recommended if you wish to extract features or visualize data for only 1 subject on a particular stimulus.\n\n\n```python\nfrom PyTrack.Stimulus import Stimulus\nfrom PyTrack.formatBridge import generateCompatibleFormat\nimport pandas as pd\nimport numpy as np\n\n\n# function to convert data to generate csv file for data file recorded using EyeLink on both eyes and the stimulus name specified in the message section\ngenerateCompatibleFormat(exp_path=\"/path/to/smi_eyetracker_freeviewing.txt\",\n device=\"smi\",\n stim_list_mode='NA',\n start='12',\n stop='99')\n\ndf = pd.read_csv(\"/path/to/smi_eyetracker_freeviewing.csv\")\n\n# Dictionary containing details of recording. Please change the values according to your experiment. If no AOI is desired, set aoi value to [0, 0, Display_width, Display_height]\nsensor_dict = {\n \"EyeTracker\":\n {\n \"Sampling_Freq\": 1000,\n \"Display_width\": 1280,\n \"Display_height\": 1024,\n \"aoi\": [390, 497, 759, 732]\n }\n }\n\n# Creating Stimulus object. See the documentation for advanced parameters.\nstim = Stimulus(path=\"path/to/experiment/folder\",\n data=df,\n sensor_names=sensor_dict)\n\n# Some functionality usage. See documentation of Stimulus class for advanced use.\nstim.findEyeMetaData()\nfeatures = stim.sensors[\"EyeTracker\"].metadata # Getting dictioary of found metadata/features\n\n# Visualization of plots\nstim.gazePlot(save_fig=True)\nstim.gazeHeatMap(save_fig=True)\nstim.visualize()\n\n# Extracting features\nMS, ms_count, ms_duration = stim.findMicrosaccades(plot_ms=True)\n\n```\nSee the stimulus class for more details on the functions: [here](https://pytrack-ntu.readthedocs.io/en/latest/PyTrack.html#Stimulus.Stimulus)\n\n\n# Authors\n\n* **Upamanyu Ghose** ([github](https://github.com/titoghose) | [email](titoghose@gmail.com))\n* **Arvind A S** ([github](https://github.com/arvindas) | [email](96arvind@gmail.com))\n\nSee also the list of [contributors](https://github.com/titoghose/PyTrack/contributors) who participated in this project.\n\n# License\n\nThis project is licensed under the GPL3 License - see the [LICENSE.txt](LICENSE.txt) file for details\n\n# Acknowledgments\n\n* We would like to thank [Dr. Dominique Makowski](https://dominiquemakowski.github.io/) for helping us develop this toolkit.\n\n* The formatsBridge module was adapted from the work done by [Edwin Dalmaijer](https://github.com/esdalmaijer) in [PyGazeAnalyser](https://github.com/esdalmaijer/PyGazeAnalyser/).\n\n* This work was done under the supervision of [Dr. Chng Eng Siong](http://www.ntu.edu.sg/home/aseschng/) - School of Computer Science and Engineering NTU and in collaboration with [Dr. Xu Hong](http://www.ntu.edu.sg/home/xuhong/) - School of Humanitites and Social Sciences NTU.\n\n* We extend our thanks to the **Department of Computer Science and Engineering Manipal Isntitute of Technology**[[link]](https://manipal.edu/mit/department-faculty/department-list/computer-science-and-engineering.html) and the **Department of Computer Science and Information Systems BITS Pilani, Hyderabad Campus** [[link]](https://www.bits-pilani.ac.in/hyderabad/computerscience/ComputerScience).\n\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://pytrack-ntu.readthedocs.io", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "PyTrack-NTU", "package_url": "https://pypi.org/project/PyTrack-NTU/", "platform": "", "project_url": "https://pypi.org/project/PyTrack-NTU/", "project_urls": { "Homepage": "https://pytrack-ntu.readthedocs.io" }, "release_url": "https://pypi.org/project/PyTrack-NTU/1.0.2/", "requires_dist": [ "numpy (>=1.16.2)", "scipy (==1.2.1)", "matplotlib (>=3.0.2)", "pandas", "Pillow", "sqlalchemy", "statsmodels", "pingouin" ], "requires_python": "", "summary": "An end-to-end python analysis toolkit for eye tracking", "version": "1.0.2" }, "last_serial": 5798444, "releases": { "0.0.10": [ { "comment_text": "", "digests": { "md5": "6dbe697ece25e1d328ba06a74cf257aa", "sha256": "3a87bcfabcf623dd84abd20c5906369ecf67e84b2ad9d076be526b9428ae9b26" }, "downloads": -1, "filename": "PyTrack_NTU-0.0.10-py3-none-any.whl", "has_sig": false, "md5_digest": "6dbe697ece25e1d328ba06a74cf257aa", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 56864, "upload_time": "2019-05-13T04:23:35", "url": "https://files.pythonhosted.org/packages/af/b9/5c7d013c2e418642505e6047fe5f502c88793794f0409e66b24d2ed23a50/PyTrack_NTU-0.0.10-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "947c33a1187c7a1eac1460337a6fd4a2", "sha256": "ff098ede2abce3896e030ba1f762c9187674fc0565dab9df13388adad591abcf" }, "downloads": -1, "filename": "PyTrack-NTU-0.0.10.tar.gz", "has_sig": false, "md5_digest": "947c33a1187c7a1eac1460337a6fd4a2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42859, "upload_time": "2019-05-13T04:23:38", "url": "https://files.pythonhosted.org/packages/c5/89/07c496547bbba29bd77ef6371412715488d7059ef0462fa09a416d8ecf5c/PyTrack-NTU-0.0.10.tar.gz" } ], "0.0.11": [ { "comment_text": "", "digests": { "md5": "65c7da5507c4f74e444e6d479c28a550", "sha256": "b16beae08671d7937de2da5a5ba4b7079417927f531d2959ca0ff34d57fe523d" }, "downloads": -1, "filename": "PyTrack_NTU-0.0.11-py3-none-any.whl", "has_sig": false, "md5_digest": "65c7da5507c4f74e444e6d479c28a550", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 56920, "upload_time": "2019-05-13T06:24:39", "url": "https://files.pythonhosted.org/packages/53/0c/afe3a29039c53f0684d3e467d1beb87e45c777ee9718e538fb54adab86a1/PyTrack_NTU-0.0.11-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d2e62745c62887ac5d015e2880b64d53", "sha256": "18ff3468bff803b2aa288c028db348a87a3408afb5507e0d4b7d92b7491736f1" }, "downloads": -1, "filename": "PyTrack-NTU-0.0.11.tar.gz", "has_sig": false, "md5_digest": "d2e62745c62887ac5d015e2880b64d53", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42942, "upload_time": "2019-05-13T06:24:41", "url": "https://files.pythonhosted.org/packages/2c/40/7dd9c45d2c345a033fb2ac699aeb6ae6e9bde681295f86248d2b02f59060/PyTrack-NTU-0.0.11.tar.gz" } ], "0.0.12": [ { "comment_text": "", "digests": { "md5": "d8317f5e4475d066f7783d56d3660db3", "sha256": "bb661263519743d8d05cf90252bf3efb8a659a8312ce4bacbecc677abdfaa9ed" }, "downloads": -1, "filename": "PyTrack_NTU-0.0.12-py3-none-any.whl", "has_sig": false, "md5_digest": "d8317f5e4475d066f7783d56d3660db3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 58068, "upload_time": "2019-05-23T07:37:35", "url": "https://files.pythonhosted.org/packages/e8/ad/e3dd5f6343f8ef40069c64c507e15fae2c25479d91569b52177580b25cdd/PyTrack_NTU-0.0.12-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3d180b6b221b895a95f23208654f27df", "sha256": "8183dce58936bb1d1f81da63519cb2b0db9d208f4e91747dc674a5967edd1260" }, "downloads": -1, "filename": "PyTrack-NTU-0.0.12.tar.gz", "has_sig": false, "md5_digest": "3d180b6b221b895a95f23208654f27df", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44333, "upload_time": "2019-05-23T07:37:38", "url": "https://files.pythonhosted.org/packages/e9/3b/ab09726aac93f2e722d899fc2c99d1d87ce25a4957ee8ba4f71ccc2e18f0/PyTrack-NTU-0.0.12.tar.gz" } ], "0.0.13": [ { "comment_text": "", "digests": { "md5": "6850a510c8f6ca2e5bfa140ba33fe8d9", "sha256": "1236f4cb8f7b28a8f564eb78b918b25b0f006a39161870ef45634e983e85df4c" }, "downloads": -1, "filename": "PyTrack_NTU-0.0.13-py3-none-any.whl", "has_sig": false, "md5_digest": "6850a510c8f6ca2e5bfa140ba33fe8d9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 58551, "upload_time": "2019-06-27T15:52:00", "url": "https://files.pythonhosted.org/packages/c0/a2/3b1b2331e20f4f3631e32cc131b2ec499ebeab694ce2f56f568b4c0e1c69/PyTrack_NTU-0.0.13-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6610e66272cc0aa2b2eee50c3a92b246", "sha256": "fb8ded850146476106d47e6b96f1bf7cc3c6047a997d1b66dd21d0c210637b5f" }, "downloads": -1, "filename": "PyTrack-NTU-0.0.13.tar.gz", "has_sig": false, "md5_digest": "6610e66272cc0aa2b2eee50c3a92b246", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44813, "upload_time": "2019-06-27T15:52:03", "url": "https://files.pythonhosted.org/packages/7c/1a/6affd98ac377164227c3da7f1da853009a85442a45f03931c541e580798c/PyTrack-NTU-0.0.13.tar.gz" } ], "0.0.14": [ { "comment_text": "", "digests": { "md5": "4e6002c1e7100136cad782144bd50bcc", "sha256": "7631c5a855aad01b3506074b62cba73535f89b61dde60512adb319a84d12949c" }, "downloads": -1, "filename": "PyTrack_NTU-0.0.14-py3-none-any.whl", "has_sig": false, "md5_digest": "4e6002c1e7100136cad782144bd50bcc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 58547, "upload_time": "2019-06-28T10:31:06", "url": "https://files.pythonhosted.org/packages/11/5d/8d46412761dfed2607601226e96d2c70b32bed00fe92d663562b2e6187c9/PyTrack_NTU-0.0.14-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c207a1c308d944fff7227bffe5f96b9f", "sha256": "bd7177f9a9de2f057ab028d0f8695db2170d7a4a7050ae84b5976be7366ad013" }, "downloads": -1, "filename": "PyTrack-NTU-0.0.14.tar.gz", "has_sig": false, "md5_digest": "c207a1c308d944fff7227bffe5f96b9f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44771, "upload_time": "2019-06-28T10:31:08", "url": "https://files.pythonhosted.org/packages/2c/b5/74c20665f98eb65fec059cb2f4992c3590b64af84b2b86438ad55d3a7ecf/PyTrack-NTU-0.0.14.tar.gz" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "36c748c750f3b2ffe6da2193b724a598", "sha256": "08a31871652c073a12e1f7ffb8b00e28015e0ae9ca8cb36c078aaa50c0314256" }, "downloads": -1, "filename": "PyTrack_NTU-0.0.9-py3-none-any.whl", "has_sig": false, "md5_digest": "36c748c750f3b2ffe6da2193b724a598", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 56853, "upload_time": "2019-05-13T04:21:25", "url": "https://files.pythonhosted.org/packages/9a/05/eef8136a5b8ea14b38407c934a0f899c2576c28593ccff6ca5d7af1e19b2/PyTrack_NTU-0.0.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "084cd26eb14e8dc732b7eef0efe03f1f", "sha256": "bb2632f54604e1f61224fee6aac59a2e8f5c9c532d3d2e24e00618f9ab25c211" }, "downloads": -1, "filename": "PyTrack-NTU-0.0.9.tar.gz", "has_sig": false, "md5_digest": "084cd26eb14e8dc732b7eef0efe03f1f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42864, "upload_time": "2019-05-13T04:21:28", "url": "https://files.pythonhosted.org/packages/b4/ef/4dc914de1867e5a56d0e1f089db29abf5e1605471222b28d4c29a07d98d7/PyTrack-NTU-0.0.9.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "c9194a4b61b9b367523e71d47c799d41", "sha256": "9499c17d93b8f80853eb132a44247598305b75bb40f082042f93e71747a2930a" }, "downloads": -1, "filename": "PyTrack_NTU-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "c9194a4b61b9b367523e71d47c799d41", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 59236, "upload_time": "2019-06-30T07:10:53", "url": "https://files.pythonhosted.org/packages/84/d4/c9b7b51a07d98d73a4bad09ccf404e48fbb114f875011da555bb17f740bc/PyTrack_NTU-1.0.0-py3-none-any.whl" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "e501613e2ac62bebe746917b0270644a", "sha256": "82a042a64327d4784ac3fe2174fede3acca4d224d57e8b8a3a6b7e17ead59a39" }, "downloads": -1, "filename": "PyTrack_NTU-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "e501613e2ac62bebe746917b0270644a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 58787, "upload_time": "2019-09-02T17:45:29", "url": "https://files.pythonhosted.org/packages/03/9e/aa093a5f068d39a2d4a14ed4494a4cd37a625bd9175696df432fb520c77a/PyTrack_NTU-1.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f836434fc9adcf37ca4d1dee42534fc1", "sha256": "27b212242cc467a85a8d8747e187be7b7efbb508f86dca6a01cd194a26366581" }, "downloads": -1, "filename": "PyTrack-NTU-1.0.1.tar.gz", "has_sig": false, "md5_digest": "f836434fc9adcf37ca4d1dee42534fc1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50009, "upload_time": "2019-09-02T17:45:31", "url": "https://files.pythonhosted.org/packages/a3/8d/cd84485d281fc98c8d91856cfe76ec4b348a2472aadc2de3687c748bcca1/PyTrack-NTU-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "635bc175999bef504bd8b627876058c8", "sha256": "2d06b51cb0b1cb46b547bb7db96a7cde0e6c39932276678a9cb06e74ffbc8e64" }, "downloads": -1, "filename": "PyTrack_NTU-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "635bc175999bef504bd8b627876058c8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 59291, "upload_time": "2019-09-08T05:41:16", "url": "https://files.pythonhosted.org/packages/39/10/c736dbb7f31d5e97000b89a1f33f92a7acddb4884b37bdef9e2d9a2d4647/PyTrack_NTU-1.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "587e1b1ed135d023224f5529adc9efff", "sha256": "0bfd5c8a690466627c6d746a91acb71bc93687c1729743bac5b7a2eaca5b0bf6" }, "downloads": -1, "filename": "PyTrack-NTU-1.0.2.tar.gz", "has_sig": false, "md5_digest": "587e1b1ed135d023224f5529adc9efff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50479, "upload_time": "2019-09-08T05:41:18", "url": "https://files.pythonhosted.org/packages/37/9e/29eb6fca3f3f569193276a64822c37b15ee10ba46da2f604feb65dff32f3/PyTrack-NTU-1.0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "635bc175999bef504bd8b627876058c8", "sha256": "2d06b51cb0b1cb46b547bb7db96a7cde0e6c39932276678a9cb06e74ffbc8e64" }, "downloads": -1, "filename": "PyTrack_NTU-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "635bc175999bef504bd8b627876058c8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 59291, "upload_time": "2019-09-08T05:41:16", "url": "https://files.pythonhosted.org/packages/39/10/c736dbb7f31d5e97000b89a1f33f92a7acddb4884b37bdef9e2d9a2d4647/PyTrack_NTU-1.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "587e1b1ed135d023224f5529adc9efff", "sha256": "0bfd5c8a690466627c6d746a91acb71bc93687c1729743bac5b7a2eaca5b0bf6" }, "downloads": -1, "filename": "PyTrack-NTU-1.0.2.tar.gz", "has_sig": false, "md5_digest": "587e1b1ed135d023224f5529adc9efff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50479, "upload_time": "2019-09-08T05:41:18", "url": "https://files.pythonhosted.org/packages/37/9e/29eb6fca3f3f569193276a64822c37b15ee10ba46da2f604feb65dff32f3/PyTrack-NTU-1.0.2.tar.gz" } ] }