...
- creating a so-called new IMAS Data Entry
- opening an existing IMAS Data Entry
- writing reading data of an IDS from an IDS to a existing Data Entryreading
- writing data of from an IDS from an existing to a 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 numbers number 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 a new pulse file
- open and read some (realistic) dynamic data read from an existing 'magnetics' IDS contained in a WEST pulse file (using open() and get() operation of the Access Layer)
- these data will be appended to a new 'magnetics' IDS
- write the new magnetics IDS to the new pulse file created at step 1
- close the two pulse files
- check the content of the pulse file. For this purpose we will:
- 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 pulse file
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 |
Now, the 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 |
...
Opening and reading some (realistic) dynamic data read from an existing 'magnetics' IDS contained in a WEST pulse file
The following code opens the existing MDS+ pulse file created previously for shot=15000, run=1, from the 'data_access_tutorial' database of the current user:reads a 'magnetics' IDS from WEST shot=54178, run=0 in the 'west' database of user 'g2lfleur':
Code Block | ||
---|---|---|
#
#opens | ||
Code Block | ||
| ||
import imas import getpass from imas import imasdef #creates the Data Entry object 'data_entry' associated to the pulse file with shot=1500054178, run=10, belonging to database 'data_access_tutorialwest' of the current useruser 'g2lfleur', using the MDS+ backend data_entry = imas.DBEntry(imasdef.MDSPLUS_BACKEND, 'data_access_tutorialwest, 1500054178, 10, user_name=getpass.getuser())'g2lfleur') #opens the pulse file associated to the Data Entry object 'data_entry' previously created data_entry.open() #reads the |
The pulse file is opened, however no data have been yet fetched from the pulse file.
...
'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
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() |
get/getSlice
deletedelete_data
...