{
"info": {
"author": "F. Rodriguez",
"author_email": "frodriguez4600@gmail.com",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 4 - Beta",
"Intended Audience :: Science/Research",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 3.6",
"Topic :: Scientific/Engineering :: Medical Science Apps."
],
"description": "**Spiky** - A Spike Sorting Package\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n**Spiky** will allow you to sort spikes from single electrodes. The\nclustering is performed by a Gaussian Mixture Model (GMM) and vanilla\nExpectation-Maximization (EM) algorithm. To penalize complexity we are\nusing Bayesian Information Criterion (BIC).\n\n**Spiky** is able to run confusion tests to evaluate how prone to\nmisclassification the clusters are. And also provides a cuantitative\nmeassure of how far each cluster is from the rest (in terms of\nmahalanobis distance).\n\nPlease check our \u201cTurorial section\u201d to get an intuition of how to run\n**Spiky**. And don\u2019t forget to keep an eye on the \u201cDescription Section\u201d\nto understand how **Spiky** works.\n\n**Spiky** is available through pypi so if you are runing python in your\ncomputer, go ahead and type in terminal:\n\n::\n\n - pip install Spiky\n\nIf you need python, we strongly recommend you to install **\u201cconda\u201d**.\n(What is conda?: conda is a package and enviroment manager. It will keep\nthings tight and clean).\n\n::\n\n \"Conda\" installation:\n\n On WINDOWS:\n - go to: https://conda.io/miniconda.html and download miniconda.\n - Double-click the .exe file.\n - Follow the instructions on the screen.\n - When installation is finished, from the Start menu,\n open the Anaconda Prompt.\n\n On LINUX:\n - go to: https://conda.io/miniconda.html and download miniconda.\n - Open terminal and use the \"cd\" command to navegate to the folder \n where you downloaded your miniconda file\n - type: \"bash Miniconda3-latest-Linux-x86_64.sh\"\n - Follow the prompts on the installer screens.\n - To make the changes take effect, close and then re-open your \n Terminal window.\n\n On MAC:\n - go to: https://conda.io/miniconda.html and download miniconda \n - Open terminal and use the \"cd\" command to navegate to the folder \n where you downloaded your miniconda file\n - type: \"bash Miniconda3-latest-MacOSX-x86_64.sh\"\n - Follow the prompts on the installer screens.\n - To make the changes take effect, close and then re-open your \n Terminal window.\n\n NOTE: matplotlib needs a framework build to work properly with conda.\n A workaround for this problem is obtained by type in terminal:\n - conda install python.app\n - Use \"pythonw\" rather than \"python\" to run python code\n\n Spiky installation:\n\n Open a terminal and type what comes next:\n - conda create --name snowflake python=3\n - source activate snowflake\n - pip install Spiky\n\n Note: we encourage you to pick a different name for your virtual \n environment. We used \"snowflake\" just as an example\n\nNow you can test **Spiky** by runing one of the available examples. Go\nto TUTORIAL for instructions\n\nBuzsaki dataset\n^^^^^^^^^^^^^^^\n\nCopy the folder called \u201cbuzsaki\u201d that is under \u201cexamples\u201d and paste it\nin your computer\u2019s desktop. The folder contains a dataset obtained from\nBuzsakiLabs. By the way, have you checked his webpage? If you haven\u2019t\ndone it yet, here is the `link `__\n\nThe dataset we have choosen is the simultaneous intracellular and\nextracellular recording from the hippocampus of anesthetized rats hc-1\n\u2018d533101.dat\u2019 which is a good starting point (you can play with other\nexamples later). You can find the dataset details here:\n\n- Henze, DA; Harris, KD; Borhegyi, Z; Csicsvari, J; Mamiya, A; Hirase,\n H; Sirota, A; Buzs\u00e1ki, G (2009): Simultaneous intracellular and\n extracellular recordings from hippocampus region CA1 of anesthetized\n rats. CRCNS.org. `link `__\n\nNow, open a terminal, navegate up to \u201cbuzsaki\u201d folder and type:\n\n::\n\n python buzsaki.py\n\nThe terminal will prompt you with some general information like these:\n\n::\n\n Preprocesing\n Simultaneous spikes deleted: 144\n Interpolated spike deleted: 11\n Threshold: 130.47\n Detected peaks: 2977\n Extra features: Energy, Amplitud, Area\n Preprocessing time: 2.45 sec.\n DONE\n Clustering\n 100% | Elapsed Time: 0:00:04|################|Time: 0:00:04 | Neurons: 4\n Clusters found: 4\n Clustering time: 3.80 sec.\n L-ratios:\n 0: 0.01\n 1: 0.00\n 2: 10.30\n 3: 0.01\n DONE\n\nWhen the process is finished, you should see a picture like the one\nbelow showing the different spikes grouped by cluster:\n\n.. figure:: https://raw.githubusercontent.com/rodriguez-facundo/Spiky/master/examples/buzsaki/images/spikes.png\n :alt: alt text\n\n alt text\n\nThe algorithm has found 4 clusters. We know from ground truth (provided\nby BuzsakiLabs in the form of intracellular recording) that the\nefficiency of the result is arround 90% (because we have found 860\nspikes under the fourth label but the intercellular record shows that\nthere were actually 960 spikes). What happened with the rest? Well some\nof the spikes just don\u2019t show up in the extracellular recording and a\nsmall fraction have been misclassified due to their low amplitud.\n\nLets now imagine for one second that we have no information about the\ngrown truth. So, the first thing we should keep an eye on are the\nL-ratios displayed above. We can see that all of them except the third\none are very low (which is good, it means that the clusters are far away\nfrom each other in terms of mahalanobis distance). So, to understand\nwhat is really going on, we will have to run a blur test.\n\nPlease, close the previews plot and wait for the blur test to finish. A\nprint like this will be shown:\n\n::\n\n Bluring\n 100% | Elapsed Time: 0:00:04|################|Time: 0:00:04 | Neurons: 4\n DONE\n\nAnd finally, a confusion matrix will appear on screen:\n\n.. figure:: https://raw.githubusercontent.com/rodriguez-facundo/Spiky/master/examples/buzsaki/images/confusion.png\n :alt: alt text\n\n alt text\n\nAfter blurring each spike with the noise of its own cluster, the\nalgorithm is able to reproduce the results for clusters 0, 1 and 3 but\nis confusing labels on cluster number 2, so we got our liar.\n\nQuiroga dataset\n^^^^^^^^^^^^^^^\n\nCopy the folder called \u201cQuiroga\u201d that is inside \u201cexamples\u201d and paste it\nin your computer\u2019s desktop. The folder contains a dataset obtained from\nthe Centre for Systems Neuroscience at the University of Leicester. Take\na moment to check their `webpage `__\n\nThe dataset we have choosen is from simulated recording and are\navailable\n`here `__:\n\nNow, open a terminal, navegate up to \u201cQuiroga\u201d folder and type:\n\n::\n\n `python quiroga.py`\n\nThe terminal will prompt you with some general information like these:\n\n::\n\n parameters/parameters.json file loaded correctly.\n Preprocesing\n Simultaneous spikes deleted: 85\n Interpolated spike deleted: 4\n Threshold: 106.75\n Detected peaks: 3336\n Extra features: Energy, Amplitud, Area\n Preprocessing time: 2.91 sec.\n DONE\n Clustering\n 100% | Elapsed Time: 0:00:03|################|Time: 0:00:03 | Neurons: 5\n Clusters found: 5\n CLustering time: 6.61 sec.\n L-ratios:\n 0: 29.42\n 1: 0.00\n 2: 0.00\n 3: 0.00\n 4: 17.12\n DONE\n\nWhen the process is finished, you should see a picture like the one\nbelow showing the different spikes grouped by cluster:\n\n.. figure:: https://raw.githubusercontent.com/rodriguez-facundo/Spiky/master/examples/Quiroga/images/spikes.png\n :alt: alt text\n\n alt text\n\nThe algorithm has found 5 clusters, but ones again, the l-ratios are\ntelling us that 2 of the clusters have spikes that are very close to\nthem, so let\u2019s run a blurring test. Please, close the previews plot and\nwait for the blur test to finish. A print like this will be shown:\n\n::\n\n Bluring\n 100% | Elapsed Time: 0:00:02|################|Time: 0:00:02 | Neurons: 6\n DONE\n\nAnd finally, a confusion matrix will appear on screen:\n\n.. figure:: https://raw.githubusercontent.com/rodriguez-facundo/Spiky/master/examples/Quiroga/images/confusion.png\n :alt: alt text\n\n alt text\n\nWe can see that two of the clusters are mixing spikes.\n\nspiky.New(pfile=\u2018None\u2019, rfile=\u2018None\u2019):\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n::\n\n This is the class constructor. It will create \n an instance of the main spiky class.\n\n PARAMETERS\n pfile : str\n Path to the \u2018.json\u2019 file containing the parameters setting. \n The name is a contraction for parameters_file\n\n rfile : str\n Path to the \u2018.dat\u2019 or \u2018.mat\u2019 file containing the raw data. \n The name is a contraction for raw_data_file.\n\n Notes : \n Use integer 16 to represent the data (float is just a waste of resources). \n The file must contain the data of one dataset, so if you have multiple electrodes \n within the same file, split them up into different files.\n\n ATTRIBUTES\n Note: This attributes will be available ones you call \"run\" within the spiky object that you created.\n\n prms : dict\n Dictionary containing the parameters setting.\n\n raw : ndarray\n Dataset array\n\n thres : float\n Threshold level for spike detection\n\n pks : ndarray\n Array containing the time of spikes\n\n spks : ndarray\n Spikes time series\n\n wvSpks : ndarray\n Wavelet decomposition of spikes\n\n extFeat : ndarray\n Array containing extra features such as Amplitud, Energy, Area\n\n X : ndarray\n Array containing normalized features for clustering\n\n gmm : Gaussian mixture class object\n The gaussian mixture object\n\n labels : ndarray\n Array containing the labels for each spike\n\n lr : ndarray\n L-ratios for each cluster\n\nspiky.New.loadParams(pfile=\u2018None\u2019):\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n::\n\n Loads the \u2018.json\u2019 file containing the parameters setting.\n\n pfile : str\n Path to parameters '.json' file\n\nspiky.New.loadRawArray(rarray):\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n::\n\n Loads an array containing the data set.\n\n rarray : ndarray\n Array containing the dataset\n\nspiky.New.loadRawFile(rfile):\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n::\n\n Loads a \u2018.mat\u2019 or \u2018.dat\u2019 file containing the data set.\n\n rfile : str\n Path to the \u2018.dat\u2019 or \u2018.mat\u2019 file containing the raw data.\n\nspiky.New.filter():\n^^^^^^^^^^^^^^^^^^^\n\n::\n\n Filters dataset using cascaded second-order sections digital \n IIR filter defined by sos. The parameters are taken from the \n \u2018.json\u2019 configuration file. The filter is zero phase-shift\n\nspiky.New.run():\n^^^^^^^^^^^^^^^^\n\n::\n\n Main clustering method. The parameters are set as specified by \u2018.json\u2019 file.\n\nspiky.New,plotClusters():\n^^^^^^^^^^^^^^^^^^^^^^^^^\n\n::\n\n Plots spike clusters as found by \u201crun\u201d method.\n\nspiky.New.blur():\n^^^^^^^^^^^^^^^^^\n\n::\n\n Re-run the clustering algorithm after performing a \n blur of spikes within same labels, and plots the \n confusion matrix.\n\n+--------------+\n| #### |\n| PARAMETERS |\n| FILE: |\n+--------------+\n| Traces: |\n+--------------+\n| - |\n| prms[\u201ctrace\u201d |\n| ][\u201cname\u201d] |\n| : Defines a |\n| name for |\n| this set of |\n| parameters |\n+--------------+\n| Spike |\n| detection: |\n+--------------+\n| - |\n| prms[\u201cspkD\u201d] |\n| [\u201cthres\u201d] |\n| : Defines |\n| the |\n| threshold |\n| level |\n| (default = |\n| 4. |\n| max/min=3.9- |\n| 4.1 |\n| as defined |\n| by |\n| Quian-Quirog |\n| a |\n| paper) - |\n| prms[\u201cspkD\u201d] |\n| [\u201cway\u201d] |\n| : Defines if |\n| the |\n| algorithm |\n| will search |\n| for maximum |\n| or minimums |\n| in the |\n| dataset. |\n| (values: |\n| \u201cvalley\u201d - |\n| \u201cpeaks\u201d) - |\n| prms[\u201cspkD\u201d] |\n| [\u201cminD\u201d] |\n| : Defines |\n| how many |\n| spaces |\n| between two |\n| consecutive |\n| peaks there |\n| should be in |\n| order to |\n| take them as |\n| separated |\n| peaks. - |\n| prms[\u201cspkD\u201d] |\n| [\u201cbefore\u201d]: |\n| Defines how |\n| many spaces |\n| after the |\n| peak will be |\n| taken to |\n| build the |\n| spike. - |\n| prms[\u201cspkD\u201d] |\n| [\u201cafter\u201d] |\n| : Defines |\n| how many |\n| spaces |\n| before the |\n| peak will be |\n| taken to |\n| build the |\n| spike. |\n+--------------+\n| Filtering: |\n+--------------+\n| - |\n| prms[\u201cfilt\u201d] |\n| [\u201cq\u201d] |\n| : Filters |\n| order. - |\n| prms[\u201cfilt\u201d] |\n| [\u201chz\u201d] |\n| : Nysquit |\n| frecuency. - |\n| prms[\u201cfilt\u201d] |\n| [\u201clow\u201d] |\n| : Defines |\n| low |\n| frequency |\n| cut. - |\n| prms[\u201cfilt\u201d] |\n| [\u201chigh\u201d] |\n| : Defines |\n| High |\n| frequency |\n| cut. |\n+--------------+\n| Spike |\n| alignment: |\n+--------------+\n| - |\n| prms[\u201cspkA\u201d] |\n| [\u201cresol\u201d] |\n| : Defines |\n| the |\n| resolution |\n| used to |\n| compute |\n| interpolatio |\n| n |\n| and |\n| alignment |\n| (equal to |\n| the number |\n| of |\n| intermediate |\n| point taken |\n| between two |\n| consecutive |\n| points in |\n| the spike |\n+--------------+\n| Spike |\n| errase: |\n+--------------+\n| - |\n| prms[\u201cspkE\u201d] |\n| [\u201cminD\u201d] |\n| : Delete |\n| spike if it |\n| contains 2 |\n| peaks |\n| separated |\n| less than |\n| \u201cminD\u201d |\n| positions |\n| and the |\n| relative |\n| amplitud of |\n| each one is |\n| bigger than |\n| \u201clvl\u201d. - |\n| prms[\u201cspkE\u201d] |\n| [\u201clvl\u201d] |\n| : Delete |\n| spike if it |\n| contains 2 |\n| peaks |\n| separated |\n| less than |\n| \u201cminD\u201d |\n| positions |\n| and the |\n| relative |\n| amplitud of |\n| each one is |\n| bigger than |\n| \u201clvl\u201d. |\n+--------------+\n| Wavelet |\n| decompositio |\n| n: |\n+--------------+\n| - |\n| prms[\u201cwv\u201d][\u201c |\n| lvl\u201d] |\n| : Level of |\n| decompositio |\n| n |\n| for |\n| multilevel |\n| wavelet |\n| decompositio |\n| n. |\n| - |\n| prms[\u201cwv\u201d][\u201c |\n| func\u201d] |\n| : Function |\n| to be used |\n| for wavelet |\n| decompositio |\n| n. |\n| - |\n| prms[\u201cwv\u201d][\u201c |\n| mode\u201d] |\n| : Boundary |\n| condition to |\n| use in |\n| wavelet |\n| decompositio |\n| n |\n+--------------+\n| Clustering: |\n+--------------+\n| - |\n| prms[\u201cgmm\u201d][ |\n| \u201cmaxK\u201d] |\n| : Maximum |\n| number of |\n| clusters to |\n| look for |\n| solutions. - |\n| prms[\u201cgmm\u201d][ |\n| \u201cftrs\u201d] |\n| : Number of |\n| features to |\n| take into |\n| account. - |\n| prms[\u201cgmm\u201d][ |\n| \u201cmaxCorr\u201d]: |\n| Maximum |\n| correlation |\n| allowed |\n| between |\n| features - |\n| prms[\u201cgmm\u201d][ |\n| \u201cinits\u201d] |\n| : Number of |\n| random |\n| weights |\n| initializati |\n| ons |\n+--------------+\n| Blurring: |\n+--------------+\n| - |\n| prms[\u201cblur\u201d] |\n| [\u201calpha\u201d] |\n| : Blurring |\n| intensity |\n| (0-1) |\n+--------------+\n\n### ACKNOWLEDGMENT\n------------------\n\nI would like to thank Eugenio\nUrdapilleta\\ `1 `__\nand Damian\nDellavale\\ `2 `__\nfor their guidance.\n\nPreprosesing of data is handled as described by:\n\n::\n\n - Quian Quiroga R, Nadasdy Z, Ben-Shaul Y (2004) **Unsupervised Spike Detection and Sorting with \n Wavelets and Superparamagnetic Clustering**. Neural Comp 16:1661-1687.\n\nL-ratio calculation is computed following:\n\n::\n\n - Schmitzer-Torbert et al. **Quantitative measures of cluster quality for use in extracellular recordings** \n Neuroscience 131 (2005) 1\u201311 11\n\nConfusion Matrix calculation is computed acording to:\n\n::\n\n - Alex H. Barnetta, Jeremy F. Maglandb, Leslie F. Greengardc **Validation of neural spike sorting \n algorithms without ground-truth information** Journal of Neuroscience Methods 264 (2016) 65\u201377\n\nExample dataset was obtained from:\n\n::\n\n - Henze, DA; Harris, KD; Borhegyi, Z; Csicsvari, J; Mamiya, A; Hirase, H; Sirota, A; Buzs\u00e1ki, G (2009): \n **Simultaneous intracellular and extracellular recordings from hippocampus region CA1 of anesthetized rats**. \n CRCNS.org.http://dx.doi.org/10.6080/K02Z13FP\n\n\n",
"description_content_type": null,
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://github.com/rodriguez-facundo/spiky",
"keywords": "spike sorting",
"license": "",
"maintainer": "",
"maintainer_email": "",
"name": "spiky",
"package_url": "https://pypi.org/project/spiky/",
"platform": "",
"project_url": "https://pypi.org/project/spiky/",
"project_urls": {
"Homepage": "https://github.com/rodriguez-facundo/spiky"
},
"release_url": "https://pypi.org/project/spiky/1.0.4/",
"requires_dist": [
"numpy",
"matplotlib",
"progressbar2",
"pywavelets",
"scipy",
"sklearn"
],
"requires_python": "",
"summary": "Spike sorting based on Gaussian Mixture Model",
"version": "1.0.4"
},
"last_serial": 3615102,
"releases": {
"1.0.0": [
{
"comment_text": "",
"digests": {
"md5": "9767766eb59b6961d6f71544864a534c",
"sha256": "5a769a3b572d395f5e5e8f7de2e8f8ae561068ae0b9935e2d02c3ac5d2be8036"
},
"downloads": -1,
"filename": "spiky-1.0.0-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "9767766eb59b6961d6f71544864a534c",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 17022,
"upload_time": "2018-02-12T02:00:34",
"url": "https://files.pythonhosted.org/packages/15/49/a2aecfe63873cab6db40cd45b93e4689c2eeed4fe535da88104fd0a4dc88/spiky-1.0.0-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "3b4a379bda3375366b828db2fc22c95f",
"sha256": "83b311526f2018de3f150c9cded0c68b269863ced44a8f8cdd3704b0a548a6d0"
},
"downloads": -1,
"filename": "spiky-1.0.0.tar.gz",
"has_sig": false,
"md5_digest": "3b4a379bda3375366b828db2fc22c95f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 16442,
"upload_time": "2018-02-12T02:00:36",
"url": "https://files.pythonhosted.org/packages/36/52/17b712ea16e72bd734b78c5fc01f8e500a1df624a885cbb6a0960bc221b1/spiky-1.0.0.tar.gz"
}
],
"1.0.1": [
{
"comment_text": "",
"digests": {
"md5": "f2ba5a86d302abbcda9bdc26b23e702a",
"sha256": "b64bc2732d3a259991f65abb425a778f0580f7b5f1e48f206943fb230de6e5ad"
},
"downloads": -1,
"filename": "spiky-1.0.1-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "f2ba5a86d302abbcda9bdc26b23e702a",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 17023,
"upload_time": "2018-02-12T02:26:52",
"url": "https://files.pythonhosted.org/packages/5a/80/a48936e595cd284900b0bdf98a50d3af18245b69f4f2c257b203a617ebcc/spiky-1.0.1-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "810f61bf1821f955148f141fa7fa0743",
"sha256": "be60978fb476300c2049989be4bbe449632e0df9083d95d45819f1af05b0e855"
},
"downloads": -1,
"filename": "spiky-1.0.1.tar.gz",
"has_sig": false,
"md5_digest": "810f61bf1821f955148f141fa7fa0743",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 16440,
"upload_time": "2018-02-12T02:30:59",
"url": "https://files.pythonhosted.org/packages/1f/54/d6a890392cf5570916f45306dcae2c46448fbf6fb49f5b6dc1fa2249b012/spiky-1.0.1.tar.gz"
}
],
"1.0.2": [
{
"comment_text": "",
"digests": {
"md5": "f371f8259a31209d4086754344be6490",
"sha256": "caeb08984619398f2b871399a852bea8aec351d4f364968c0352864a2303ef5c"
},
"downloads": -1,
"filename": "spiky-1.0.2-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "f371f8259a31209d4086754344be6490",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 17023,
"upload_time": "2018-02-12T02:47:25",
"url": "https://files.pythonhosted.org/packages/55/99/2710c6f3575a83521d6d24161790a32a51db95077875ea82668362bc8344/spiky-1.0.2-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "a1ac41660bb84781a2a96157e9e05b26",
"sha256": "75ed5016de9708535c0c5715a1a9fbd7cc92357f3b58a3d88bb99b3113cbcc50"
},
"downloads": -1,
"filename": "spiky-1.0.2.tar.gz",
"has_sig": false,
"md5_digest": "a1ac41660bb84781a2a96157e9e05b26",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 16438,
"upload_time": "2018-02-12T02:47:28",
"url": "https://files.pythonhosted.org/packages/4f/00/01308daa1767c30fc5ba7f3bba781abb1ac949a4ecdc1db3d81a8c867439/spiky-1.0.2.tar.gz"
}
],
"1.0.3": [
{
"comment_text": "",
"digests": {
"md5": "fff4dc5fa187484e2b034efda6a2913e",
"sha256": "bdc905623e9e0e4a4efee5e7483b5800b9c67ffb0c9abc0e41681ce6eddad639"
},
"downloads": -1,
"filename": "spiky-1.0.3-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "fff4dc5fa187484e2b034efda6a2913e",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 21169,
"upload_time": "2018-02-25T20:43:10",
"url": "https://files.pythonhosted.org/packages/78/3c/bb9dad297eaf964be381b5b72fa015aca3cdc2b7560f96a30297ce9b3b1a/spiky-1.0.3-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "ae80b45c768dfd19bc2ea23554ffddc6",
"sha256": "7fa638e70f3e7eb983bfde53057fae291ee6ad9234374fe16cf626f457e4ffab"
},
"downloads": -1,
"filename": "spiky-1.0.3.tar.gz",
"has_sig": false,
"md5_digest": "ae80b45c768dfd19bc2ea23554ffddc6",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 20818,
"upload_time": "2018-02-25T20:45:23",
"url": "https://files.pythonhosted.org/packages/ea/fc/4226b19079790df0dee98cf74d22111280e44524b6fe2ae7daf09e33f466/spiky-1.0.3.tar.gz"
}
],
"1.0.4": [
{
"comment_text": "",
"digests": {
"md5": "d18133c0347eba49fc506b78169d5362",
"sha256": "5f338e41e25f333aea9d9fa7819ee00ebd0d426206e79b7a98e25b4d1ebc7174"
},
"downloads": -1,
"filename": "spiky-1.0.4-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "d18133c0347eba49fc506b78169d5362",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 21841,
"upload_time": "2018-02-25T20:59:38",
"url": "https://files.pythonhosted.org/packages/83/8d/f2669bfb20ad1c88e500a14b269db811591600bbca0f84b082fdec924418/spiky-1.0.4-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "5fa87a6453f47a880a2a9a5b8134f659",
"sha256": "c4d7541854caaf571de320daea1ef7e108845819195c8c8a12f6bc7a0e2f8ec4"
},
"downloads": -1,
"filename": "spiky-1.0.4.tar.gz",
"has_sig": false,
"md5_digest": "5fa87a6453f47a880a2a9a5b8134f659",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 22612,
"upload_time": "2018-02-25T20:59:40",
"url": "https://files.pythonhosted.org/packages/f3/d5/52f5ff176debf67639dce52f7fb90ea8ba8ebca9b8582d951aa8b64c3390/spiky-1.0.4.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "d18133c0347eba49fc506b78169d5362",
"sha256": "5f338e41e25f333aea9d9fa7819ee00ebd0d426206e79b7a98e25b4d1ebc7174"
},
"downloads": -1,
"filename": "spiky-1.0.4-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "d18133c0347eba49fc506b78169d5362",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 21841,
"upload_time": "2018-02-25T20:59:38",
"url": "https://files.pythonhosted.org/packages/83/8d/f2669bfb20ad1c88e500a14b269db811591600bbca0f84b082fdec924418/spiky-1.0.4-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "5fa87a6453f47a880a2a9a5b8134f659",
"sha256": "c4d7541854caaf571de320daea1ef7e108845819195c8c8a12f6bc7a0e2f8ec4"
},
"downloads": -1,
"filename": "spiky-1.0.4.tar.gz",
"has_sig": false,
"md5_digest": "5fa87a6453f47a880a2a9a5b8134f659",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 22612,
"upload_time": "2018-02-25T20:59:40",
"url": "https://files.pythonhosted.org/packages/f3/d5/52f5ff176debf67639dce52f7fb90ea8ba8ebca9b8582d951aa8b64c3390/spiky-1.0.4.tar.gz"
}
]
}