...
Code Block |
---|
Number of flux loops = 17 Data of first flux loop = [ 0.00065229 0.00163073 0.00489218 ... -0.01761185 -0.01663342 -0.01500269] Homogeneous time basis = [ 1.83570397 1.86847198 1.90123999 ... 90.13289642 90.16566467 90.19843292] |
Warning |
---|
Only the MDS+ backend can be used for testing the code above since the WEST shot 54178 is not yet available in HDF5 format. It will be provided as soon as possible. |
put
Let's create and initialize a new 'magnetics' IDS and let's add it to the pulse file previously created in section 1.1.1.
...
Code Block |
---|
import imas import getpass import numpy as np from imas import imasdef #creating 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) #opening the pulse file handled by the Data Entry object previously created data_entry.open() #creating the 'magnetics' IDS and initializing it magnetics_ids = imas.magnetics() #creates a 'magnetics' IDS magnetics_ids.ids_properties.homogeneous_time=1 #setting the homogeneous time (mandatory) magnetics_ids.ids_properties.comment='IDS created for testing the IMAS Data Access layer' #setting the ids_properties.comment attribute magnetics_ids.time=np.array([0.]) #the time(vector) basis must be not empty if homogeneous_time==1 otherwise an error will occur at runtime #writing the 'magnetics' IDS data_entry.put(magnetics_ids, 0) #writes magnetics data to the data_entry associated to the pulse file. The second argument 0 is the so-called IDS occurrence. #closing the Data Entry data_entry.close() |
Note |
---|
If you are using the HDF5 backend, you can check the content of the magnetics.h5 file using h5dump: h5dump ~/public/imasdb/data_access_tutorial/3/15000/1/magnetics.h5 |
Let's extend the above example by adding the WEST data of the 10 first flux loops to the newly created 'magnetics' IDS.
Code Block |
---|
import imas
import getpass
import numpy as np
from imas import imasdef
#creating the Data Entry which handles 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)
#opening the pulse file handled by the Data Entry object previously created
data_entry.open()
#creating the 'magnetics' IDS and initializing it
magnetics_ids = imas.magnetics() #creates a 'magnetics' IDS
magnetics_ids.ids_properties.comment='IDS created for testing the IMAS Data Access layer' #setting the ids_properties.comment attribute
#adding the WEST data of the 10 first flux loops
nb_flux_loops = 10
west_data_entry = imas.DBEntry(imasdef.MDSPLUS_BACKEND, 'west', 54178, 0, 'g2lfleur')
west_magnetics_ids = west_data_entry.get('magnetics', 0) #reading occurrence 0
magnetics_ids.ids_properties.homogeneous_time=west_magnetics_ids.ids_properties.homogeneous_time #setting the homogeneous time (mandatory)
magnetics_ids.flux_loop.resize(nb_flux_loops)
for i in range(nb_flux_loops):
magnetics_ids.flux_loop[i].flux.data = west_magnetics_ids.flux_loop[i].flux.data #copies data
if west_magnetics_ids.ids_properties.homogeneous_time==0:
magnetics_ids.flux_loop[i].flux.time = west_magnetics_ids.flux_loop[i].flux.time #copies the time basis in case WEST IDS arrays don't accept a common time basis
if west_magnetics_ids.ids_properties.homogeneous_time==1:
magnetics_ids.time = west_magnetics_ids.time #copies the 'root' time basis in case WEST IDS arrays accept a common time basis
west_data_entry.close() #closing the WEST pulse file
#writing the 'magnetics' IDS
data_entry.put(magnetics_ids, 0) #writes magnetics data to the data_entry associated to the pulse file. The second argument 0 is the so-called IDS occurrence.
#closing the Data Entry
data_entry.close() |
...