Files, containing images or other data are attached to elements with URIs defining a resource level and a file level:
>>> project.resources().files()
['image.nii']
Files are uploaded with the insert() method, which is similar to the insert() method but supports different arguments:
>>> project.resource('NIFTI').file('T1.nii').insert('/tmp/image.nii')
>>> project.resource('NIFTI').file('image.nii').insert(
... '/tmp/image.nii',
... content='T1',
... format='NIFTI'
... tags='image test')
Warning
The content, format and tags attributes can only be set when uploading the file, and then cannot be modified.
Files are downloaded with the get() method. Given no location, a default path in the cachedir will be automatically generated and returned. A custom location can however be given and the file will still be tracked by the CacheManager and affected by its operations. Use get_copy() instead if you want to download a file outside of the cache scope.
>>> project.resource('NIFTI').file('T1.nii').get()
'/tmp/nosetests@central.xnat.org/c7a5b961fc504ffc9aa292f76d75fb0c_image.nii'
>>> project.resource('NIFTI').file('T1.nii').get('/tmp/test.nii')
'/tmp/test.nii'
>>> project.resource('NIFTI').file('T1.nii').get_copy()
'/tmp/nosetests@central.xnat.org/workspace/projects/Volatile/resources/123150742/files/image.nii'
>>> project.resource('NIFTI').file('T1.nii').get_copy('/tmp/test.nii')
'/tmp/test.nii'
If attributes were defined they can be retrieved:
>>> project.resource('NIFTI').file('image.nii').size()
98098
>>> project.resource('NIFTI').file('image.nii').content()
'T1'
>>> project.resource('NIFTI').file('image.nii').format()
'NIFTI'
>>> project.resource('NIFTI').file('image.nii').tags()
'image test'