positioner_pos

Overview

A table of open-loop positioner coordinates.

Creators

  • PlateMaker external interface
  • PlateMaker internals
    • targetCalib0

Users

This list is not promised to be comprehensive.

  • fvcproc
  • PlateMaker internals
    • fvcsim
    • fvcPosMerge
    • fvcMatch
    • positionerDiff

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 Pos integer   positioner id (data management convention) from target file
4 X float millimeters cartesian coordinate measured in flat plane (CS5)
5 Y float millimeters cartesian coordinate measured in flat plane (CS5)
6 Q float degrees Q coordinate defined in DESI docdb-742, positional angle in degress (X through Y following curved surface, not in plane)
7 S float millimeters S coordinate defined in DESI docdb-742, radius measured in surface of petal (following curved surface, not in plane)
8 XOUT float pixels deprecated but used internally to PlateMaker (not actually CCD coordinates)
9 YOUT float pixels deprecated but used internally to PlateMaker (not actually CCD coordinates)

Storage and access

Through DOS

After nfsproc is run for a sequence, the get PML command may be used retrieve the center 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 coordinates are normally calculated by PlateMaker when nfsproc is called. So, load some sample input for it, and run nfsproc:

>>> from PlateMaker import test_data
>>> targets = test_data.targets
>>> pm.execute('set', instrument='desi')
'SUCCESS'
>>> pm.execute('set', seqid=52254)
'SUCCESS'
>>> pm.execute('set', targets=targets)
'SUCCESS'
>>> pm.execute('nfsproc')
'SUCCESS'

Now we can retrieve center from PlateMaker:

>>> positioner_pos = pm.execute('get', 'positioner_pos')
>>> positioner_pos.dtype
dtype((numpy.record, [('Petal', '<i8'), ('Id', '<i8'), ('Pos', '<i8'), ('X', '<f8'), ('Y', '<f8'), ('Q', '<f8'), ('S', '<f8'), ('XOUT', '<f8'), ('YOUT', '<f8')]))

Preferred file representation

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

Example start of file contents

::
>>> from PlateMaker import test_data
>>> fname = test_data.data_dir + '/positioner-pos-52254.3.dat'
>>> print(open(fname,'r').readline())
#Petal Id   PID   X(mm)     Y(mm)     Q(deg)     S(mm)    XOUT    YOUT

>>> print(open(fname,'r').read()) 
#Petal Id   PID   X(mm)     Y(mm)     Q(deg)     S(mm)    XOUT    YOUT
  3    0     0     28.239     5.207   10.4479    28.715   203.642   -37.539
  3    1     1     38.537     5.188    7.6677    38.885   277.856   -37.396
  3    2     2     33.265    14.251   23.1902    36.190   239.859  -102.747