Esempio n. 1
0
def run(rawImage,
        frame,
        dopplerCentroid,
        orbit,
        peg,
        velocity,
        height,
        sensorname,
        stdWriter,
        catalog=None,
        sceneid='NO_ID'):
    logger.info("Forming SLC: %s" % sceneid)

    imSlc = isceobj.createSlcImage()
    IU.copyAttributes(rawImage, imSlc)
    imSlc.setAccessMode('read')
    imSlc.createImage()
    formSlc = stdproc.createFormSLC(sensorname)
    formSlc.setBodyFixedVelocity(velocity)
    formSlc.setSpacecraftHeight(height)
    formSlc.wireInputPort(name='doppler', object=dopplerCentroid)
    formSlc.wireInputPort(name='peg', object=peg)
    formSlc.wireInputPort(name='frame', object=frame)
    formSlc.wireInputPort(name='orbit', object=orbit)
    formSlc.wireInputPort(name='slcInImage', object=imSlc)
    formSlc.stdWriter = stdWriter.set_file_tags("formslcTSX", "log", "err",
                                                "out")
    slcImage = formSlc()
    imSlc.finalizeImage()
    if catalog is not None:
        isceobj.Catalog.recordInputsAndOutputs(catalog, formSlc,
                                               "runFormSLCTSX.%s" % sceneid,
                                               logger,
                                               "runFormSLCTSX.%s" % sceneid)
    return slcImage, formSlc
Esempio n. 2
0
def run(rawImage,
        frame,
        dopplerCentroid,
        orbit,
        peg,
        velocity,
        height,
        sensorname,
        stdWriter,
        catalog=None,
        sceneid='NO_ID'):
    logger.info("Forming SLC: %s" % sceneid)

    imSlc = isceobj.createSlcImage()
    IU.copyAttributes(rawImage, imSlc)
    imSlc.setAccessMode('read')
    imSlc.createImage()
    formSlc = stdproc.createFormSLC(sensorname)
    formSlc.setBodyFixedVelocity(velocity)
    formSlc.setSpacecraftHeight(height)
    formSlc.wireInputPort(name='doppler', object=dopplerCentroid)
    formSlc.wireInputPort(name='peg', object=peg)
    formSlc.wireInputPort(name='frame', object=frame)
    formSlc.wireInputPort(name='orbit', object=orbit)
    formSlc.wireInputPort(name='rawImage', object=None)
    formSlc.wireInputPort(name='planet',
                          object=frame.instrument.platform.planet)
    for item in formSlc.inputPorts:
        item()
    formSlc.slcWidth = imSlc.getWidth()
    formSlc.startingRange = formSlc.rangeFirstSample
    formSlc.rangeChirpExtensionsPoints = 0
    formSlc.setLookSide(frame.platform.pointingDirection)
    formSlc.slcSensingStart = frame.getSensingStart()
    formSlc.outOrbit = orbit

    formSlc.stdWriter = stdWriter.set_file_tags("formslcISCE", "log", "err",
                                                "out")

    time, position, vel, relTo = orbit._unpackOrbit()
    mocomp_array = [[], []]
    for (t, p) in zip(time, position):
        mocomp_array[0].append(t - time[0])
        mocomp_array[1].append(p[0])

    formSlc.mocompPosition = mocomp_array
    formSlc.mocompIndx = list(range(1, len(time) + 1))
    formSlc.dim1_mocompPosition = 2
    formSlc.dim2_mocompPosition = len(time)
    formSlc.dim1_mocompIndx = len(time)

    #    slcImage = formSlc()
    imSlc.finalizeImage()
    if catalog is not None:
        isceobj.Catalog.recordInputsAndOutputs(catalog, formSlc,
                                               "runFormSLCisce.%s" % sceneid,
                                               logger,
                                               "runFormSLCisce.%s" % sceneid)
    return imSlc, formSlc
Esempio n. 3
0
def master(self, deltaf=None):
    from isceobj.Catalog import recordInputsAndOutputs
    from iscesys.ImageUtil.ImageUtil import ImageUtil as IU




    v,h = self.insar.vh()
   
    objRaw = self.insar.rawMasterIQImage.clone()
    objRaw.accessMode = 'read'
    objFormSlc = stdproc.createFormSLC(name='insarapp_formslc_master')
    objFormSlc.setBodyFixedVelocity(v)
    objFormSlc.setSpacecraftHeight(h)
    objFormSlc.setAzimuthPatchSize(self.patchSize)
    objFormSlc.setNumberValidPulses(self.goodLines)
    objFormSlc.setNumberPatches(self.numPatches)
    objFormSlc.setLookSide(self.insar._lookSide)
    objFormSlc.setNumberAzimuthLooks(self.insar.numberAzimuthLooks)
    logger.info("Focusing Master image")
    objFormSlc.stdWriter = self.stdWriter

    if (deltaf is not None) and (objFormSlc.azimuthResolution is None):
        ins = self.insar.masterFrame.getInstrument()
        prf = ins.getPulseRepetitionFrequency()
        res = ins.getPlatform().getAntennaLength() / 2.0
        azbw = min(v/res, prf)
        res = v/azbw 

        factor = 1.0 - (abs(deltaf)/azbw)
        logger.info('MASTER AZIMUTH BANDWIDTH FACTOR = %f'%(factor))
        azres = res / factor
        #jng This is a temporary solution seems it looks that same banding problem
        #can be resolved by doubling the azres. The default azResFactor  is still one.
        objFormSlc.setAzimuthResolution(azres*self.insar.azResFactor)
   
    ####newInputs
    objSlc = objFormSlc(rawImage=objRaw,
                orbit=self.insar.masterOrbit,
                frame=self.insar.masterFrame,
                planet=self.insar.masterFrame.instrument.platform.planet,
                doppler=self.insar.dopplerCentroid,
                peg=self.insar.peg)

    imageSlc = isceobj.createSlcImage()
    IU.copyAttributes(objSlc, imageSlc)
    imageSlc.setAccessMode('read')
    objSlc.finalizeImage()
    objRaw.finalizeImage()
    recordInputsAndOutputs(self.insar.procDoc, objFormSlc,
        "runFormSLC.master", logger, "runFormSLC.master")

    logger.info('New Width = %d'%(imageSlc.getWidth()))
    self.insar.masterSlcImage = imageSlc
    self.insar.formSLC1 = objFormSlc
    return objFormSlc.numberPatches
Esempio n. 4
0
def secondary(self, deltaf=None):
    from isceobj.Catalog import recordInputsAndOutputs
    from iscesys.ImageUtil.ImageUtil import ImageUtil as IU

    v, h = self.insar.vh()

    objRaw = self.insar.rawSecondaryIQImage.clone()
    objRaw.accessMode = 'read'
    objFormSlc = stdproc.createFormSLC(name='insarapp_formslc_secondary')
    objFormSlc.setBodyFixedVelocity(v)
    objFormSlc.setSpacecraftHeight(h)
    objFormSlc.setAzimuthPatchSize(self.patchSize)
    objFormSlc.setNumberValidPulses(self.goodLines)
    objFormSlc.setNumberPatches(self.numPatches)
    objFormSlc.setNumberAzimuthLooks(self.insar.numberAzimuthLooks)
    objFormSlc.setLookSide(self.insar._lookSide)
    logger.info("Focusing Reference image")
    objFormSlc.stdWriter = self.stdWriter

    if (deltaf is not None) and (objFormSlc.azimuthResolution is None):
        ins = self.insar.secondaryFrame.getInstrument()
        prf = ins.getPulseRepetitionFrequency()
        res = ins.getPlatform().getAntennaLength() / 2.0
        azbw = min(v / res, prf)
        res = v / azbw
        factor = 1.0 - (abs(deltaf) / azbw)
        logger.info('SECONDARY AZIMUTH BANDWIDTH FACTOR = %f' % (factor))
        azres = res / factor
        objFormSlc.setAzimuthResolution(azres)

    objSlc = objFormSlc(
        rawImage=objRaw,
        orbit=self.insar.secondaryOrbit,
        frame=self.insar.secondaryFrame,
        planet=self.insar.secondaryFrame.instrument.platform.planet,
        doppler=self.insar.dopplerCentroid,
        peg=self.insar.peg)

    imageSlc = isceobj.createSlcImage()
    IU.copyAttributes(objSlc, imageSlc)
    imageSlc.setAccessMode('read')
    objSlc.finalizeImage()
    objRaw.finalizeImage()
    recordInputsAndOutputs(self.insar.procDoc, objFormSlc,
                           "runFormSLC.secondary", logger,
                           "runFormSLC.secondary")

    logger.info('New Width = %d' % (imageSlc.getWidth()))
    self.insar.secondarySlcImage = imageSlc
    self.insar.formSLC2 = objFormSlc
    return objFormSlc.numberPatches
Esempio n. 5
0
def run(rawImage,
        frame,
        dopplerCentroid,
        orbit,
        peg,
        velocity,
        height,
        infos,
        stdWriter,
        catalog=None,
        sceneid='NO_ID'):
    logger.info("Forming SLC: %s" % sceneid)

    #    objRaw = rawImage.copy(access_mode='read')
    objRaw = rawImage.clone()
    objRaw.accessMode = 'read'
    objFormSlc = stdproc.createFormSLC()
    objFormSlc.setBodyFixedVelocity(velocity)
    objFormSlc.setSpacecraftHeight(height)
    objFormSlc.setAzimuthPatchSize(infos['patchSize'])
    objFormSlc.setNumberValidPulses(infos['numberValidPulses'])
    objFormSlc.setNumberPatches(infos['numberPatches'])
    objFormSlc.setNumberRangeBin(frame.numberRangeBins)
    objFormSlc.setLookSide(infos['lookSide'])
    objFormSlc.setShift(infos['azShiftPixels'])
    logger.info("Shift in azimuth: %f pixels" % infos['azShiftPixels'])
    objFormSlc.setNumberAzimuthLooks(infos['numberAzimuthLooks'])
    logger.info("Focusing image %s" % sceneid)
    objFormSlc.stdWriter = stdWriter
    objSlc = objFormSlc(rawImage=objRaw,
                        orbit=orbit,
                        frame=frame,
                        planet=frame.instrument.platform.planet,
                        doppler=dopplerCentroid,
                        peg=peg)

    imageSlc = isceobj.createSlcImage()
    IU.copyAttributes(objSlc, imageSlc)
    imageSlc.setAccessMode('read')
    objSlc.finalizeImage()
    objRaw.finalizeImage()
    if catalog is not None:
        isceobj.Catalog.recordInputsAndOutputs(catalog, objFormSlc,
                                               "runFormSLC.%s" % sceneid,
                                               logger,
                                               "runFormSLC.%s" % sceneid)

    logger.info('New Width = %d' % (imageSlc.getWidth()))
    return imageSlc, objFormSlc
Esempio n. 6
0
def runFormSLC(self, patchSize=None, goodLines=None, numPatches=None):
    #NOTE tested the formslc() as a stand alone by passing the same inputs
    #computed in Howard terraSAR.py. The differences here arises from the
    #differences in the orbits when using the same orbits the results are very
    #close jng this will make the second term in coarseAz in offsetprf equal
    #zero. we do so since for tsx there is no such a term. Need to ask
    #confirmation
    self.insar.setPatchSize(self.insar.numberValidPulses)
    # the below value is zero because of we just did above, but just want to be
    #  explicit in the definition of is_mocomp
    self.is_mocomp = self.insar.get_is_mocomp

    v = self.insar.procVelocity
    h = self.insar.averageHeight
    imageSlc1 = self.insar.referenceRawImage
    imSlc1 = isceobj.createSlcImage()
    IU.copyAttributes(imageSlc1, imSlc1)
    imSlc1.setAccessMode('read')
    imSlc1.createImage()
    formSlc1 = stdproc.createFormSLC(self.sensorName)

    formSlc1.setBodyFixedVelocity(v)
    formSlc1.setSpacecraftHeight(h)
    formSlc1.wireInputPort(name='doppler', object=self.insar.dopplerCentroid)
    formSlc1.wireInputPort(name='peg', object=self.insar.peg)
    formSlc1.wireInputPort(name='frame', object=self.insar.referenceFrame)
    formSlc1.wireInputPort(name='orbit', object=self.insar.referenceOrbit)
    formSlc1.wireInputPort(name='slcInImage', object=imSlc1)
    formSlc1.wireInputPort(
        name='planet',
        object=self.insar.referenceFrame.instrument.platform.planet)
    self._stdWriter.setFileTag("formslcTSX", "log")
    self._stdWriter.setFileTag("formslcTSX", "err")
    self._stdWriter.setFileTag("formslcTSX", "out")
    formSlc1.setStdWriter(self._stdWriter)
    formSlc1.setLookSide(self.insar._lookSide)

    #    self.insar.setReferenceSlcImage(formSlc1.formslc())
    self.insar.referenceSlcImage = formSlc1()

    imageSlc2 = self.insar.secondaryRawImage
    imSlc2 = isceobj.createSlcImage()
    IU.copyAttributes(imageSlc2, imSlc2)
    imSlc2.setAccessMode('read')
    imSlc2.createImage()
    formSlc2 = stdproc.createFormSLC(self.sensorName)

    formSlc2.setBodyFixedVelocity(v)
    formSlc2.setSpacecraftHeight(h)
    formSlc2.wireInputPort(name='doppler', object=self.insar.dopplerCentroid)
    formSlc2.wireInputPort(name='peg', object=self.insar.peg)
    formSlc2.wireInputPort(name='frame', object=self.insar.secondaryFrame)
    formSlc2.wireInputPort(name='orbit', object=self.insar.secondaryOrbit)
    formSlc2.wireInputPort(name='slcInImage', object=imSlc2)
    formSlc2.wireInputPort(
        name='planet',
        object=self.insar.secondaryFrame.instrument.platform.planet)

    self._stdWriter.setFileTag("formslcTSX", "log")
    self._stdWriter.setFileTag("formslcTSX", "err")
    self._stdWriter.setFileTag("formslcTSX", "out")
    formSlc2.setStdWriter(self._stdWriter)
    formSlc2.setLookSide(self.insar._lookSide)
    #    self.insar.setSecondarySlcImage(formSlc2.formslc())
    self.insar.secondarySlcImage = formSlc2()
    self.insar.setNumberPatches(imSlc1.getLength() /
                                float(self.insar.numberValidPulses))
    imSlc1.finalizeImage()
    imSlc2.finalizeImage()
    self.insar.setFormSLC1(formSlc1)
    self.insar.setFormSLC2(formSlc2)
Esempio n. 7
0
    def focus(self, mr, fd):
        """
        Focus SAR data

        @param mr (\a make_raw) a make_raw instance
        @param fd (\a float) Doppler centroid for focusing
        """
        import stdproc
        import isceobj
        #from isceobj.Sensor.Generic import Generic

        # Extract some useful variables
        frame = mr.getFrame()
        orbit = frame.getOrbit()
        planet = frame.getInstrument().getPlatform().getPlanet()

        # Calculate Peg Point
        self.logger.info("Calculating Peg Point")
        peg = self.calculatePegPoint(frame, orbit, planet)
        V, H = self.calculateProcessingVelocity(frame, peg)

        # Interpolate orbit
        self.logger.info("Interpolating Orbit")
        pt = stdproc.createPulsetiming()
        pt.wireInputPort(name='frame', object=frame)
        pt.pulsetiming()
        orbit = pt.getOrbit()

        # Convert orbit to SCH coordinates
        self.logger.info("Converting orbit reference frame")
        o2s = stdproc.createOrbit2sch()
        o2s.wireInputPort(name='planet', object=planet)
        o2s.wireInputPort(name='orbit', object=orbit)
        o2s.wireInputPort(name='peg', object=peg)
        o2s.setAverageHeight(H)
        o2s.orbit2sch()

        # Create Raw Image
        rawImage = isceobj.createRawImage()
        filename = frame.getImage().getFilename()
        bytesPerLine = frame.getImage().getXmax()
        goodBytes = bytesPerLine - frame.getImage().getXmin()
        rawImage.setAccessMode('read')
        rawImage.setByteOrder(frame.getImage().byteOrder)
        rawImage.setFilename(filename)
        rawImage.setNumberGoodBytes(goodBytes)
        rawImage.setWidth(bytesPerLine)
        rawImage.setXmin(frame.getImage().getXmin())
        rawImage.setXmax(bytesPerLine)
        rawImage.createImage()

        # Create SLC Image
        slcImage = isceobj.createSlcImage()
        rangeSamplingRate = frame.getInstrument().getRangeSamplingRate()
        rangePulseDuration = frame.getInstrument().getPulseLength()
        chirpSize = int(rangeSamplingRate * rangePulseDuration)
        chirpExtension = 0  #0.5*chirpSize
        numberRangeBins = int(goodBytes / 2) - chirpSize + chirpExtension
        slcImage.setFilename(filename.replace('.raw', '.slc'))
        slcImage.setByteOrder(frame.getImage().byteOrder)
        slcImage.setAccessMode('write')
        slcImage.setDataType('CFLOAT')
        slcImage.setWidth(numberRangeBins)
        slcImage.createImage()

        # Calculate motion compenstation correction for Doppler centroid
        self.logger.info("Correcting Doppler centroid for motion compensation")
        fdmocomp = stdproc.createFdMocomp()
        fdmocomp.wireInputPort(name='frame', object=frame)
        fdmocomp.wireInputPort(name='peg', object=peg)
        fdmocomp.wireInputPort(name='orbit', object=o2s.getOrbit())
        fdmocomp.setWidth(numberRangeBins)
        fdmocomp.setSatelliteHeight(H)
        fdmocomp.setDopplerCoefficients([fd[0], 0.0, 0.0, 0.0])
        fdmocomp.fdmocomp()
        fd[0] = fdmocomp.getDopplerCentroid()
        self.logger.info("Updated Doppler centroid: %s" % (fd))

        # Calculate the motion compensation Doppler centroid correction plus rate
        #self.logger.info("Testing new Doppler code")
        #frate = stdproc.createFRate()
        #frate.wireInputPort(name='frame',object=frame)
        #frate.wireInputPort(name='peg', object=peg)
        #frate.wireInputPort(name='orbit',object=o2s.getOrbit())
        #frate.wireInputPort(name='planet',object=planet)
        #frate.setWidth(numberRangeBins)
        #frate.frate()
        #fd = frate.getDopplerCentroid()
        #fdrate = frate.getDopplerRate()
        #self.logger.info("Updated Doppler centroid and rate: %s %s" % (fd,fdrate))

        synthetic_aperature_length = self._calculateSyntheticAperatureLength(
            frame, V)

        patchSize = self.nextpow2(2 * synthetic_aperature_length)
        valid_az_samples = patchSize - synthetic_aperature_length
        rawFileSize = rawImage.getLength() * rawImage.getWidth()
        linelength = rawImage.getXmax()
        overhead = patchSize - valid_az_samples
        numPatches = (1 + int(
            (rawFileSize / float(linelength) - overhead) / valid_az_samples))

        # Focus image
        self.logger.info("Focusing image")
        focus = stdproc.createFormSLC()
        focus.wireInputPort(name='rawImage', object=rawImage)
        focus.wireInputPort(name='slcImage', object=slcImage)
        focus.wireInputPort(name='orbit', object=o2s.getOrbit())
        focus.wireInputPort(name='frame', object=frame)
        focus.wireInputPort(name='peg', object=peg)
        focus.wireInputPort(name='planet', object=planet)
        focus.setDebugFlag(96)
        focus.setBodyFixedVelocity(V)
        focus.setSpacecraftHeight(H)
        focus.setAzimuthPatchSize(patchSize)
        focus.setNumberValidPulses(valid_az_samples)
        focus.setSecondaryRangeMigrationFlag('n')
        focus.setNumberAzimuthLooks(1)
        focus.setNumberPatches(numPatches)
        focus.setDopplerCentroidCoefficients(fd)
        #focus.setDopplerCentroidCoefficients([fd[0], 0.0, 0.0])
        focus.formslc()
        mocompPos = focus.getMocompPosition()
        fp = open('position.sch', 'w')
        for i in range(len(mocompPos[0])):
            fp.write("%f %f\n" % (mocompPos[0][i], mocompPos[1][i]))
        fp.close()

        slcImage.finalizeImage()
        rawImage.finalizeImage()

        # Recreate the SLC image
        slcImage = isceobj.createSlcImage()
        slcImage.setFilename(filename.replace('.raw', '.slc'))
        slcImage.setAccessMode('read')
        slcImage.setDataType('CFLOAT')
        slcImage.setWidth(numberRangeBins)
        slcImage.createImage()
        width = int(slcImage.getWidth())
        length = int(slcImage.getLength())

        # Create a frame object and write it out using the Generic driver
        frame.setImage(slcImage)
        frame.setOrbit(o2s.getOrbit())
        #writer = Generic()
        #writer.frame = frame
        #writer.write('test.h5',compression='gzip')

        slcImage.finalizeImage()

        self.width = width
        self.length = length
Esempio n. 8
0
    def focus(self,mr,fd):
        """
        Focus SAR data

        @param mr (\a make_raw) a make_raw instance
        @param fd (\a float) Doppler centroid for focusing
        """
        import stdproc
        import isceobj

        # Extract some useful variables
        frame = mr.getFrame()
        orbit = frame.getOrbit()
        planet = frame.getInstrument().getPlatform().getPlanet()

        # Calculate Peg Point
        self.logger.info("Calculating Peg Point")
        peg,H,V = self.calculatePegPoint(frame,orbit,planet)

        # Interpolate orbit
        self.logger.info("Interpolating Orbit")
        pt = stdproc.createPulsetiming()
        pt.wireInputPort(name='frame',object=frame)
        pt.pulsetiming()
        orbit = pt.getOrbit()

        # Convert orbit to SCH coordinates
        self.logger.info("Converting orbit reference frame")
        o2s = stdproc.createOrbit2sch()
        o2s.wireInputPort(name='planet',object=planet)
        o2s.wireInputPort(name='orbit',object=orbit)
        o2s.wireInputPort(name='peg',object=peg)
        o2s.setAverageHeight(H)

        # updated 07/24/2012
        o2s.stdWriter = self._writer_set_file_tags(
            "orbit2sch", "log", "err", "out"
            )
        # updated 07/24/2012

        o2s.orbit2sch()

        # Create Raw Image
        rawImage = isceobj.createRawImage()
        filename = frame.getImage().getFilename()
        bytesPerLine = frame.getImage().getXmax()
        goodBytes = bytesPerLine - frame.getImage().getXmin()
        rawImage.setAccessMode('read')
        rawImage.setByteOrder(frame.getImage().byteOrder)
        rawImage.setFilename(filename)
        rawImage.setNumberGoodBytes(goodBytes)
        rawImage.setWidth(bytesPerLine)
        rawImage.setXmin(frame.getImage().getXmin())
        rawImage.setXmax(bytesPerLine)
        rawImage.createImage()

        self.logger.info("Sensing Start: %s" % (frame.getSensingStart()))

        # Focus image
        self.logger.info("Focusing image")
        focus = stdproc.createFormSLC()
        focus.wireInputPort(name='rawImage',object=rawImage)

        #2013-06-03 Kosal: slcImage is not part of ports anymore (see formslc)
        #it is returned by formscl()
        rangeSamplingRate = frame.getInstrument().getRangeSamplingRate()
        rangePulseDuration = frame.getInstrument().getPulseLength()
        chirpSize = int(rangeSamplingRate*rangePulseDuration)
        chirpExtension = 0 #0.5*chirpSize
        numberRangeBin = int(goodBytes/2) - chirpSize + chirpExtension
        focus.setNumberRangeBin(numberRangeBin)
        #Kosal

        focus.wireInputPort(name='orbit',object=o2s.getOrbit())
        focus.wireInputPort(name='frame',object=frame)
        focus.wireInputPort(name='peg',object=peg)
        focus.setBodyFixedVelocity(V)
        focus.setSpacecraftHeight(H)
        focus.setAzimuthPatchSize(8192)
        focus.setNumberValidPulses(2048)
        focus.setSecondaryRangeMigrationFlag('n')
        focus.setNumberAzimuthLooks(1)
        focus.setNumberPatches(12)
        focus.setDopplerCentroidCoefficients([fd,0.0,0.0,0.0])

        # updated 07/24/2012
        focus.stdWriter = self._writer_set_file_tags(
            "formslc", "log", "err", "out"
            )

        # update 07/24/2012

        #2013-06-04 Kosal: slcImage is returned
        slcImage = focus.formslc()
        #Kosal

        rawImage.finalizeImage()

        width = int(slcImage.getWidth())
        length = int(slcImage.getLength())
        self.logger.debug("Width: %s" % (width))
        self.logger.debug("Length: %s" % (length))

        slcImage.finalizeImage()

        self.width = width
        self.length = length
Esempio n. 9
0
def runFormSLC(self, patchSize=None, goodLines=None, numPatches=None):
    #NOTE tested the formslc() as a stand alone by passing the same inputs
    #computed in Howard terraSAR.py. The differences here arises from the
    #differences in the orbits when using the same orbits the results are very
    #close jng this will make the second term in coarseAz in offsetprf equal
    #zero. we do so since for tsx there is no such a term. Need to ask
    #confirmation
    self.insar.setPatchSize(self.insar.numberValidPulses)
    # the below value is zero because of we just did above, but just want to be
    #  explicit in the definition of is_mocomp
    self.is_mocomp = self.insar.get_is_mocomp

    v = self.insar.getFirstProcVelocity()
    h = self.insar.averageHeight
    imageSlc1 = self.insar.masterRawImage
    imSlc1 = isceobj.createSlcImage()
    IU.copyAttributes(imageSlc1, imSlc1)
    imSlc1.setAccessMode('read')
    imSlc1.createImage()
    formSlc1 = stdproc.createFormSLC()

    formSlc1.setBodyFixedVelocity(v)
    formSlc1.setSpacecraftHeight(h)
    formSlc1.wireInputPort(name='doppler', object=self.insar.dopplerCentroid)
    formSlc1.wireInputPort(name='peg', object=self.insar.peg)
    formSlc1.wireInputPort(name='frame', object=self.insar.masterFrame)
    formSlc1.wireInputPort(name='orbit', object=self.insar.masterOrbit)
    formSlc1.wireInputPort(name='rawImage', object=None)
    formSlc1.wireInputPort(
        name='planet',
        object=self.insar.masterFrame.instrument.platform.planet)
    for item in formSlc1.inputPorts:
        item()
    formSlc1.slcWidth = imSlc1.getWidth()
    formSlc1.startingRange = formSlc1.rangeFirstSample
    formSlc1.rangeChirpExtensionPoints = 0
    formSlc1.slcSensingStart = self.insar.masterFrame.getSensingStart()
    formSlc1.outOrbit = self.insar.masterOrbit

    self._stdWriter.setFileTag("formslcISCE", "log")
    self._stdWriter.setFileTag("formslcISCE", "err")
    self._stdWriter.setFileTag("formslcISCE", "out")
    formSlc1.setStdWriter(self._stdWriter)
    formSlc1.setLookSide(self.insar._lookSide)

    #    self.insar.setMasterSlcImage(formSlc1.formslc())
    #    self.insar.masterSlcImage = formSlc1()
    self.insar.formSLC1 = formSlc1
    self.insar.masterSlcImage = imSlc1
    time, position, velocity, relTo = self.insar.masterOrbit._unpackOrbit()
    mocomp_array = [[], []]
    for (t, p) in zip(time, position):
        mocomp_array[0].append(t - time[0])
        mocomp_array[1].append(p[0])

    self.insar.formSLC1.mocompPosition = mocomp_array
    self.insar.formSLC1.mocompIndx = list(range(1, len(time) + 1))
    formSlc1.dim1_mocompPosition = 2
    formSlc1.dim2_mocompPosition = len(time)
    formSlc1.dim1_mocompIndx = len(time)

    imageSlc2 = self.insar.slaveRawImage
    imSlc2 = isceobj.createSlcImage()
    IU.copyAttributes(imageSlc2, imSlc2)
    imSlc2.setAccessMode('read')
    imSlc2.createImage()
    formSlc2 = stdproc.createFormSLC()

    formSlc2.setBodyFixedVelocity(v)
    formSlc2.setSpacecraftHeight(h)
    formSlc2.wireInputPort(name='doppler', object=self.insar.dopplerCentroid)
    formSlc2.wireInputPort(name='peg', object=self.insar.peg)
    formSlc2.wireInputPort(name='frame', object=self.insar.slaveFrame)
    formSlc2.wireInputPort(name='orbit', object=self.insar.slaveOrbit)
    formSlc2.wireInputPort(name='rawImage', object=None)
    formSlc2.wireInputPort(
        name='planet', object=self.insar.slaveFrame.instrument.platform.planet)
    for item in formSlc2.inputPorts:
        item()
    formSlc2.slcWidth = imSlc2.getWidth()
    formSlc2.startingRange = formSlc2.rangeFirstSample
    formSlc2.rangeChirpExtensionPoints = 0
    formSlc2.slcSensingStart = self.insar.slaveFrame.getSensingStart()
    formSlc2.outOrbit = self.insar.slaveOrbit

    self._stdWriter.setFileTag("formslcISCE", "log")
    self._stdWriter.setFileTag("formslcISCE", "err")
    self._stdWriter.setFileTag("formslcISCE", "out")
    formSlc2.setStdWriter(self._stdWriter)
    formSlc2.setLookSide(self.insar._lookSide)
    #    self.insar.setSlaveSlcImage(formSlc2.formslc())
    self.insar.formSLC2 = formSlc2
    self.insar.slaveSlcImage = imSlc2
    time, position, velocity, relTo = self.insar.slaveOrbit._unpackOrbit()
    mocomp_array = [[], []]
    for (t, p) in zip(time, position):
        mocomp_array[0].append(t - time[0])
        mocomp_array[1].append(p[0])

    self.insar.formSLC2.mocompPosition = mocomp_array
    self.insar.formSLC2.mocompIndx = list(range(1, len(time) + 1))
    formSlc2.dim1_mocompPosition = 2
    formSlc2.dim2_mocompPosition = len(time)
    formSlc2.dim1_mocompIndx = len(time)

    self.insar.setNumberPatches(imSlc1.getLength() /
                                float(self.insar.numberValidPulses))
    imSlc1.finalizeImage()
    imSlc2.finalizeImage()
    recordInputsAndOutputs(self.insar.procDoc, formSlc1, "runFormSLC.master",
                           logger, "runFormSLC.master")
    recordInputsAndOutputs(self.insar.procDoc, formSlc2, "runFormSLC.slave",
                           logger, "runFormSLC.slave")

    self.insar.setFormSLC1(formSlc1)
    self.insar.setFormSLC2(formSlc2)