{ "info": { "author": "Jeff Kinnison, Elia Shahbazi", "author_email": "jkinniso@nd.edu, ashahbaz@nd.edu", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", "Operating System :: MacOS", "Operating System :: POSIX", "Operating System :: Unix", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Scientific/Engineering :: Medical Science Apps.", "Topic :: System :: Distributed Computing" ], "description": "# florin: Flexible Learning-Free Reconstruction of Neural Circuits\n\nFLoRIN is a framework for carrying out computer vision pipelines locally or at\nscale.\n\n# Why FLoRIN?\n\n- Designed from the ground up for large-scale image processing (think images\n with 10^4, 10^5, 10^6+ pixels).\n- Provides the custom N-Dimensional Neighborhood Thresholding method, which has\n been shown to outperform other thresholding methods at segmenting neural\n microsopy data.\n- Out of the box serial, parallel, and distributed processing.\n- Utilizes CPU (numpy) vectorized operations and methods from scientific python\n libraries.\n- Enables pipeline reuse. Create one image processing pipeline, serialize it,\n and move it to another machine running FLoRIN.\n\n# Target Audience\n\nFLoRIN was originally designed as a pipeline for segmenting and reconstructing\nvolumes of neural microscopy data, allowing neuroscientists to quickly process\nlarge volumes of data without needing to use any machine learning.\nbut has since been applied to iris biometrics as well. In its\ncurrent form, FLoRIN is appropriate for any computer vision application that\nseeks to scale or be reproduced in multiple locations.\n\n# Installation\n\nFLoRIN is compatible with Python 3.4+. To install FLoRIN, run\n\n```bash\n# pip\npip install florin\n```\n\n\n# Documentation\n\nFull documentation of the FLoRIN pipeline may be found at \n\n# Getting Started\n\nA simple segmentation pipeline for microCT X-Ray data that uses multiprocessing\nfor subsets of operations looks like:\n\n```python\nimport florin\nimport florin.classify\nimport florin.conncomp as conncomp\nimport florin.morphology as morphology\nimport florin.thresholding as thresholding\n\npipeline = florin.Serial(\n # Load in the data to process\n florin.load('/path/to/my/volume'),\n\n # Subdivide the data into sub-arrays\n florin.tile(shape=(10, 64, 64), stride=(5, 32, 32)),\n\n # Segment multiple tiles independently in parallel.\n florin.Multiprocess(\n # Threshold with NDNT\n thresholding.ndnt(shape=(10, 64, 64), threshold=0.3),\n\n # Clean up the binarized image\n morphology.binary_opening()\n ),\n\n # Find connected components ad get their properties\n conncomp.label(),\n morphology.binary_fill_holes(min_size=50),\n conncomp.regionprops(),\n\n # Classify the connected components concurrently.\n florin.Multithread(\n # Bin connected components based on their properties\n florin.classify(\n # If 100 <= obj.area <= 500 and 25 <= obj.width <= 55 and\n # 25 <= obj <= 55 and 5 <= obj.depth <= 10, consider the connected\n # component a cell. Otherwise, consider it vasculature.\n florin.bounds_classifier(\n 'cells',\n area=(100, 500),\n width=(25, 55),\n height=(25, 55),\n depth=(5, 10)),\n florin.bounds_classifier('vasculature')\n )\n ),\n\n # Save the output with class labels\n florin.save('segmented.tiff')\n)\n\nout = pipeline()\n```\n\n# Maintainers\n\n- [Jeff Kinnison](https://github.com/jeffkinnison \"Jeff Kinnison on GitHub\")\n\n# Contributing\n\nTo contribute, fork the main repo, add your code, and submit a pull request! FLoRIN follows PEP-8 guidelines and uses `numpydoc` style for documentation.\n\n# Issues\n\nIf you run across a bug, open an issue with a description, system information, and a code snippet that reprodices the error.\n\n# License\n\n[MIT License](https://github.com/jeffkinnison/florin/blob/master/LICENSE \"MIT License\")\n\n# Cite FLoRIN\n\nThe original FLoRIN paper\n\n```\n@article{shahbazi2018flexible,\n title={Flexible Learning-Free Segmentation and Reconstruction of Neural Volumes},\n author={Shahbazi, Ali and Kinnison, Jeffery and Vescovi, Rafael and Du, Ming and Hill, Robert and J{\\\"o}sch, Maximilian and Takeno, Marc and Zeng, Hongkui and Da Costa, Nuno Ma{\\c{c}}arico and Grutzendler, Jaime and Kasthuri, Narayanan and Scheirer, Walter},\n journal={Scientific reports},\n volume={8},\n number={1},\n pages={14247},\n year={2018},\n publisher={Nature Publishing Group}\n}\n```\n\n# Special Thanks\n\nA number of people contributed to FLoRIN's development who deserve a shout out:\n\n## Original Concept\n\n- [Elia Shahbazi](https://github.com/elia-shahbazi)\n- [Jeff Kinnison](https://github.com/jeffkinnison)\n- [Walter Scheirer](https://www.wjscheirer.com/)\n\n## Early Development (Pre-Alpha)\n\n- [Antonio Minondo](https://github.com/aminondo)\n- [Cami Carballo](https://github.com/camicarballo)\n- [Kevin Choy](https://github.com/kevinchoy)\n- [Tom Marshall](https://github.com/ThomasWMarshall)\n\n# FLoRIN Experimental Code\n\nThe code for the original FLoRIN paper can be found [here](https://github.com/CVRL/florin-scirep \"FLoRIN Scientific Reports code\").\n\nThe code for \"Learning-Free Iris Segmentation Revisited: A First Step Toward Fast Volumetric Operation Over Video Samples\" can be found [here](https://github.com/jeffkinnison/florin-iris \"FLoRIN ICB 2019 Code\").\n\nWe are in the process of reimplementing these code bases using the official FLoRIN package here and will provide that code as a separate branch in each repository on completion.\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/jeffkinnison/florin", "keywords": "machine_learning hyperparameters distributed_computing", "license": "", "maintainer": "", "maintainer_email": "", "name": "florin", "package_url": "https://pypi.org/project/florin/", "platform": "", "project_url": "https://pypi.org/project/florin/", "project_urls": { "Homepage": "https://github.com/jeffkinnison/florin" }, "release_url": "https://pypi.org/project/florin/0.0.2.post1/", "requires_dist": [ "cloud-volume", "h5py", "mpi4py (>=3.0.0)", "networkx", "numpy", "pathos", "scikit-image", "scipy" ], "requires_python": "", "summary": "Fast image segmentation without needing to learn a thing.", "version": "0.0.2.post1" }, "last_serial": 5913755, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "99a17bf05010de51679c1f1725499eb9", "sha256": "ac688f6e1977aef45a11887c8b73faeb8732f9c19c56f2f486d01ce9a4d7eecb" }, "downloads": -1, "filename": "florin-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "99a17bf05010de51679c1f1725499eb9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 22359, "upload_time": "2019-06-03T11:18:25", "url": "https://files.pythonhosted.org/packages/22/f4/0c8ff5e610edffcc6a658d70d3725e2cc9bf644b477e2cac6fed271a4bf3/florin-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5f50cd290bec5d4b31de3d5e3e0bbb7c", "sha256": "a312ce590896295af5693856d1e7d3f6988abef9f0cc4794d0ca15bcc9ec854b" }, "downloads": -1, "filename": "florin-0.0.1.tar.gz", "has_sig": false, "md5_digest": "5f50cd290bec5d4b31de3d5e3e0bbb7c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15469, "upload_time": "2019-06-03T11:18:28", "url": "https://files.pythonhosted.org/packages/15/37/b9e9d2051c86a355288b3ef436ae577db7816710c0a9ef6f9049f2f555ea/florin-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "ef57b8b79418d7ed60986647f7199174", "sha256": "492fac7d577584b29dea3cadc80b428c9da06cfcb37a80cb41085a17ba1ddebe" }, "downloads": -1, "filename": "florin-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "ef57b8b79418d7ed60986647f7199174", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 34250, "upload_time": "2019-10-01T16:53:01", "url": "https://files.pythonhosted.org/packages/70/ad/d8f083c8fd07de63707c09f43c4e9a86f25a3b2943cdc4ff8ad292c32503/florin-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8d4d47455c301a4f9df407933774ab72", "sha256": "43e893acb9aa24ea652493f89e996e6508400bdb294e7f3c8e8786cb7821b94d" }, "downloads": -1, "filename": "florin-0.0.2.tar.gz", "has_sig": false, "md5_digest": "8d4d47455c301a4f9df407933774ab72", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24231, "upload_time": "2019-10-01T16:53:03", "url": "https://files.pythonhosted.org/packages/94/05/bfcb71e58b4d5e244a0219c00c1b58071b7453215fb2f4b40904da3211fd/florin-0.0.2.tar.gz" } ], "0.0.2.post1": [ { "comment_text": "", "digests": { "md5": "e6191a4f178452cc46a40c026f67e427", "sha256": "4c3c8c51442ecb7c945f3cc7f2dc90dc0cc2f3ccaaea93482f9a4f9268a6947a" }, "downloads": -1, "filename": "florin-0.0.2.post1-py3-none-any.whl", "has_sig": false, "md5_digest": "e6191a4f178452cc46a40c026f67e427", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 34332, "upload_time": "2019-10-01T17:01:32", "url": "https://files.pythonhosted.org/packages/d2/9a/bf2c9ea7800f3d4aeb783a4180ad006986ed3e41f931718a5f4d82feaa62/florin-0.0.2.post1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "861259216def94ddb1be4a902776d25c", "sha256": "cac2fbf1ab4a6f268283fbb5ece94d893cde96560f0c07ac51916da25e2ce8d1" }, "downloads": -1, "filename": "florin-0.0.2.post1.tar.gz", "has_sig": false, "md5_digest": "861259216def94ddb1be4a902776d25c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24257, "upload_time": "2019-10-01T17:01:35", "url": "https://files.pythonhosted.org/packages/fc/e8/8f254550c8fbd81291556bc5bca6a8256ac1fc1ec17734923b84aabb02eb/florin-0.0.2.post1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e6191a4f178452cc46a40c026f67e427", "sha256": "4c3c8c51442ecb7c945f3cc7f2dc90dc0cc2f3ccaaea93482f9a4f9268a6947a" }, "downloads": -1, "filename": "florin-0.0.2.post1-py3-none-any.whl", "has_sig": false, "md5_digest": "e6191a4f178452cc46a40c026f67e427", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 34332, "upload_time": "2019-10-01T17:01:32", "url": "https://files.pythonhosted.org/packages/d2/9a/bf2c9ea7800f3d4aeb783a4180ad006986ed3e41f931718a5f4d82feaa62/florin-0.0.2.post1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "861259216def94ddb1be4a902776d25c", "sha256": "cac2fbf1ab4a6f268283fbb5ece94d893cde96560f0c07ac51916da25e2ce8d1" }, "downloads": -1, "filename": "florin-0.0.2.post1.tar.gz", "has_sig": false, "md5_digest": "861259216def94ddb1be4a902776d25c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24257, "upload_time": "2019-10-01T17:01:35", "url": "https://files.pythonhosted.org/packages/fc/e8/8f254550c8fbd81291556bc5bca6a8256ac1fc1ec17734923b84aabb02eb/florin-0.0.2.post1.tar.gz" } ] }