...
3.1 Accessing data using Python
Exercise no. 3 - After this exercise you will:
- know how to access UAL using Python
- know how to retrieve IDS from UAL
- know how to access IDS data
Exercise no. 3 (approx. 15 min)
1. source ITMv1 script by invoking
source $ITMSCRIPTDIR/ITMv1 kepler test 4.10b > /dev/null
2. Go to example directory
...
3. Execute sample
Code Block |
---|
Code Block |
---|
|
shell> python ./put_ids_array.py
shell> python ./put_ids_slices.py |
4. Open example file
Handling IDSes: put put() vs. putSlice() |
---|
Code Block |
---|
language | py |
---|
title | $TUTORIAL_DIR/ids_basics/python/put_ids_array.pyITM |
---|
linenumbers | true |
---|
| import sys
from pylab import *
import ual
ids = ual.itm(13,3)
ids.create()
if not ids.isConnected():
print 'error during itmdb entry creation'
sys.exit(1)
ids.equilibriumArray.resize(10)
equi = ids.equilibriumArray
#First fill fields which are not time-dependent.
equi.array[0].datainfo.dataprovider = 'MKO'
equi.array[0].datainfo.putdate = '20/09/2016'
equi.array[0].codeparam.parameters = 'param'
# ---- a loop ----
for i in range(0, 10):
#Fill time-dependent fields
equi.array[i].eqgeometry.boundary.resize(1)
equi.array[i].eqgeometry.boundary[0].r = sin(arange(0,2*pi,2*pi/100)) + (1/float(100-i).resize(1)
equi.array[i].eqgeometry.boundary[0].zr = cossin(arange(0,2*pi,2*pi/100)) + (1/float(100-i))
#Do not forget time!!
equi.array[i].eqgeometry.boundary[0].timez = i
# ---- a loop ----
#Save data in the database
equi.put() # <= Called outside the loop
#close the pulse file
ids.close() | Code Block |
---|
language | py |
---|
title | $TUTORIAL_DIR/ids_basics/python/put_ids_slices.py |
---|
linenumbers | true |
---|
| cos(arange(0,2*pi,2*pi/100)) + (1/float(100-i))
#Do not forget time!!
equi.array[i].time = i
# ---- a loop ----
#Save data in the database
equi.put() # <= Called outside the loop
#close the pulse file
ids.close() |
| Code Block |
---|
language | py |
---|
title | IMAS |
---|
linenumbers | true |
---|
| import imas
import numpy
import sys
imas_obj = imas.ids(11, 22)
imas_obj.create() # Create a new instance of database
# Define a first generic vector and its time base
time = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0]
ids = imas_obj.core_profiles
# allocate the ids fie
ids.global_quantities.ip.resize(len(time))
ids.time.resize(len(time))
# Mandatory to define this property
ids.ids_properties.homogeneous_time = 0
#First fill fields which are not time-dependent.
# Fillthe ids fields with data
ids.ids_properties.comment = 'This is a test ids'
for i in range(len(time)):
#Fill time-dependent fields
ids.global_quantities.ip[i] = time[i] * 10
ids.time[i] = time[i]
#Save data in the database
ids.putimport sys
from pylab import *
import ual
ids = ual.itm(14,4)
ids.create()
if not ids.isConnected():
print 'error during itmdb entry creation'
sys.exit(1)
equi = ids.equilibrium
#First fill fields which are not time-dependent.
equi.datainfo.dataprovider = 'MKO'
equi.datainfo.putdate = '20/09/2016'
equi.codeparam.parameters = 'param'
#Save time independent fields
equi.putNonTimed()
# ---- a loop ----
for i in range(0, 10):
#Fill time-dependent fields
equi.eqgeometry.boundary.resize(1)
equi.eqgeometry.boundary[0].r = sin(arange(0,2*pi,2*pi/100)) + (1/float(100-i))
equi.eqgeometry.boundary[0].z = cos(arange(0,2*pi,2*pi/100)) + (1/float(100-i))
#Do not forget time!!
equi.time = i
#Append this slice in the database
equi.putSlice() # <= Called insideoutside the loop
# ---- a loop ----
#close the pulse file
idsimas_obj.close() |
|
![](http://scilla.man.poznan.pl:8080/confluence/images/icons/emoticons/information.gif) | VI related notice I will use VI in every place where text files are modified. If you have any other text file editor of your choice - fell free to use it instead. |
Handling IDSes: put() vs. putSlice() |
---|
Code Block |
---|
language | py |
---|
title | $TUTORIAL_DIR/ids_basics/python/put_ids_array.py |
---|
linenumbers | true |
---|
| import sys
from pylab import *
import ual
ids = ual.itm(13,3)
ids.create()
if not ids.isConnected():
print 'error during itmdb entry creation'
sys.exit(1)
ids.equilibriumArray.resize(10)
equi = ids.equilibriumArray
#First fill fields which are not time-dependent.
equi.array[0].datainfo.dataprovider = 'MKO'
equi.array[0].datainfo.putdate = '20/09/2016'
equi.array[0].codeparam.parameters = 'param'
# ---- a loop ----
for i in range(0, 10):
#Fill time-dependent fields
equi.array[i].eqgeometry.boundary.resize(1)
equi.array[i].eqgeometry.boundary[0].r = sin(arange(0,2*pi,2*pi/100)) + (1/float(100-i))
equi.array[i].eqgeometry.boundary[0].z = cos(arange(0,2*pi,2*pi/100)) + (1/float(100-i))
#Do not forget time!!
equi.array[i].time = i
# ---- a loop ----
#Save data in the database
equi.put() # <= Called outside the loop
#close the pulse file
ids.close() |
| Code Block |
---|
language | py |
---|
title | $TUTORIAL_DIR/ids_basics/python/put_ids_slices.py |
---|
linenumbers | true |
---|
| import sys
from pylab import *
import ual
ids = ual.itm(14,4)
ids.create()
if not ids.isConnected():
print 'error during itmdb entry creation'
sys.exit(1)
equi = ids.equilibrium
#First fill fields which are not time-dependent.
equi.datainfo.dataprovider = 'MKO'
equi.datainfo.putdate = '20/09/2016'
equi.codeparam.parameters = 'param'
#Save time independent fields
equi.putNonTimed()
# ---- a loop ----
for i in range(0, 10):
#Fill time-dependent fields
equi.eqgeometry.boundary.resize(1)
equi.eqgeometry.boundary[0].r = sin(arange(0,2*pi,2*pi/100)) + (1/float(100-i))
equi.eqgeometry.boundary[0].z = cos(arange(0,2*pi,2*pi/100)) + (1/float(100-i))
#Do not forget time!!
equi.time = i
#Append this slice in the database
equi.putSlice() # <= Called inside the loop
# ---- a loop ----
#close the pulse file
ids.close() |
|
...