Loading isis/src/tgo/tsts/singleColorMosaicReingest/Makefiledeleted 100644 → 0 +0 −77 Original line number Diff line number Diff line # This tests the workflow of ingesting raw CaSSIS data, spiceiniting, projecting, exporting and # reingesting. # # @history 2018-05-17 Summer Stapleton - Original version, many things borrowed from # singleFrameletProjection cat test. # INGEST = tgocassis2isis SPICE = spiceinit MAP = mosrange PROJECT = cam2map EXPORT = tgocassisrdrgen CATLAB = catlab include $(ISISROOT)/make/isismake.tsts commands: $(ECHO) "TESTS DISABLED, SEE ISSUE #4666" > $(OUTPUT)/message.txt # $(LS) $(INPUT)/*.xml > $(OUTPUT)/inputs.lis; # $(SED) 's/^.*input\///g' $(OUTPUT)/inputs.lis > $(OUTPUT)/relative.lis; # $(SED) 's/\.xml//g' $(OUTPUT)/relative.lis > $(OUTPUT)/basenames.lis; # # $(INGEST) $(TSTARGS) from=$(INPUT)/$\$$\1.xml \ # to=$(OUTPUT)/$\$$\1.cub -batchlist=$(OUTPUT)/basenames.lis > /dev/null; # # $(SPICE) $(TSTARGS) from=$(OUTPUT)/$\$$\1.cub \ # SPKPREDICTED=true CKPREDICTED=true -batchlist=$(OUTPUT)/basenames.lis > /dev/null; # # $(LS) $(OUTPUT)/*.cub > $(OUTPUT)/cubes.lis; # $(MAP) $(TSTARGS) fromlist=$(OUTPUT)/cubes.lis to=$(OUTPUT)/equi.map > /dev/null; # # $(PROJECT) $(TSTARGS) from=$(OUTPUT)/$\$$\1.cub to=$(OUTPUT)/$\$$\1_equi.cub \ # map=$(OUTPUT)/equi.map \ # pixres=mpp resolution=200 -batchlist=$(OUTPUT)/basenames.lis > /dev/null; # # $(LS) $(OUTPUT)/*equi.cub > $(OUTPUT)/equi.lis; # tgocassismos \ # fromlist=$(OUTPUT)/equi.lis \ # to=$(OUTPUT)/CAS-M01-2018-05-05T23.11.mosaic.cub > /dev/null; # # $(EXPORT) $(TSTARGS) from=$(OUTPUT)/CAS-M01-2018-05-05T23.11.mosaic.cub \ # to=$(OUTPUT)/CAS-M01-2018-05-05T23.11.mosaic.img > /dev/null; # # # $(INGEST) $(TSTARGS) from=$(OUTPUT)/CAS-M01-2018-05-05T23.11.mosaic.xml \ # # to=$(OUTPUT)/CAS-M01-2018-05-05T23.11.mosaic.reingested.cub > /dev/null; # # # $(CATLAB) from=$(OUTPUT)/CAS-M01-2018-05-05T23.11.mosaic.cub \ # to=$(OUTPUT)/CAS-M01-2018-05-05T23.11.mosaic.pvl > /dev/null; # # $(CATLAB) from=$(OUTPUT)/CAS-M01-2018-05-05T23.11.mosaic.reingested.cub \ # # to=$(OUTPUT)/CAS-M01-2018-05-05T23.11.mosaic.reingested.pvl > /dev/null; # # # for label in `ls $(OUTPUT)/*.xml`; do \ # $(SED) 's+\Product_Observational.*>+\Product_Observational>+' \ # $$label > $${label%.xml}1.txt; \ # $(SED) 's+\FSW_HEADER.*>+\FSW_HEADER>+' \ # $${label%.xml}1.txt > $${label%.xml}2.txt; \ # $(SED) 's+\PEHK_HEADER.*>+\PEHK_HEADER>+' \ # $${label%.xml}2.txt > $${label%.xml}3.txt; \ # $(SED) 's+\modification_date.*>+\modification_date>+' \ # $${label%.xml}3.txt > $${label%.xml}4.txt; \ # $(SED) 's+\ISIS version.*<+\ISIS version.<+' \ # $${label%.xml}4.txt > $${label%.xml}.xmlLabel.txt; \ # $(RM) $$label; \ # $(RM) $${label%.xml}1.txt; \ # $(RM) $${label%.xml}2.txt; \ # $(RM) $${label%.xml}3.txt; \ # $(RM) $${label%.xml}4.txt; \ # done # # $(RM) $(OUTPUT)/*.lis # $(RM) $(OUTPUT)/*equi* # $(RM) $(OUTPUT)/*B1.cub # $(RM) $(OUTPUT)/*_tracking* # isis/tests/TgoCassisModuleTests.cpp +192 −0 Original line number Diff line number Diff line Loading @@ -1573,3 +1573,195 @@ TEST(TgoCassisModuleTests, TgoCassisColorMosaic) { EXPECT_NEAR(hist->StandardDeviation(), 0.0054483425167489693, 0.0001); } TEST(TgoCassisModuleTests, TgoCassisSingleColorMosaicReingest) { QTemporaryDir prefix; // run tgocassis2isis and spiceinit on pan framelet. QString panFileName = prefix.path() + "/panframelet.cub"; QVector<QString> tgocassis2isisArgs = {"from=data/tgoCassis/CAS-MCO-2016-11-26T22.50.27.381-PAN-00005-B1.xml", "to=" + panFileName}; UserInterface tgocassis2isisPan(TGOCASSIS2ISIS_XML, tgocassis2isisArgs); try { tgocassis2isis(tgocassis2isisPan); } catch (IException &e) { FAIL() << "Unable to run tgocassis2isis on pan image: " << e.what() << std::endl; } QVector<QString> spiceinitArgs = {"from=" + panFileName, "ckp=t", "spkp=t"}; UserInterface spiceinitPan(SPICEINIT_XML, spiceinitArgs); try { spiceinit(spiceinitPan); } catch (IException &e) { FAIL() << "Unable to run spiceinit on pan image: " << e.what() << std::endl; } // run mosrange on cube list FileList *cubeList = new FileList(); cubeList->append(panFileName); QString cubeListFile = prefix.path() + "/cubelist.lis"; cubeList->write(cubeListFile); QString mapFile = prefix.path() + "/equi.map"; QVector<QString> mosrangeArgs = {"fromlist=" + cubeListFile, "to=" + mapFile}; UserInterface mosrangeOptions(MOSRANGE_XML, mosrangeArgs); try { mosrange(mosrangeOptions); } catch (IException &e) { FAIL() << "Unable to run mosrange with cube list: " << e.what() << std::endl; } // run cam2map and cassismos on pan cube QString panEquiFile = prefix.path() + "/pan_equi.cub"; QVector<QString> cam2mapArgs = {"from=" + panFileName, "to=" + panEquiFile, "map=" + mapFile, "defaultrange=map", "pixres=mpp", "resolution=200"}; UserInterface cam2mapPan(CAM2MAP_XML, cam2mapArgs); try { cam2map(cam2mapPan); } catch (IException &e) { FAIL() << "Unable to run cam2map on pan image: " << e.what() << std::endl; } FileList *mosaicList = new FileList(); mosaicList->append(panEquiFile); QString listFile = prefix.path() + "/cubelist.lis"; mosaicList->write(listFile); QString mosaicCubeFile = prefix.path() + "/mosaic.cub"; QVector<QString> cassismosArgs = {"fromlist=" + listFile, "to=" + mosaicCubeFile}; UserInterface options(MOS_XML, cassismosArgs); try { tgocassismos(options); } catch (IException &e) { FAIL() << "Unable to run tgocassismos on mosaic list: " << e.what() << std::endl; } // run tgocassisrdrgen on color mosaic. QString digestedFile = prefix.path() + "/mosaic.img"; QVector<QString> rdrgenArgs = {"from=" + mosaicCubeFile, "to=" + digestedFile}; UserInterface rdrgen(RDRGEN_XML, rdrgenArgs); try { tgocassisrdrgen(rdrgen); } catch (IException &e) { FAIL() << "Unable to run tgocassisrdrgen on color mosiac image: " << e.what() << std::endl; } // run tgocassis2isis on digested color mosaic. QString reingestedFile = prefix.path() + "/mosaic.reingest.cub"; QString digestedXML = prefix.path() + "/mosaic.xml"; tgocassis2isisArgs = {"from=" + digestedXML, "to=" + reingestedFile}; UserInterface tgocassis2isisReingest(TGOCASSIS2ISIS_XML, tgocassis2isisArgs); try { tgocassis2isis(tgocassis2isisReingest); } catch (IException &e) { FAIL() << "Unable to run tgocassis2isis on color mosaic image: " << e.what() << std::endl; } // Mosaic Cube Cube mosCube(reingestedFile); Pvl *outLabel = mosCube.label(); std::istringstream inst(R"( Group = Instrument SpacecraftName = "TRACE GAS ORBITER" InstrumentId = CaSSIS Expanded = 1 TargetName = Mars StartTime = 2016-11-26T22:50:27.381 Filter = PAN Expanded = 1 SummingMode = 0 End_Group )"); PvlGroup truthInstGroup; inst >> truthInstGroup; PvlGroup &instGroup = outLabel->findGroup("Instrument", Pvl::Traverse); EXPECT_PRED_FORMAT2(AssertPvlGroupEqual, instGroup, truthInstGroup); std::istringstream arss(R"( Group = Archive ObservationId = CRUS_049218_201_0 DataSetId = urn:esa:psa:em16_tgo_cas:data_derived:crus_049218_201_0 ProductVersionId = 1.0 FileName = mosaic.img ScalingFactor = 1.0 YearDoy = 2016331 End_Group )"); PvlGroup truthArchiveGroup; arss >> truthArchiveGroup; PvlGroup &archiveGroup = outLabel->findGroup("Archive", Pvl::Traverse); EXPECT_PRED_FORMAT2(AssertPvlGroupEqual, archiveGroup, truthArchiveGroup); std::istringstream bbss(R"( Group = BandBin FilterName = PAN Center = 675 <nm> Width = 250 <nm> NaifIkCode = -143421 End_Group )"); PvlGroup truthBandBinGroup; bbss >> truthBandBinGroup; PvlGroup &bandBinGroup = outLabel->findGroup("BandBin", Pvl::Traverse); EXPECT_PRED_FORMAT2(AssertPvlGroupEqual, bandBinGroup, truthBandBinGroup); std::istringstream map(R"( Group = Mapping ProjectionName = Equirectangular CenterLongitude = 266.15724842165 TargetName = Mars EquatorialRadius = 3396190.0 PolarRadius = 3376200.0 LatitudeType = Planetocentric LongitudeDirection = PositiveEast LongitudeDomain = 360 MinimumLatitude = 2.4698863724983 MaximumLatitude = 2.7060776922727 MinimumLongitude = 266.1741364076 MaximumLongitude = 266.13698283851 UpperLeftCornerX = -1200.0 UpperLeftCornerY = 160400.0 PixelResolution = 200.0 Scale = 296.36990921958 CenterLatitude = 0.0 End_Group )"); PvlGroup truthMappingGroup; map >> truthMappingGroup; PvlGroup &mappingGroup = outLabel->findGroup("Mapping", Pvl::Traverse); EXPECT_PRED_FORMAT2(AssertPvlGroupEqual, mappingGroup, truthMappingGroup); Histogram *hist = mosCube.histogram(); EXPECT_NEAR(hist->Average(), 0.20770993546981495, 0.0001); EXPECT_NEAR(hist->Sum(), 137.29626734554768, 0.0001); EXPECT_EQ(hist->ValidPixels(), 661); EXPECT_NEAR(hist->StandardDeviation(), 0.0022430344774779496, 0.0001); } Loading
isis/src/tgo/tsts/singleColorMosaicReingest/Makefiledeleted 100644 → 0 +0 −77 Original line number Diff line number Diff line # This tests the workflow of ingesting raw CaSSIS data, spiceiniting, projecting, exporting and # reingesting. # # @history 2018-05-17 Summer Stapleton - Original version, many things borrowed from # singleFrameletProjection cat test. # INGEST = tgocassis2isis SPICE = spiceinit MAP = mosrange PROJECT = cam2map EXPORT = tgocassisrdrgen CATLAB = catlab include $(ISISROOT)/make/isismake.tsts commands: $(ECHO) "TESTS DISABLED, SEE ISSUE #4666" > $(OUTPUT)/message.txt # $(LS) $(INPUT)/*.xml > $(OUTPUT)/inputs.lis; # $(SED) 's/^.*input\///g' $(OUTPUT)/inputs.lis > $(OUTPUT)/relative.lis; # $(SED) 's/\.xml//g' $(OUTPUT)/relative.lis > $(OUTPUT)/basenames.lis; # # $(INGEST) $(TSTARGS) from=$(INPUT)/$\$$\1.xml \ # to=$(OUTPUT)/$\$$\1.cub -batchlist=$(OUTPUT)/basenames.lis > /dev/null; # # $(SPICE) $(TSTARGS) from=$(OUTPUT)/$\$$\1.cub \ # SPKPREDICTED=true CKPREDICTED=true -batchlist=$(OUTPUT)/basenames.lis > /dev/null; # # $(LS) $(OUTPUT)/*.cub > $(OUTPUT)/cubes.lis; # $(MAP) $(TSTARGS) fromlist=$(OUTPUT)/cubes.lis to=$(OUTPUT)/equi.map > /dev/null; # # $(PROJECT) $(TSTARGS) from=$(OUTPUT)/$\$$\1.cub to=$(OUTPUT)/$\$$\1_equi.cub \ # map=$(OUTPUT)/equi.map \ # pixres=mpp resolution=200 -batchlist=$(OUTPUT)/basenames.lis > /dev/null; # # $(LS) $(OUTPUT)/*equi.cub > $(OUTPUT)/equi.lis; # tgocassismos \ # fromlist=$(OUTPUT)/equi.lis \ # to=$(OUTPUT)/CAS-M01-2018-05-05T23.11.mosaic.cub > /dev/null; # # $(EXPORT) $(TSTARGS) from=$(OUTPUT)/CAS-M01-2018-05-05T23.11.mosaic.cub \ # to=$(OUTPUT)/CAS-M01-2018-05-05T23.11.mosaic.img > /dev/null; # # # $(INGEST) $(TSTARGS) from=$(OUTPUT)/CAS-M01-2018-05-05T23.11.mosaic.xml \ # # to=$(OUTPUT)/CAS-M01-2018-05-05T23.11.mosaic.reingested.cub > /dev/null; # # # $(CATLAB) from=$(OUTPUT)/CAS-M01-2018-05-05T23.11.mosaic.cub \ # to=$(OUTPUT)/CAS-M01-2018-05-05T23.11.mosaic.pvl > /dev/null; # # $(CATLAB) from=$(OUTPUT)/CAS-M01-2018-05-05T23.11.mosaic.reingested.cub \ # # to=$(OUTPUT)/CAS-M01-2018-05-05T23.11.mosaic.reingested.pvl > /dev/null; # # # for label in `ls $(OUTPUT)/*.xml`; do \ # $(SED) 's+\Product_Observational.*>+\Product_Observational>+' \ # $$label > $${label%.xml}1.txt; \ # $(SED) 's+\FSW_HEADER.*>+\FSW_HEADER>+' \ # $${label%.xml}1.txt > $${label%.xml}2.txt; \ # $(SED) 's+\PEHK_HEADER.*>+\PEHK_HEADER>+' \ # $${label%.xml}2.txt > $${label%.xml}3.txt; \ # $(SED) 's+\modification_date.*>+\modification_date>+' \ # $${label%.xml}3.txt > $${label%.xml}4.txt; \ # $(SED) 's+\ISIS version.*<+\ISIS version.<+' \ # $${label%.xml}4.txt > $${label%.xml}.xmlLabel.txt; \ # $(RM) $$label; \ # $(RM) $${label%.xml}1.txt; \ # $(RM) $${label%.xml}2.txt; \ # $(RM) $${label%.xml}3.txt; \ # $(RM) $${label%.xml}4.txt; \ # done # # $(RM) $(OUTPUT)/*.lis # $(RM) $(OUTPUT)/*equi* # $(RM) $(OUTPUT)/*B1.cub # $(RM) $(OUTPUT)/*_tracking* #
isis/tests/TgoCassisModuleTests.cpp +192 −0 Original line number Diff line number Diff line Loading @@ -1573,3 +1573,195 @@ TEST(TgoCassisModuleTests, TgoCassisColorMosaic) { EXPECT_NEAR(hist->StandardDeviation(), 0.0054483425167489693, 0.0001); } TEST(TgoCassisModuleTests, TgoCassisSingleColorMosaicReingest) { QTemporaryDir prefix; // run tgocassis2isis and spiceinit on pan framelet. QString panFileName = prefix.path() + "/panframelet.cub"; QVector<QString> tgocassis2isisArgs = {"from=data/tgoCassis/CAS-MCO-2016-11-26T22.50.27.381-PAN-00005-B1.xml", "to=" + panFileName}; UserInterface tgocassis2isisPan(TGOCASSIS2ISIS_XML, tgocassis2isisArgs); try { tgocassis2isis(tgocassis2isisPan); } catch (IException &e) { FAIL() << "Unable to run tgocassis2isis on pan image: " << e.what() << std::endl; } QVector<QString> spiceinitArgs = {"from=" + panFileName, "ckp=t", "spkp=t"}; UserInterface spiceinitPan(SPICEINIT_XML, spiceinitArgs); try { spiceinit(spiceinitPan); } catch (IException &e) { FAIL() << "Unable to run spiceinit on pan image: " << e.what() << std::endl; } // run mosrange on cube list FileList *cubeList = new FileList(); cubeList->append(panFileName); QString cubeListFile = prefix.path() + "/cubelist.lis"; cubeList->write(cubeListFile); QString mapFile = prefix.path() + "/equi.map"; QVector<QString> mosrangeArgs = {"fromlist=" + cubeListFile, "to=" + mapFile}; UserInterface mosrangeOptions(MOSRANGE_XML, mosrangeArgs); try { mosrange(mosrangeOptions); } catch (IException &e) { FAIL() << "Unable to run mosrange with cube list: " << e.what() << std::endl; } // run cam2map and cassismos on pan cube QString panEquiFile = prefix.path() + "/pan_equi.cub"; QVector<QString> cam2mapArgs = {"from=" + panFileName, "to=" + panEquiFile, "map=" + mapFile, "defaultrange=map", "pixres=mpp", "resolution=200"}; UserInterface cam2mapPan(CAM2MAP_XML, cam2mapArgs); try { cam2map(cam2mapPan); } catch (IException &e) { FAIL() << "Unable to run cam2map on pan image: " << e.what() << std::endl; } FileList *mosaicList = new FileList(); mosaicList->append(panEquiFile); QString listFile = prefix.path() + "/cubelist.lis"; mosaicList->write(listFile); QString mosaicCubeFile = prefix.path() + "/mosaic.cub"; QVector<QString> cassismosArgs = {"fromlist=" + listFile, "to=" + mosaicCubeFile}; UserInterface options(MOS_XML, cassismosArgs); try { tgocassismos(options); } catch (IException &e) { FAIL() << "Unable to run tgocassismos on mosaic list: " << e.what() << std::endl; } // run tgocassisrdrgen on color mosaic. QString digestedFile = prefix.path() + "/mosaic.img"; QVector<QString> rdrgenArgs = {"from=" + mosaicCubeFile, "to=" + digestedFile}; UserInterface rdrgen(RDRGEN_XML, rdrgenArgs); try { tgocassisrdrgen(rdrgen); } catch (IException &e) { FAIL() << "Unable to run tgocassisrdrgen on color mosiac image: " << e.what() << std::endl; } // run tgocassis2isis on digested color mosaic. QString reingestedFile = prefix.path() + "/mosaic.reingest.cub"; QString digestedXML = prefix.path() + "/mosaic.xml"; tgocassis2isisArgs = {"from=" + digestedXML, "to=" + reingestedFile}; UserInterface tgocassis2isisReingest(TGOCASSIS2ISIS_XML, tgocassis2isisArgs); try { tgocassis2isis(tgocassis2isisReingest); } catch (IException &e) { FAIL() << "Unable to run tgocassis2isis on color mosaic image: " << e.what() << std::endl; } // Mosaic Cube Cube mosCube(reingestedFile); Pvl *outLabel = mosCube.label(); std::istringstream inst(R"( Group = Instrument SpacecraftName = "TRACE GAS ORBITER" InstrumentId = CaSSIS Expanded = 1 TargetName = Mars StartTime = 2016-11-26T22:50:27.381 Filter = PAN Expanded = 1 SummingMode = 0 End_Group )"); PvlGroup truthInstGroup; inst >> truthInstGroup; PvlGroup &instGroup = outLabel->findGroup("Instrument", Pvl::Traverse); EXPECT_PRED_FORMAT2(AssertPvlGroupEqual, instGroup, truthInstGroup); std::istringstream arss(R"( Group = Archive ObservationId = CRUS_049218_201_0 DataSetId = urn:esa:psa:em16_tgo_cas:data_derived:crus_049218_201_0 ProductVersionId = 1.0 FileName = mosaic.img ScalingFactor = 1.0 YearDoy = 2016331 End_Group )"); PvlGroup truthArchiveGroup; arss >> truthArchiveGroup; PvlGroup &archiveGroup = outLabel->findGroup("Archive", Pvl::Traverse); EXPECT_PRED_FORMAT2(AssertPvlGroupEqual, archiveGroup, truthArchiveGroup); std::istringstream bbss(R"( Group = BandBin FilterName = PAN Center = 675 <nm> Width = 250 <nm> NaifIkCode = -143421 End_Group )"); PvlGroup truthBandBinGroup; bbss >> truthBandBinGroup; PvlGroup &bandBinGroup = outLabel->findGroup("BandBin", Pvl::Traverse); EXPECT_PRED_FORMAT2(AssertPvlGroupEqual, bandBinGroup, truthBandBinGroup); std::istringstream map(R"( Group = Mapping ProjectionName = Equirectangular CenterLongitude = 266.15724842165 TargetName = Mars EquatorialRadius = 3396190.0 PolarRadius = 3376200.0 LatitudeType = Planetocentric LongitudeDirection = PositiveEast LongitudeDomain = 360 MinimumLatitude = 2.4698863724983 MaximumLatitude = 2.7060776922727 MinimumLongitude = 266.1741364076 MaximumLongitude = 266.13698283851 UpperLeftCornerX = -1200.0 UpperLeftCornerY = 160400.0 PixelResolution = 200.0 Scale = 296.36990921958 CenterLatitude = 0.0 End_Group )"); PvlGroup truthMappingGroup; map >> truthMappingGroup; PvlGroup &mappingGroup = outLabel->findGroup("Mapping", Pvl::Traverse); EXPECT_PRED_FORMAT2(AssertPvlGroupEqual, mappingGroup, truthMappingGroup); Histogram *hist = mosCube.histogram(); EXPECT_NEAR(hist->Average(), 0.20770993546981495, 0.0001); EXPECT_NEAR(hist->Sum(), 137.29626734554768, 0.0001); EXPECT_EQ(hist->ValidPixels(), 661); EXPECT_NEAR(hist->StandardDeviation(), 0.0022430344774779496, 0.0001); }