LSSTApplications  16.0-10-g0ee56ad+5,16.0-11-ga33d1f2+5,16.0-12-g3ef5c14+3,16.0-12-g71e5ef5+18,16.0-12-gbdf3636+3,16.0-13-g118c103+3,16.0-13-g8f68b0a+3,16.0-15-gbf5c1cb+4,16.0-16-gfd17674+3,16.0-17-g7c01f5c+3,16.0-18-g0a50484+1,16.0-20-ga20f992+8,16.0-21-g0e05fd4+6,16.0-21-g15e2d33+4,16.0-22-g62d8060+4,16.0-22-g847a80f+4,16.0-25-gf00d9b8+1,16.0-28-g3990c221+4,16.0-3-gf928089+3,16.0-32-g88a4f23+5,16.0-34-gd7987ad+3,16.0-37-gc7333cb+2,16.0-4-g10fc685+2,16.0-4-g18f3627+26,16.0-4-g5f3a788+26,16.0-5-gaf5c3d7+4,16.0-5-gcc1f4bb+1,16.0-6-g3b92700+4,16.0-6-g4412fcd+3,16.0-6-g7235603+4,16.0-69-g2562ce1b+2,16.0-8-g14ebd58+4,16.0-8-g2df868b+1,16.0-8-g4cec79c+6,16.0-8-gadf6c7a+1,16.0-8-gfc7ad86,16.0-82-g59ec2a54a+1,16.0-9-g5400cdc+2,16.0-9-ge6233d7+5,master-g2880f2d8cf+3,v17.0.rc1
LSSTDataManagementBasePackage
Public Member Functions | Public Attributes | Static Public Attributes | List of all members
lsst.daf.persistence.butlerSubset.ButlerDataRef Class Reference
Inheritance diagram for lsst.daf.persistence.butlerSubset.ButlerDataRef:

Public Member Functions

def __init__ (self, butlerSubset, dataId)
 
def __repr__ (self)
 
def get (self, datasetType=None, rest)
 
def put (self, obj, datasetType=None, doBackup=False, rest)
 
def getUri (self, datasetType=None, write=False, rest)
 
def subLevels (self)
 
def subItems (self, level=None)
 
def datasetExists (self, datasetType=None, write=False, rest)
 
def getButler (self)
 

Public Attributes

 butlerSubset
 
 dataId
 

Static Public Attributes

int GENERATION = 2
 

Detailed Description

A ButlerDataRef is a reference to a potential dataset or group of datasets
that is portable between compatible dataset types.  As such, it can be
used to create or retrieve datasets.

ButlerDataRefs are (conceptually) created as elements of a ButlerSubset by
Butler.subset().  They are initially specific to the dataset type passed
to that call, but they may be used with any other compatible dataset type.
Dataset type compatibility must be determined externally (or by trial and
error).

ButlerDataRefs may be created at any level of a data identifier hierarchy.
If the level is not one at which datasets exist, a ButlerSubset
with lower-level ButlerDataRefs can be created using
ButlerDataRef.subItems().

Public methods:

get(self, datasetType=None, **rest)

put(self, obj, datasetType=None, **rest)

subItems(self, level=None)

datasetExists(self, datasetType=None, **rest)

getButler(self)

Definition at line 149 of file butlerSubset.py.

Constructor & Destructor Documentation

◆ __init__()

def lsst.daf.persistence.butlerSubset.ButlerDataRef.__init__ (   self,
  butlerSubset,
  dataId 
)
For internal use only.  ButlerDataRefs should only be created by
ButlerSubset and ButlerSubsetIterator.

Definition at line 183 of file butlerSubset.py.

183  def __init__(self, butlerSubset, dataId):
184  """
185  For internal use only. ButlerDataRefs should only be created by
186  ButlerSubset and ButlerSubsetIterator.
187  """
188 
189  self.butlerSubset = butlerSubset
190  self.dataId = dataId
191 
def __init__(self, minimum, dataRange, Q)

Member Function Documentation

◆ __repr__()

def lsst.daf.persistence.butlerSubset.ButlerDataRef.__repr__ (   self)

Definition at line 192 of file butlerSubset.py.

192  def __repr__(self):
193  return 'ButlerDataRef(butlerSubset=%s, dataId=%s)' % (self.butlerSubset, self.dataId)
194 

◆ datasetExists()

def lsst.daf.persistence.butlerSubset.ButlerDataRef.datasetExists (   self,
  datasetType = None,
  write = False,
  rest 
)
Determine if a dataset exists of the given type (or the type used when
creating the ButlerSubset, if None) as specified by the ButlerDataRef.

@param datasetType (str) dataset type to check.
@param write (bool) if True, search only in output repositories
@param **rest            keywords arguments with data identifiers
@returns bool

Definition at line 304 of file butlerSubset.py.

304  def datasetExists(self, datasetType=None, write=False, **rest):
305  """
306  Determine if a dataset exists of the given type (or the type used when
307  creating the ButlerSubset, if None) as specified by the ButlerDataRef.
308 
309  @param datasetType (str) dataset type to check.
310  @param write (bool) if True, search only in output repositories
311  @param **rest keywords arguments with data identifiers
312  @returns bool
313  """
314  if datasetType is None:
315  datasetType = self.butlerSubset.datasetType
316  return self.butlerSubset.butler.datasetExists(
317  datasetType, self.dataId, write=write, **rest)
318 

◆ get()

def lsst.daf.persistence.butlerSubset.ButlerDataRef.get (   self,
  datasetType = None,
  rest 
)
Retrieve a dataset of the given type (or the type used when creating
the ButlerSubset, if None) as specified by the ButlerDataRef.

@param datasetType (str)  dataset type to retrieve.
@param **rest             keyword arguments with data identifiers
@returns object corresponding to the given dataset type.

Definition at line 195 of file butlerSubset.py.

195  def get(self, datasetType=None, **rest):
196  """
197  Retrieve a dataset of the given type (or the type used when creating
198  the ButlerSubset, if None) as specified by the ButlerDataRef.
199 
200  @param datasetType (str) dataset type to retrieve.
201  @param **rest keyword arguments with data identifiers
202  @returns object corresponding to the given dataset type.
203  """
204  if datasetType is None:
205  datasetType = self.butlerSubset.datasetType
206  return self.butlerSubset.butler.get(datasetType, self.dataId, **rest)
207 

◆ getButler()

def lsst.daf.persistence.butlerSubset.ButlerDataRef.getButler (   self)
Return the butler associated with this data reference.

Definition at line 319 of file butlerSubset.py.

319  def getButler(self):
320  """
321  Return the butler associated with this data reference.
322  """
323  return self.butlerSubset.butler
324 

◆ getUri()

def lsst.daf.persistence.butlerSubset.ButlerDataRef.getUri (   self,
  datasetType = None,
  write = False,
  rest 
)
Return the URL for a dataset

.. warning:: This is intended only for debugging. The URI should
never be used for anything other than printing.

.. note:: In the event there are multiple URIs, we return only
the first.

.. note:: getUri() does not currently support composite datasets.

Parameters
----------
datasetType : `str`, optional
   The dataset type of interest.
write : `bool`, optional
   Return the URI for writing?
rest : `dict`, optional
   Keyword arguments for the data id.

Returns
-------
uri : `str`
   URI for dataset

Definition at line 226 of file butlerSubset.py.

226  def getUri(self, datasetType=None, write=False, **rest):
227  """Return the URL for a dataset
228 
229  .. warning:: This is intended only for debugging. The URI should
230  never be used for anything other than printing.
231 
232  .. note:: In the event there are multiple URIs, we return only
233  the first.
234 
235  .. note:: getUri() does not currently support composite datasets.
236 
237  Parameters
238  ----------
239  datasetType : `str`, optional
240  The dataset type of interest.
241  write : `bool`, optional
242  Return the URI for writing?
243  rest : `dict`, optional
244  Keyword arguments for the data id.
245 
246  Returns
247  -------
248  uri : `str`
249  URI for dataset
250  """
251 
252  if datasetType is None:
253  datasetType = self.butlerSubset.datasetType
254  return self.butlerSubset.butler.getUri(datasetType, self.dataId, write=write, **rest)
255 

◆ put()

def lsst.daf.persistence.butlerSubset.ButlerDataRef.put (   self,
  obj,
  datasetType = None,
  doBackup = False,
  rest 
)
Persist a dataset of the given type (or the type used when creating
the ButlerSubset, if None) as specified by the ButlerDataRef.

@param obj                object to persist.
@param datasetType (str)  dataset type to persist.
@param doBackup           if True, rename existing instead of overwriting
@param **rest             keyword arguments with data identifiers

WARNING: Setting doBackup=True is not safe for parallel processing, as it
may be subject to race conditions.

Definition at line 208 of file butlerSubset.py.

208  def put(self, obj, datasetType=None, doBackup=False, **rest):
209  """
210  Persist a dataset of the given type (or the type used when creating
211  the ButlerSubset, if None) as specified by the ButlerDataRef.
212 
213  @param obj object to persist.
214  @param datasetType (str) dataset type to persist.
215  @param doBackup if True, rename existing instead of overwriting
216  @param **rest keyword arguments with data identifiers
217 
218  WARNING: Setting doBackup=True is not safe for parallel processing, as it
219  may be subject to race conditions.
220  """
221 
222  if datasetType is None:
223  datasetType = self.butlerSubset.datasetType
224  self.butlerSubset.butler.put(obj, datasetType, self.dataId, doBackup=doBackup, **rest)
225 

◆ subItems()

def lsst.daf.persistence.butlerSubset.ButlerDataRef.subItems (   self,
  level = None 
)
Generate a ButlerSubset at a lower level of the hierarchy than this
ButlerDataRef, using it as a partial data id.  If level is None, a
default lower level for the original ButlerSubset level and dataset
type is used.

As currently implemented, the default sublevels for all the
repositories used by this Butler instance must match for the Butler to
be able to select a default sublevel to get the subset.

@param level (str)   the hierarchy level to descend to.
@returns (ButlerSubset) resulting from the lower-level query or () if
                there is no lower level.

Definition at line 274 of file butlerSubset.py.

274  def subItems(self, level=None):
275  """
276  Generate a ButlerSubset at a lower level of the hierarchy than this
277  ButlerDataRef, using it as a partial data id. If level is None, a
278  default lower level for the original ButlerSubset level and dataset
279  type is used.
280 
281  As currently implemented, the default sublevels for all the
282  repositories used by this Butler instance must match for the Butler to
283  be able to select a default sublevel to get the subset.
284 
285  @param level (str) the hierarchy level to descend to.
286  @returns (ButlerSubset) resulting from the lower-level query or () if
287  there is no lower level.
288  """
289 
290  if level is None:
291  levelSet = set()
292  for repoData in self.butlerSubset.butler._repos.all():
293  levelSet.add(repoData.repo._mapper.getDefaultSubLevel(
294  self.butlerSubset.level))
295  if len(levelSet) > 1:
296  raise RuntimeError(
297  "Support for multiple levels not implemented.")
298  level = levelSet.pop()
299  if level is None:
300  return ()
301  return self.butlerSubset.butler.subset(self.butlerSubset.datasetType,
302  level, self.dataId)
303 
daf::base::PropertySet * set
Definition: fits.cc:832

◆ subLevels()

def lsst.daf.persistence.butlerSubset.ButlerDataRef.subLevels (   self)
Return a list of the lower levels of the hierarchy than this
ButlerDataRef.

@returns (iterable)  list of strings with level keys.

Definition at line 256 of file butlerSubset.py.

256  def subLevels(self):
257  """
258  Return a list of the lower levels of the hierarchy than this
259  ButlerDataRef.
260 
261  @returns (iterable) list of strings with level keys."""
262 
263  return set(
264  self.butlerSubset.butler.getKeys(
265  self.butlerSubset.datasetType,
266  tag=self.butlerSubset.dataId.tag).keys()
267  ) - set(
268  self.butlerSubset.butler.getKeys(
269  self.butlerSubset.datasetType,
270  self.butlerSubset.level,
271  tag=self.butlerSubset.dataId.tag).keys()
272  )
273 
daf::base::PropertySet * set
Definition: fits.cc:832

Member Data Documentation

◆ butlerSubset

lsst.daf.persistence.butlerSubset.ButlerDataRef.butlerSubset

Definition at line 189 of file butlerSubset.py.

◆ dataId

lsst.daf.persistence.butlerSubset.ButlerDataRef.dataId

Definition at line 190 of file butlerSubset.py.

◆ GENERATION

int lsst.daf.persistence.butlerSubset.ButlerDataRef.GENERATION = 2
static

Definition at line 179 of file butlerSubset.py.


The documentation for this class was generated from the following file: