Support renaming samples
Requested by @letard Ping @demariaa
Users need a way to rename samples.
For example:
.../RAW_DATA/sampleA/sampleA_0001/sampleA_0001.h5 (inside file: /x.y/sample/name="sampleA")
.../RAW_DATA/sampleA/sampleA_0002/sampleA_0002.h5 (inside file: /x.y/sample/name="sampleA")
.../RAW_DATA/sampleA/sampleA_0003/sampleA_0003.h5 (inside file: /x.y/sample/name="sampleA")
The user knows after the fact that dataset 0001 and 0002 are actually sampleB
SESSION> renamesample("sampleA", "sampleB", datasets=[1, 2]) # datasets are optional, take all by default
.../RAW_DATA/sampleB/sampleB_0001/sampleB_0001.h5 (inside file: /x.y/sample/name="sampleB")
.../RAW_DATA/sampleB/sampleB_0002/sampleB_0002.h5 (inside file: /x.y/sample/name="sampleB")
.../RAW_DATA/sampleA/sampleA_0003/sampleA_0003.h5 (inside file: /x.y/sample/name="sampleA")
If one of the new datasets already exist, abort the transaction and inform the user to choose a different sample name.
In the case of collections, for example the user knows after the fact that dataset 0001 and 0002 are actually measured at 320K
.../RAW_DATA/300K/300K_0001/300K_0001.h5 (inside file: /x.y/sample/name="sampleA")
.../RAW_DATA/300K/300K_0002/300K_0002.h5 (inside file: /x.y/sample/name="sampleB")
.../RAW_DATA/300K/300K_0003/300K_0003.h5 (inside file: /x.y/sample/name="sampleC")
SESSION> renamecollection("300K", "320K", datasets=[1, 2])
.../RAW_DATA/320K/320K_0001/320K_0001.h5 (inside file: /x.y/sample/name="sampleA")
.../RAW_DATA/320K/320K_0002/320K_0002.h5 (inside file: /x.y/sample/name="sampleB")
.../RAW_DATA/300K/300K_0003/300K_0003.h5 (inside file: /x.y/sample/name="sampleC")
If the sample name needs to be changed as well
SESSION> renamecollection("300K", "320K", datasets=[1, 2], sample_name="sampleD")
.../RAW_DATA/320K/320K_0001/320K_0001.h5 (inside file: /x.y/sample/name="sampleD")
.../RAW_DATA/320K/320K_0002/320K_0002.h5 (inside file: /x.y/sample/name="sampleD")
.../RAW_DATA/300K/300K_0003/300K_0003.h5 (inside file: /x.y/sample/name="sampleC")
In addition:
- the master files with external links need to be modified
- ICAT needs to be informed (unless you only change the collection name).
@demariaa ICAT+ needs an endpoint (or we define new activemq messages for this) that takes the old path of the dataset with the new Sample_name
.
We aim for the December shutdown to deploy this in Bliss 1.11 or higher.