Esempio n. 1
0
def PMakeMaster(template, size, SumWtImage, SumWt2, err):
    """
    Create a pair of images to accumulation of partial products
    
    Create an image to contain the Sum of the input Images times the
    weights, and another for the sum of the weights squared.
    The descriptive material is from image template

    * template   = Image with position etc, to be copied
    * size       = output image size in pixels, e.g. [200,200]
    * SumWtImage = First output image, must be defined (i.e. files named)
      but not fully created.
    * SumWt2     = Second output image, like SumWtImage
    * err        = Python Obit Error/message stack
    
    """
    ################################################################
    # Checks
    if not Image.PIsA(template):
        print "Actually ",template.__class__
        raise TypeError,"template MUST be a Python Obit Image"
    if not Image.PIsA(SumWtImage):
        print "Actually ",SumWtImage.__class__
        raise TypeError,"SumWtImage MUST be a Python Obit Image"
    if not Image.PIsA(SumWt2):
        print "Actually ",SumWt2.__class__
        raise TypeError,"SumWt2 MUST be a Python Obit Image"
    if not OErr.OErrIsA(err):
        raise TypeError,"err MUST be an OErr"
    #
    # Get image info from template
    Image.POpen (template, 1, err)
    Image.PRead (template, err)
    desc = Image.PGetDesc(template)
    descDict = ImageDesc.PGetDict(desc)  # Python dict object
    listDict = template.Desc.List.Dict
    Image.PClose (template, err)
    #OErr.printErrMsg(err, "Error reading input image "+Image.PGetName(template))
    #
    # Create zero filled array for data
    outArray = FArray.FArray("Initial array", size)
    #
    # Modify the descriptor for output.
    naxis = size[0:3]
    # Update reference pixel, pixel shift an integral number
    dim = descDict["inaxes"]
    pixOff = [naxis[0]/2-dim[0]/2, naxis[1]/2-dim[1]/2]
    crpix = descDict["crpix"]
    crpix[0] = crpix[0] + pixOff[0]
    crpix[1] = crpix[1] + pixOff[1]
    # Update size
    dim[0] = naxis[0];
    dim[1] = naxis[1]
    #print "debug dim",dim
    descDict["inaxes"] = dim   
    descDict["bitpix"] = -32  # output floating
    #
    # Do SumWtImage
    desc   = Image.PGetDesc(SumWtImage)
    InfoList.PSetDict(desc.List, listDict)  # Copy list stuff
    ImageDesc.PSetDict(desc, descDict) # set output descriptor
    # Write output image
    Image.POpen(SumWtImage, 2, err)
    nplane = template.Desc.Dict["inaxes"][2]
    for iplane in range(1,(nplane+1)):
        plane = [iplane,1,1,1,1]
        SumWtImage.PutPlane(outArray, plane, err)
    Image.PClose(SumWtImage, err)
    #OErr.printErrMsg(err, "Error writing image for "+Image.PGetName(SumWtImage))
    #
    # Do SumWt2Image
    desc = Image.PGetDesc(SumWt2) 
    InfoList.PSetDict(desc.List, listDict)  # Copy list stuff
    ImageDesc.PSetDict(desc, descDict) # set output descriptor
    # Write output image
    Image.POpen(SumWt2, 2, err)
    for iplane in range(1,(nplane+1)):
        plane = [iplane,1,1,1,1]
        SumWt2.PutPlane(outArray, plane, err)
    Image.PClose(SumWt2, err)
    #OErr.printErrMsg(err, "Error writing image for "+Image.PGetName(SumWt2))
    # Write history - sorta
    inHistory  = History.History("history", template.List, err)
    outHistory = History.History("history", SumWtImage.List, err)
    # Copy History
    History.PCopy(inHistory, outHistory, err)
    outHistory.Open(History.READWRITE, err)
    outHistory.TimeStamp(" Start Obit PMakeMaster",err)
    outHistory.Close(err)
Esempio n. 2
0
outDisk = 1
equinox = 2000.0

# Debug
print "input",inFile

# Convert file into Images
inImage = Image.newPImage(inFile, inFile, inDisk, 1, err)
OErr.printErrMsg(err, "Error initializing image")

# Open/get descriptor
Image.POpen(inImage, 3, err)
desc = Image.PGetDesc(inImage)

# update descriptor
descDict = ImageDesc.PGetDict(desc)       # Get descriptor as Python Dict
descDict["epoch"]   = equinox             # Update "epoch"
descDict["equinox"] = equinox             # Update equinox
descDict["origin"]  = "Obit to fix equinox"    # Update origin
ImageDesc.PSetDict(desc, descDict)        # update descriptor
Image.PClose(inImage, err)                # Close to update disk
OErr.printErrMsg(err, "Error writing updated header for "+Image.PGetName(inImage))

# Say something
print "Updated Equinox (EPOCH) in",inFile,"to",equinox

# Shutdown Obit
OErr.printErr(err)
del ObitSys