positioner_pos¶
Overview¶
A table of open-loop positioner coordinates.
Users¶
This list is not promised to be comprehensive.
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