{ "info": { "author": "Albert Font", "author_email": "albertf80@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "# daily_reports\n\nDaily reports is a package used to automatically produce one *daily report* \nand one cumulative *inter-session report* to summarize the results of a \nsubject's BPOD sessions. \n\n***\n\n## Installation\n\nIf you want to use it, you first need to install it into your working environment:\n\n pip install daily_report\n\nYou can check if the installation was successful by running:\n\n pip show daily_report\n \n Once installed, you need to modify your task by adding these two lines:\n\n from daily_report import report # (at the start of the task)\n report.main(glob.glob(\"*.csv\")[0]) # (last line of the task)\n\nMake also sure that the `glob` package is imported (`import glob`).\n\n***\n\n## Task requirements\n\nFor the package to work, the task has to fulfill certain requirements:\n\n### Required variables\n\nRemember that variables can be registered into the session data with the \n`register_value` function:\n\n my_bpod.register_value('VARIABLE_NAME', variable)\n\nThe name that matters is VARIABLE_NAME. This package requires to register a \nvalue at the start of the session called **REWARD_SIDE**, which is a Python \nlist containing the answers for the session, with the following convention: 0 \nif the correct answer is the left side and 1 for the right side.\n\n### Optional variables\n\nTo track the stage number is it possible to add a variable called \n**STAGE_NUMBER**, from 0 to 5. In the inter-session report, different stages \nwill have different color markers. The default color is black \n(meaning that no stage number was found) and for stages higher than 5, \nthe markers will be colored gold.\n\n### Required states\n\nThere have to be at least two states corresponding to correct and incorrect answers \nnamed **Reward** and **Punish** (letter case matters, be careful!)\n\n### Optional states\n\nThe following states can be used to gather more information about the session:\n\n1. Response times can be collected as the timestamp of a state called \n**WaitResponse**. If it is not present, the mean response time will be \ndisplayed as N/A. \n\n2. Invalid trials should exit the trial through a state called **Invalid**. \nIf it is not present, the report will not take invalid trials into account.\n\n***\n\n## Output\n\nThe program creates a folder in your HOME directory called \"daily_reports\" and\none subdirectory for each animal (with the subject name that you specified in\nthe PyBPOD software) that will contain all the generated daily reports\nand one cumulative inter-session report that persists between sessions:\n\n ~/\n | daily_reports/\n | | Rat24/\n | | | Rat24_inter_session.pdf\n | | | Rat24_20180605.pdf\n | | | Rat24_20180606.pdf\n | | Rat35/\n | | | Rat35_inter_session.pdf\n | | | Rat35_20180606.pdf\n | | | Rat35_20180607.pdf\n\n\nYou can then upload the folder to a cloud storage service like Google Drive or \nDropbox to access the reports from another computer.\n\n**NOTE**: As of now, the report doesn't work if the tasks halts *unnaturally*, \nthat is, either because the software crashed or because the user clicked on STOP.\n\n***\n\n## Manual generation of reports\n\nIf the software has crashed, you had to stop the task for some reason or the report simply didn't generate, it is possible to make the reports manually. This also works for the generation of reports for old sessions where the report was not yet installed. The simplest way to accomplish this is to download the bare script:\n\n git clone https://AFont33@bitbucket.org/AFont33/manual_reports.git\n\nThen create a subdirectory inside the manual_reports directory called *test_files*:\n\n ~/manual_reports/\n | test_files/\n | report.py\n | config_vars.py\n\nThen copy all the CSV files that need to be processed into this subdirectory:\n\n ~/manual_reports/\n | test_files/\n | | Rat34_20180630.csv\n | | Rat25_20180630.csv\n | | Rat25_20180625.csv\n | report.py\n | config_vars.py\n\nYou can generate multiple reports at the same time; the program will automatically sort the files by date and put each report in the corresponding animal subdirectory inside HOME. Once you have copied all the files, just run the report script (preferably inside the PyBPOD environment):\n\n python report.py\n\nYou will see log messages in the terminal, and if everything goes well, the reports will appear in the usual folder.", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://bitbucket.org/AFont33/daily_reports/", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "daily-report", "package_url": "https://pypi.org/project/daily-report/", "platform": "", "project_url": "https://pypi.org/project/daily-report/", "project_urls": { "Homepage": "https://bitbucket.org/AFont33/daily_reports/" }, "release_url": "https://pypi.org/project/daily-report/2.6/", "requires_dist": null, "requires_python": "", "summary": "A package for the production of daily and cumulative reports attached to PyBpod tasks.", "version": "2.6" }, "last_serial": 4278766, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "855074e5f1911dfc346d957a80a8a62e", "sha256": "57bd46a682c4578bbc4a9e6f1167f638ea5f360d5d10ab0b3b1cc21cfa22ba6e" }, "downloads": -1, "filename": "daily_report-0.1.tar.gz", "has_sig": false, "md5_digest": "855074e5f1911dfc346d957a80a8a62e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8179, "upload_time": "2018-07-03T10:26:45", "url": "https://files.pythonhosted.org/packages/d8/ef/cd7a008d0b5d590887460e794aee9d8d83bc4b402d0d371d639c79003285/daily_report-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "55949b578533405e5062e44e6daadb7e", "sha256": "98731caf962f425a902f90d34a51df4398205ecddfb05b9cc89e73f563171ff8" }, "downloads": -1, "filename": "daily_report-0.2.tar.gz", "has_sig": false, "md5_digest": "55949b578533405e5062e44e6daadb7e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8186, "upload_time": "2018-07-03T11:12:51", "url": "https://files.pythonhosted.org/packages/d1/3f/e76f86236d214a4d884f3418673fa62a00efed7cb5ea1a59a0fd286cd223/daily_report-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "097b2b763f56148857d9cfa93722dede", "sha256": "a1aeff26a1fc73f9eccf1f96c1d74c66719839e1188b090d3c06bed2963033f3" }, "downloads": -1, "filename": "daily_report-0.3.tar.gz", "has_sig": false, "md5_digest": "097b2b763f56148857d9cfa93722dede", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8179, "upload_time": "2018-07-03T11:12:53", "url": "https://files.pythonhosted.org/packages/33/fb/663be502abc1bf425707aac82ad8f274dfb35d22f61359dfd854428bb02f/daily_report-0.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "ece4189d0fc41d22a4ec12a7185fe62d", "sha256": "1645a7189ae54b785d7709a6314cad54090aa685be65e6dc71202262e6229dfa" }, "downloads": -1, "filename": "daily_report-0.4.tar.gz", "has_sig": false, "md5_digest": "ece4189d0fc41d22a4ec12a7185fe62d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9397, "upload_time": "2018-07-04T08:21:35", "url": "https://files.pythonhosted.org/packages/38/2f/7de58805831cb50fef3452e0b26d4ffcf3c7d0e3391c01b39b03ddaaca08/daily_report-0.4.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "290870797df767b085cf8616caa47ffa", "sha256": "39b913817a74d8c5b12e44e158065d024a4dcd3e6d4dba67e4b1a63301550fb3" }, "downloads": -1, "filename": "daily_report-0.5.tar.gz", "has_sig": false, "md5_digest": "290870797df767b085cf8616caa47ffa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9399, "upload_time": "2018-07-04T08:37:40", "url": "https://files.pythonhosted.org/packages/21/fc/95939d4c400077356f0b24f59ca5865d161a49b072f6634664849c98b8d3/daily_report-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "3c931da0fb7b70d2b1b6f593084bf6f5", "sha256": "a5e71075d01f3890884cfe2036eab2640621b06fd31049278ab9e17ac81feaa1" }, "downloads": -1, "filename": "daily_report-0.6.tar.gz", "has_sig": false, "md5_digest": "3c931da0fb7b70d2b1b6f593084bf6f5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10136, "upload_time": "2018-07-05T09:47:19", "url": "https://files.pythonhosted.org/packages/5e/25/65222650cb3bb5c5ee10dfb4683e6d687ab68a2163e33e55cea2340b7fd8/daily_report-0.6.tar.gz" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "1e8c8f85e719965394e9a72e56705019", "sha256": "4425b209a597a843d835b1f80e584e89fd29494573d9d3b0726faad4ed3941f9" }, "downloads": -1, "filename": "daily_report-0.7.tar.gz", "has_sig": false, "md5_digest": "1e8c8f85e719965394e9a72e56705019", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14628, "upload_time": "2018-07-18T08:25:52", "url": "https://files.pythonhosted.org/packages/26/bf/8219754c4e71624a941ecebc2bd5bf1ad1ec2c7dd34ce3fae863869b6153/daily_report-0.7.tar.gz" } ], "0.8": [ { "comment_text": "", "digests": { "md5": "e103a9cb8adb0f9e2e78df1c5216e5de", "sha256": "a18b992a240160ca9651498b5a19edd086e524dcfccb27cc85b6ea7dc9b038dd" }, "downloads": -1, "filename": "daily_report-0.8.tar.gz", "has_sig": false, "md5_digest": "e103a9cb8adb0f9e2e78df1c5216e5de", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14461, "upload_time": "2018-07-19T07:49:57", "url": "https://files.pythonhosted.org/packages/ad/17/0315a9cda39cdbfa285df92a31005c367389b18282bf8e5d71b087d73576/daily_report-0.8.tar.gz" } ], "0.9": [ { "comment_text": "", "digests": { "md5": "6136de23b308f1efe978b49f6946c2c5", "sha256": "139ebb1e5d294a5fb3b2c9ed18edcf479d9562ffb0c30da0c357f4aca3cb200d" }, "downloads": -1, "filename": "daily_report-0.9.tar.gz", "has_sig": false, "md5_digest": "6136de23b308f1efe978b49f6946c2c5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14452, "upload_time": "2018-07-24T11:04:26", "url": "https://files.pythonhosted.org/packages/3c/56/6097750367d53bef44475c78548728206cb3e8971bd09069dffc001f5c81/daily_report-0.9.tar.gz" } ], "1.0": [ { "comment_text": "", "digests": { "md5": "ddd850d51efab137452891843315d431", "sha256": "c851bf7bf53a5b2401177ed506699f3c4ae7625e7aaab07e6b19769ce32d405f" }, "downloads": -1, "filename": "daily_report-1.0.tar.gz", "has_sig": false, "md5_digest": "ddd850d51efab137452891843315d431", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14926, "upload_time": "2018-07-26T11:19:18", "url": "https://files.pythonhosted.org/packages/d8/be/8748e811b5d370ac801355baca4f700afab285591170582bdad53b73ed36/daily_report-1.0.tar.gz" } ], "2.0": [ { "comment_text": "", "digests": { "md5": "388b17c1ef29459caf25e1e559ad07bf", "sha256": "a166cb31b8896779dcf946673c80cae54714dc16188ab83ca98a44a40ea4acac" }, "downloads": -1, "filename": "daily_report-2.0.tar.gz", "has_sig": false, "md5_digest": "388b17c1ef29459caf25e1e559ad07bf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12463, "upload_time": "2018-09-17T08:45:44", "url": "https://files.pythonhosted.org/packages/3f/d2/e7edb6e1fb4d048502b1138888fe9bc1eb8ed8858704e87e24ac915e2a3b/daily_report-2.0.tar.gz" } ], "2.1": [ { "comment_text": "", "digests": { "md5": "acc02a6722d59b2285ef74e35efa1263", "sha256": "2cb034c42c8c092a974a84f7c645d768252e95f8fccf635a404e06bc127a15d9" }, "downloads": -1, "filename": "daily_report-2.1.tar.gz", "has_sig": false, "md5_digest": "acc02a6722d59b2285ef74e35efa1263", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12466, "upload_time": "2018-09-17T08:59:28", "url": "https://files.pythonhosted.org/packages/ee/90/c451feb4ff381fc1303f158147c7789135e6b4b6abde51bb35b10ae1a984/daily_report-2.1.tar.gz" } ], "2.2": [ { "comment_text": "", "digests": { "md5": "31aaa4945531e92feab1939ab6302314", "sha256": "247f73f30364d1c676e9a330ecd050b43268761c9ea5637d5af1cfffb7ec05c6" }, "downloads": -1, "filename": "daily_report-2.2.tar.gz", "has_sig": false, "md5_digest": "31aaa4945531e92feab1939ab6302314", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12506, "upload_time": "2018-09-17T09:05:03", "url": "https://files.pythonhosted.org/packages/2b/a4/e21faccd50c69b67a280322ad7e576c3c76403f0298fa86b6ccb2f6ebe83/daily_report-2.2.tar.gz" } ], "2.3": [ { "comment_text": "", "digests": { "md5": "3c7cbdba6508097b71e23d40e7203276", "sha256": "2f4c9d9087a7d42f48e47c8287ff9196653f99379e8fac67c2cb392411a5e9c2" }, "downloads": -1, "filename": "daily_report-2.3.tar.gz", "has_sig": false, "md5_digest": "3c7cbdba6508097b71e23d40e7203276", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12513, "upload_time": "2018-09-17T09:06:21", "url": "https://files.pythonhosted.org/packages/3c/c0/a4b7da45f8c12600ea612e56e0b77ca386ec89de97e4b2d08b2b2e7e6984/daily_report-2.3.tar.gz" } ], "2.4": [ { "comment_text": "", "digests": { "md5": "36abaf928b1845fd5729bcfbf820512c", "sha256": "f81617a10aeaa9a2d93cd7fe4083bce0ba1fc9385925ad8300babfb4a2ed47fe" }, "downloads": -1, "filename": "daily_report-2.4.tar.gz", "has_sig": false, "md5_digest": "36abaf928b1845fd5729bcfbf820512c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12512, "upload_time": "2018-09-17T09:24:38", "url": "https://files.pythonhosted.org/packages/e5/26/2030bbb401d172607061a301cbfa418c5c38e4f964deaf6a44b4c2a2581a/daily_report-2.4.tar.gz" } ], "2.5": [ { "comment_text": "", "digests": { "md5": "e8c872328234f60ab6b1cfd0f27e8652", "sha256": "c038b1d17e82cc9c915bc8b5c6151009d29418d32deae4d0e0fa74830b7549b2" }, "downloads": -1, "filename": "daily_report-2.5.tar.gz", "has_sig": false, "md5_digest": "e8c872328234f60ab6b1cfd0f27e8652", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17006, "upload_time": "2018-09-17T09:24:40", "url": "https://files.pythonhosted.org/packages/e1/73/1a7574daebfd467b42e8c1d85ca4b3c7939cc9ecca63d5e305593df35c36/daily_report-2.5.tar.gz" } ], "2.6": [ { "comment_text": "", "digests": { "md5": "d010be0cd69c14f44fe669ded8ecf260", "sha256": "7dd40a877e2b9b5257dfe4df28c583ceb5c59d89043f0d372db1b970bf63c4ff" }, "downloads": -1, "filename": "daily_report-2.6.tar.gz", "has_sig": false, "md5_digest": "d010be0cd69c14f44fe669ded8ecf260", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17230, "upload_time": "2018-09-17T09:31:13", "url": "https://files.pythonhosted.org/packages/81/d3/7434e419471e8c163ef13303eedefa246aa2fdc57688f4fbc3f669f98ca2/daily_report-2.6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d010be0cd69c14f44fe669ded8ecf260", "sha256": "7dd40a877e2b9b5257dfe4df28c583ceb5c59d89043f0d372db1b970bf63c4ff" }, "downloads": -1, "filename": "daily_report-2.6.tar.gz", "has_sig": false, "md5_digest": "d010be0cd69c14f44fe669ded8ecf260", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17230, "upload_time": "2018-09-17T09:31:13", "url": "https://files.pythonhosted.org/packages/81/d3/7434e419471e8c163ef13303eedefa246aa2fdc57688f4fbc3f669f98ca2/daily_report-2.6.tar.gz" } ] }