Changing ownership of objects
Warning
Data does not need to be assigned to a group where the data owner is a member, and administrators may wish to change the ownership of data or move it between groups in several steps of a larger workflow. However, it is generally expected that data should end up in a group where the data owner is a member, so that they can view their data in the OMERO clients.
Who may change ownership of data
a full administrator
a restricted administrator with Chown privilege
an owner of the group that the data is in if the target user is a member of the group
How to change ownership of data
The omero chown command transfers objects to the ownership of a
different user. Further help is available using the -h
option:
$ omero chown -h
The omero chown command can transfer entire graphs of objects based on
the IDs of the topmost objects. The command can be modified to include
the transfer of objects that would, by default, be excluded or exclude
objects that would, by default, be included using the
omero chown --include
and omero chown --exclude
options.
It is also possible to transfer objects lower in the hierarchy by specifying the type and ID of a topmost object and the type of the lower object. For instance, transferring all of the images under a given project.
All the data of a given user can be transferred using the omero chown command. This is useful when somebody leaves a lab to move on to another project or institution and their previous work is to be curated or continued by a colleague. This feature has to be considered as advanced and might be slow and demanding of CPU resources in cases of complex data.
By default the command confirms the transfer of the target objects but
it can also provide a detailed report of all the transferred objects via an
omero chown --report
option. An omero chown --dry-run
option can be used to report on which objects’ ownership would change without
actually transfering them.
Examples
Basic transfer of ownership
$ omero chown 5 OriginalFile:101
$ omero chown User:5 Project:51
$ omero chown Experimenter:5 Project:51
$ omero chown jane Project:51
In the first line, the ownership of original file with ID 101 will be transferred to the user with ID 5. In the second and third, the ownership of project 51 will be transferred including any datasets inside only that project and any images that are contained within transferred datasets only, as long as all the mentioned objects (project, datasets and images) are originally owned by one user. If user 5 is named ‘jane’ then the last line will have the same effect as the previous two. Note that any linked annotations will be transferred depending on the permission level of the group in which the data and users are in.
Transferring multiple objects
Multiple objects can be specified with each type being followed by an ID or a comma-separated list of IDs. The order of objects or IDs is not significant, thus all three calls below are identical in transferring ownership of project 51 and datasets 53 and 54 to user 5.
$ omero chown 5 Project:51 Dataset:53,54
$ omero chown 5 Dataset:54,53 Project:51
$ omero chown 5 Dataset:53 Project:51 Dataset:54
To transfer a number of objects with sequentially numbered IDs a hyphen can be used to specify an ID range. This form can also be mixed with comma-separated IDs.
$ omero chown 5 Project:51 Dataset:53-56
$ omero chown 5 Dataset:53-56,65,101-105,201,202
Note
When transferring multiple objects in a single command,
if one object cannot be transferred then the whole command will fail
and none of the specified objects will be transferred.
The omero chown --dry-run
option can be useful
as a check before trying to move large numbers of objects.
Transferring lower level objects
To transfer objects below a specified top-level object the following form of the object specifier is used.
$ omero chown 5 Project/Dataset/Image:51
Here the all of images under the project 51 would be transferred. It is not necessary to specify intermediate objects in the hierarchy and so:
$ omero chown 5 Project/Image:51
would have the same effect as the call above.
Transferring all objects belonging to specified users
Note that this feature is advanced and might be potentially slow. To transfer ownership of all objects belonging to a user or group of users the following form of the user specifier is used.
$ omero chown 10 Experimenter:1,3,7
Here ownership of all the objects belonging to users 1, 3 and 7 would be transferred to user 10.
Including and excluding objects
- --include
Linked objects that would not ordinarily be transferred can be included in the transfer using the –include option:
$ omero chown 5 Image:51 --include Annotation
This call would move any annotation objects linked to the image.
- --exclude
Linked objects that would ordinarily be transferred can be excluded from the transfer using the –exclude option:
$ omero chown 5 Project:51 --exclude Dataset
This will transfer project 51 but not any datasets contained in that project.
The two options can be used together:
$ omero chown 5 Project/Dataset:53 --exclude Image --include FileAnnotation
This will transfer any datasets under project 53, that are not otherwise contained elsewhere, excluding any images in those datasets but including any file annotations linked to the moved datasets. In this case the images that are not otherwise contained in datasets will be orphaned.
Further options
- --ordered
Move the objects in the order specified.
Normally all of the specified objects are grouped into a single transfer command. However, each object can be transferred separately and in the order given. Thus:
$ omero chown 5 Dataset:53 Project:51 Dataset:54 --ordered
would be equivalent to making three separate calls:
$ omero chown 5 Dataset:53 $ omero chown 5 Project:51 $ omero chown 5 Dataset:54
- --report
Provide a detailed report of what is transferred:
$ omero chown 5 Project:502 --report
- --dry-run
Run the command and report success or failure but does not transfer the objects. This can be combined with the
omero chown --report
to provide a detailed confirmation of what would be transferred before running the move itself.