1.3.5.1. TDataServer <-> array conversion
This section describes how to convert a TDataServer into a numpy.array and vice-versa. A
breakdown of the macro show below can be found in Macro “howtoConvertTDataServerArray.py”
"""
Example of TDataServer into numpy array converter
"""
import numpy as np
from URANIE import DataServer
# import data into a dataserver
tds = DataServer.TDataServer("tds", "pouet")
tds.fileDataRead("myData.dat")
print("Dumping tds")
tds.scan()
# Define the list of variable to be read
VarList = "x:y"
# Create an array by defining the shape and the type (this array is a matrix)
TdsData = np.empty(shape=(tds.getNPatterns(), len(VarList.split(":"))),
dtype=np.float64)
# Dump the data into the created array (the last field empty unless a select is done on the sample)
tds.getTuple().extractData(TdsData, TdsData.size, VarList, tds.getCut().GetTitle())
# Check the content
print("Dumping the array")
print(TdsData)
# Create a new Dataserver and feed it
tds2 = DataServer.TDataServer("brandnew", "pouet")
# Add the attribute in the dataserver and create the tuple
for name in VarList.split(":"):
index = VarList.split(":").index(name)
VarData = np.ascontiguousarray(TdsData.transpose()[index])
tds2.addAttributeUsingData(name, VarData, VarData.size)
print("Dumping new tds")
tds2.Scan("*")
The macro shown above, is an example of how to convert the content stored in a TDataServer and its
result is discussed in Macro “howtoConvertTDataServerArray.py”.