示例#1
0
def convert(params):

    head_tail = os.path.split(params.old_projection_file_name)

    new_hdf_file_name = head_tail[0] + os.sep + os.path.splitext(
        head_tail[1])[0] + '.h5'

    print('converting data file: %s in new format: %s' %
          (params.old_projection_file_name, new_hdf_file_name))
    print('using %s as dark and %s as white field' %
          (params.old_dark_file_name, params.old_white_file_name))
    exchange_base = "exchange"

    tomo_grp = '/'.join([exchange_base, 'data'])
    flat_grp = '/'.join([exchange_base, 'data_white'])
    dark_grp = '/'.join([exchange_base, 'data_dark'])
    theta_grp = '/'.join([exchange_base, 'theta'])
    tomo = dxreader.read_hdf5(params.old_projection_file_name, tomo_grp)
    flat = dxreader.read_hdf5(params.old_white_file_name, flat_grp)
    dark = dxreader.read_hdf5(params.old_dark_file_name, dark_grp)
    theta = dxreader.read_hdf5(params.old_projection_file_name, theta_grp)

    # Open DataExchange file
    f = dx.File(new_hdf_file_name, mode='w')

    f.add_entry(dx.Entry.data(data={'value': tomo, 'units': 'counts'}))
    f.add_entry(dx.Entry.data(data_white={'value': flat, 'units': 'counts'}))
    f.add_entry(dx.Entry.data(data_dark={'value': dark, 'units': 'counts'}))
    f.add_entry(dx.Entry.data(theta={'value': theta, 'units': 'degrees'}))

    f.close()
示例#2
0
def write_dxfile(fname, proj, theta, element):
    experimenter_affiliation = "Argonne National Laboratory"
    instrument_name = "2-ID-E XRF"
    sample_name = "test data set"

    flat = ones([1, proj.shape[1], proj.shape[2]]) * np.nanmax(proj)
    dark = zeros([1, proj.shape[1], proj.shape[2]])

    # Open DataExchange file
    f = dx.File(fname, mode='w')

    # Write the Data Exchange HDF5 file.
    f.add_entry(
        dx.Entry.experimenter(affiliation={'value': experimenter_affiliation}))
    f.add_entry(dx.Entry.instrument(name={'value': instrument_name}))
    f.add_entry(dx.Entry.sample(name={'value': sample_name}))

    f.add_entry(
        dx.Entry.data(data={
            'value': proj,
            'element': element,
            'units': 'counts'
        }))
    f.add_entry(dx.Entry.data(data_white={'value': flat, 'units': 'counts'}))
    f.add_entry(dx.Entry.data(data_dark={'value': dark, 'units': 'counts'}))
    f.add_entry(dx.Entry.data(theta={'value': theta, 'units': 'degrees'}))

    f.close()
示例#3
0
    def save_dxhdf(self, data, element_names, thetas):
        '''
		saves all selected information to a new data exchange hdf5 file following the 
		dxfile definition at http://dxfile.readthedocs.io/

		uncomment import dxfile.dxtomo as dx

		'''
        try:
            fname = QtGui.QFileDialog.getSaveFileName()[0]
            if fname == "":
                raise IOError

            experimenter_affiliation = "Argonne National Laboratory"
            instrument_name = "2-ID-E XRF"
            sample_name = "test data set"

            # Open DataExchange file
            f = dx.File(fname, mode='w')

            # Write the Data Exchange HDF5 file.
            f.add_entry(
                dx.Entry.experimenter(
                    affiliation={'value': experimenter_affiliation}))
            f.add_entry(dx.Entry.instrument(name={'value': instrument_name}))
            f.add_entry(dx.Entry.sample(name={'value': sample_name}))

            f.add_entry(dx.Entry.data(data={
                'value': data,
                'units': 'ug/cm^2'
            }))
            f.add_entry(
                dx.Entry.data(theta={
                    'value': thetas,
                    'units': 'degrees'
                }))

            # file_names = [x.encode('utf-8') for x in file_names]
            # f.add_entry(dx.Entry.data(fnames={'value': file_names, 'units':'none'}))

            element_names = [x.encode('utf-8') for x in element_names]
            f.add_entry(
                dx.Entry.data(elements={
                    'value': element_names,
                    'units': 'none'
                }))

            f.close()

        except IOError:
            print("ERROR saving sinogram stack")
        except:
            print("Something went horribly wrong.")
        pass
示例#4
0
def main():

    fname = './demo.h5'

    experimenter_name = "Francesco De Carlo"
    experimenter_affiliation = "Argonne National Laboratory"
    experimenter_email = "*****@*****.**"
    instrument_comment = "32-ID TXM"
    sample_name = 'sample_name'

    size = 180

    theta = range(0, 180, 180 / size)

    if (fname != None):
        if os.path.isfile(fname):
            print "Data Exchange file already exists: ", fname
        else:
            # Create new folder.
            dirPath = os.path.dirname(fname)
            if not os.path.exists(dirPath):
                os.makedirs(dirPath)

            # Open DataExchange file
            f = dx.File(fname, mode='w')

            # Write the Data Exchange HDF5 file.
            f.add_entry(
                dx.Entry.experimenter(name={'value': experimenter_name}))
            f.add_entry(
                dx.Entry.experimenter(
                    affiliation={'value': experimenter_affiliation}))
            f.add_entry(
                dx.Entry.experimenter(email={'value': experimenter_email}))
            f.add_entry(
                dx.Entry.instrument(comment={'value': instrument_comment}))
            f.add_entry(dx.Entry.sample(name={'value': sample_name}))

            f.add_entry(
                dx.Entry.data(theta={
                    'value': theta,
                    'units': 'degrees'
                }))

            f.close()

    else:
        print "Nothing to do ..."
示例#5
0
def write_dxfile(fname, proj, theta, elem):
    experimenter_affiliation = "Argonne National Laboratory"
    instrument_name = "2-ID-E XRF"
    sample_name = "test data set"

    # Open DataExchange file
    f = dx.File(fname, mode='w')

    # Write the Data Exchange HDF5 file.
    f.add_entry(
        dx.Entry.experimenter(affiliation={'value': experimenter_affiliation}))
    f.add_entry(dx.Entry.instrument(name={'value': instrument_name}))
    f.add_entry(dx.Entry.sample(name={'value': sample_name}))

    f.add_entry(dx.Entry.data(data={'value': proj, 'units': 'ug/cm^2'}))
    f.add_entry(dx.Entry.data(theta={'value': theta, 'units': 'degrees'}))

    elem = [x.encode('utf-8') for x in elem]
    f.add_entry(dx.Entry.data(elements={'value': elem, 'units': 'ug/cm^2'}))

    f.close()
示例#6
0
    # Write ground_truth
    ground_truth = discrete_phantom(phantom, ccd_x, prop='mass_atten')
    fname_gt='tomobank/phantoms/' + tomobank_id + '/' + tomobank_id + '_ground_truth'
    dxchange.write_tiff(ground_truth, fname=fname_gt, dtype='float32')

    # Save into a data-exchange file.
    if os.path.isfile(fname):
        print ("Data Exchange file already exists: ", fname)
    else:
        # Create new folder.
        dirPath = os.path.dirname(fname)
        if not os.path.exists(dirPath):
            os.makedirs(dirPath)

        # Open DataExchange file
        f = dx.File(fname, mode='w')
         
        # Write the Data Exchange HDF5 file.
        f.add_entry(dx.Entry.experimenter(affiliation={'value': experimenter_affiliation}))
        f.add_entry(dx.Entry.experimenter(email={'value': experimenter_email}))
        f.add_entry(dx.Entry.instrument(name={'value': instrument_name}))
        f.add_entry(dx.Entry.sample(name={'value': sample_name}))

        f.add_entry(dx.Entry.data(data={'value': proj, 'units':'counts'}))
        f.add_entry(dx.Entry.data(data_white={'value': flat, 'units':'counts'}))
        f.add_entry(dx.Entry.data(data_dark={'value': dark, 'units':'counts'}))
        f.add_entry(dx.Entry.data(theta={'value': theta, 'units':'degrees'}))
        f.add_entry(dx.Entry.data(ground_truth={'value': ground_truth, 'units':'counts'}))

        f.add_entry(dx.Entry.acquisition(start_date={'value': start_date}))
        f.add_entry(dx.Entry.acquisition(end_date={'value': end_date}))
示例#7
0
def save_dx(fname, proj, flat, dark, theta):

    sample_name = fname
    experiment_prosal = 'GUP-53902'
    experiment_title = 'Investigating the Phase and Kirkendall Pore Evolution in Ti-coated Ni Wires using X-Ray Tomographic Microscopy'
    experimenter_name = 'Ashley Paz y Puente'
    experimenter_role = 'PI'
    experimenter_affiliation = 'Northwestern University, University of Cincinnati'
    experimenter_phone = '847-467-5416'
    experimenter_email = '*****@*****.**'
    experimenter_facility_user_id = '233967'
  
    instrument_name = '2-BM micro-CT'
    instrument_comment = 'A Hutch'  

    attenuator_name = 'filter'
    attenuator_description = '1mm C, 4mm Glass, 1mm Si'

    monochromator_name = 'DMM'
    monochromator_description = '2.657mrad USArm; 1.349_monoY -9.999'

    detector_name = 'PCO.edge'
    detector_shutter_mode = 'rolling'
    detector_exposure_time = 0.020
    detector_description = 'sample to detector distance = 50 mm'
    objective_magnification = 10

    scintillator_name = 'LuAG' 
    scintillator_scintillating_thickness = 20
    sample_detector_distance = 0.050

    # Open DataExchange file
    f = dx.File(fname, mode='w') 

    # Write the Data Exchange HDF5 file.
    f.add_entry(dx.Entry.sample( name={'value':sample_name}))
    
    f.add_entry(dx.Entry.experiment( proposal={'value':experiment_prosal}))
    f.add_entry(dx.Entry.experiment( title={'value':experiment_title}))

    f.add_entry(dx.Entry.experimenter(name={'value':experimenter_name}))
    f.add_entry(dx.Entry.experimenter(role={'value':experimenter_role}))
    f.add_entry(dx.Entry.experimenter(affiliation={'value':experimenter_affiliation}))
    f.add_entry(dx.Entry.experimenter(phone={'value':experimenter_phone}))
    f.add_entry(dx.Entry.experimenter(email={'value':experimenter_email}))
    f.add_entry(dx.Entry.experimenter(facility_user_id={'value':experimenter_facility_user_id}))

    f.add_entry(dx.Entry.instrument(name={'value':instrument_name}))
    f.add_entry(dx.Entry.instrument(comment={'value':instrument_comment}))

    f.add_entry(dx.Entry.monochromator( name={'value':monochromator_name}))
    f.add_entry(dx.Entry.monochromator( description={'value':monochromator_description}))

    f.add_entry(dx.Entry.attenuator( name={'value':attenuator_name}))
    f.add_entry(dx.Entry.attenuator( description={'value':attenuator_description}))


    f.add_entry(dx.Entry.detector(name={'value':detector_name}))
    f.add_entry(dx.Entry.detector(description={'value':detector_description}))
    f.add_entry(dx.Entry.detector(exposure_time={'value':detector_exposure_time}))
    f.add_entry(dx.Entry.detector(shutter_mode={'value':detector_shutter_mode}))

    f.add_entry(dx.Entry.objective(magnification={'value':objective_magnification}))

    f.add_entry(dx.Entry.scintillator(name={'value':scintillator_name}))
    f.add_entry(dx.Entry.scintillator(scintillating_thickness={'value':scintillator_scintillating_thickness, 'units':'um'}))

    f.add_entry(dx.Entry.data(data={'value': proj, 'units':'counts'}))
    f.add_entry(dx.Entry.data(data_white={'value': flat, 'units':'counts'}))
    f.add_entry(dx.Entry.data(data_dark={'value': dark, 'units':'counts'}))
    f.add_entry(dx.Entry.data(theta={'value': theta, 'units':'degrees'}))

    f.close()
示例#8
0
文件: full.py 项目: decarlof/dxfile
def main():

    fname = './demo.h5'
    ccd_x, ccd_y = 128, 128

    sample_name = 'sample_name'
    sample_description = 'sample description'
    sample_preparation_date = iso_time()
    sample_chemical_formula = 'H2O'
    sample_mass = '1234'
    sample_concentration = '1234'
    sample_environment = '1234'
    sample_temperature = '1234'
    sample_temperature_set = '1234'
    sample_pressure = '1234'
    sample_thickness = '1234'
    sample_tray = 'A5'
    sample_comment = 'sample comment'

    experiment_prosal = '1234'
    experiment_activity = '5678'
    experiment_safety = '9012'
    experiment_title = '4D Dynamics of Stress Corrosion Cracking in High Performance Aluminum Alloy'

    experimenter_name = 'Joe'
    experimenter_role = 'PI'
    experimenter_affiliation = 'Argonne National Laboratory'
    experimenter_address = '9700 S. Cass Av.'
    experimenter_phone = '1-123-456-7890'
    experimenter_email = '*****@*****.**'
    experimenter_facility_user_id = '1234'

    instrument_name = '32-ID TXM'
    instrument_comment = 'nice instrument'

    source_name = 'APS'
    source_datetime = iso_time()
    source_beamline = 'U18'
    source_current = '100'
    source_energy = '123'
    source_pulse_energy = '45'
    source_pulse_width = '67'
    source_mode = 'top-up'
    source_beam_intensity_incident = '123'
    source_beam_intensity_transmitted = '456'

    attenuator_name = 'filter'
    attenuator_description = 'a nice filter'
    attenuator_thickness = 1
    attenuator_transmission = 0.754

    monochromator_name = 'mono'
    monochromator_description = 'a nice mono'
    monochromator_energy = 27.5
    monochromator_energy_units = 'keV'
    monochromator_energy_error = '456'
    monochromator_mono_stripe = 'Au/Ag'

    mirror_name = 'mirror'
    mirror_description = 'a nice mirror'
    mirror_angle = 2.657
    mirror_angle_units = 'rad'

    detector_name = 'camera'
    detector_description = 'a nice camera'
    detector_manufacturer = 'a nice company'
    detector_model = '123'
    detector_serial_number = '456'
    detector_firmware_version = '789'
    detector_software_version = '012'
    detector_bit_dept = '16'
    detector_pixel_size_x = 0.65e-4
    detector_pixel_size_y = 0.65e-4
    detector_actual_pixel_size_x = 1.2
    detector_actual_pixel_size_y = 1.2
    detector_dimension_x = ccd_x
    detector_dimension_y = ccd_y
    detector_binning_x = 1
    detector_binning_y = 1
    detector_operating_temperature = 12
    detector_exposure_time = 0.2
    detector_delay_time = 0.001
    detector_stabilization_time = 0.0001
    detector_frame_rate = 160
    detector_shutter_mode = 'global'
    detector_output_data = '/exchange'
    detector_counts_per_joule = '123'
    detector_basis_vectors = '456'
    detector_corner_position = '789'

    detector_roi_name = 'roi'
    detector_roi_description = 'a nice roi'
    detector_roi_min_x = 0
    detector_roi_min_y = 0
    detector_roi_size_x = ccd_x
    detector_roi_size_y = ccd_y

    objective_name = 'objective'
    objective_description = 'a nice objective'
    objective_manufacturer = 'a nice company'
    objective_model = 'a nice model'
    objective_magnification = 1.5
    objective_numerical_aperture = 0.8

    scintillator_name = 'scintillator'
    scintillator_description = 'a nice scintillator'
    scintillator_manufacturer = 'a nice company'
    scintillator_serial_number = '123'
    scintillator_scintillating_thickness = 456
    scintillator_substrate_thickness = 789

    sample_stack_name = 'sample stack'
    sample_stack_description = 'a nice sample stack'

    sample_stack_setup_sample_x = 1
    sample_stack_setup_sample_y = 2
    sample_stack_setup_sample_z = 3
    sample_stack_setup_sample_xx = 11
    sample_stack_setup_sample_zz = 33
    sample_detector_distance = 60

    interferometer_name = 'interferometer'
    interferometer_description = 'a nice interferometer'

    interferometer_setup_grid_start = 123
    interferometer_setup_grid_end = 456
    interferometer_setup_number_of_grid_periods = 789
    interferometer_setup_number_of_grid_steps = 123

    process_name = 'the best process'

    acquisition_sample_position_x = np.random.rand(180)
    acquisition_sample_position_y = np.random.rand(180)
    acquisition_sample_position_z = np.random.rand(180)
    acquisition_sample_image_shift_x = np.random.rand(180)
    acquisition_sample_image_shift_y = np.random.rand(180)
    acquisition_image_theta = range(0, 180, 1)
    acquisition_scan_index = range(0, 180, 1)
    acquisition_scan_date = [iso_time() for x in range(180)]
    acquisition_image_date = [iso_time() for x in range(180)]
    acquisition_time_stamp = [iso_time() for x in range(180)]
    acquisition_image_number = range(0, 180, 1)
    acquisition_image_exposure_time = np.ones(180) * detector_exposure_time
    acquisition_image_is_complete = np.ones(180)
    acquisition_shutter = np.ones(180)
    acquisition_image_type = np.ones(180)
    acquisition_start_date = iso_time()
    acquisition_end_date = iso_time()

    acquisition_setup_number_of_projections = 180
    acquisition_setup_number_of_darks = 10
    acquisition_setup_number_of_whites = 10
    acquisition_setup_number_of_inter_whites = 1
    acquisition_setup_white_frequency = 1
    acquisition_setup_sample_in = 0
    acquisition_setup_sample_out = 4
    acquisition_setup_rotation_start_angle = 0
    acquisition_setup_rotation_end_angle = 180
    acquisition_setup_rotation_speed = 0.750
    acquisition_setup_angular_step = (
        acquisition_setup_rotation_end_angle -
        acquisition_setup_rotation_start_angle) / 180
    acquisition_setup_mode = 'fly scan'
    acquisition_setup_comment = 'a nice fly scan'

    data = np.random.rand(180, ccd_y, ccd_x)
    data_white = np.ones((acquisition_setup_number_of_whites, ccd_y,
                          ccd_x))  # Array filled with zeros
    data_dark = np.zeros((acquisition_setup_number_of_darks, ccd_y,
                          ccd_x))  # Array filled with zeros
    theta = range(0, 180, 1)

    if (fname != None):
        if os.path.isfile(fname):
            print "Data Exchange file already exists: ", fname
        else:
            # Create new folder.
            dirPath = os.path.dirname(fname)
            if not os.path.exists(dirPath):
                os.makedirs(dirPath)

            # Open DataExchange file
            f = dx.File(fname, mode='w')

            # Write the Data Exchange HDF5 file.
            f.add_entry(dx.Entry.sample(name={'value': sample_name}))
            f.add_entry(
                dx.Entry.sample(description={'value': sample_description}))
            f.add_entry(
                dx.Entry.sample(
                    preparation_date={'value': sample_preparation_date}))
            f.add_entry(
                dx.Entry.sample(
                    chemical_formula={'value': sample_chemical_formula}))
            f.add_entry(dx.Entry.sample(mass={'value': sample_mass}))
            f.add_entry(
                dx.Entry.sample(concentration={'value': sample_concentration}))
            f.add_entry(
                dx.Entry.sample(environment={'value': sample_environment}))
            f.add_entry(
                dx.Entry.sample(temperature={'value': sample_temperature}))
            f.add_entry(
                dx.Entry.sample(
                    temperature_set={'value': sample_temperature_set}))
            f.add_entry(dx.Entry.sample(pressure={'value': sample_pressure}))
            f.add_entry(dx.Entry.sample(thickness={'value': sample_thickness}))
            f.add_entry(dx.Entry.sample(tray={'value': sample_tray}))
            f.add_entry(dx.Entry.sample(comment={'value': sample_comment}))

            f.add_entry(
                dx.Entry.experiment(proposal={'value': experiment_prosal}))
            f.add_entry(
                dx.Entry.experiment(activity={'value': experiment_activity}))
            f.add_entry(
                dx.Entry.experiment(safety={'value': experiment_safety}))
            f.add_entry(dx.Entry.experiment(title={'value': experiment_title}))

            f.add_entry(
                dx.Entry.experimenter(name={'value': experimenter_name}))
            f.add_entry(
                dx.Entry.experimenter(role={'value': experimenter_role}))
            f.add_entry(
                dx.Entry.experimenter(
                    affiliation={'value': experimenter_affiliation}))
            f.add_entry(
                dx.Entry.experimenter(address={'value': experimenter_address}))
            f.add_entry(
                dx.Entry.experimenter(phone={'value': experimenter_phone}))
            f.add_entry(
                dx.Entry.experimenter(email={'value': experimenter_email}))
            f.add_entry(
                dx.Entry.experimenter(
                    facility_user_id={'value': experimenter_facility_user_id}))

            f.add_entry(dx.Entry.instrument(name={'value': instrument_name}))
            f.add_entry(
                dx.Entry.instrument(comment={'value': instrument_comment}))

            f.add_entry(dx.Entry.source(name={'value': source_name}))
            f.add_entry(dx.Entry.source(datetime={'value': source_datetime}))
            f.add_entry(dx.Entry.source(beamline={'value': source_beamline}))
            f.add_entry(dx.Entry.source(current={'value': source_current}))
            f.add_entry(dx.Entry.source(energy={'value': source_energy}))
            f.add_entry(
                dx.Entry.source(pulse_energy={'value': source_pulse_energy}))
            f.add_entry(
                dx.Entry.source(pulse_width={'value': source_pulse_width}))
            f.add_entry(dx.Entry.source(mode={'value': source_mode}))
            f.add_entry(
                dx.Entry.source(beam_intensity_incident={
                    'value': source_beam_intensity_incident
                }))
            f.add_entry(
                dx.Entry.source(beam_intensity_transmitted={
                    'value': source_beam_intensity_transmitted
                }))

            f.add_entry(dx.Entry.attenuator(name={'value': attenuator_name}))
            f.add_entry(
                dx.Entry.attenuator(
                    description={'value': attenuator_description}))
            f.add_entry(
                dx.Entry.attenuator(thickness={
                    'value': attenuator_thickness,
                    'units': 'mm'
                }))
            f.add_entry(
                dx.Entry.attenuator(
                    transmission={'value': attenuator_transmission}))

            f.add_entry(
                dx.Entry.monochromator(name={'value': monochromator_name}))
            f.add_entry(
                dx.Entry.monochromator(
                    description={'value': monochromator_description}))
            f.add_entry(
                dx.Entry.monochromator(
                    energy={
                        'value': monochromator_energy,
                        'units': monochromator_energy_units
                    }))
            f.add_entry(
                dx.Entry.monochromator(
                    energy_error={'value': monochromator_energy_error}))
            f.add_entry(
                dx.Entry.monochromator(
                    mono_stripe={'value': monochromator_mono_stripe}))

            f.add_entry(dx.Entry.mirror(name={'value': mirror_name}))
            f.add_entry(
                dx.Entry.mirror(description={'value': mirror_description}))
            f.add_entry(
                dx.Entry.mirror(angle={
                    'value': mirror_angle,
                    'units': mirror_angle_units
                }))

            f.add_entry(dx.Entry.detector(name={'value': detector_name}))
            f.add_entry(
                dx.Entry.detector(description={'value': detector_description}))
            f.add_entry(
                dx.Entry.detector(
                    manufacturer={'value': detector_manufacturer}))
            f.add_entry(dx.Entry.detector(model={'value': detector_model}))
            f.add_entry(
                dx.Entry.detector(
                    serial_number={'value': detector_serial_number}))
            f.add_entry(
                dx.Entry.detector(
                    firmware_version={'value': detector_firmware_version}))
            f.add_entry(
                dx.Entry.detector(
                    software_version={'value': detector_software_version}))
            f.add_entry(
                dx.Entry.detector(bit_dept={'value': detector_bit_dept}))
            f.add_entry(
                dx.Entry.detector(pixel_size_x={
                    'value': detector_pixel_size_x,
                    'units': 'm'
                }))
            f.add_entry(
                dx.Entry.detector(pixel_size_y={
                    'value': detector_pixel_size_y,
                    'units': 'm'
                }))
            f.add_entry(
                dx.Entry.detector(actual_pixel_size_x={
                    'value': detector_actual_pixel_size_x,
                    'units': 'um'
                }))
            f.add_entry(
                dx.Entry.detector(actual_pixel_size_y={
                    'value': detector_actual_pixel_size_y,
                    'units': 'um'
                }))
            f.add_entry(
                dx.Entry.detector(dimension_x={'value': detector_dimension_x}))
            f.add_entry(
                dx.Entry.detector(dimension_y={'value': detector_dimension_y}))
            f.add_entry(
                dx.Entry.detector(binning_x={'value': detector_binning_x}))
            f.add_entry(
                dx.Entry.detector(binning_y={'value': detector_binning_y}))
            f.add_entry(
                dx.Entry.detector(operating_temperature={
                    'value': detector_operating_temperature
                }))
            f.add_entry(
                dx.Entry.detector(
                    exposure_time={'value': detector_exposure_time}))
            f.add_entry(
                dx.Entry.detector(delay_time={'value': detector_delay_time}))
            f.add_entry(
                dx.Entry.detector(
                    stabilization_time={'value': detector_stabilization_time}))
            f.add_entry(
                dx.Entry.detector(frame_rate={'value': detector_frame_rate}))
            f.add_entry(
                dx.Entry.detector(
                    shutter_mode={'value': detector_shutter_mode}))
            f.add_entry(
                dx.Entry.detector(output_data={'value': detector_output_data}))
            f.add_entry(
                dx.Entry.detector(
                    counts_per_joule={'value': detector_counts_per_joule}))
            f.add_entry(
                dx.Entry.detector(
                    basis_vectors={'value': detector_basis_vectors}))
            f.add_entry(
                dx.Entry.detector(
                    corner_position={'value': detector_corner_position}))

            f.add_entry(dx.Entry.roi(name={'value': detector_roi_name}))
            f.add_entry(
                dx.Entry.roi(description={'value': detector_roi_description}))
            f.add_entry(dx.Entry.roi(min_x={'value': detector_roi_min_x}))
            f.add_entry(dx.Entry.roi(min_y={'value': detector_roi_min_y}))
            f.add_entry(dx.Entry.roi(size_x={'value': detector_roi_size_x}))
            f.add_entry(dx.Entry.roi(size_y={'value': detector_roi_size_y}))

            f.add_entry(dx.Entry.objective(name={'value': objective_name}))
            f.add_entry(
                dx.Entry.objective(
                    description={'value': objective_description}))
            f.add_entry(
                dx.Entry.objective(
                    manufacturer={'value': objective_manufacturer}))
            f.add_entry(dx.Entry.objective(model={'value': objective_model}))
            f.add_entry(
                dx.Entry.objective(
                    magnification={'value': objective_magnification}))
            f.add_entry(
                dx.Entry.objective(
                    numerical_aperture={'value': objective_numerical_aperture
                                        }))

            f.add_entry(
                dx.Entry.scintillator(name={'value': scintillator_name}))
            f.add_entry(
                dx.Entry.scintillator(
                    description={'value': scintillator_description}))
            f.add_entry(
                dx.Entry.scintillator(
                    manufacturer={'value': scintillator_manufacturer}))
            f.add_entry(
                dx.Entry.scintillator(
                    serial_number={'value': scintillator_serial_number}))
            f.add_entry(
                dx.Entry.scintillator(scintillating_thickness={
                    'value': scintillator_scintillating_thickness,
                    'units': 'um'
                }))
            f.add_entry(
                dx.Entry.scintillator(substrate_thickness={
                    'value': scintillator_substrate_thickness,
                    'units': 'um'
                }))

            f.add_entry(
                dx.Entry.sample_stack(name={'value': sample_stack_name}))
            f.add_entry(
                dx.Entry.sample_stack(
                    description={'value': sample_stack_description}))

            f.add_entry(
                dx.Entry.sample_stack_setup(sample_x={
                    'value': sample_stack_setup_sample_x,
                    'units': 'mm'
                }))
            f.add_entry(
                dx.Entry.sample_stack_setup(sample_y={
                    'value': sample_stack_setup_sample_y,
                    'units': 'mm'
                }))
            f.add_entry(
                dx.Entry.sample_stack_setup(sample_z={
                    'value': sample_stack_setup_sample_z,
                    'units': 'mm'
                }))
            f.add_entry(
                dx.Entry.sample_stack_setup(sample_xx={
                    'value': sample_stack_setup_sample_xx,
                    'units': 'mm'
                }))
            f.add_entry(
                dx.Entry.sample_stack_setup(sample_zz={
                    'value': sample_stack_setup_sample_zz,
                    'units': 'mm'
                }))
            f.add_entry(
                dx.Entry.sample_stack_setup(sample_detector_distance={
                    'value': sample_detector_distance,
                    'units': 'mm'
                }))

            f.add_entry(
                dx.Entry.interferometer(name={'value': interferometer_name}))
            f.add_entry(
                dx.Entry.interferometer(
                    description={'value': interferometer_description}))

            f.add_entry(
                dx.Entry.interferometer_setup(
                    grid_start={'value': interferometer_setup_grid_start}))
            f.add_entry(
                dx.Entry.interferometer_setup(
                    grid_end={'value': interferometer_setup_grid_end}))
            f.add_entry(
                dx.Entry.interferometer_setup(
                    number_of_grid_periods={
                        'value': interferometer_setup_number_of_grid_periods
                    }))
            f.add_entry(
                dx.Entry.interferometer_setup(
                    number_of_grid_steps={
                        'value': interferometer_setup_number_of_grid_steps
                    }))

            f.add_entry(dx.Entry.process(name={'value': process_name}))

            f.add_entry(
                dx.Entry.acquisition(
                    sample_position_x={'value': acquisition_sample_position_x
                                       }))
            f.add_entry(
                dx.Entry.acquisition(
                    sample_position_y={'value': acquisition_sample_position_y
                                       }))
            f.add_entry(
                dx.Entry.acquisition(
                    sample_position_z={'value': acquisition_sample_position_z
                                       }))
            f.add_entry(
                dx.Entry.acquisition(sample_image_shift_x={
                    'value': acquisition_sample_image_shift_x
                }))
            f.add_entry(
                dx.Entry.acquisition(sample_image_shift_y={
                    'value': acquisition_sample_image_shift_y
                }))
            f.add_entry(
                dx.Entry.acquisition(
                    image_theta={'value': acquisition_image_theta}))
            f.add_entry(
                dx.Entry.acquisition(
                    scan_index={'value': acquisition_scan_index}))
            f.add_entry(
                dx.Entry.acquisition(
                    scan_date={'value': acquisition_scan_date}))
            f.add_entry(
                dx.Entry.acquisition(
                    image_date={'value': acquisition_image_date}))
            f.add_entry(
                dx.Entry.acquisition(
                    time_stamp={'value': acquisition_time_stamp}))
            f.add_entry(
                dx.Entry.acquisition(
                    image_number={'value': acquisition_image_number}))
            f.add_entry(
                dx.Entry.acquisition(image_exposure_time={
                    'value': acquisition_image_exposure_time
                }))
            f.add_entry(
                dx.Entry.acquisition(
                    image_is_complete={'value': acquisition_image_is_complete
                                       }))
            f.add_entry(
                dx.Entry.acquisition(shutter={'value': acquisition_shutter}))
            f.add_entry(
                dx.Entry.acquisition(
                    image_type={'value': acquisition_image_type}))
            f.add_entry(
                dx.Entry.acquisition(
                    start_date={'value': acquisition_start_date}))
            f.add_entry(
                dx.Entry.acquisition(end_date={'value': acquisition_end_date}))

            f.add_entry(
                dx.Entry.acquisition_setup(
                    number_of_projections={
                        'value': acquisition_setup_number_of_projections
                    }))
            f.add_entry(
                dx.Entry.acquisition_setup(
                    number_of_darks={
                        'value': acquisition_setup_number_of_darks
                    }))
            f.add_entry(
                dx.Entry.acquisition_setup(
                    number_of_whites={
                        'value': acquisition_setup_number_of_whites
                    }))
            f.add_entry(
                dx.Entry.acquisition_setup(
                    number_of_inter_whites={
                        'value': acquisition_setup_number_of_inter_whites
                    }))
            f.add_entry(
                dx.Entry.acquisition_setup(
                    white_frequency={
                        'value': acquisition_setup_white_frequency
                    }))
            f.add_entry(
                dx.Entry.acquisition_setup(
                    sample_in={'value': acquisition_setup_sample_in}))
            f.add_entry(
                dx.Entry.acquisition_setup(
                    sample_out={'value': acquisition_setup_sample_out}))
            f.add_entry(
                dx.Entry.acquisition_setup(
                    rotation_start_angle={
                        'value': acquisition_setup_rotation_start_angle
                    }))
            f.add_entry(
                dx.Entry.acquisition_setup(
                    rotation_end_angle={
                        'value': acquisition_setup_rotation_end_angle
                    }))
            f.add_entry(
                dx.Entry.acquisition_setup(
                    rotation_speed={'value': acquisition_setup_rotation_speed
                                    }))
            f.add_entry(
                dx.Entry.acquisition_setup(
                    angular_step={'value': acquisition_setup_angular_step}))
            f.add_entry(
                dx.Entry.acquisition_setup(
                    mode={'value': acquisition_setup_mode}))
            f.add_entry(
                dx.Entry.acquisition_setup(
                    comment={'value': acquisition_setup_comment}))

            f.add_entry(dx.Entry.data(data={'value': data, 'units': 'counts'}))
            f.add_entry(
                dx.Entry.data(data_white={
                    'value': data_white,
                    'units': 'counts'
                }))
            f.add_entry(
                dx.Entry.data(data_dark={
                    'value': data_dark,
                    'units': 'counts'
                }))
            f.add_entry(
                dx.Entry.data(theta={
                    'value': theta,
                    'units': 'degrees'
                }))

            f.close()

    else:
        print "Nothing to do ..."