positioner_corr¶
Overview¶
The differences between the actual FVC spot positions and the desired positions based on astrometrically calibrated targets.
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