...
- creating a so-called new IMAS Data Entry
- opening an existing IMAS Data Entryreading
- writing data of from an IDS from an existing to a Data Entrywriting
- reading data of an IDS from an IDS to a existing Data Entry
- deleting an IDS from an existing Data Entry
- closing a Data Entry
A Data Entry is an IMAS concept for designating a pulse experiment with given shot and run number numbers located in some database (see below).
...
Documentation of all others HLIs is available in the User guide available from this page: https://confluence.iter.org/display/IMP/Integrated+Modelling+Home+Page
Using get() and put() operations
In this tutorial, in order to illustrate the use of get() and put() operations, we will:
create
...
- these data will be appended to a new 'magnetics' IDS
...
- open the newly created pulse file
- read the new magnetics IDS
- display the dynamic data which has beed added in the IDS
...
Creating a new Data Entry using the MDS+ backend consists in creating a new pulse file on disk. Therefore, you need to have write permissions for the database specified in the create() command.
...
Code Block |
---|
module load IMAS imasdb data_access_tutorial |
The Now, the following code will create a new MDS+ pulse file for shot=15000, run=1 in the 'data_access_tutorial' database of the current user:
Code Block |
---|
import imas
import getpass
from imas import imasdef
#creates the Data Entry object 'data_entry' associated to the pulse file with shot=15000, run=1, belonging to database 'pcss_tutorial' of the current user, using the MDS+ backend
data_entry = imas.DBEntry(imasdef.MDSPLUS_BACKEND, 'data_access_tutorial, 15000, 1, user_name=getpass.getuser())
#creates the pulse file associated to the Data Entry object 'data_entry' previously created
data_entry.create()
#close the pulse file associated to the 'data_entry' object
data_entry.close() |
Execution of the code above will create the pulse file at location ~/public/imasdb/data_access_tutorial/3/0:
Code Block |
---|
$ ls -alh ~/public/imasdb/data_access_tutorial/3/0 total 78M drwxrwsr-x 2 fleuryl fleuryl 4.0K Aug 31 10:09 . drwxrwsr-x 12 fleuryl fleuryl 4.0K Aug 31 10:09 .. -rw-rw-r-- 1 fleuryl fleuryl 42M Aug 31 10:09 ids_150000001.characteristics -rw-rw-r-- 1 fleuryl fleuryl 37 Aug 31 10:09 ids_150000001.datafile -rw-rw-r-- 1 fleuryl fleuryl 36M Aug 31 10:09 ids_150000001.tree |
...
open
The following code reads a 'magnetics' IDS from WEST shot=54178, run=0 in the 'west' database of user 'g2lfleur':opens the existing MDS+ pulse file created previously for shot=15000, run=1, from the 'data_access_tutorial' database of the current user:
Code Block | ||
---|---|---|
| ||
import imas
import getpass
from imas import imasdef
#creates | ||
Code Block | ||
# #opens the Data Entry object 'data_entry' associated to the pulse file with shot=5417815000, run=01, belonging to database 'westdata_access_tutorial' of the current user 'g2lfleur', using the MDS+ backend data_entry = imas.DBEntry(imasdef.MDSPLUS_BACKEND, 'westdata_access_tutorial, 5417815000, 01, user_name='g2lfleur'getpass.getuser()) #opens the pulse file associated to the Data Entry object 'data_entry' previously created data_entry.open() #reads the 'magnetics" IDS data_entry.magnetics.get() |
Using put() and putSlice() operations
In this tutorial, in order to illustrate the use of getSlice() and putSlice() operations, we will:
- open the previous created pulse file
- write10 images (10 frames) to a new 'camera_visible' IDS using the putSlice() operation
- close the pulse file
- read few time slices to check the content of the file, using the getSlice() operation
The pulse file is opened, however no data have been yet fetched from the pulse file.
put/putSlice
IDSs are data containers described by the IMAS Data Dictionary. IDSs represent either a Diagnostics (like the 'bolometer' IDS), or a System (like the 'camera_ir'), or a concept like the 'equilibrium' IDS representing the plasma equilibrium.
...
Code Block |
---|
import imas import getpass import numpy as np from imas import imasdef #creates the Data Entry object 'data_entry' associated to the pulse file with shot=15000, run=1, belonging to database 'data_access_tutorial' of the current user, using the MDS+ backend data_entry = imas.DBEntry(imasdef.MDSPLUS_BACKEND, 'data_access_tutorial, 15000, 1, user_name=getpass.getuser()) #opens the pulse file associated to the Data Entry object 'data_entry' previously created data_entry.open() magnetics_ids = imas.magnetics() #creating a 'magnetics' IDS magnetics_ids.ids_properties.homogeneous_time=1 #setting the homogneous time to 1 magnetics_ids.ids_properties.comment='IDS created for testing the IMAS Data Access layer' magnetics_ids.time=np.array([0]) #the time(vector) basis must be not empty, otherwise an error will occur at runtime data_entry.put(magnetics_ids, 0) #writing magnetics data to the data_entry associated to the pulse file. The second argument 0 is the so-called IDS occurrence. data_entry.close() |