pyicat_plus.client.main.IcatClient#
- class pyicat_plus.client.main.IcatClient(metadata_urls=None, elogbook_url=None, elogbook_token=None, metadata_queue=None, metadata_queue_monitor_port=None, elogbook_timeout=None, feedback_timeout=None, queue_timeout=None, beamline=None, proposal=None, elogbook_metadata=None, archive_urls=None, archive_queue=None, archive_queue_monitor_port=None, update_metadata_urls=None, update_metadata_queue=None, update_metadata_queue_monitor_port=None, add_files_urls=None, add_files_queue=None, add_files_queue_monitor_port=None, reschedule_investigation_urls=None, reschedule_investigation_queue=None, reschedule_investigation_queue_monitor_port=None, icatplus_restricted_url=None, icatplus_password=None, catalogue_queues=None, catalogue_url=None, tracking_url=None)[source]#
Bases:
IcatClientInterface
Client object that provides access to these services:
ActiveMQ message broker for creating datasets in ICAT
ActiveMQ message broker for updating dataset metadata in ICAT
ActiveMQ message broker for updating dataset file count in ICAT
ActiveMQ message broker for updating dataset archiving status in ICAT
RESTful interface for sending electronic logbook messages/images and get information about investigations
The RESTful interface is referred to as ICAT+ and the ActiveMQ message brokers are consumed by the “ingesters”.
- Parameters:
metadata_urls (
Optional
[List
[str
]])elogbook_url (
Optional
[str
])elogbook_token (
Optional
[str
])metadata_queue (
Optional
[str
])metadata_queue_monitor_port (
Optional
[int
])elogbook_timeout (
Optional
[float
])feedback_timeout (
Optional
[float
])queue_timeout (
Optional
[float
])beamline (
Optional
[str
])proposal (
Optional
[str
])elogbook_metadata (
Optional
[Mapping
])archive_urls (
Optional
[List
[str
]])archive_queue (
Optional
[str
])archive_queue_monitor_port (
Optional
[int
])update_metadata_urls (
Optional
[List
[str
]])update_metadata_queue (
Optional
[str
])update_metadata_queue_monitor_port (
Optional
[int
])add_files_urls (
Optional
[List
[str
]])add_files_queue (
Optional
[str
])add_files_queue_monitor_port (
Optional
[int
])reschedule_investigation_urls (
Optional
[List
[str
]])reschedule_investigation_queue (
Optional
[str
])reschedule_investigation_queue_monitor_port (
Optional
[int
])icatplus_restricted_url (
Optional
[str
])icatplus_password (
Optional
[str
])catalogue_queues (
Optional
[List
[str
]])catalogue_url (
Optional
[str
])tracking_url (
Optional
[str
])
- add_files(dataset_id=None)[source]#
Add missing files to a dataset already ingested.
- Parameters:
dataset_id (
Optional
[int
]) – The ICAT dataset identifier.
- property add_files_client#
- property archive_client#
- property catalogue_client#
- property current_beamline#
- property current_dataset#
- property current_dataset_metadata#
- property current_path#
- property current_proposal#
- do_log_in(password)[source]#
Login to access the restricted part of the API.
- Parameters:
password (
str
)- Return type:
dict
- Returns:
authentication info
- property elogbook_client#
- property expire_datasets_on_close: bool#
A flag indicating whether the dataset expires when it is closed or if it is synchronized with the metadata catalog.
- get_investigations_by(filter=None, instrument_name=None, start_date=None, end_date=None)[source]#
Returns a list of investigations matching the provided criteria.
- Parameters:
filter (
Optional
[str
])instrument_name (
Optional
[str
])start_date (
Optional
[datetime
])end_date (
Optional
[datetime
])
- Return type:
List
[dict
]- Returns:
list of investigations
- get_parcels_by(investigation_id)[source]#
Returns the list of parcels associated to an investigation.
- Parameters:
investigation_id (
str
)- Return type:
List
[dict
]- Returns:
list of parcel information
- property investigation_client#
- investigation_info(beamline, proposal, date=None, allow_open_ended=True, timeout=None)[source]#
Return the information of the experiment session corresponding to a beamline, proposal and date.
- Parameters:
beamline (
str
) – The beamline name.proposal (
str
) – The proposal name.date (
Union
[datetime
,date
,None
]) – The date of the proposal, current date by default.allow_open_ended (
bool
) – If True, enable to select an unofficial experiment session.timeout (
Optional
[float
]) – Set a timeout for the ICAT request.
- Return type:
Optional
[dict
]- Returns:
If found, return the proposal, beamline, e-logbbok url and data portal url of the experiment session.
- investigation_info_string(beamline, proposal, date=None, allow_open_ended=True, timeout=None)[source]#
Return the experiment session information as a string.
- Parameters:
beamline (
str
) – The beamline name.proposal (
str
) – The proposal name.date (
Union
[datetime
,date
,None
]) – The date of the proposal, current date by default.allow_open_ended (
bool
) – If True, enable to select an unofficial experiment session.timeout (
Optional
[float
]) – Set a timeout for the ICAT request.
- Return type:
str
- Returns:
If found, return the experiment session information from the metadata catalog as a string.
- investigation_summary(beamline, proposal, date=None, allow_open_ended=True, timeout=None)[source]#
Return the experiment session information as a Tuple.
- Parameters:
beamline (
str
) – The beamline name.proposal (
str
) – The proposal name.date (
Union
[datetime
,date
,None
]) – The date of the proposal, current date by default.allow_open_ended (
bool
) – If True, enable to select an unofficial experiment session.timeout (
Optional
[float
]) – Set a timeout for the ICAT request.
- Return type:
List
[Tuple
]- Returns:
If found, return the experiment session information from the metadata catalog as a Tuple.
- property metadata_client#
- property reason_for_missing_information: str#
A string explaining why some information is missing in the metadata catalog.
- registered_dataset_ids(beamline, proposal, date=None, allow_open_ended=True, timeout=None)[source]#
Return the dataset list of an experiment session.
- Parameters:
beamline (
str
) – The beamline name of the proposal.proposal (
str
) – The proposal name.date (
Union
[datetime
,date
,None
]) – The date of the proposal, current date by default.allow_open_ended (
bool
) – If True, enable to select an unofficial experiment session.timeout (
Optional
[float
]) – Set a timeout for the ICAT request.
- Return type:
Optional
[List
[DatasetId
]]- Returns:
The list of datasets (name and path).
- registered_datasets(beamline, proposal, date=None, allow_open_ended=True, timeout=None)[source]#
Return the dataset information list of an experiment session.
- Parameters:
beamline (
str
) – The beamline name of the proposal.proposal (
str
) – The proposal name.date (
Union
[datetime
,date
,None
]) – The date of the proposal, current date by default.allow_open_ended (
bool
) – If True, enable to select an unofficial experiment session.timeout (
Optional
[float
]) – Set a timeout for the ICAT request.
- Return type:
Optional
[List
[Dataset
]]- Returns:
The list of datasets (name, path, ICAT identifier, and
DatasetMetadata
).
- reschedule_investigation(investigation_id)[source]#
Reschedule an investigation defined by its id.
- Parameters:
investigation_id (
str
)
- send_binary_data(data, mimetype=None, beamline=None, proposal=None, beamline_only=None, **payload)[source]#
Send an image in base64 format to the proposal or beamline e-logbook.
- Parameters:
data (
bytes
) – The binary message content.mimetype (
Optional
[str
]) – {‘text/plain’, ‘text/html’}, optional.beamline (
Optional
[str
]) – The beamline name of the proposal or beamline e-logbook.proposal (
Optional
[str
]) – The proposal name of the e-logbook. Ignored if beamline_only is True.beamline_only (
Optional
[bool
]) – if True, the message will be stored in the beamline e-logbook.payload – Additional payload for the e-logbook message. It can contain tags (list of strings or list of dictionaries), the machine, the software.
- send_binary_file(filename, beamline=None, proposal=None, beamline_only=None, **payload)[source]#
Send the content of a file as a binary image to the proposal or beamline e-logbook.
- Parameters:
filename (
str
) – The filename of the image to be sent.beamline (
Optional
[str
]) – The beamline name of the proposal or beamline e-logbook.proposal (
Optional
[str
]) – The proposal name of the e-logbook. Ignored if beamline_only is True.beamline_only (
Optional
[bool
]) – if True, the message will be stored in the beamline e-logbook.payload – Additional payload for the e-logbook message. It can contain tags (list of strings or list of dictionaries), the machine, the software.
- send_message(msg, msg_type=None, beamline=None, proposal=None, dataset=None, beamline_only=None, editable=None, formatted=None, mimetype=None, **payload)[source]#
Send a message to the proposal or beamline e-logbook.
- Parameters:
msg (
str
) – The message content.msg_type (
Optional
[str
]) – {‘comment’, ‘debug’, ‘info’, ‘error’, ‘commandLine’}, optional.beamline (
Optional
[str
]) – The beamline name of the proposal or beamline e-logbook.proposal (
Optional
[str
]) – The proposal name of the e-logbook. Ignored if beamline_only is True.dataset (
Optional
[str
]) – The specific dataset name to link the message to.beamline_only (
Optional
[bool
]) – if True, the message will be stored in the beamline e-logbook.editable (
Optional
[bool
]) – Used with the formatted field, to determine the category of message. Annotation characterizes editable and unformatted messages, while Notification charaterizes non-editable and formatted messages.formatted (
Optional
[bool
]) – Used with the editable field, to determine the category of message. Annotation characterizes editable and unformatted messages, while Notification charaterizes non-editable and formatted messages.mimetype (
Optional
[str
]) – {‘text/plain’, ‘text/html’}, optional.payload – Additional payload for the message. It can contain tags (list of strings or list of dictionaries), the machine, the software.
- send_text_file(filename, beamline=None, proposal=None, dataset=None, beamline_only=None, **payload)[source]#
Send the content of a text file as a message to the proposal or beamline e-logbook.
- Parameters:
filename (
str
) – The filename containing the message to be sent.beamline (
Optional
[str
]) – The beamline name of the proposal or beamline e-logbook.proposal (
Optional
[str
]) – The proposal name of the e-logbook. Ignored if beamline_only is True.beamline_only (
Optional
[bool
]) – if True, the message will be stored in the beamline e-logbook.payload – Additional payload for the e-logbook message. It can contain tags (list of strings or list of dictionaries), the machine, the software.
dataset (
Optional
[str
])
- start_investigation(beamline=None, proposal=None, start_datetime=None, end_datetime=None)[source]#
Send a message to ActiveMQ to either synchronize the experiment session from the User Portal in ICAT or to create a test experiment session in ICAT.
- Parameters:
beamline (
Optional
[str
]) – The beamline name of the proposal.proposal (
Optional
[str
]) – The proposal name.start_datetime – The start date of the experiment session, timezone local time. Current date time by default.
end_datetime – The end date of the experiment session, timezone local time.
- store_dataset(beamline=None, proposal=None, dataset=None, path=None, metadata=None, store_filename=None)[source]#
Request icat to store raw dataset.
- Parameters:
str (proposal) – beamline name like id01, id15a, bm18…
str – proposal name like in1169, blc14795, ihma429…
dataset (
Optional
[str
]) – dataset name.path (
Optional
[str
]) – path to the raw dataset to store. Must be a folder.metadata (
Optional
[dict
]) – metadata to associate to the dataset. Must contains keys defined by the appropriate application definition from https://gitlab.esrf.fr/icat/hdf5-master-config/-/blob/88a975039694d5dba60e240b7bf46c22d34065a0/hdf5_cfg.xml.store_filename (
Optional
[str
]) – xml file with metadata to be stored.beamline (
Optional
[str
])proposal (
Optional
[str
])dataset
path
metadata
store_filename
- store_dataset_from_file(store_filename=None)[source]#
Send a message to ActiveMQ to store a dataset and the associated metadata from a xml file stored on the disk.
- Parameters:
store_filename (
Optional
[str
]) – The XML filename containing all dataset metadata.
- store_processed_data(beamline=None, proposal=None, dataset=None, path=None, metadata=None, raw=(), store_filename=None)[source]#
The ‘raw’ argument is shorthand for metadata = {‘input_datasets’: …}.
- Parameters:
beamline (
Optional
[str
])proposal (
Optional
[str
])dataset (
Optional
[str
])path (
Optional
[str
])metadata (
Optional
[dict
])raw (
Sequence
)store_filename (
Optional
[str
])
- property tracking_client#
- update_archive_restore_status(dataset_id=None, type=None, level=StatusLevel.INFO, message=None)[source]#
Update the archiving or restore status of a dataset.
- Parameters:
dataset_id (
Optional
[int
]) – The ICAT dataset identifier.type (
Optional
[StatusType
]) – The type of the status, possible options are {‘archiving’, ‘restoration’}.level (
StatusLevel
) – The level of the status message; possible options are {‘info’, ‘warning’, ‘error’}.message (
Optional
[str
]) – The optional status’ message.
- update_metadata(proposal=None, beamline=None, dataset_paths=None, metadata_name=None, metadata_value=None)[source]#
Update or create datasets metadata.
- Parameters:
proposal (
Optional
[str
]) – The proposal name.beamline (
Optional
[str
]) – The beamline name of the proposal.dataset_paths (
Optional
[str
]) – Comma-separated list of the dataset locations.metadata_name (
Optional
[str
]) – The name of the metadata to update.metadata_value (
Optional
[str
]) – The new value of the metadata.
- property update_metadata_client#