Changeset 1232


Ignore:
Timestamp:
Feb 26, 2013 11:02:43 AM (9 years ago)
Author:
jemian
Message:

datacube example from 7id

Location:
mda2idd_report/src
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • mda2idd_report/src/mda2nx.py

    r1230 r1232  
    5858                for item in dim.p:
    5959                    ds = nxh5_lib.makeDataset(nxcoll,
    60                                             makeSafeHdf5Name(item.fieldName),
     60                                            nxh5_lib.safeHdf5Name(item.fieldName),
    6161                                            sscan_part = 'positioner',
    6262                                            data=item.data,
     
    8181                for item in dim.d:
    8282                    ds = nxh5_lib.makeDataset(nxcoll,
    83                                             makeSafeHdf5Name(item.fieldName),
     83                                            nxh5_lib.safeHdf5Name(item.fieldName),
    8484                                            sscan_part = 'detector',
    8585                                            data=item.data,
     
    9494                for item in dim.t:
    9595                    nxh5_lib.makeDataset(nxcoll,
    96                                             makeSafeHdf5Name('T%02d' % item.number),
     96                                            nxh5_lib.safeHdf5Name('T%02d' % item.number),
    9797                                            sscan_part = 'trigger',
    9898                                            data=item.command,
     
    107107            for pv, v in pvs.items():
    108108                nxh5_lib.makeDataset(nxcollection,
    109                                    makeSafeHdf5Name(pv),
     109                                   nxh5_lib.safeHdf5Name(pv),
    110110                                   data=v['value'],
    111111                                   units=v['units'],
     
    115115       
    116116        f.close()
    117 
    118 
    119 def makeSafeHdf5Name(proposed):
    120     '''return a name that is safe to use as a NeXus HDF5 object'''
    121     # Note that a safe NeXus object name starts with a letter (upper or lower case)
    122     # or "_" (underscore), then letters, numbers, and "_" and is limited to
    123     # no more than 63 characters (imposed by the HDF5 rules for names).
    124     safe = ''
    125     for c in proposed:
    126         if c.isalnum() or c == '_':
    127             if len(safe) == 0 and c.isdigit():
    128                 safe = '_'
    129             safe += c
    130         else:
    131             safe += '_'
    132     if safe.startswith('NX'):
    133         safe = '_' + safe
    134     return safe
    135117
    136118
     
    189171            nxentry.attrs['default_NXdata'] = default_data
    190172        nxh5_lib.makeDataset(nxdata,
    191                                makeSafeHdf5Name('image'),
     173                               nxh5_lib.safeHdf5Name('image'),
    192174                               data=dim3_d09[series],
    193175                               units=dim3_d09.attrs.get('units'),
     
    196178                               )
    197179        nxh5_lib.makeDataset(nxdata,
    198                                makeSafeHdf5Name('x'),
     180                               nxh5_lib.safeHdf5Name('x'),
    199181                               data=dim2_p1[series],
    200182                               units=dim2_p1.attrs.get('units'),
     
    202184                               )
    203185        nxh5_lib.makeDataset(nxdata,
    204                                makeSafeHdf5Name('y'),
     186                               nxh5_lib.safeHdf5Name('y'),
    205187                               data=dim3_p1[series],
    206188                               units=dim3_p1.attrs.get('units'),
     
    214196    '''.strip()
    215197    nxnote = nxh5_lib.makeGroup(nxentry, 'comment', "NXnote")
    216     nxh5_lib.makeDataset(nxnote, makeSafeHdf5Name('comment'), data=comment)
     198    nxh5_lib.makeDataset(nxnote, nxh5_lib.safeHdf5Name('comment'), data=comment)
    217199    nxf.close()
    218200
  • mda2idd_report/src/nxh5_lib.py

    r1229 r1232  
    2020    """
    2121    f = h5py.File(filename, "w")
    22     addAttributes(f, attr)
     22    addAttributes(f, **attr)
    2323    return f
    2424
     
    3535    group = parent.create_group(name)
    3636    group.attrs["NX_class"] = nxclass
    37     addAttributes(group, attr)
     37    addAttributes(group, **attr)
    3838    return group
    3939
     
    5151    else:
    5252        obj = parent.create_dataset(name, data=data)
    53     addAttributes(obj, attr)
     53    addAttributes(obj, **attr)
    5454    return obj
    5555
     
    8989    hdf5FileObject[targetPath] = h5py.ExternalLink(sourceFile, sourcePath)
    9090
    91 def addAttributes(parent, attr):
     91def addAttributes(parent, **attr):
    9292    """
    9393    add attributes to an h5py data item
     
    111111    yArr = numpy.asarray(buffer[1],'int32')
    112112    return xArr, yArr
     113
     114
     115def safeHdf5Name(proposed):
     116    '''return a name that is safe to use as a NeXus HDF5 object'''
     117    # Note that a safe NeXus object name starts with a letter (upper or lower case)
     118    # or "_" (underscore), then letters, numbers, and "_" and is limited to
     119    # no more than 63 characters (imposed by the HDF5 rules for names).
     120    safe = ''
     121    for c in proposed:
     122        if c.isalnum() or c == '_':
     123            if len(safe) == 0 and c.isdigit():
     124                safe = '_'
     125            safe += c
     126        else:
     127            safe += '_'
     128    if safe.startswith('NX'):
     129        safe = '_' + safe
     130    return safe
Note: See TracChangeset for help on using the changeset viewer.