LSSTApplications  11.0-24-g0a022a1,14.0+77,15.0,15.0+1
LSSTDataManagementBasePackage
Classes | Functions | Variables
lsst.datarel.datasetScanner Namespace Reference

Classes

class  _FormatKey
 
class  _PathComponent
 
class  DatasetScanner
 
class  HfsScanner
 

Functions

def getMapperClass (camera)
 
def parseDataIdRules (ruleList, camera)
 
def _mungeStr (k, v, dataId)
 
def _mungeInt (k, v, dataId)
 
def _mungeLsstSim (k, v, dataId)
 
def _mungeSdss (k, v, dataId)
 
def _mungeCfht (k, v, dataId)
 

Variables

list __all__
 
dictionary _mapperClassName
 
dictionary _keyTypes
 
dictionary _mungeFunctions
 

Function Documentation

◆ _mungeCfht()

def lsst.datarel.datasetScanner._mungeCfht (   k,
  v,
  dataId 
)
private

Definition at line 378 of file datasetScanner.py.

378 def _mungeCfht(k, v, dataId):
379  dataId = dataId.copy()
380  if k == 'ccd':
381  dataId['ccd'] = int(v)
382  dataId['ccdName'] = v
383  elif k == 'amp':
384  dataId['amp'] = int(v)
385  dataId['ampName'] = v
386  elif _keyTypes['sdss'][k] == int:
387  dataId[k] = int(v)
388  else:
389  dataId[k] = v
390  return dataId
391 
def _mungeCfht(k, v, dataId)

◆ _mungeInt()

def lsst.datarel.datasetScanner._mungeInt (   k,
  v,
  dataId 
)
private
Munger for keys with integer formats.

Definition at line 181 of file datasetScanner.py.

181 def _mungeInt(k, v, dataId):
182  """Munger for keys with integer formats."""
183  kv = dataId.copy()
184  kv[k] = int(v)
185  return kv
186 
187 
def _mungeInt(k, v, dataId)

◆ _mungeLsstSim()

def lsst.datarel.datasetScanner._mungeLsstSim (   k,
  v,
  dataId 
)
private

Definition at line 346 of file datasetScanner.py.

346 def _mungeLsstSim(k, v, dataId):
347  dataId = dataId.copy()
348  if k == 'raft':
349  r1, r2 = v
350  dataId['raft'] = r1 + ',' + r2
351  dataId['raftId'] = int(r1) * 5 + int(r2)
352  elif k in ('sensor', 'ccd'):
353  s1, s2 = v
354  dataId['sensor'] = s1 + ',' + s2
355  dataId['sensorNum'] = int(s1) * 3 + int(s2)
356  elif k in ('channel', 'amp'):
357  c1, c2 = v
358  dataId['channel'] = c1 + ',' + c2
359  dataId['channelNum'] = int(c1) * 8 + int(c2)
360  elif k in ('snap', 'exposure'):
361  dataId['snap'] = int(v)
362  elif _keyTypes['lsstsim'][k] == int:
363  dataId[k] = int(v)
364  else:
365  dataId[k] = v
366  return dataId
367 
368 
def _mungeLsstSim(k, v, dataId)

◆ _mungeSdss()

def lsst.datarel.datasetScanner._mungeSdss (   k,
  v,
  dataId 
)
private

Definition at line 369 of file datasetScanner.py.

369 def _mungeSdss(k, v, dataId):
370  dataId = dataId.copy()
371  if _keyTypes['sdss'][k] == int:
372  dataId[k] = int(v)
373  else:
374  dataId[k] = v
375  return dataId
376 
377 
def _mungeSdss(k, v, dataId)

◆ _mungeStr()

def lsst.datarel.datasetScanner._mungeStr (   k,
  v,
  dataId 
)
private
Munger for keys with string formats.

Definition at line 174 of file datasetScanner.py.

174 def _mungeStr(k, v, dataId):
175  """Munger for keys with string formats."""
176  kv = dataId.copy()
177  kv[k] = str(v)
178  return kv
179 
180 
def _mungeStr(k, v, dataId)

◆ getMapperClass()

def lsst.datarel.datasetScanner.getMapperClass (   camera)
Return the subclass of lsst.daf.persistence.Mapper
to use for the camera with the given name (case-insensitive).

Definition at line 42 of file datasetScanner.py.

42 def getMapperClass(camera):
43  """Return the subclass of lsst.daf.persistence.Mapper
44  to use for the camera with the given name (case-insensitive).
45  """
46  camera = camera.lower()
47  if camera not in _mapperClassName:
48  raise RuntimeError(str.format("{} is not a valid camera name", camera))
49  name = _mapperClassName[camera]
50  try:
51  pieces = name.split('.')
52  cls = reduce(getattr, pieces[1:], __import__('.'.join(pieces[:-1])))
53  return cls
54  except:
55  raise RuntimeError(str.format("Failed to import {}", name))
56 
57 

◆ parseDataIdRules()

def lsst.datarel.datasetScanner.parseDataIdRules (   ruleList,
  camera 
)
A rule is a string in the following format:

'key=value1[^value2[^value3...]'

The values may either be strings, or of the form 'int...int'
(e.g. '1..3') which is interpreted as '1^2^3' (inclusive, unlike a python
range). So '0^2..4^7..9' is equivalent to '0^2^3^4^7^8^9'.

This function parses a list of such strings, and returns a dict mapping
keys to sets of legal values.

ruleList:
    List of rule strings
camera:
    Camera the rule list applies to (e.g. 'lsstSim' or 'sdss')

Definition at line 105 of file datasetScanner.py.

105 def parseDataIdRules(ruleList, camera):
106  """A rule is a string in the following format:
107 
108  'key=value1[^value2[^value3...]'
109 
110  The values may either be strings, or of the form 'int...int'
111  (e.g. '1..3') which is interpreted as '1^2^3' (inclusive, unlike a python
112  range). So '0^2..4^7..9' is equivalent to '0^2^3^4^7^8^9'.
113 
114  This function parses a list of such strings, and returns a dict mapping
115  keys to sets of legal values.
116 
117  ruleList:
118  List of rule strings
119  camera:
120  Camera the rule list applies to (e.g. 'lsstSim' or 'sdss')
121  """
122  camera = camera.lower()
123  if camera not in _keyTypes:
124  raise RuntimeError('{} is not a recognized camera name'.format(camera))
125  kvs = {}
126  for rule in ruleList:
127  # process rule for a single key
128  key, _, pattern = rule.partition('=')
129  if key not in _keyTypes[camera]:
130  raise RuntimeError('{} is not a valid dataId key for camera {}'.format(key, camera))
131  if len(pattern) == 0:
132  continue
133  values = set()
134  # compute union of all values or value ranges
135  for p in pattern.split('^'):
136  if _keyTypes[camera][key] == int:
137  # check for range syntax
138  m = re.search(r'^(\d+)\.\.(\d+)$', p)
139  if m:
140  values.update(xrange(int(m.group(1)), int(m.group(2)) + 1))
141  else:
142  values.add(int(p))
143  else:
144  values.add(p)
145  if key in kvs:
146  kvs[key].update(values)
147  else:
148  kvs[key] = values
149  return kvs
150 
151 
def parseDataIdRules(ruleList, camera)
def format(config, name=None, writeSourceLine=True, prefix="", verbose=False)
Definition: history.py:134

Variable Documentation

◆ __all__

list lsst.datarel.datasetScanner.__all__
private
Initial value:
1 = ['getMapperClass',
2  'parseDataIdRules',
3  'HfsScanner',
4  'DatasetScanner',
5  ]

Definition at line 28 of file datasetScanner.py.

◆ _keyTypes

dictionary lsst.datarel.datasetScanner._keyTypes
private

Definition at line 58 of file datasetScanner.py.

◆ _mapperClassName

dictionary lsst.datarel.datasetScanner._mapperClassName
private
Initial value:
1 = {
2  'lsstsim': 'lsst.obs.lsstSim.LsstSimMapper',
3  'sdss': 'lsst.obs.sdss.SdssMapper',
4  'cfht': 'lsst.obs.cfht.CfhtMapper',
5 }

Definition at line 35 of file datasetScanner.py.

◆ _mungeFunctions

dictionary lsst.datarel.datasetScanner._mungeFunctions
private
Initial value:
1 = {
2  'lsstsim': _mungeLsstSim,
3  'sdss': _mungeSdss,
4  'cfht': _mungeCfht,
5 }

Definition at line 392 of file datasetScanner.py.