Unverified Commit f3b8d4dd authored by Amy Stamile's avatar Amy Stamile Committed by GitHub
Browse files

TgoCassis ColoredMosaic test conversion (#4853)

* Initial coloredMosiac conversion

* Added asserts and remove makefile.

* Addressed PR feedback.
parent 5383ac5a
Loading
Loading
Loading
Loading
+226 −0
Original line number Diff line number Diff line
#include "cubeit.h"

#include "ProcessByLine.h"
#include "ProcessMosaic.h"
#include "IException.h"
#include "FileList.h"
#include "SpecialPixel.h"

using namespace std;
namespace Isis {
  void NullBand(Buffer &out);

  void cubeit(UserInterface &ui, Pvl *log) {
    // Get the list of cubes to stack
    Process p;
    FileList cubeList(ui.GetFileName("FROMLIST"));
    FileList newcubeList; //cubes with at least 1 non-TRACKING band
    QList<vector<QString> > newVirtualBands; //non-TRACKING bands to propagate

    //Results group to contain information about unpropagated TRACKING bands
    PvlGroup results("Results");

    // Loop through the list
    int nsamps(0), nlines(0), nbands(0);
    PvlGroup outBandBin("BandBin");
    try {
      for(int i = 0; i < cubeList.size(); i++) {
        vector<QString> newBands;
        Cube cube;
        CubeAttributeInput inatt(cubeList[i].original());
        vector<QString> bands = inatt.bands();
        cube.setVirtualBands(bands);
        cube.open(cubeList[i].toString());

        if( cube.hasTable("InputImages") ) {
          //search through band bin group of input cube for "TRACKING"
          PvlObject cubeLabel =cube.label()->findObject("IsisCube");
          PvlGroup bandbin = cubeLabel.findGroup("BandBin");

          //Different cubes use either FilterName or FilterNumber in the BandBin group
          //to refer to the same thing: a list of the numbers/names of each band, in order
          PvlKeyword filterName;
          if( bandbin.hasKeyword("FilterName") ){
            filterName = bandbin.findKeyword("FilterName");
          }
          else if ( bandbin.hasKeyword("FilterNumber")) {
            filterName = bandbin.findKeyword("FilterNumber");
          }
          else {
              QString msg = "The BandBin group of a cube with tracking information [" +
                          cubeList[i].toString() + "] does not have a FilterName or a FilterNumber.";
            throw IException(IException::Unknown, msg, _FILEINFO_);
          }

          for (int j = 0; j < filterName.size(); j++) {
            if (filterName[j] != "TRACKING") {
              newBands.push_back(QString::number(j+1));
            }
            else {
              QString msg = "TRACKING band not propagated from " + cubeList[i].toString();
              results += PvlKeyword("UnpropagatedBand", msg);
            }
          }

          //if there are some bands that aren't TRACKING, set the cube to use those
          if (newBands.size() > 0) {
            cube.close();
            cube.setVirtualBands(newBands);
            cube.open(cubeList[i].toString());
          }
          //if the only provided bands are TRACKING, don't use this cube at all
          else {
            cube.close();
            continue;
          }
        }

        //initialize ns, nl, nb if we're at our first non-tracking cube
        if(newcubeList.size() == 0) {
          nsamps = cube.sampleCount();
          nlines = cube.lineCount();
          nbands = cube.bandCount();
        }
        else {
          // Make sure they are all the same size
          if((nsamps != cube.sampleCount()) || (nlines != cube.lineCount())) {
            QString msg = "Spatial dimensions of cube [" +
                          cubeList[i].toString() + "] does not match other cubes in list";
            throw IException(IException::User, msg, _FILEINFO_);
          }
          // Get the total number of bands
          nbands += cube.bandCount();
        }

        // Build up the band bin group
        PvlObject &isiscube = cube.label()->findObject("IsisCube");
        if(isiscube.hasGroup("BandBin")) {
          PvlGroup &inBandBin = isiscube.findGroup("BandBin");
          for(int key = 0; key < inBandBin.keywords(); key++) {
            PvlKeyword &inKey = inBandBin[key];
            if(!outBandBin.hasKeyword(inKey.name())) {
              outBandBin += inKey;
            }
            else {
              PvlKeyword &outKey = outBandBin[inKey.name()];
              for(int index = 0; index < (int)inKey.size(); index++) {
                outKey.addValue(inKey[index], inKey.unit(index));
              }
            }
          }
        }
        cube.close();
        newVirtualBands.append(newBands);
        newcubeList.append(cubeList[i]);
      }
      //Only write out results group if we added something to it.
      if (results.hasKeyword("UnpropagatedBand")) {
        if (log){
          log->addGroup(results);
        }
      }
    }
    catch(IException &e) {
      QString msg = "Invalid cube in list file [" + ui.GetFileName("FROMLIST") + "]";
      throw IException(e, IException::User, msg, _FILEINFO_);
    }

    //if literally everything is a TRACKING band, throw an error, since we don't prop. TRACKING bands
    if (newcubeList.size() == 0) {
      QString msg = "Only TRACKING bands supplied in [" + ui.GetFileName("FROMLIST") + "]";
      throw IException(IException::User, msg, _FILEINFO_);
    }

    // Setup to propagate from the first input cube
    ProcessByLine p2;
    CubeAttributeInput inatt;

    int index = 0;
    if(ui.WasEntered("PROPLAB")) {
      bool match = false;
      QString fname = ui.GetCubeName("PROPLAB");
      for(int i = 0; i < cubeList.size(); i++) {
        if(fname == cubeList[i].toString()) {
          index = i;
          match = true;
          break;
        }
      }
      if(!match) {
        QString msg = "FileName [" + ui.GetCubeName("PROPLAB") +
                      "] to propagate labels from is not in the list file [" +
                      ui.GetFileName("FROMLIST") + "]";
        throw IException(IException::User, msg, _FILEINFO_);
      }
    }
    p2.SetInputCube(newcubeList[index].toString(), inatt);

    // Create the output cube
    CubeAttributeOutput &att = ui.GetOutputAttribute("TO");
    Cube *ocube = p2.SetOutputCube(ui.GetCubeName("TO"), att, nsamps, nlines, nbands);
    p2.ClearInputCubes();

    p2.Progress()->SetText("Allocating cube");
    p2.StartProcess(NullBand);

    // Add the band bin group if necessary
    if(outBandBin.keywords() > 0) {
      ocube->putGroup(outBandBin);
    }

    // Delete any tracking tables from the input label if necessary
    ocube->deleteBlob("InputImages", "Table");

    // Delete the Tracking group if it exists (3.6.0 and up)
    // The tracking group could be transfered from the first input cube, but it does not
    // represent the images used in any other band after cubeit.
    if(ocube->hasGroup("Tracking")) {
      ocube->deleteGroup("Tracking");
    }

    p2.EndProcess();

   // Now loop and mosaic in each cube
    int sband = 1;
    for(int i = 0; i < newcubeList.size(); i++) {
      ProcessMosaic m;
      m.SetBandBinMatch(false);

      Progress *prog = m.Progress();
      prog->SetText("Adding bands from Cube " + toString((int)i + 1) +
                    " of " + toString(newcubeList.size()));
      m.SetOutputCube("TO", ui);

      //update attributes to the input cube
      CubeAttributeInput attrib;

      if (newVirtualBands.at(i).size() == 0) {

        attrib.addAttributes(newcubeList[i]);

      } else {

        for(unsigned k=0; k < newVirtualBands.at(i).size(); k++) {
          attrib.addAttribute(newVirtualBands.at(i)[k]);
        }
      }

      Cube *icube = m.SetInputCube(newcubeList[i].toString(), attrib, 1, 1, 1, -1, -1, -1);

      // Delete any tracking tables from the input cube if necessary
      icube->deleteBlob("InputImages", "Table");

      m.SetImageOverlay(ProcessMosaic::PlaceImagesOnTop);
      m.StartProcess(1, 1, sband);
      sband += icube->bandCount();
      m.EndProcess();
    }
  }

  // Line processing routine
  void NullBand(Buffer &out) {
    for(int i = 0; i < out.size(); i++) {
      out[i] = NULL8;
    }
  }
}
+11 −0
Original line number Diff line number Diff line
#ifndef cubeit_h
#define cubeit_h

#include "Cube.h"
#include "UserInterface.h"

namespace Isis{
  extern void cubeit(UserInterface &ui, Pvl *log=nullptr);
}

#endif
+13 −211
Original line number Diff line number Diff line
#define GUIHELPERS

#include "Isis.h"
#include "ProcessByLine.h"
#include "ProcessMosaic.h"
#include "IException.h"
#include "FileList.h"

#include "Application.h"
#include "cubeit.h"
#include "TextFile.h"
#include "SpecialPixel.h"

using namespace std;
using namespace Isis;

void NullBand(Buffer &out);
using namespace std;

//helper button function in the code
void helperButtonLog();
@@ -22,215 +17,22 @@ map <QString, void *> GuiHelpers() {
  return helper;
}


void IsisMain() {
  // Get the list of cubes to stack
  Process p;
  UserInterface &ui = Application::GetUserInterface();
  FileList cubeList(ui.GetFileName("FROMLIST"));
  FileList newcubeList; //cubes with at least 1 non-TRACKING band
  QList<vector<QString> > newVirtualBands; //non-TRACKING bands to propagate

  //Results group to contain information about unpropagated TRACKING bands
  PvlGroup results("Results");

  // Loop through the list
  int nsamps(0), nlines(0), nbands(0);
  PvlGroup outBandBin("BandBin");
  Pvl appLog;
  try {
    for(int i = 0; i < cubeList.size(); i++) {
      vector<QString> newBands;
      Cube cube;
      CubeAttributeInput inatt(cubeList[i].original());
      vector<QString> bands = inatt.bands();
      cube.setVirtualBands(bands);
      cube.open(cubeList[i].toString());

      if( cube.hasTable("InputImages") ) {
        //search through band bin group of input cube for "TRACKING"
        PvlObject cubeLabel =cube.label()->findObject("IsisCube");
        PvlGroup bandbin = cubeLabel.findGroup("BandBin");

        //Different cubes use either FilterName or FilterNumber in the BandBin group
        //to refer to the same thing: a list of the numbers/names of each band, in order
        PvlKeyword filterName;
        if( bandbin.hasKeyword("FilterName") ){
          filterName = bandbin.findKeyword("FilterName");
        }
        else if ( bandbin.hasKeyword("FilterNumber")) {
          filterName = bandbin.findKeyword("FilterNumber");
        }
        else {
            QString msg = "The BandBin group of a cube with tracking information [" +
                        cubeList[i].toString() + "] does not have a FilterName or a FilterNumber.";
          throw IException(IException::Unknown, msg, _FILEINFO_);
        }

        for (int j = 0; j < filterName.size(); j++) {
          if (filterName[j] != "TRACKING") {
            newBands.push_back(QString::number(j+1));
          }
          else {
            QString msg = "TRACKING band not propagated from " + cubeList[i].toString();
            results += PvlKeyword("UnpropagatedBand", msg);
          }
        }

        //if there are some bands that aren't TRACKING, set the cube to use those
        if (newBands.size() > 0) {
          cube.close();
          cube.setVirtualBands(newBands);
          cube.open(cubeList[i].toString());
        }
        //if the only provided bands are TRACKING, don't use this cube at all
        else {
          cube.close();
          continue;
        }
      }

      //initialize ns, nl, nb if we're at our first non-tracking cube
      if(newcubeList.size() == 0) {
        nsamps = cube.sampleCount();
        nlines = cube.lineCount();
        nbands = cube.bandCount();
      }
      else {
        // Make sure they are all the same size
        if((nsamps != cube.sampleCount()) || (nlines != cube.lineCount())) {
          QString msg = "Spatial dimensions of cube [" +
                        cubeList[i].toString() + "] does not match other cubes in list";
          throw IException(IException::User, msg, _FILEINFO_);
        }
        // Get the total number of bands
        nbands += cube.bandCount();
      }

      // Build up the band bin group
      PvlObject &isiscube = cube.label()->findObject("IsisCube");
      if(isiscube.hasGroup("BandBin")) {
        PvlGroup &inBandBin = isiscube.findGroup("BandBin");
        for(int key = 0; key < inBandBin.keywords(); key++) {
          PvlKeyword &inKey = inBandBin[key];
          if(!outBandBin.hasKeyword(inKey.name())) {
            outBandBin += inKey;
          }
          else {
            PvlKeyword &outKey = outBandBin[inKey.name()];
            for(int index = 0; index < (int)inKey.size(); index++) {
              outKey.addValue(inKey[index], inKey.unit(index));
            }
          }
        }
      }
      cube.close();
      newVirtualBands.append(newBands);
      newcubeList.append(cubeList[i]);
    cubeit(ui, &appLog);
  }
    //Only write out results group if we added something to it.
    if (results.hasKeyword("UnpropagatedBand")) {
      Application::Log(results);
    }
  }
  catch(IException &e) {
    QString msg = "Invalid cube in list file [" + ui.GetFileName("FROMLIST") + "]";
    throw IException(e, IException::User, msg, _FILEINFO_);
  }

  //if literally everything is a TRACKING band, throw an error, since we don't prop. TRACKING bands
  if (newcubeList.size() == 0) {
    QString msg = "Only TRACKING bands supplied in [" + ui.GetFileName("FROMLIST") + "]";
    throw IException(IException::User, msg, _FILEINFO_);
  }

  // Setup to propagate from the first input cube
  ProcessByLine p2;
  CubeAttributeInput inatt;

  int index = 0;
  if(ui.WasEntered("PROPLAB")) {
    bool match = false;
    QString fname = ui.GetCubeName("PROPLAB");
    for(int i = 0; i < cubeList.size(); i++) {
      if(fname == cubeList[i].toString()) {
        index = i;
        match = true;
        break;
      }
    }
    if(!match) {
      QString msg = "FileName [" + ui.GetCubeName("PROPLAB") +
                    "] to propagate labels from is not in the list file [" +
                    ui.GetFileName("FROMLIST") + "]";
      throw IException(IException::User, msg, _FILEINFO_);
    }
  }
  p2.SetInputCube(newcubeList[index].toString(), inatt);

  // Create the output cube
  Cube *ocube = p2.SetOutputCube("TO", nsamps, nlines, nbands);
  p2.ClearInputCubes();

  p2.Progress()->SetText("Allocating cube");
  p2.StartProcess(NullBand);

  // Add the band bin group if necessary
  if(outBandBin.keywords() > 0) {
    ocube->putGroup(outBandBin);
  }

  // Delete any tracking tables from the input label if necessary
  ocube->deleteBlob("InputImages", "Table");

  // Delete the Tracking group if it exists (3.6.0 and up)
  // The tracking group could be transfered from the first input cube, but it does not
  // represent the images used in any other band after cubeit.
  if(ocube->hasGroup("Tracking")) {
    ocube->deleteGroup("Tracking");
  }

  p2.EndProcess();

 // Now loop and mosaic in each cube
  int sband = 1;
  for(int i = 0; i < newcubeList.size(); i++) {
    ProcessMosaic m;
    m.SetBandBinMatch(false);

    Progress *prog = m.Progress();
    prog->SetText("Adding bands from Cube " + toString((int)i + 1) +
                  " of " + toString(newcubeList.size()));
    m.SetOutputCube("TO");

    //update attributes to the input cube
    CubeAttributeInput attrib;

    if (newVirtualBands.at(i).size() == 0) {

      attrib.addAttributes(newcubeList[i]);

    } else {

      for(unsigned k=0; k < newVirtualBands.at(i).size(); k++) {
        attrib.addAttribute(newVirtualBands.at(i)[k]);
      }
    }

    Cube *icube = m.SetInputCube(newcubeList[i].toString(), attrib, 1, 1, 1, -1, -1, -1);

    // Delete any tracking tables from the input cube if necessary
    icube->deleteBlob("InputImages", "Table");

    m.SetImageOverlay(ProcessMosaic::PlaceImagesOnTop);
    m.StartProcess(1, 1, sband);
    sband += icube->bandCount();
    m.EndProcess();
  catch (...) {
    for (auto grpIt = appLog.beginGroup(); grpIt!= appLog.endGroup(); grpIt++) {
      Application::Log(*grpIt);
    }
    throw;
  }

// Line processing routine
void NullBand(Buffer &out) {
  for(int i = 0; i < out.size(); i++) {
    out[i] = NULL8;
  for (auto grpIt = appLog.beginGroup(); grpIt!= appLog.endGroup(); grpIt++) {
    Application::Log(*grpIt);
  }
}

+0 −141
Original line number Diff line number Diff line
# This tests the production of a CaSSIS uncontrolled multi-color mosaic from ingestion to
# export to pds4.
#
# @history 2018-02-22 Adam Goins - Original version, many things borrowed from
#                             uncontrolled single-color cat test.
#          2018-06-18 Kristin Berry - Updated to use defaultrange=map for the cam2map call so that
#                             cubeit will get input cubes all of the same size. 
#

INGEST = tgocassis2isis
SPICE = spiceinit
MAPFILE = mosrange
PROJECT = cam2map
MOSAIC = tgocassismos
EXPORT = isis2pds
GETKEY = getkey
CUBEIT = cubeit

include $(ISISROOT)/make/isismake.tsts

commands:

	$(ECHO) "TESTS DISABLED, SEE ISSUE #4666" > $(OUTPUT)/message.txt;


#         # Ingest Red
# 	$(LS) $(INPUT)/*-RED-*.xml > $(OUTPUT)/redInputs.lis;
# 	$(SED) 's/^.*input\///g' $(OUTPUT)/redInputs.lis > $(OUTPUT)/redRelative.lis;
# 	$(SED) 's/\.xml//g' $(OUTPUT)/redRelative.lis > $(OUTPUT)/redBasenames.lis;
# 	$(INGEST) $(TSTARGS) from=$(INPUT)/\$$\1.xml \
#             to=$(OUTPUT)/$\$$\1.cub -batchlist=$(OUTPUT)/redBasenames.lis > /dev/null;
# 	$(SPICE) $(TSTARGS) from=$(OUTPUT)/$\$$\1.cub \
#             SPKPREDICTED=true CKPREDICTED=true -batchlist=$(OUTPUT)/redBasenames.lis > /dev/null;
# 	$(LS) $(OUTPUT)/*-RED-*.cub > $(OUTPUT)/redCubes.lis;
# 
# 	# Ingest Blu
# 	$(LS) $(INPUT)/*-BLU-*.xml > $(OUTPUT)/bluInputs.lis;
# 	$(SED) 's/^.*input\///g' $(OUTPUT)/bluInputs.lis > $(OUTPUT)/bluRelative.lis;
# 	$(SED) 's/\.xml//g' $(OUTPUT)/bluRelative.lis > $(OUTPUT)/bluBasenames.lis;
# 	$(INGEST) $(TSTARGS) from=$(INPUT)/\$$\1.xml \
#             to=$(OUTPUT)/$\$$\1.cub -batchlist=$(OUTPUT)/bluBasenames.lis > /dev/null;
# 	$(SPICE) $(TSTARGS) from=$(OUTPUT)/$\$$\1.cub \
#            SPKPREDICTED=true CKPREDICTED=true -batchlist=$(OUTPUT)/bluBasenames.lis > /dev/null;
# 	$(LS) $(OUTPUT)/*-BLU-*.cub > $(OUTPUT)/bluCubes.lis;
# 
# 	# Ingest Pan
# 	$(LS) $(INPUT)/*-PAN-*.xml > $(OUTPUT)/panInputs.lis;
# 	$(SED) 's/^.*input\///g' $(OUTPUT)/panInputs.lis > $(OUTPUT)/panRelative.lis;
# 	$(SED) 's/\.xml//g' $(OUTPUT)/panRelative.lis > $(OUTPUT)/panBasenames.lis;
# 	$(INGEST) $(TSTARGS) from=$(INPUT)/\$$\1.xml \
#             to=$(OUTPUT)/$\$$\1.cub -batchlist=$(OUTPUT)/panBasenames.lis > /dev/null;
# 	$(SPICE) $(TSTARGS) from=$(OUTPUT)/$\$$\1.cub \
# 	    SPKPREDICTED=true CKPREDICTED=true -batchlist=$(OUTPUT)/panBasenames.lis > /dev/null;
# 	$(LS) $(OUTPUT)/*-PAN-*.cub > $(OUTPUT)/panCubes.lis;
# 
# 	# Ingest Nir
# 	$(LS) $(INPUT)/*-NIR-*.xml > $(OUTPUT)/nirInputs.lis;
# 	$(SED) 's/^.*input\///g' $(OUTPUT)/nirInputs.lis > $(OUTPUT)/nirRelative.lis;
# 	$(SED) 's/\.xml//g' $(OUTPUT)/nirRelative.lis > $(OUTPUT)/nirBasenames.lis;
# 	$(INGEST) $(TSTARGS) from=$(INPUT)/\$$\1.xml \
#             to=$(OUTPUT)/$\$$\1.cub -batchlist=$(OUTPUT)/nirBasenames.lis > /dev/null;
# 	$(SPICE) $(TSTARGS) from=$(OUTPUT)/$\$$\1.cub \
#             SPKPREDICTED=true CKPREDICTED=true -batchlist=$(OUTPUT)/nirBasenames.lis > /dev/null;
# 	$(LS) $(OUTPUT)/*-NIR-*.cub > $(OUTPUT)/nirCubes.lis;
# 
# 	# MAP FILE
# 	# Create list of all files.
# 	$(LS) $(INPUT)/*.xml > $(OUTPUT)/allInputs.lis;
# 	$(SED) 's/^.*input\//output\//g' $(OUTPUT)/allInputs.lis > $(OUTPUT)/allRelative.lis;
# 	$(SED) 's/\.xml/.cub/g' $(OUTPUT)/allRelative.lis > $(OUTPUT)/allCubes.lis;
# 	$(MAPFILE) $(TSTARGS) fromlist=$(OUTPUT)/allCubes.lis to=$(OUTPUT)/equi.map > /dev/null;
# 
# 	# MOSAICS
# 	# Create Red Mosaic
# 	$(PROJECT) $(TSTARGS) from=$(OUTPUT)/$\$$\1.cub to=$(OUTPUT)/$\$$\1_redEqui.cub \
#             map=$(OUTPUT)/equi.map defaultrange=map \
#             pixres=mpp resolution=200 -batchlist=$(OUTPUT)/redBasenames.lis > /dev/null;
# 	$(LS) $(OUTPUT)/*redEqui.cub > $(OUTPUT)/redMosaic.lis;
# 	$(MOSAIC) $(TSTSARGS) fromlist=$(OUTPUT)/redMosaic.lis \
# 	    to=$(OUTPUT)/redCassisMosaic.cub > /dev/null;
# 
#         # Create Blu Mosaic
# 	$(PROJECT) $(TSTARGS) from=$(OUTPUT)/$\$$\1.cub to=$(OUTPUT)/$\$$\1_bluEqui.cub \
#              map=$(OUTPUT)/equi.map defaultrange=map \
#              pixres=mpp resolution=200 -batchlist=$(OUTPUT)/bluBasenames.lis > /dev/null;
# 	$(LS) $(OUTPUT)/*bluEqui.cub > $(OUTPUT)/bluMosaic.lis;
# 	$(MOSAIC) $(TSTSARGS) fromlist=$(OUTPUT)/bluMosaic.lis \
# 	    to=$(OUTPUT)/bluCassisMosaic.cub > /dev/null;
# 
#         # Create Pan Mosaic
# 	$(PROJECT) $(TSTARGS) from=$(OUTPUT)/$\$$\1.cub to=$(OUTPUT)/$\$$\1_panEqui.cub \
#             map=$(OUTPUT)/equi.map defaultrange=map \
#             pixres=mpp resolution=200 -batchlist=$(OUTPUT)/panBasenames.lis > /dev/null;
# 	$(LS) $(OUTPUT)/*panEqui.cub > $(OUTPUT)/panMosaic.lis;
# 	$(MOSAIC) $(TSTSARGS) fromlist=$(OUTPUT)/panMosaic.lis \
# 	   to=$(OUTPUT)/panCassisMosaic.cub > /dev/null;
# 
#         # Create Nir Mosaic
# 	$(PROJECT) $(TSTARGS) from=$(OUTPUT)/$\$$\1.cub to=$(OUTPUT)/$\$$\1_nirEqui.cub \
#              map=$(OUTPUT)/equi.map defaultrange=map \
#              pixres=mpp resolution=200 -batchlist=$(OUTPUT)/nirBasenames.lis > /dev/null;
# 	$(LS) $(OUTPUT)/*nirEqui.cub > $(OUTPUT)/nirMosaic.lis;
# 	$(MOSAIC) $(TSTSARGS) fromlist=$(OUTPUT)/nirMosaic.lis \
# 	    to=$(OUTPUT)/nirCassisMosaic.cub > /dev/null;
# 
#         # Create full color mos
# 	$(LS) $(OUTPUT)/*CassisMosaic.cub > $(OUTPUT)/mosaicList.lis;
# 	$(CUBEIT) fromlist=$(OUTPUT)/mosaicList.lis to=$(OUTPUT)/coloredMosaic.cub > /dev/null;
# 	$(EXPORT) $(TSTSARGS) from=$(OUTPUT)/coloredMosaic.cub to=$(OUTPUT)/coloredMosaic \
#              pdsversion=pds4 > /dev/null;
# 	$(SED) 's+\Product_Observational.*>+\Product_Observational>+' \
#                $(OUTPUT)/coloredMosaic.xml \
# 	       > $(OUTPUT)/tempLabel1.txt;
# 	$(SED) 's+\FSW_HEADER.*>+\FSW_HEADER>+' \
# 	       $(OUTPUT)/tempLabel1.txt \
# 	       > $(OUTPUT)/tempLabel2.txt;
# 	$(SED) 's+\PEHK_HEADER.*>+\PEHK_HEADER>+' \
# 	       $(OUTPUT)/tempLabel2.txt \
# 	       > $(OUTPUT)/tempLabel3.txt;
# 	$(SED) 's+\modification_date.*>+\modification_date>+' \
# 	       $(OUTPUT)/tempLabel3.txt \
# 	       > $(OUTPUT)/tempLabel4.txt;
# 	$(SED) 's+\ISIS version.*<+\ISIS version.<+' \
# 	       $(OUTPUT)/tempLabel4.txt \
#                > $(OUTPUT)/coloredMosaic.xmlLabel.txt;
# 
# 	# Cleanup
# 	$(RM) $(OUTPUT)/coloredMosaic.xml;
# 	$(RM) $(OUTPUT)/tempLabel1.txt;
# 	$(RM) $(OUTPUT)/tempLabel2.txt;
# 	$(RM) $(OUTPUT)/tempLabel3.txt;
# 	$(RM) $(OUTPUT)/tempLabel4.txt;
# 	$(RM) $(OUTPUT)/*.lis;
# 	$(RM) $(OUTPUT)/CAS-MCO*.cub;
# 	$(RM) $(OUTPUT)/bluCassisMosaic.cub;
# 	$(RM) $(OUTPUT)/nirCassisMosaic.cub;
# 	$(RM) $(OUTPUT)/panCassisMosaic.cub;
# 	$(RM) $(OUTPUT)/redCassisMosaic.cub;
# 	$(RM) $(OUTPUT)/*_tracking*.cub;
# 	$(MV) $(OUTPUT)/equi.map $(OUTPUT)/equi.pvl;
# 
+427 −0

File changed.

Preview size limit exceeded, changes collapsed.