Skip to content

Commit 950538a

Browse files
authored
Merge pull request #30 from sdss/boss
updated path with special functions to flag plates and zero pad fieldIDs for relevant run2d version
2 parents 09c5d58 + a270b87 commit 950538a

File tree

3 files changed

+72
-2
lines changed

3 files changed

+72
-2
lines changed

CHANGELOG.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ Change Log
66

77
This document records the main changes to the sdss_access code.
88

9+
2.0.2 (unreleased)
10+
------------------
11+
- Adds new `isplate` and `pad_fieldid` special functions for BHM paths.
12+
913
2.0.1 (2022-05-13)
1014
------------------
1115
- Adds new `configgrp` special function.

python/sdss_access/path/path.py

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,10 @@ def extract(self, name, example):
328328
template = re.sub('@healpixgrp[|]', '{healpixgrp}', template)
329329
elif re.search('@configgrp[|]', template):
330330
template = re.sub('@configgrp[|]', '{configgrp}', template)
331+
elif re.search('@isplate[|]', template):
332+
template = re.sub('@isplate[|]', '{isplate}', template)
333+
elif re.search('@pad_fieldid[|]', template):
334+
template = re.sub('@pad_fieldid[|]', '{fieldid}', template)
331335
if re.search('@plateid6[|]', template):
332336
template = re.sub('@plateid6[|]', '{plateid:0>6}', template)
333337

@@ -1293,5 +1297,56 @@ def configgrp(self, filetype, **kwargs):
12931297
return '0000XX'
12941298
return '{:0>4d}XX'.format(int(configid) // 100)
12951299

1300+
def isplate(self, filetype, **kwargs):
1301+
''' Returns the plate flag for BOSS idlspec2d run2d versions that utilize it
1302+
1303+
Parameters
1304+
---------
1305+
filetype : str
1306+
File type paramter
1307+
run2d : str
1308+
BOSS idlspec2d run2d version
1309+
1310+
Returns
1311+
-------
1312+
isplate : str
1313+
isplate flag = 'p' for relevent run2d plates else flag = ''
1314+
'''
1315+
1316+
run2d = kwargs.get('run2d', None)
1317+
if not run2d:
1318+
return ''
1319+
if run2d in ['v6_0_1','v6_0_2', 'v6_0_3', 'v6_0_4']:
1320+
return 'p'
1321+
return ''
1322+
1323+
def pad_fieldid(self, filetype, **kwargs):
1324+
''' Returns the fieldid zero padded to its proper length for the BOSS idlspec2d run2d version
1325+
1326+
Parameters
1327+
---------
1328+
filetype : str
1329+
File type paramter
1330+
run2d : str
1331+
BOSS idlspec2d run2d version
1332+
fieldid : str or int
1333+
Field ID number. Will be converted to str internally.
1334+
1335+
Returns
1336+
-------
1337+
fieldid : str
1338+
padd_fieldid in the form of N*'0' where N is the number of necessary zeros to pad fieldid
1339+
'''
1340+
1341+
fieldid = kwargs.get('fieldid', None)
1342+
run2d = kwargs.get('run2d', None)
1343+
1344+
if (not run2d) & (not fieldid):
1345+
return ''
1346+
if run2d in ['v6_0_1','v6_0_2', 'v6_0_3', 'v6_0_4']:
1347+
return str(fieldid)
1348+
return str(fieldid).zfill(6)
1349+
1350+
12961351
class AccessError(Exception):
12971352
pass

tests/path/test_sdss5.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,19 @@ def test_apogee_paths(self, path, name, special, keys, exp):
4646
('apField', '@apgprefix', {'telescope': 'lco25m', 'apred': 'r12', 'field': '2J01'},
4747
'redux/r12/stars/lco25m/2J01/asField-2J01.fits'),
4848
('apHist', '@apgprefix', {'apred': 'r12', 'mjd': '52123', 'chip':'b', 'instrument': 'apogee-n'},
49-
'r12/exposures/apogee-n/52123/apHist-b-52123.fits')],
50-
ids=['configgrp', 'apgprefix-apo', 'apgprefix-lco', 'apgprefix-ins'])
49+
'r12/exposures/apogee-n/52123/apHist-b-52123.fits'),
50+
('spField', '@isplate', {'run2d': 'v6_0_4', 'mjd': '59187', 'fieldid': '15007'},
51+
'v6_0_4/15007p/spField-15007-59187.fits'),
52+
('spField', '@pad_fieldid', {'run2d': 'v6_0_8', 'mjd': '59630', 'fieldid': '021160'},
53+
'v6_0_8/021160/spField-021160-59630.fits'),
54+
('spField', '@pad_fieldid', {'run2d': 'v6_0_8', 'mjd': '59760', 'fieldid': '112359'},
55+
'v6_0_8/112359/spField-112359-59760.fits'),
56+
('spFrame', '@pad_fieldid', {'run2d': 'v6_0_8', 'br': 'b', 'id': '1', 'frame': '5432', 'fieldid':'1234'},
57+
'v6_0_8/001234/spFrame-b1-00005432.fits.gz'),
58+
('spFrame', '@pad_fieldid', {'run2d': 'v6_0_4', 'br': 'b', 'id': '1', 'frame': '5432', 'fieldid':'1234'},
59+
'v6_0_4/1234p/spFrame-b1-00005432.fits.gz')],
60+
ids=['configgrp', 'apgprefix-apo', 'apgprefix-lco', 'apgprefix-ins',
61+
'isplate-v6_0_4','pad_fieldid-5','pad_fieldid-6', 'frame-pad', 'frame-nopadp'])
5162
def test_special_function(self, path, name, special, keys, exp):
5263
assert special in path.templates[name]
5364
full = path.full(name, **keys)

0 commit comments

Comments
 (0)