LSSTApplications  18.1.0
LSSTDataManagementBasePackage
Functions | Variables
lsst.pipe.drivers.checksum Namespace Reference

Functions

def checksum (obj, header=None, sumType="MD5")
 Calculate a checksum of an object. More...
 

Variables

tuple exposureTypes = (afwImage.ExposureF, afwImage.ExposureD,)
 
tuple maskedImageTypes = (afwImage.MaskedImageF, afwImage.MaskedImageD,)
 
tuple decoratedImageTypes = (afwImage.DecoratedImageF, afwImage.DecoratedImageD,)
 
tuple imageTypes = (afwImage.ImageF, afwImage.ImageD, afwImage.ImageI,)
 
int PROTOCOL = 2
 
dictionary sumFunctions
 

Function Documentation

◆ checksum()

def lsst.pipe.drivers.checksum.checksum (   obj,
  header = None,
  sumType = "MD5" 
)

Calculate a checksum of an object.

We have special handling for images (e.g., breaking a MaskedImage into its various components), but the object may be any picklable type.

Parameters
objObject for which to calculate the checksum
headerFITS header (PropertyList) to update with checksum values, or None
sumTypeType of checksum to calculate
Returns
dict with header keyword,value pairs

Definition at line 29 of file checksum.py.

29 def checksum(obj, header=None, sumType="MD5"):
30  """!Calculate a checksum of an object
31 
32  We have special handling for images (e.g., breaking a MaskedImage into
33  its various components), but the object may be any picklable type.
34 
35  @param obj Object for which to calculate the checksum
36  @param header FITS header (PropertyList) to update with checksum values, or None
37  @param sumType Type of checksum to calculate
38  @return dict with header keyword,value pairs
39  """
40  assert sumType in sumFunctions, "Unknown sumType: %s" % (sumType,)
41  func = sumFunctions[sumType]
42 
43  results = {}
44 
45  if isinstance(obj, exposureTypes):
46  obj = obj.getMaskedImage()
47  if isinstance(obj, decoratedImageTypes):
48  obj = obj.getImage()
49 
50  if isinstance(obj, maskedImageTypes):
51  results[sumType + "_IMAGE"] = func(obj.getImage())
52  results[sumType + "_MASK"] = func(obj.getMask())
53  results[sumType + "_VARIANCE"] = func(obj.getVariance())
54  elif isinstance(obj, imageTypes):
55  results[sumType + "_IMAGE"] = func(obj)
56  else:
57  results[sumType] = func(obj)
58 
59  if header is not None:
60  for k, v in results.items():
61  header.add(k, v)
62 
63  return results
64 
def checksum(obj, header=None, sumType="MD5")
Calculate a checksum of an object.
Definition: checksum.py:29

Variable Documentation

◆ decoratedImageTypes

tuple lsst.pipe.drivers.checksum.decoratedImageTypes = (afwImage.DecoratedImageF, afwImage.DecoratedImageD,)

Definition at line 17 of file checksum.py.

◆ exposureTypes

tuple lsst.pipe.drivers.checksum.exposureTypes = (afwImage.ExposureF, afwImage.ExposureD,)

Definition at line 15 of file checksum.py.

◆ imageTypes

tuple lsst.pipe.drivers.checksum.imageTypes = (afwImage.ImageF, afwImage.ImageD, afwImage.ImageI,)

Definition at line 18 of file checksum.py.

◆ maskedImageTypes

tuple lsst.pipe.drivers.checksum.maskedImageTypes = (afwImage.MaskedImageF, afwImage.MaskedImageD,)

Definition at line 16 of file checksum.py.

◆ PROTOCOL

int lsst.pipe.drivers.checksum.PROTOCOL = 2

Definition at line 20 of file checksum.py.

◆ sumFunctions

dictionary lsst.pipe.drivers.checksum.sumFunctions
Initial value:
1 = {
2  "CRC32": lambda obj: zlib.crc32(pickle.dumps(obj, PROTOCOL)),
3  "MD5": lambda obj: hashlib.md5(pickle.dumps(obj, PROTOCOL)).hexdigest(),
4 }

Definition at line 23 of file checksum.py.