positioner_corr

Overview

The differences between the actual FVC spot positions and the desired positions based on astrometrically calibrated targets.

Creators

  • PlateMaker external interface
  • PlateMaker internals
    • positionerDiff

Users

  • The fiber positioning system.

Contents

Table columns

# name type units description
1 Petal integer   PETAL_ID from DESI docdb-2724
2 Id integer   DEVICE_ID from DESI docdb-2724, unique within a petal but repreats one petal to the next
3 PID integer   positioner id (0 to 4999)
4 XMMROW float millimeters (desired - current) row coordinate (CS5)
5 XMMCOL float millimeters (desired - current) column coordinate (CS5)

Storage and access

Through DOS

After fvcproc is run for a sequence, the get PML command may be used retrieve the positioner correction data from PlateMaker.

First, a PML connection must be established:

>>> from DOSlib.PML import dos_connection
>>> pm = dos_connection('PLATEMAKER')
>>> pm.execute('configure')
'SUCCESS'

The positioner correction data is normally calculated by PlateMaker when fvcproc is called. So, load some sample input for it, and run fvcproc:

>>> from PlateMaker import test_data
>>> # test_data = PlateMakerTestData('proto')
>>> seq_id = test_data.seq_id
>>> nfs_data = test_data.nfs_data
>>> targets = test_data.targets
>>> gfa_data = test_data.gfa_data
>>> merged_fvc_spots = test_data.merged_fvc_spots
>>> pm.execute('set', seqid=test_data.seq_id)
'SUCCESS'
>>> pm.execute('set', nfs_data=nfs_data, targets=targets)
'SUCCESS'
>>> pm.execute('set', gfa_data=gfa_data, merged_fvc_spots=merged_fvc_spots)
'SUCCESS'
>>> pm.execute('fvcproc')
'SUCCESS'

Now we can retrieve the positioner corrections from PlateMaker, which it will return in the form of numpy.recarray.

>>> positioner_corr = pm.execute('get', 'positioner_corr')
>>> positioner_corr.dtype
dtype((numpy.record, [('Petal', '<i8'), ('Id', '<i8'), ('PID', '<i8'), ('XMMCOR', '<f8'), ('YMMCOR', '<f8')]))

Preferred file representation

Name template:positioner-corr-{PLATE_ID}.dat
Format:whitespace delimited ASCII text

Example start of file contents

::
>>> from PlateMaker import test_data
>>> fname = test_data.data_dir + '/positioner-corr-52254.6.dat'
>>> print(open(fname,'r').readline())
#Petal  Id     PID      XMMCOR    YMMCOR

>>> print(open(fname,'r').read()) 
#Petal  Id     PID      XMMCOR    YMMCOR
  2      2          0       0.00       0.00
  0     16          1      0.013     -0.053
  0     29          2      0.025     -0.052
  0     35          3     -0.004     -0.036