An ICAT WebService client module
author: Christian Felder
ICatClient -- ICAT WebService client ICatDAQ -- ICAT Data Acquisition using ICatClient ICatGetPlugin -- marshalling outgoing messages for ICatClient UniqueObjectCache -- A file-based URL cache (uniqueness temp directories) ICatFactory -- ICAT WebService object factory (cached) ICatType -- type constants for creating, reading, updating objects
ICatDAQ.addInvestigationbecause it will be removed in the upcoming ICAT release 4.3 (loops in graph).
I held a talk at the ICAT face 2 face meeting at Max IV laboratory on Lund in Sweden. Handout slides are available below.
PyICAT aims to keep the number of dependencies as small as possible. Nevertheless, the following requirements must be met.
The Gerrit code review page for this project can be obtained using the following url.
Source code distributions can be obtained using the following url.
Use the following command to check out a read-only working copy anonymously.
git clone https://forge.frm2.tum.de/review/jcns/icat/pyicat
To get a list of versions use the following command.
v1.0.0 v1.1.0 v1.1.1
To refer to a specific version (checkout specific version) after doing
git checkout v1.0.0
Since version 1.4 PyICAT uses pythons distutils package. To perform an installation just invoke the following command.
python setup.py install
Depending on your System you will need superuser privileges to do this, because of filesystem permissions.
To install into an user defined location you can specify a
export PREFIX=/opt/local python setup.py install --prefix=$PREFIX
You will not need superuser privileges to do this. Take care of your
PYTHONPATH environment. It has to include
Since version 1.4 PyICAT is shipped with the following programs.
icatconfig icatdaq icattest
Sets some default values for
icatdaq and configures which plugin should be used for which instrument.
Furthermore it is possible to store login credentials.
This is the main metadata acquisition program. Before using this program please run
This program uses plugins for different instruments. To support your own instruments you have to write your own plugin (see below).
This program tests your connection to an ICAT WebService and performs some basic tests.
user@localhost:~% icattest apps.jcns.fz-juelich.de:5443 db/icat42 secret login as: db/icat42 using WSDL: http://apps.jcns.fz-juelich.de:5443/ICATService/ICAT?wsdl using WSDL: https://apps.jcns.fz-juelich.de:5443/ICATService/ICAT?wsdl Tests finished
For this purpose inherit from PyICATs DAQ Plugin Abstract Base Class (
DAQMeta) in module
Store your plugin in some local directory named
plugins and create an
__init__.py file which specify the plugins.
For example if you have written a module
myinstrument containing a class
MyInstrumentDAQ which inherits from
__init__.py file has to contain the following.
__all__ = ["myinstrument"]
icatconfig to configure your plugin simply enter the following when prompt
instrument plugins.module.class (press ENTER to skip):
Take care of your
PYTHONPATH environment. It has to contain the folder above plugins otherwise
icatdaq would not recognize your plugin. If plugins directory is in your current working directory it should already work and you need not change your environment.
Due to service verification we offer an public available ICAT webservice.