{ "info": { "author": "W. Trevor King", "author_email": "wking@tremily.us", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: OSI Approved :: GNU General Public License (GPL)", "Operating System :: POSIX", "Operating System :: Unix", "Programming Language :: Python", "Topic :: Scientific/Engineering", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "Pyafm\n=====\n\nPyafm is a set of tools for controlling atomic force microscopes. It\nprovides control of AFM postition using both short-range (piezo) and\nlong range (stepper) vertical positioning. There are separate modules\nfor controlling the piezo (pypiezo_) and stepper (stepper_), this\nmodule mostly contains methods that require the capabilities of both.\n\nThis module can optionally include temperature sensing via a pypid_\nbackend.\n\nPackages\n========\n\nGentoo\n------\n\nI've packaged pyafm for Gentoo. You need layman_ and my `wtk\noverlay`_. Install with::\n\n # emerge -av app-portage/layman\n # layman --add wtk\n # emerge -av sci-physics/pyafm\n\nAlthough it is not strictly required (thanks to `duck typing`_) you'll\nprobably also want my `stepper`_ package or an equivalent\nstepper implementation.\n\n\nDependencies\n============\n\nPyafm requires the following Python modules:\n\n* Pycomedi_ (required directly, and via ``pypiezo``)\n* Pypiezo_\n* Stepper_ (or equivalent stepper implementation)\n* Pypid_ (optional temperature monitoring and control)\n* H5config_ (required directly, and via ``pypiezo``)\n* SciPy_\n\nGetting the source\n==================\n\nPyafm is available as a Git_ repository::\n\n $ git clone git://tremily.us/pyafm.git\n\nThere are also periodic bundled releases. For example, get version\n0.3 as a gzipped tarball with::\n\n $ wget 'http://git.tremily.us/?p=pyafm.git;a=snapshot;h=v0.3;sf=tgz'\n $ tar -xzvf pyafm-0.1.tar.gz\n\n\nInstallation\n============\n\nAfter downloading, change to the source directory and run::\n\n $ python setup.py install\n\nto install pyafm. Run::\n\n $ python setup.py install --help\n\nto see a list of installation options you may want to configure.\n\n\nUsage\n=====\n\nThe docstrings include some pretty detailed tests to get you started.\n``dir()`` and ``help()`` are your friends ;). One neat feature that\nI've added recently (2012-03-16) is the ability to store and load\ncomplete AFM configurations via h5config_. For example, when you\nfirst use pyafm, it may take you a bit to dig up all the necessary\ncalibration constants, etc. and plug them into your config::\n\n >>> import pycomedi.constant\n >>> import pypiezo.config\n >>> import pyafm.config\n >>> config = pyafm.config.AFMConfig()\n >>> config['name'] = '1B3D9'\n >>> config['main-axis'] = 'z'\n >>> config['piezo'] = pypiezo.config.PiezoConfig()\n >>> config['piezo']['name'] = '2253E'\n >>> config['piezo']['axes'] = [\n ... pypiezo.config.AxisConfig(), pypiezo.config.AxisConfig()]\n >>> config['piezo']['axes'][0]['gain'] = 20\n >>> config['piezo']['axes'][0]['sensitivity'] = 8.8e-9\n >>> config['piezo']['axes'][0]['channel'] = pypiezo.config.OutputChannelConfig()\n >>> config['piezo']['axes'][0]['channel']['analog-reference] = pycomedi.constant.AREF.ground\n >>> config['piezo']['axes'][0]['channel']['analog-reference] = pycomedi.constant.AREF.ground\n\nand on, and on ;). Don't worry though, once you finish telling Python\nabout your particular AFM configuration, you can get a working ``AFM``\ninstance quite easily::\n\n >>> devices = []\n >>> afm = AFM(config=config, devices=devices)\n\nThat takes care of opening all the channels and initializing all the\npieces you configured above. ``devices`` will end up full of any\n``pycomedi.device.Device`` instances that you need. Once you're happy\nwith your setup, make sure the ``config`` object is up-to-date with::\n\n >>> afm.setup_config()\n\nWhich copies any new object state into the ``.config`` attribute\n(e.g. bit-to-volt conversion polynomials). Then save your\nconfiguration with::\n\n >>> import pyafm.storage\n >>> pyafm.storage.save_afm(afm=afm, filename='whatever', group='/optional')\n\nWhich will create a HDF5 file at the specified path, and store the AFM\nconfigutaion under the specified group. Both ``filename`` and\n``group`` are optional. If you leave them out, they will default to\n``~/.config/pyafm-default.h5`` and ``/`` respectively.\n\nThe next time you need to do something with the AFM, just load your\nold config file. If you used the default location, that's as easy\nas::\n\n >>> import pyafm.storage\n >>> devices = []\n >>> afm = pyafm.storage.load_afm(devices=devices)\n >>> afm.load_from_config()\n\nWhen you're done using them, it's good practice to close any devices\nin ``devices``::\n\n >>> for device in devices:\n ... device.close()\n\nUsing ``load_afm`` with the default path is a good way to keep your\nAFM configuration synchronized across several applications. That way,\nthere's only one place you need to update if you recalibrate your\npiezo or rebuild an amplifier.\n\n\n.. _layman: http://layman.sourceforge.net/\n.. _wtk overlay: http://blog.tremily.us/posts/Gentoo_overlay/\n.. _duck typing: http://en.wikipedia.org/wiki/Duck_typing\n.. _pycomedi: http://blog.tremily.us/posts/pycomedi/\n.. _pypiezo: http://blog.tremily.us/posts/pypiezo/\n.. _stepper: http://blog.tremily.us/posts/stepper/\n.. _pypid: http://blog.tremily.us/posts/pypid/\n.. _h5config: http://blog.tremily.us/posts/h5config/\n.. _SciPy: http://www.scipy.org/\n.. _Git: http://git-scm.com/", "description_content_type": null, "docs_url": null, "download_url": "http://git.tremily.us/?p=pyafm.git;a=snapshot;h=v0.5;sf=tgz", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://blog.tremily.us/posts/pyafm/", "keywords": null, "license": "GNU General Public License (GPL)", "maintainer": null, "maintainer_email": null, "name": "pyafm", "package_url": "https://pypi.org/project/pyafm/", "platform": "all", "project_url": "https://pypi.org/project/pyafm/", "project_urls": { "Download": "http://git.tremily.us/?p=pyafm.git;a=snapshot;h=v0.5;sf=tgz", "Homepage": "http://blog.tremily.us/posts/pyafm/" }, "release_url": "https://pypi.org/project/pyafm/0.5/", "requires_dist": null, "requires_python": null, "summary": "pyafm: tools for controlling atomic force microscopes.", "version": "0.5" }, "last_serial": 803200, "releases": { "0.1": [], "0.3": [], "0.4": [ { "comment_text": "", "digests": { "md5": "641f008c80efbc24b8b51abbb2999bc2", "sha256": "d90b8da71dc14ecc867aa8384224f88b5e90f790fcbe4447f9aadf3b32b00016" }, "downloads": -1, "filename": "pyafm-0.4.tar.gz", "has_sig": true, "md5_digest": "641f008c80efbc24b8b51abbb2999bc2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23476, "upload_time": "2012-07-22T18:35:51", "url": "https://files.pythonhosted.org/packages/72/a3/a8b426d0991f84e8657946481c1d18df4e4cda1d0fce79751b3b8d42247d/pyafm-0.4.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "001c9712ff32e7d25dcf657c16eec775", "sha256": "61e566eaa9c1e57ad5a66a2c54f3083e3c522f90057672cac383fd1a1288dd1b" }, "downloads": -1, "filename": "pyafm-0.5.tar.gz", "has_sig": false, "md5_digest": "001c9712ff32e7d25dcf657c16eec775", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23505, "upload_time": "2013-05-24T21:16:05", "url": "https://files.pythonhosted.org/packages/92/27/648e3d0563a44854aa08d38574192e390c0fd554c96ba53b88fa94be5d81/pyafm-0.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "001c9712ff32e7d25dcf657c16eec775", "sha256": "61e566eaa9c1e57ad5a66a2c54f3083e3c522f90057672cac383fd1a1288dd1b" }, "downloads": -1, "filename": "pyafm-0.5.tar.gz", "has_sig": false, "md5_digest": "001c9712ff32e7d25dcf657c16eec775", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23505, "upload_time": "2013-05-24T21:16:05", "url": "https://files.pythonhosted.org/packages/92/27/648e3d0563a44854aa08d38574192e390c0fd554c96ba53b88fa94be5d81/pyafm-0.5.tar.gz" } ] }