{ "info": { "author": "Lorenzo Busoni", "author_email": "lorenzo.busoni@inaf.it", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "description": "# PALPAO: deformable mirror controller \n\n[![Build Status][travis]][travislink] [![Coverage Status][coveralls]][coverallslink] [![PyPI version][pypiversion]][pypiversionlink]\n\nThis is part a component of the Plico framework to control DMs (Alpao, MEMS)\n\n\n[plico]: https://github.com/lbusoni/plico\n[pysilico]: https://github.com/lbusoni/pysilico\n[allied]: https://www.alliedvision.com\n[travis]: https://travis-ci.com/lbusoni/palpao.svg?branch=master \"go to travis\"\n[travislink]: https://travis-ci.com/lbusoni/palpao\n[coveralls]: https://coveralls.io/repos/github/lbusoni/palpao/badge.svg?branch=master \"go to coveralls\"\n[coverallslink]: https://coveralls.io/github/lbusoni/palpao\n[pypiversion]: https://badge.fury.io/py/palpao.svg\n[pypiversionlink]: https://badge.fury.io/py/palpao\n\n## Installation\n\n### Installing\n\nFrom the wheel\n\n```\npip install palpao-XXX.whl\n```\n\nIn palpao source dir\n\n```\npip install .\n```\n\nDuring development you want to update use\n\n```\npip install -e .\n```\nthat install a python egg with symlinks to the source directory in such \na way that chages in the python code are immediately available without \nthe need for re-installing (beware of conf/calib files!)\n\n### Uninstall\n\n```\npip uninstall palpao\n```\n\n### Config files\n\nThe application uses `appdirs` to locate configurations, calibrations \nand log folders: the path varies as it is OS specific. \nThe configuration files are copied when the application is first used\nfrom their original location in the python package to the final\ndestination, where they are supposed to be modified by the user.\nThe application never touches an installed file (no delete, no overwriting)\n\nTo query the system for config file location, in a python shell:\n\n```\nimport palpao\npalpao.defaultConfigFilePath\n```\n\n\nThe user can specify customized conf/calib/log file path for both\nservers and client (how? ask!)\n\n\n## Usage\n\n### Starting Server\n\n```\npalpao_start\n```\nStarts the 2 servers that control one device each.\n\n\n### Using client \n\nIn a Python / IPython shell:\n\n```\nIn [1]: import palpao\n\nIn [2]: dm1=palpao.DeformableMirror('AlpaoDM277')\n\nIn [3]: dm2=palpao.DeformableMirror('MemsMultiDM')\n\nIn [4]: dm1.getSnapshot('boo')\nOut[4]: {'boo.COMMAND_COUNTER': 0, 'boo.SERIAL_NUMBER': '1', 'boo.STEP_COUNTER': 45956}\n\nIn [5]: dm1.applyZonalCommand(np.ones(277))\n\nIn [6]: dm1.getZonalCommand()\nOut[6]:\narray([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n 1., 1., 1., 1., 1.])\n\nIn [7]: dm1.getSnapshot('boo')\nOut[7]: {'boo.COMMAND_COUNTER': 1, 'boo.SERIAL_NUMBER': '1', 'boo.STEP_COUNTER': 83589}\n\nIn [8]: dm2.getSnapshot('tux')\nOut[8]:\n{'tux.COMMAND_COUNTER': 0,\n 'tux.SERIAL_NUMBER': '234',\n 'tux.STEP_COUNTER': 95980}\n```\n\n\n### Terminal\n\nAn ipython terminal with palpao embedded\n\n```\npalpao_terminal\n```\n\n### Stopping Palpao\n\nTo kill the servers\n\n```\npalpao_stop\n```\n\nMore hard:\n\n```\npalpao_kill_all\n```\n\n\n\n\n## Administration Tool\n\nFor developers.\n\n\n### Testing\nNever commit before tests are OK!\nTo run the unittest and integration test suite execute in palpao source dir\n\n```\npython setup.py test\n```\n\n\n### Creating a Conda environment\nUse the Anaconda GUI or in terminal\n\n```\nconda create --name palpao \n```\n\nTo create an environment with a specific python version\n\n```\nconda create --name palpao26 python=2.6\n```\n\n\nIt is better to install available packages from conda instead of pip. \n\n```\nconda install --name palpao matplotlib scipy ipython numpy\n```\n\n### Packaging and distributing\n\nSee https://packaging.python.org/tutorials/distributing-packages/#\n\nTo make a source distribution\n\n```\npython setup.py sdist\n```\n\nand the tar.gz is created in palpao/dist\n\n\nIf it is pure Python and works on 2 and 3 you can make a universal wheel \n\n```\npython setup.py bdist_wheel --universal\n```\n\nOtherwise do a pure wheel\n\n```\npython setup.py bdist_wheel\n```\n\nThe wheels are created in palpao/dist. I suppose one can trash palpao/build now and distribute the files in palpao/dist\n\n\nTo upload on pip (but do you really want to make it public?)\n\n```\ntwine upload dist/*\n```", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/lbusoni/palpao", "keywords": "plico, deformable mirror, ALPAO, Boston MEMS, Physik Instrument, piezo, laboratory, instrumentation control", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "palpao", "package_url": "https://pypi.org/project/palpao/", "platform": "", "project_url": "https://pypi.org/project/palpao/", "project_urls": { "Homepage": "https://github.com/lbusoni/palpao" }, "release_url": "https://pypi.org/project/palpao/0.16.0/", "requires_dist": null, "requires_python": "", "summary": "ALPAO, Boston MEMS, Physik Instrument Deformable mirrors interface", "version": "0.16.0" }, "last_serial": 4346902, "releases": { "0.14.0": [ { "comment_text": "", "digests": { "md5": "6243e873f8665c96b68a68ec7017102e", "sha256": "3615de62c7bdcd5938245d0e29b5bf26d046842f58cf44ecb8e2ad81346c5386" }, "downloads": -1, "filename": "palpao-0.14.0.tar.gz", "has_sig": false, "md5_digest": "6243e873f8665c96b68a68ec7017102e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15073, "upload_time": "2018-09-25T06:08:53", "url": "https://files.pythonhosted.org/packages/8e/a1/83cd0444231ade2c940c112b40c57f7327bb48502cb3d205914834db10ad/palpao-0.14.0.tar.gz" } ], "0.15": [ { "comment_text": "", "digests": { "md5": "fcb6f65d16903ff9a324d19fb0cfcfed", "sha256": "63c608741f17878e6e7e32182f6789fe65f29265d0858f725b900953d84574c2" }, "downloads": -1, "filename": "palpao-0.15.tar.gz", "has_sig": false, "md5_digest": "fcb6f65d16903ff9a324d19fb0cfcfed", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15918, "upload_time": "2018-10-01T21:36:13", "url": "https://files.pythonhosted.org/packages/8f/e7/c6fe2422eb04bfdd00e713e3b8de98ba52909dafbf1b6561110ce201f169/palpao-0.15.tar.gz" } ], "0.16.0": [ { "comment_text": "", "digests": { "md5": "efefc64fd089881099b478b11bf95154", "sha256": "1371149a0f90c1b889e589aa7199b8f34e8abd316b6525361c112a318f496744" }, "downloads": -1, "filename": "palpao-0.16.0.tar.gz", "has_sig": false, "md5_digest": "efefc64fd089881099b478b11bf95154", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16298, "upload_time": "2018-10-06T10:23:41", "url": "https://files.pythonhosted.org/packages/5b/ec/bed7418e6f0fe57c801518aeda4540b24dba6e7ca3061a8eb917b2a9009e/palpao-0.16.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "efefc64fd089881099b478b11bf95154", "sha256": "1371149a0f90c1b889e589aa7199b8f34e8abd316b6525361c112a318f496744" }, "downloads": -1, "filename": "palpao-0.16.0.tar.gz", "has_sig": false, "md5_digest": "efefc64fd089881099b478b11bf95154", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16298, "upload_time": "2018-10-06T10:23:41", "url": "https://files.pythonhosted.org/packages/5b/ec/bed7418e6f0fe57c801518aeda4540b24dba6e7ca3061a8eb917b2a9009e/palpao-0.16.0.tar.gz" } ] }