{ "info": { "author": "Moritz Luerig", "author_email": "moritz.luerig@eawag.ch", "bugtrack_url": null, "classifiers": [], "description": "

\n\n

\n\n**phenopype is a phenotyping pipeline for python**. It is designed to extract phenotypic data from digital images or video material with minimal user input in a semi, or fully automated fashion. At the moment it is set up to be run from a python integrated development environment (IDE), like [spyder](https://www.spyder-ide.org/). Some python knowledge is necessary, but most of the heavy lifting is done in the background. If you are interested in using phenopype, [install](#installation) it from the [Python Package Index (PYPI)](https://pypi.org/project/phenopype/) using `pip install phenopype`. You also may want to clone this repository so you can use the [tutorials](#tutorials) to get started. \n\n\n***\n**DISCLAIMER: ONGOING DEVELOPMENT**\n\nThe program is still in alpha stage and development progresses slow - this is [me](https://luerig.net) trying to write a program, while learning to code properly in the first place, next to my everyday work. A few core features like blob-counting, object detection or videotracking are working ([see below](#features)), other modules like landmarking or local object-extraction are not fully implemented yet. More detailed documentation is in the making, but please do get in touch if things are not working as expected and I will try my best to help. \n\n***\n\n\n# features\n\n| | |\n|:---:|:---:|\n||Automatic **object detection** via multistep thresholding in a predefined area. Useful if your images have borders or irregular features. Accurracy can be increased with custom modules, e.g. for colour or shape|\n||Automatic **object tracking** that uses foreground-background subtractor. High performance possible (shown example is close to real time with HD stream). Can be set to distinguish colour or shapes. An example with stickleback and isopods can be found here: https://vimeo.com/283075068|\n| |**Automatic scale detection** and pixel-size ratios adjustments. Performance depends on image size| \n| |Basic **landmarking** functionality - high throughput.| \n| |Extract **local objects** like stickleback body armour| \n\n\n# installation\n\n1. Install python3 with anaconda: go to https://www.anaconda.com/download/, chose python 3.x for your OS, download install it \n\n2. Open the anaconda prompt OR [add \"conda\" to your PATH](https://stackoverflow.com/questions/44597662/conda-command-is-not-recognized-on-windows-10) and open a regular command prompt or terminal\n\n3. Create a virtual environment to have fuller control over your python packages, and install spyder (or any other IDE)\n```\nconda create -n \"phenopype_env\" python=3.7 spyder\n```\n\n4. Activate the virtual env and install phenopype using `pip` in your terminal or command line:\n```\nconda activate phenopype_env\npip install phenopype\n\nspyder\n```\n\n5. Check out the [tutorials](tutorials): download this repository (green button \"Clone or download\" at the top), run `jupyter notebook` from the anaconda prompt or another console (don't forget to activate your environment, if you created one in step 3), and, inside the jupyter file explorer, go to the tutorial folder:\n```\npip install jupyter notebook\njupyter notebook\n```\n\nIf you are having difficulties refer to these tutorials:\n\n - https://conda.io/docs/user-guide/install/windows.html\n - https://medium.com/@GalarnykMichael/install-python-on-windows-anaconda-c63c7c3d1444\n - https://datatofish.com/install-package-python-using-pip/\n\nIn Windows, run everything with administrator privileges! \n\n# tutorials\n\nDownload and unpack this repository, open a command line /bash terminal, and cd to the example folder inside the repo. Assuming you have phenopype, it's dependencies and jupyter notebook installed (comes with scientific python distributions like Anaconda, see [above](#installation)), type `jupyter notebook` and open one of the [tutorials](tutorials): \n\n* [0_python_intro.ipynb](tutorials/0_python_intro.ipynb) This tutorial is meant to provide a very short overview of the python code needed for basic phenopype workflow. This is useful if you have never used python before, but would like to be able to explore phenopype functionality on your own.\n\n* [1_basic_functions.ipynb](tutorials/1_basic_workflow.ipynb) This tutorial demonstrates basic workflow with phenopype: the creation of a project, directories and how to use the functions alone and within a programmed loop.\n\n* [2_object_detection.ipynb](tutorials/2_object_detection.ipynb) This tutorial demonstrates how single or multiple objects can be detected and phenotyped in images. \n\n* [3_setting_landmarks.ipynb](tutorials/3_setting_landmarks.ipynb)\n\n\n# development\n\nPlanned featues include\n\n- hdf5-implementation (original image > processed image (+ data) > image for ML-training-dataset >> hdf5)\n- build your own training data for deep learning algorithms using hdf5 framework\n- add Mask R-CNN deep learning algorithm using the opencv implementation (https://github.com/opencv/opencv/tree/master/samples/dnn) \n\nIf you have ideas for other functionality, let me know!\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://github.com/mluerig/phenopype", "keywords": "", "license": "LGPL", "maintainer": "", "maintainer_email": "", "name": "phenopype", "package_url": "https://pypi.org/project/phenopype/", "platform": "", "project_url": "https://pypi.org/project/phenopype/", "project_urls": { "Homepage": "https://github.com/mluerig/phenopype" }, "release_url": "https://pypi.org/project/phenopype/0.9.0/", "requires_dist": [ "exifread (==2.1.2)", "numpy", "pandas", "pytesseract (==0.2.6)", "pytest (==4.2.0)", "opencv-contrib-python (==3.4.5.20)", "trackpy (==0.4.1)" ], "requires_python": "", "summary": "a phenotyping pipeline for python", "version": "0.9.0" }, "last_serial": 5944358, "releases": { "0.4.11": [ { "comment_text": "", "digests": { "md5": "d9ec1b920d70e0fbf95cd493cc0dfe90", "sha256": "2a518b35e9cb9f6ec285b7c543ef822622984f6f4e2ddea50a796bd11e57bd03" }, "downloads": -1, "filename": "phenopype-0.4.11-py3-none-any.whl", "has_sig": false, "md5_digest": "d9ec1b920d70e0fbf95cd493cc0dfe90", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 25435, "upload_time": "2019-01-31T23:24:41", "url": "https://files.pythonhosted.org/packages/9b/c0/d08a8f3e106abf343d47974203cd7bad6c02d513c7aeab13df43e11ab4a5/phenopype-0.4.11-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ecef107be24ac420153da5f160dbd278", "sha256": "95f5f10dd81f40ec7b981bb80727683892637d3709a564a3041d8e89af2f4162" }, "downloads": -1, "filename": "phenopype-0.4.11.tar.gz", "has_sig": false, "md5_digest": "ecef107be24ac420153da5f160dbd278", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19833, "upload_time": "2019-01-31T23:24:46", "url": "https://files.pythonhosted.org/packages/18/2a/06e57082284442bbf4723c73eaec9f29943cc3eaae6c2ca2983898a8542f/phenopype-0.4.11.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "5916bd1944fdf57a762d2bcd1db6ccfd", "sha256": "3c7abdb10573dbef0abfabda783804f7091a2eb8d38f2c1b754dd47227482bc7" }, "downloads": -1, "filename": "phenopype-0.5.0-py3-none-any.whl", "has_sig": false, "md5_digest": "5916bd1944fdf57a762d2bcd1db6ccfd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19655, "upload_time": "2019-01-31T23:24:44", "url": "https://files.pythonhosted.org/packages/fd/9f/e1f5a1fb60f774bc6f2cf76fa9ac564fcc42bd3449e8544ae3d1dc567b3c/phenopype-0.5.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ba50c10827e77944055e4f49b1fb7af5", "sha256": "f2574e6a6a885855516f7337f1e7b9bd1f4326988789b0b7bc416041e26ec49c" }, "downloads": -1, "filename": "phenopype-0.5.0.tar.gz", "has_sig": false, "md5_digest": "ba50c10827e77944055e4f49b1fb7af5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18396, "upload_time": "2019-01-31T23:24:47", "url": "https://files.pythonhosted.org/packages/e9/27/49b62278ab4a2aba8f083651834122fea1b6cf2e2289b09b1cabe8b0091d/phenopype-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "f60f508a52b76131c45cd14bf660b57f", "sha256": "a36ecbdf30853299fb5d8ad2c5ea99163a3c16c826792140fbe588b4b7af70e0" }, "downloads": -1, "filename": "phenopype-0.5.1-py3-none-any.whl", "has_sig": false, "md5_digest": "f60f508a52b76131c45cd14bf660b57f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 26722, "upload_time": "2019-02-03T20:34:13", "url": "https://files.pythonhosted.org/packages/8b/04/c51657222c39ef3154ff118660467533bcd25ed43b8d11fb90fe63abeb4d/phenopype-0.5.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6879d673d0b0ded55ecb8910a27d3d81", "sha256": "ca61528963297eeff12ac923ba1511a9dc8f0ea0c59fd2e9619e7e7da0ccaea9" }, "downloads": -1, "filename": "phenopype-0.5.1.tar.gz", "has_sig": false, "md5_digest": "6879d673d0b0ded55ecb8910a27d3d81", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19599, "upload_time": "2019-02-03T20:34:16", "url": "https://files.pythonhosted.org/packages/04/87/e8f2b69d0319d01d3ba394f6ce0a9e7809724f5ca35e74c64b1bdcdab2d0/phenopype-0.5.1.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "edbec9104dd0c1e20e7a357170549c0e", "sha256": "e4464a937830e85b801371edc6ba8a73961df4841ffc418304d652e5abd361bf" }, "downloads": -1, "filename": "phenopype-0.6.0-py3.7.egg", "has_sig": false, "md5_digest": "edbec9104dd0c1e20e7a357170549c0e", "packagetype": "bdist_egg", "python_version": "3.7", "requires_python": null, "size": 53431, "upload_time": "2019-02-15T23:36:19", "url": "https://files.pythonhosted.org/packages/3a/cc/64e13c3496432a925b27423ef09cc06a03e74591bec955362ab91e614a72/phenopype-0.6.0-py3.7.egg" }, { "comment_text": "", "digests": { "md5": "e44756fe1487929b567de65284785e72", "sha256": "2e5b83e7e3a262ac9c6a10deff22253ffc872420460c1cca3aadfc2213e8fd60" }, "downloads": -1, "filename": "phenopype-0.6.0-py3-none-any.whl", "has_sig": false, "md5_digest": "e44756fe1487929b567de65284785e72", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29009, "upload_time": "2019-02-15T23:36:17", "url": "https://files.pythonhosted.org/packages/34/b8/55278765601babe0a8f29c3af947dc4c49998b0af8c02d3c1f7e151de2b1/phenopype-0.6.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e76bcb38351ab50b2dc85c19c13b9523", "sha256": "7528c8cfe872f0b0ebc65cf21b2b0c4ef989c7ab8076995058e35fc0cf421c60" }, "downloads": -1, "filename": "phenopype-0.6.0.tar.gz", "has_sig": false, "md5_digest": "e76bcb38351ab50b2dc85c19c13b9523", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25078, "upload_time": "2019-02-15T23:36:20", "url": "https://files.pythonhosted.org/packages/7c/9a/f4ff24eeaa37412a84bf7cb2f71dd7d6442e68d724676f32efd66cc6cf5d/phenopype-0.6.0.tar.gz" } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "3fedf49e50c8e071739b51fccb18000a", "sha256": "7e45ac3d02ece21e7105e1d1e03ec21fe025c050a006a988919b2b412a9a44e2" }, "downloads": -1, "filename": "phenopype-0.6.1-py3-none-any.whl", "has_sig": false, "md5_digest": "3fedf49e50c8e071739b51fccb18000a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29109, "upload_time": "2019-03-19T14:31:22", "url": "https://files.pythonhosted.org/packages/f6/2f/6114c0ebc76ad438470fff52280ddae6c17e5cca99d8b6e8daec8f36c751/phenopype-0.6.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "037847d43757435706780329b8e69a59", "sha256": "32e286a87d745e3301c91a1c34d9dced21e918d1ad717fdc120c47cf9f456cfb" }, "downloads": -1, "filename": "phenopype-0.6.1.tar.gz", "has_sig": false, "md5_digest": "037847d43757435706780329b8e69a59", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25176, "upload_time": "2019-03-19T14:31:23", "url": "https://files.pythonhosted.org/packages/cd/12/fba49057140c9e44b0a3227a32563a450b94a63a4edff69e1e30385aad5c/phenopype-0.6.1.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "2fa704bdc53b6125fb6572b4bc994b46", "sha256": "f70746766ad141cb431de87e8d2b893b6981e899677ccd708e75184f7183f2c6" }, "downloads": -1, "filename": "phenopype-0.7.0-py3-none-any.whl", "has_sig": false, "md5_digest": "2fa704bdc53b6125fb6572b4bc994b46", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 31906, "upload_time": "2019-07-09T18:48:36", "url": "https://files.pythonhosted.org/packages/ba/59/b773f527eae1b647333944fc7f9997cd20c228f607bf98907f4263ec01ea/phenopype-0.7.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "82870a12bcb47843defbafa969db011d", "sha256": "8b1589738a4df69cea762d98661cb584548ff98588487dd4568efd2bd500a998" }, "downloads": -1, "filename": "phenopype-0.7.0.tar.gz", "has_sig": false, "md5_digest": "82870a12bcb47843defbafa969db011d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27249, "upload_time": "2019-07-09T18:48:38", "url": "https://files.pythonhosted.org/packages/bf/17/224d01ae096dcc438bf7bd93fcecd461f70953230f8327194efbacf9494f/phenopype-0.7.0.tar.gz" } ], "0.7.2": [ { "comment_text": "", "digests": { "md5": "e138e2b031f04b17a149bbf00418a80a", "sha256": "a5ad453c1fa2bd7341b8c3afcce50234115838044b38b822e371ecf7a14ea3df" }, "downloads": -1, "filename": "phenopype-0.7.2-py3-none-any.whl", "has_sig": false, "md5_digest": "e138e2b031f04b17a149bbf00418a80a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 33193, "upload_time": "2019-07-24T15:48:20", "url": "https://files.pythonhosted.org/packages/bb/38/18b4686aca4b4adf27b40f971d3623b433824ee27ef5432162c39c35045d/phenopype-0.7.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1ffd7cee281c7e809b672a2423354bea", "sha256": "2f1ebfd60080e3a9afa08744d7827123010bd6df01e0c5357985793ddfc7e7d9" }, "downloads": -1, "filename": "phenopype-0.7.2.tar.gz", "has_sig": false, "md5_digest": "1ffd7cee281c7e809b672a2423354bea", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29646, "upload_time": "2019-07-24T15:48:22", "url": "https://files.pythonhosted.org/packages/16/c6/842a1ce810843b4339a1d0117b3f3ca1354274ff5284943e2a333339368c/phenopype-0.7.2.tar.gz" } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "577c054f3f90f90f20f8eb6adb53cdd3", "sha256": "446f45d85f810c50e483f197dff800297ed4f771ad20cf89968b42b610a410ea" }, "downloads": -1, "filename": "phenopype-0.8.0-py3-none-any.whl", "has_sig": false, "md5_digest": "577c054f3f90f90f20f8eb6adb53cdd3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 36305, "upload_time": "2019-10-06T10:07:05", "url": "https://files.pythonhosted.org/packages/51/48/43d91560418cba8c492fbae5a2e56dcfeb0a8a1a62510bb563f6d06f108b/phenopype-0.8.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cab09028fe923aef250c80c54d6fc40c", "sha256": "3c6d72322aeaf246f917e324691814fd18e4abbe85018097bb56d6ace51e2ef5" }, "downloads": -1, "filename": "phenopype-0.8.0.tar.gz", "has_sig": false, "md5_digest": "cab09028fe923aef250c80c54d6fc40c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32526, "upload_time": "2019-10-06T10:07:07", "url": "https://files.pythonhosted.org/packages/37/31/18b1205de6a6a4c8aefcb4b260f12ebaec1c7f32605e9d4abf13adb7392b/phenopype-0.8.0.tar.gz" } ], "0.9.0": [ { "comment_text": "", "digests": { "md5": "ee9a13b1eee3679eff9ddfaef9c5cc78", "sha256": "69980555bfe54fbde74e2954503bee1d1267a6400d66981ad79d685f95352452" }, "downloads": -1, "filename": "phenopype-0.9.0-py3-none-any.whl", "has_sig": false, "md5_digest": "ee9a13b1eee3679eff9ddfaef9c5cc78", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 34673, "upload_time": "2019-10-08T11:33:56", "url": "https://files.pythonhosted.org/packages/82/3e/75051cb0ffbc81d181db910e8a662e5d6067eea75fcc01ff07d51a11729d/phenopype-0.9.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bc19e62bdd1bf04e67d6755f4ca0be1c", "sha256": "0ae708ffe62ebe5a2edd6abb46fe7503fc754796a69f528847430812736b945a" }, "downloads": -1, "filename": "phenopype-0.9.0.tar.gz", "has_sig": false, "md5_digest": "bc19e62bdd1bf04e67d6755f4ca0be1c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31000, "upload_time": "2019-10-08T11:33:57", "url": "https://files.pythonhosted.org/packages/b5/75/ed0eeb90fea456d0c64e772ec45eda9a57d25b768f3b7381897d465ca8d1/phenopype-0.9.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "ee9a13b1eee3679eff9ddfaef9c5cc78", "sha256": "69980555bfe54fbde74e2954503bee1d1267a6400d66981ad79d685f95352452" }, "downloads": -1, "filename": "phenopype-0.9.0-py3-none-any.whl", "has_sig": false, "md5_digest": "ee9a13b1eee3679eff9ddfaef9c5cc78", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 34673, "upload_time": "2019-10-08T11:33:56", "url": "https://files.pythonhosted.org/packages/82/3e/75051cb0ffbc81d181db910e8a662e5d6067eea75fcc01ff07d51a11729d/phenopype-0.9.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bc19e62bdd1bf04e67d6755f4ca0be1c", "sha256": "0ae708ffe62ebe5a2edd6abb46fe7503fc754796a69f528847430812736b945a" }, "downloads": -1, "filename": "phenopype-0.9.0.tar.gz", "has_sig": false, "md5_digest": "bc19e62bdd1bf04e67d6755f4ca0be1c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31000, "upload_time": "2019-10-08T11:33:57", "url": "https://files.pythonhosted.org/packages/b5/75/ed0eeb90fea456d0c64e772ec45eda9a57d25b768f3b7381897d465ca8d1/phenopype-0.9.0.tar.gz" } ] }