{ "info": { "author": "Joseph Marsilla", "author_email": "joseph.marsilla@mail.utoronto.ca", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "Intended Audience :: Education", "Intended Audience :: End Users/Desktop", "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", "Operating System :: MacOS", "Operating System :: Unix", "Programming Language :: Python :: 3.6", "Topic :: Education", "Topic :: Scientific/Engineering :: Mathematics", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Utilities" ], "description": "\npyGemPick: Open Source Gold Particle Picker for Immunogold Diagnostics\n======================================================================\n\nThis is the official installation guide for the PyGemPick module\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nPyGemPick is the cummulation of `Joseph\nMarsilla's `__ research project under Dr.\nAvi Chakrabartty. This module contains functions that enable filtering,\ndetection, and modeling of immunogold particles on TEM micrographs.\n\nThe main project goal was to greate an open source batch gold particle\npicking module built in python that could detect gold particles\nregardless of the amount of counterstaining present in the IGEM\n(Immunogold Electron Microscopy) micrograph.\n\npyGemPick has three main dependencies that are needed before usage\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n::\n\n 1. [OpenCV (cv2)](https://opencv.org/) \n 2. [Pandas (pd)](https://pandas.pydata.org/)\n 3. [Numpy (np)](http://www.numpy.org/) \n\nI would suggest installing a new anaconda environment using\n`anaconda `__\nterminal into which you can import all the required modules for your\nproject. Having trouble installing OpenCv, use the solution outlined\nhere: `(install using\nconda) `__.\nPandas and Numpy can also be installed through any terminal using ***pip\ninstall pandas, numpy***\n\nThe project will be updated in the upcoming weeks with tutorials on how\nto use the functions given within\n`pygempick `__. This module was\nbuilt to help researchers that are building therasnotic solutions\n(therapy based as well as diagnostic innovations) to help pateints with\nrare protein misfolding diseases like ATTR amyloidosis , `Alzheimer's\nDisease\n(AD) `__,\n`Frontotemporal Dementia\n(FTD) `__ and\n`Amyotrophic Lateral Sclerosis (also known as ALS or Lou Gehrig's\ndisease) `__ using novel\nImmunogold diagnostic techniques.\n\n***NEW:*** This update contains supplementary 11 supplementary documents\nthat will help you use the module. We cover image compression, image\npicking with singular and duplicate filtering, statistical analysis,\nseparation & efficiency tests to test the algorithm's useability.\n\n**Sample Image Data will be provided and shall be located in the DATA\nfolder**\n\nInstallation\n------------\n\n::\n\n pip install pygempick\n\n > import pygempick.core as py\n > import pygempick.modeling as mod\n > import pygempick.spatialstats as spa\n\nNote numpy, pandas and opencv modules dependencies are needed prior installation.\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n**NEW:** This update contains supplementary 11 supplementary documents\nthat will help you use the module. We cover image compression, image\npicking with singular and duplicate filtering, statistical analysis,\nseparation & efficiency tests to test the algorithm's fairness.\n\nFor more information visit the github!\n\nFunctions:\n----------\n\n- ***py.compress(orig-img)***\n\n - a function that takes an original large scale electron micrograph\n image and compresses it such that 1px = aproximately one\n nanometer. the exact pixle dimentions for a 3.1x compression are\n given below.\n\n- ***py.back\\_eq(image)***\n\n - background equalization provided by solution presented\n `here `__\n\n- ***py.hclap\\_filt(p,image, noise)***\n\n - New High Contrast Laplace Filter.\n - Applies a `HCLAP\n Kernel `__\n - Takes odd scaling parameter p > 5 with a regular compressed image\n - if noise == 'yes' will add median blur after filter applied.\n\n- ***py.hlog\\_filt(p, image, noise)***\n\n - New High-Contrast Laplace of Gaussian Filter.\n - Applies a `HCLOG\n Kernel `__\n to each image to produce a single binary image as an output.\n - Takes odd and even scaling # parameters 18+\n - input image is regular py.compress image output,\n - if noise == 'yes' will add median blur after filter applied.\n\n- ***py.dog\\_filt(p, image)***\n\n - `Difference of Gaussian\n Filter `__.\n Input is an odd number p to determine size of DOG kernel,\n - input is an py.compress output image,\n - if noise == 'yes' will add median blur after filter applied.\n\n- ***py.bin\\_filt(p, image)***\n\n - Smart Binary Filtering. Uses the average gray pixel intensity\n values to determing the starting `threshold\n position `__.\n - Takes odd scaling parameter p, input image is a py.compress output\n image\n\n ***Note:*** TEM migrograph filtering using simple binary thresholding\n was first completed in 2003 with one of the first gold particle\n picking algorithms\n `GoldFinder `__.\n\n- ***New: key\\_filt(keypoints1, keypoints2)***\n\n- Allows you to scandetected keypoints and eliminate duplicates! Allows\n you to detect partciles with more than one filter. Returns updated\n keypoints 1 with the removed keypoints and number of duplicate(s)\n detected.\n\n- ***py.pick(image, minAREA, minCIRC, minCONV, minINER, minTHRESH)***\n\n - Input image is a binary image from one of the above filters, next\n have to set the parameters to optimize `OpenCv's Simple Blob\n Detector `__\n - Detects immunogold particles on filtered binary image by\n optimizing picking across 4 main paramaters using OpenCv's simple\n blob detector.\n - Have to optimize picking for each set separately on a per class or\n per trial basis.\n\n .. rubric:: Gold Particle Picking Parameters\n :name: gold-particle-picking-parameters\n\n ::\n\n 1. minArea = lowest area in pixels of a detected gold particle (20 px**2)\n 2. minCirc = lowest circularity value of a detected gold particle [.78 is square]\n 3. minConv = lowest convextivity parameter which is Convexity is defined as the (Area of the gold particle / Area of it\u2019s convex hull)\n 4. minINER = minimum inertial ratio (filters gold particles based on eliptical properties, 1 is a complete circle)\n\n- ***py.snapshots(folder, keypoints, gray\\_img, i)***\n\n - folder = folder location where snapshots will be saved, keypoints\n = the detected keypoints from py.pick function , gray\\_img =\n compressed grayscale image, i = image number.\n\n - Takes an compressed grayscale image and uses the detected\n keypoints as a marker to take a snapshot of within a 100px radius\n of that gold particle's position. *Researchers use this to analyze\n the morphological properties of protein aggregates*\n\n- ***mod.draw(n, test\\_number, noise, images)***\n\nfunction to draws test micrograph sets that will be used in subsequent\nefficiency or separation tests.\n\n::\n\n 1. Test number 1 is draw only circles, 2 is draw both circles and ellipses. \n 2. Noise if == 'yes' then, randomly distibuted gaussian noise will be drawn \n according to mu1, sig1. \n 3. images are the number of images in the set - used with n which is number of \n particles detected in the actual set to calulate the particle density of model \n set.\n \n\n- ***mod.imgclass(inv\\_img)***\n\n - Uses a compressed grayscale image from\n `cv2.cvt\\_color(RGB2GRAY) `__\n and returns the intensity histogram and related bins position w/\n im\\_class.\n\n- ***mod.septest(p,image)***\n\n - Let p be a range of integers ranging from [1, x], let image be a\n grayscale image produced after original image compression and\n conversion to grayscale using OpenCv's function\n cv2.cvtColor(orig\\_img, cv2.COLOR\\_RGB2GRAY).\n\n - Completes separation test for single filter comparrison.\n\n- ***New mod.septest2(p, image, hlogkey)***\n\n - let p be a range of integers ranging from [1, x] , let image be a\n grayscale image produced after original image compression and\n conversion to grayscale using OpenCv's function\n cv2.cvtColor(orig\\_img, cv2.COLOR\\_RGB2GRAY).\n\n - hlogkey = the keypoints of detected image fitered with HLOG filter\n - this ensures faster particle detection since we aren't running\n the same filtering step more than once!\n\n - Completes separation test for ***dual high-contrase filter\n comparrison***.\n\n- ***mod.fitpcf(data)***\n\n - Data is the input from a csv created by sta.bin2csv\n - file is in format of pcf-dr#-error.csv'.\n - Function initially created to plot graphs for image set with\n varrying concentrations of AB aggregates in solution\n\n | **Output:** built to produce one graph, with fitted curve for\n positive control(s).\n | Equation fitted to probability distribution for Complete Spatial\n Randomness of the distribution of IGEM particles across EM\n micrographs.\n\n- ***spa.gamma(a,b,r)***\n\n - a = width of image in pixels\n - b = height of the image in pixels\n - r is the diatance of the donut from which correlation was\n calculated.\n\n Function taken from work by `Philemonenko et al\n 2000 `__\n that was used as a window covariogram to correct `Ripley's K\n function `__\n for boundary conditions.\n\n- ***spa.pcf(r, N, p0, p1)***\n\n - r is the radius of the donut taken with bin width dr.\n - N is the degree PCF (Pair Correlation Function) is the probability\n distribution of a CSR related process that we will used to fit our\n normalized version of\n\n - This is a python based solution to `Philmoneko's Statistical\n Evaluation of Colocalization Patterns in Immunogold Labeling\n Experiments `__.\n The PCF distribution for calculating the colocolization of\n immunogold particles on transmission electorn microgrpahs is\n represented here.\n\n- ***spa.record\\_kp(i, keypoints, data)***\n\n - i is the image number counter\n - keypoints is the list of keypoints of Gold particles detected by\n py.pick\n - data is an empty pandas dataframe.\n\n This function recods the x,y positions of the keypoints detected in\n each image. Run in for loop to add results for each image to\n dataframe which can be then exported into a csv for easy access.\n (completed in spa.bin2csv )\n\n- ***spa.bin2csv(images)***\n\n- function takes a list of filelocations from glob.glob (asks for the\n filtering parameters) then it outputs a csv of the x and y\n coordinates of keypoints for every image in images. (For example, row\n 1 contains the x coordinate of the keypoints in image 1 and row 2\n contains the y coordinates in image 1 ect...)\n\n- ***spa.bin2df(images)***\n\n - images is a set of images from folder using glob.glob() function,\n\n - Output records the keypoint positions found in each image and\n outputs a pandas df with detected keypoint centers in (x,y) pixel\n coordinates.\n\n- ***spa.csv2pcf(data, dr)***\n\n - takes the filename ``data`` from a csv produced by bin2csv() and\n outputs non-normalized scale invarient k (cross-corelation) and\n pcf (pair-correlation) statisticaldata from the spatial\n distribution of the paticles on each micrograph. (determines\n wheter the nul-hypothesis of CSR `Complete Spatial\n Randomness `__\n is upheld or voided...). Analyzed by bin2csv. Example output\n provided in docs.\n\n - dr is the donut width as defined by philmonenko et al, 2000\n\n- ***spa.keypoints2pcf(data\\_set, dr)***\n\n - Input folder with CSV files of keypoints for different tests Need\n to know Image number and average particles detected in each set\n (**example**: data\\_set =\n glob.glob('/home/joseph/Documents/PHY479/Data/anto/\\*.csv'))\n\n - dr is the donut width as defined by `philmonenko et al, 2000\n article `__\n on immunogold particle colocolization and spatial statistcs.\n\n - **output:** pcf-dr{}-error.csv - columns dr (sampling radius), pcf\n (`pair correlation\n coefficient `__),\n dpcf (propogated uncertainty in pcf)\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/jmarsil/pygempick", "keywords": "immunogold batch gold particle picker EM micrograph processing correlation analysis IGEM diagnostics", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "pygempick", "package_url": "https://pypi.org/project/pygempick/", "platform": "", "project_url": "https://pypi.org/project/pygempick/", "project_urls": { "Homepage": "https://github.com/jmarsil/pygempick" }, "release_url": "https://pypi.org/project/pygempick/1.2.0/", "requires_dist": null, "requires_python": "", "summary": "Open Source Batch Gold Particle Picking & Procesing for Immunogold Diagnostics", "version": "1.2.0" }, "last_serial": 4082940, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "25f7000667abe23b71767ee65ce4ef84", "sha256": "4907d7b3a7b95a1d4857898c6f0e7ad3e1e6a31a3da98ea28e187f3e8ed42498" }, "downloads": -1, "filename": "pygempick-1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "25f7000667abe23b71767ee65ce4ef84", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8936, "upload_time": "2018-05-09T19:49:26", "url": "https://files.pythonhosted.org/packages/d6/b4/0aa086e52572906bec2501a6beb908389546fc9d783ed20d1ac108dd3344/pygempick-1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2b56a0b33124b151ea07cbf66008324c", "sha256": "3b2a8060e63c834606945308719f77bba6571f3c5f32305a9b0e288476b73daf" }, "downloads": -1, "filename": "pygempick-1.0.tar.gz", "has_sig": false, "md5_digest": "2b56a0b33124b151ea07cbf66008324c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9744, "upload_time": "2018-05-09T19:49:27", "url": "https://files.pythonhosted.org/packages/22/80/bc5ec4bb28e9cb690d34f83183cea83f80cf1531d6a682444dcd20ba935c/pygempick-1.0.tar.gz" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "ba31c4e48d6c2b8cad8e6a9290a5dc89", "sha256": "2c3f3ff129913ff2931fe686b8a528eef0d144ad23a3d38d8aa98d450fc0c638" }, "downloads": -1, "filename": "pygempick-1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "ba31c4e48d6c2b8cad8e6a9290a5dc89", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 17096, "upload_time": "2018-05-10T18:13:30", "url": "https://files.pythonhosted.org/packages/a3/ab/e0a4df9e418028a7ad7d5683843d2f37db4ad20bcfcc6ad3b76afb9ad62b/pygempick-1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "61880527393e4470c763503a2a39730e", "sha256": "2fbadbb4a1919aa5b88d4fecb003c95bae9e8973bf4ed142b2ea577b01e523d8" }, "downloads": -1, "filename": "pygempick-1.1.tar.gz", "has_sig": false, "md5_digest": "61880527393e4470c763503a2a39730e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19608, "upload_time": "2018-05-10T18:13:31", "url": "https://files.pythonhosted.org/packages/d4/f9/4d8d1801bd57abede143c77a9f323d16f165d11ddcca60a8872660d5ee4d/pygempick-1.1.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "31cb61616f01e9ee796d5b67a937bc3c", "sha256": "f61e591fc6dc4c6067297b5f0a07d97f7b4a9e6647a0acecdb3718aada459898" }, "downloads": -1, "filename": "pygempick-1.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "31cb61616f01e9ee796d5b67a937bc3c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 17144, "upload_time": "2018-05-12T14:02:29", "url": "https://files.pythonhosted.org/packages/e2/09/d06a934412c08c74b9f5ec6c94c1de293ee8b498b25aab70267d5855cab5/pygempick-1.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "29d178852ad064828ed48be6922f252a", "sha256": "02a6feeed704cf702083e9e36ac3ccf4e337806165be231dd74e6a7e0df85b98" }, "downloads": -1, "filename": "pygempick-1.1.1.tar.gz", "has_sig": false, "md5_digest": "29d178852ad064828ed48be6922f252a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19623, "upload_time": "2018-05-12T14:02:31", "url": "https://files.pythonhosted.org/packages/90/d2/ca617852c747cb42a3b14a8a6844c1f02aa902f97deb9dd250793a7e6b76/pygempick-1.1.1.tar.gz" } ], "1.1.3": [ { "comment_text": "", "digests": { "md5": "13352609a1944d8121a990f4fd3c0d12", "sha256": "09505aafc701c1a0031d323117c4fda0ebae69863aaac8e0607adf7d3febc9af" }, "downloads": -1, "filename": "pygempick-1.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "13352609a1944d8121a990f4fd3c0d12", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19139, "upload_time": "2018-05-29T14:45:45", "url": "https://files.pythonhosted.org/packages/de/5c/33d4c303dfce05fb7f590a6d5d721c65aaa3e9eabd95117718e47df0a857/pygempick-1.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2b98dec1597dce3f506ff9c933977889", "sha256": "6a538e4713b591ee687b13237c9b15a5bcf22ff58a77c8f6f12604d33e0fd8a7" }, "downloads": -1, "filename": "pygempick-1.1.3.tar.gz", "has_sig": false, "md5_digest": "2b98dec1597dce3f506ff9c933977889", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23160, "upload_time": "2018-05-29T14:45:46", "url": "https://files.pythonhosted.org/packages/c1/4b/a36af941c139698158167c424ef31540c214ac892eeb2d0b960b2592d960/pygempick-1.1.3.tar.gz" } ], "1.1.6": [ { "comment_text": "", "digests": { "md5": "1ec30ddb772287565289d912b59dfd6d", "sha256": "a248c99148e61fcb5faa671bc16ee59f79f0133853dedf72259e75c78bb6742e" }, "downloads": -1, "filename": "pygempick-1.1.6-py3-none-any.whl", "has_sig": false, "md5_digest": "1ec30ddb772287565289d912b59dfd6d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 23091, "upload_time": "2018-06-07T21:38:11", "url": "https://files.pythonhosted.org/packages/1b/16/0b636768f53f612cf51d2b55cdc0a4bb569e6eed2f7f3f6c7161d29f3bbd/pygempick-1.1.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3d7eb1a660063dc6caf07a0f14422c6c", "sha256": "9bdf31032028c0e3b879a9e87ec898489b7076c76bcacb1745f83b8195736447" }, "downloads": -1, "filename": "pygempick-1.1.6.tar.gz", "has_sig": false, "md5_digest": "3d7eb1a660063dc6caf07a0f14422c6c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25536, "upload_time": "2018-06-07T21:38:12", "url": "https://files.pythonhosted.org/packages/06/1e/1f437169934a3bba7354446ba8beac565cec7d1d508c2541c0bd9ed5c87c/pygempick-1.1.6.tar.gz" } ], "1.1.9": [ { "comment_text": "", "digests": { "md5": "1990da78fab1f04ef8497951bc73e3c1", "sha256": "1c3c935b49efcaad6356b063aee64b8226ab8503f51b7f301e683c7a070fae06" }, "downloads": -1, "filename": "pygempick-1.1.9-py3-none-any.whl", "has_sig": false, "md5_digest": "1990da78fab1f04ef8497951bc73e3c1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 24079, "upload_time": "2018-06-08T21:41:02", "url": "https://files.pythonhosted.org/packages/0f/87/6fa800771cd34bd637305ed591783350be21667fb29f57763452b322e612/pygempick-1.1.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "50e1d77a46ca5c05a72015e24eb8cdf8", "sha256": "74fbb71b880738c0751b375164a1ef9322b00f3b57c820c4cbba0f93aab5a7f9" }, "downloads": -1, "filename": "pygempick-1.1.9.tar.gz", "has_sig": false, "md5_digest": "50e1d77a46ca5c05a72015e24eb8cdf8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22550, "upload_time": "2018-06-08T21:41:03", "url": "https://files.pythonhosted.org/packages/40/17/7aaca8f1249b27f6124096b927664714a6b66b314bd24b747e736c1175a1/pygempick-1.1.9.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "82cefc55d95d285c0a099fac5708ba44", "sha256": "88e37c436b777f092662765f68cbf5a011433e90350631c6664452560d6c5ad0" }, "downloads": -1, "filename": "pygempick-1.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "82cefc55d95d285c0a099fac5708ba44", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 24324, "upload_time": "2018-07-19T16:35:19", "url": "https://files.pythonhosted.org/packages/ce/4c/bc2c4d51e12252a03d6149076502c57a6b72aa0c49c3095358ff3a0990c8/pygempick-1.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "51f586b7f9143e8fafbfb3ac44dbc104", "sha256": "4e4926579db4be65059c6a37be2cb6bfcf4a0ed736ad403f97ccd3f9134e8e97" }, "downloads": -1, "filename": "pygempick-1.2.0.tar.gz", "has_sig": false, "md5_digest": "51f586b7f9143e8fafbfb3ac44dbc104", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22886, "upload_time": "2018-07-19T16:35:02", "url": "https://files.pythonhosted.org/packages/68/f5/33a7a0844889d10a3b737981a08c65f38b7b4b6ffd436202f97e47be656a/pygempick-1.2.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "82cefc55d95d285c0a099fac5708ba44", "sha256": "88e37c436b777f092662765f68cbf5a011433e90350631c6664452560d6c5ad0" }, "downloads": -1, "filename": "pygempick-1.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "82cefc55d95d285c0a099fac5708ba44", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 24324, "upload_time": "2018-07-19T16:35:19", "url": "https://files.pythonhosted.org/packages/ce/4c/bc2c4d51e12252a03d6149076502c57a6b72aa0c49c3095358ff3a0990c8/pygempick-1.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "51f586b7f9143e8fafbfb3ac44dbc104", "sha256": "4e4926579db4be65059c6a37be2cb6bfcf4a0ed736ad403f97ccd3f9134e8e97" }, "downloads": -1, "filename": "pygempick-1.2.0.tar.gz", "has_sig": false, "md5_digest": "51f586b7f9143e8fafbfb3ac44dbc104", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22886, "upload_time": "2018-07-19T16:35:02", "url": "https://files.pythonhosted.org/packages/68/f5/33a7a0844889d10a3b737981a08c65f38b7b4b6ffd436202f97e47be656a/pygempick-1.2.0.tar.gz" } ] }