DM_r_convert.py
1 ## @package python.demo.DM_r_convert
2 #
3 # converting points into an R data frame objects
4 #
5 
6 from __future__ import print_function # print function syntax as in python 3
7 import rpy2.robjects as robjects
8 import sys
9 
10 ##raw_input("start debugger")
11 
12 from opals import pyDM
13 
14 
15 def DM_r_convert(filename):
16  # open the odm / pyDM.Datamanager.load parameters: filename(string), readOnly(bool) threadSafety(bool)
17  dm = pyDM.Datamanager.load(filename, True, False)
18 
19  # if the dm wasn't opened sucessful exit function
20  if not dm:
21  print("Unable to open ODM '" + filename + "'")
22  return
23 
24  # create a layout for conversion
25  f = pyDM.AddInfoLayoutFactory()
26  f.addColumn(pyDM.ColumnSemantic.Amplitude) # pre-defined attribute "Amplitude"
27  f.addColumn(pyDM.ColumnSemantic.EchoWidth) # pre-defined attribute "EchoWidth"
28  layout = f.getLayout()
29 
30  pi = dm.getPointIndex()
31 
32  # convert each leaf into a data frame
33  dfs = []
34  for leaf in pi.leafs():
35  # get the leaf as r data frame
36  df = leaf.asRDataFrame(layout, True)
37 
38  # append df object to list
39  dfs.append(df)
40 
41  # create a single data frame
42  idx = 0
43  df = pyDM.RConverter.createDataFrame(pi.sizePoint(), layout, True)
44  for leaf in pi.leafs():
45  pyDM.RConverter.fillDataFrame(df, idx, leaf)
46  idx += leaf.sizePoint()
47 
48 
49 if len(sys.argv) == 1:
50  print("ODM parameter missing")
51  sys.exit(-1)
52 
53 DM_r_convert(sys.argv[1])
54 
55 print("finished")