Daniel Moore
Applications Engineer, iRODS Consortium
February 17, 2021
TRiRODS
Virtual
Python iRODS Client:
Atomic Metadata and
Parallel Transfer
Python iRODS Client:
Atomic Metadata and
Parallel Transfer
The Python iRODS Client Library - Improvements
Atomic Metadata
Available in Python iRODS Client since 0.8.6 release
Responds to Consortium member / community requests
Yoda (Utrecht) web application
metadata templates
The Python iRODS Client Library - Atomic Metadata
from irods.meta import (iRODSMeta, AVUOperation)
# ...
irods_object.metadata.apply_atomic_operations(
AVUOperation(operation = 'remove', avu = iRODSMeta('tag1','value1','units1')),
AVUOperation(operation = 'add', avu = iRODSMeta('tag2','value2','units2')),
# ...
)
operations = [ AVUOperation(operation = 'remove', avu = m) for m in irods_object.metadata.items() ]
operations += [ AVUOperation( operation = 'add', avu=iRODSMeta('flag','1',str(os.getpid()))) ]
irods_object.metadata.apply_atomic_operations( *operations )
We can also build the argument list programmatically.
To delete/replace all existing AVUs at once while adding a flag AVU:
Operate on collection, data object, user/group, or resource metadata:
The Python iRODS Client Library - Atomic Metadata - Usage
Live Demo
The Python iRODS Client Library - Atomic Metadata
Questions?
The Python iRODS Client Library - Atomic Metadata
Original
New
The Python iRODS Client Library - Parallel Transfer
Limitations
The Python iRODS Client Library - Original iRODS Parallel Transfer
Benefits
The Python iRODS Client Library - New iRODS Parallel Transfer
...
destination
request
(1)
destination
response
(2)
N direct
connections (3)
for
data movement (4)
Client
Connected
Server
Destination Server
...
potential
redirection
of data
Preliminary Performance Comparison
Transfer time (in seconds) of a single 2.7GB data object:
The Python iRODS Client Library - Parallel Transfer - Performance
Threads | PUT | GET | |
---|---|---|---|
iCommands | 1 | ~30 | ~30 |
Python | 1 | ~30 | ~30 |
iCommands | 3 | 24.7 | 24.2 |
Python | 3 | 24.9 | 24.5 |
A more complete performance analysis will be published soon.
1Gbps direct connection
Limitations / Future Work
The Python iRODS Client Library - Parallel Transfer - Implementation
Live Demo
The Python iRODS Client Library - Parallel Transfer
Possible Enhancements
The Python iRODS Client Library - Parallel Transfer
Questions?
The Python iRODS Client Library - Parallel Transfer