Release Notes

Every major release (in line with GEOGEN development milestones) are tested. Test reports are all available in the test/reports/ directory of the psa_geo repository master or dev branch.

Version 5.0.0

RC2 (Feb 28, 2022)

  • Introduced PDS_NAIF_MAPPING and mechanism to defined allowed mission IDs in configuration file.

  • New --source-code option for config command.

  • Updated documentation and training materials.

RC1 (Jan 20, 2022)

  • Features added

    • SPICEPCR-680: “Allow configuration of GEOGEN parameters per instruments”. Actually allows for the configuration of a new IN-SITU detector type (new default), for which all instrument pointing-dependent geometry parameters and footprint geometry remain set to null.

      Note

      IN-SITU detector type is the new default type and therefore POINT detector must be explicitly defined as such in IK addendum kernels. For example TGO/NOMAD:

      \begindata
      
          INS-143310_GG_DETECTOR_TYPE    = 'POINT'
          INS-143311_GG_DETECTOR_TYPE    = 'POINT'
          INS-143312_GG_DETECTOR_TYPE    = 'POINT'
          INS-143320_GG_DETECTOR_TYPE    = 'POINT'
          INS-143331_GG_DETECTOR_TYPE    = 'POINT'
          INS-143332_GG_DETECTOR_TYPE    = 'POINT'
      
      \begintext
      

      New --force-detector option to force computation for SPICE-unknown detector names, assuming an IN-SITU detector type. This new approach allows for the quick configuration of new mission/instruments data product types, and the generation of pointing-independent geometry parameters searchable by PSA end-users. Example of minimal configuration:

      {
        "id": "AMIE",
        "products": [
          {
            "type": "EDR",
            "py_class": "",
            "req_props": []
          }
        ]
      }
      

      Note

      By default, an [ERROR] is thrown when GEOGEN is enable to retrieve SPICE instrument code for a detector name and no computation is done for corresponding observations. Otherwise, when using the new --force-detector option, a [WARNING] is thrown and pointing-independent geometry parameters are computed, assuming the dectector is of IN-SITU type.

      All addendum IK files for MEX, ROSETTA and TGO, and the psa_config.json file (defining new SMART-1 and VEX missions/instruments/data product types) have been updated accordingly. A new smart1_sample_test.plf PLF file is available for testing this new functionality.

    • SPICEPCR-671: “Coverage GeoJSON reference target body metadata”. These new metadata include the following attributes: target_name, target_id, target_frame, surface_model, antimeridian_split, instrument_host_id, instrument_id and product_type. Surface model can be one of the two following types: ELLIPSOID or DSK/UNPRIORITIZED. See examples below:

      "coverage": {
        "target_name": "MARS",
        "target_id": 499,
        "target_frame": "IAU_MARS",
        "surface_model": {
          "type": "ELLIPSOID",
          "a_axis_radius": 3396.19,
          "b_axis_radius": 3396.19,
          "c_axis_radius": 3376.2
        },
        "antimeridian_split": true,
        "instrument_host_id": "MEX",
        "instrument_id": "HRSC",
        "product_type": "RDR"
      }
      
      "coverage": {
        "target_name": "CHURY",
        "target_id": 1000012,
        "target_frame": "67P/C-G_CK",
        "surface_model": {
          "type": "DSK/UNPRIORITIZED",
          "dsk_file": [
            "ROS_CG_M004_OSPGDLR_N_V1.BDS",
            "ROS_CG_K104_NSPCESA_N_V1.BDS"
          ]
        },
        "antimeridian_split": true,
        "instrument_host_id": "ROSETTA",
        "instrument_id": "ALICE",
        "product_type": "REFDR"
      }
      
    • SPICEPCR-464: “Pixel resolution as a new geometry parameter”. Across-track pixel surface and/or off-surface min_spatial_resolution and max_spatial_resolution are computed for every (non IN-SITU) detectors for which a INS*_IFOV parameter is defined, whether in the SPICE Kernels Dataset or GEOGEN addendum IK files. This is currently the case for the following instruments: MEX/HRSC, MEX/OMEGA, MEX/PFS, MEX/VMC, ROSETTA/OSIRIS, ROSETTA/ALICE, ROSETTA/NAVCAM, and ROSETTA/VIRTIS.

      Warning

      IK INS*_IFOV variable values must be provided in radians, and only the first element is used and considered to be the cross-track iFOV.

  • Issues fixed

    • SPICEPCR-674: “Footprint boundary box parameters not always correct”. Boundary box coordinates and antimeridian and/or the pole(s) crossing flags are now handled by the new geogen.tamn.get_bbox() function that is called when deriving observation footprints (not by the geogen.coverage.GeometryParameters.derive() method anymore). It handles all GEOGEN detector types.

    • SPICEPCR-620: “Geogen geometry value wrong for OSIRIS image”. Sub-solar and sub-spacecraft points computation now respectively uses INTERCEPT (spice.subslr) and NADIR (spice.subpnt) methods.

    • SPICEPCR-571: “Dateline/pole-crossing issues with OMEGA”. TAMN DEFAULT_POLE_DISTANCE was set back to 500 km.

  • Package structure reorganised

    The GEOGEN package has been reorganised into five logical modules: geogen (CLI), config, coverage, product, and tamn. Code is being cleaned up and documented.

Version 4.0.0

RC2 (Dec 15, 2021)

This second release candidate fixes issues raised during the validation of RC1 (reported during Progress Meeting #28, Nov 29th, 2021).

  • Fixed “ERROR XX000: geometry requires more points” error which occurred (in geogen.coverage.Observation.derive_footprint() method for FRAME detectors) for some Mars Express VMC and HRSC data products.

  • Added basic configuration for Rosetta’s OSINAC/WAC DDR, MIRO RDR and ALICE REFDR data products in psa_config.json file.

RC1 (Oct 21, 2021)

  • New features

    • New dynamic (centered) sub-frame FOV definition for FRAME detectors (initially developed for CaSSIS). A sub-frame for a given FRAME detector is defined using INS-<nnnnn>_GG_DETECTOR_SUBFRAME = 'TRUE' in an addendum IK file, and two new Product class properties: detector_fov_ref_ratio and detector_fov_cross_ratio that are set within the corresponding Instrument-Product class using required PLF product properties values , defined in the psa_config.json file. The sub-frame FOV is computed by the geogen.coverage.Detector.getGeometry() method. Example for CaSSIS, in the tgo_addendum.ti file:

      \begindata
      
        INS-143421_GG_DETECTOR_TYPE     = 'FRAME'
        INS-143421_GG_DETECTOR_SUBFRAME = 'TRUE'
      
      \begintext
      

      In the psa_config.json file:

      { "name": "samples", "path": "pds:File_Area_Observational/pds:Array_2D_Image/pds:Axis_Array[pds:axis_name=\"Sample\"]/pds:elements"},
      { "name": "lines", "path": "pds:File_Area_Observational/pds:Array_2D_Image/pds:Axis_Array[pds:axis_name=\"Line\"]/pds:elements"}
      

      In the geogen.product.TGO_CASSIS_CAL class:

      # Set detector sub-frame parameters
      max_samples = 2048
      max_lines = 280 if self.filter == 'PAN' else 256
      self.detector_fov_ref_ratio = self.samples / max_samples
      self.detector_fov_cross_ratio = self.lines / max_lines
      
    • New product command that return a PLF Product item (JSON object) corresponding to an input PDS4 XML label file. This is used to check the required product properties paths defined in the psa_config.json file (or optionally any other configuration file). It throws a warning when a property can not be retrieved. Example:

      $ geogen product cas_raw_sc_20191101T011751-20191101T011755-8650-69-PAN-554586220-27-0.xml
      {
        "product_id": "urn:esa:psa:em16_tgo_cas:data_raw:cas_raw_sc_20191101t011751-20191101t011755-8650-69-pan-554586220-27-0",
        "instrument_host_id": "TGO",
        "instrument_id": "CASSIS",
        "product_type": "Raw",
        "target_name": "MARS",
        "start_time": "2019-11-01T01:17:51.062Z",
        "stop_time": "2019-11-01T01:17:55.062Z",
        "samples": "1920",
        "lines": "280"
      }
      
  • Updated configuration file psa_config.json

    • Updated PDS4 product properties paths so as to be a valid XPath usable by the lxml Python package (and potentially any other programming language). For example, before:

      /Product_Observational/Identification_Area/logical_identifier
      

      now:

      pds:Identification_Area/pds:logical_identifier
      
    • Added samples and lines required properties for Raw and Calibrated CaSSIS data products.

    • Added/modified ACS and NOMAD updated definitions from D. Coia.

      • ACS Calibrated:

        { "name": "identifier", "path": "pds:Observation_Area/pds:Mission_Area/psa:Sub-Instrument/psa:identifier" },
        { "name": "mir_observation_type", "path": "pds:Observation_Area/pds:Mission_Area/em16_tgo_acs:ACS_Data/em16_tgo_acs:MIR_Observation/em16_tgo_acs:type_ACS"},
        { "name": "nir_observation_type", "path": "pds:Observation_Area/pds:Mission_Area/em16_tgo_acs:ACS_Data/em16_tgo_acs:NIR_Observation/em16_tgo_acs:type_ACS"},
        { "name": "tir_observation_type", "path": "pds:Observation_Area/pds:Mission_Area/em16_tgo_acs:ACS_Data/em16_tgo_acs:TIR_Observation/em16_tgo_acs:tir_observation_type"},
        { "name": "records", "path": "pds:File_Area_Observational/pds:Array[pds:name=\"Data\"]/pds:Axis_Array[pds:axis_name=\"ROWS\"]/pds:elements" }
        
      • NOMAD Calibrated:

        { "name": "identifier", "path": "pds:Observation_Area/pds:Mission_Area/psa:Sub-Instrument/psa:identifier" },
        { "name": "records", "path": "pds:File_Area_Observational/pds:File/pds:records" }
        
    • See “PDS4 product property path open issues” below.

  • New/updated Instrument-Product classes

    • All Product classes: renamed detector_acquisitions to n_data_records.

    • CASSIS:

      • Handling of new detector_fov_ref_ratio and detector_fov_cross_ratio parameters required to derive detector sub-frame FOV from input PLF samples and lines required properties values.

      • Included a new time_offset Product class property, and set it 2.88 seconds to accommodate for current timing issue in PDS4 labels. For example:

        _images/tgo_cassis_timing_issue.png
    • ACS:

      • New geogen.product.TGO_ACS_CAL class based on latest development from D. Coia, mapping the following SPICE detectors: TGO_ACS_MIR, TGO_ACS_NIR_OCC, TGO_ACS_NIR_NAD, TGO_ACS_TIRVIM.

      • Updated geogen.product.TGO_ACS_RAW, mapping the following SPICE detectors: TGO_ACS_MIR, TGO_ACS_TIRVIM.

    • NOMAD:

      • New geogen.product.TGO_NOMAD_CAL class based on latest development from D. Coia, mapping the following SPICE detectors: TGO_NOMAD_UVIS_NAD and TGO_NOMAD_UVIS_OCC.

  • Updated addendum IK files

    • Added GG_DETECTOR_SUBFRAME SPICE text kernel variable for CASSIS detectors

    • Renamed all GEOGEN-specific SPICE text kernel variables, in all addendum IK files, as follow:

      DETECTOR_TYPE   → GG_DETECTOR_TYPE
      OBS_MODES       → GG_DETECTOR_MODES
      AOV_ROT_VEC     → GG_AOV_ROT_VECTOR
      AOV_ANGLES      → GG_AOV_ANGLES
      AOV_ANGLE_UNITS → GG_AOV_ANGLE_UNITS
      
    • Corrected MEX/HRSC LINE detectors Angle-Of-View (AOV) angle in mex_addendum.ti from 11.21 (in red) to 11.88085 degrees (in green), 0.000040 rad/pix * 5184 pixels.

      _images/mex_hrsc_aov_correction.png
  • Test report summary

    • Test reports are now located in psa_geo/test/reports. The full report for this release is available here

    • [WARNING] Unable to retrieve SPICE instrument code for detector name:

      • MEX_ASPERA_ASP

      • MEX_SPICAM_UV1_NADIR_BIN_0

      • TGO_ACS_NIR

      • TGO_ACS_TIR

      • TGO_NOMAD_SINBAD

    • [ERROR] SPICE(NOFRAMECONNECT). Example:

      At epoch 4.7211462090236E+08 TDB (2014 DEC 17 18:57:00.902 TDB), there is insufficient information available to
      transform from reference frame -226213 (ROS_VIRTIS-M_IR) to reference frame -1000012000 (67P/C-G_CK).
      Frame ROS_VIRTIS-M_IR could be transformed to frame -226215 (ROS_VIRTIS-M_SCAN). The latter is a CK frame; a CK
      file containing data for instrument or structure -226215 at the epoch shown above, as well as a corresponding
      SCLK kernel, must be loaded in order to use this frame. Frame 67P/C-G_CK could be transformed to frame 1
      (J2000). Failure to find required CK data could be due to one or more CK files not having been loaded, or to the
      epoch shown above lying within a coverage gap or beyond the coverage bounds of the loaded CK files. It is also
      possible that no loaded CK file has required angular velocity data for the input epoch, even if a loaded CK
      does have attitude data for that epoch. You can use CKBRIEF with the -dump option to display coverage intervals
      of a CK file.
      

      Affected data products are:

      • I1_00377483311.QUB

      • I1_00377463271.QUB

      • I1_00377461470.QUB

  • PDS4 product property path open issues

    • Could not retrieve instrument_host_id property using the following path: pds:Observation_Area/pds:Observing_System/pds:Observing_System_Component[pds:type="Spacecraft"]/pds:name

      Affected data products (see details in psa_geo/test/pds4_plf_product_items.txt file):

      • ACS calibrated

      • CASSIS calibrated

      “Host” or “Spacecraft” as observing system component type ?:

      <Observing_System_Component>
        <name>TGO</name>
        <type>Host</type>
        ...
      

      some other times:

      <Observing_System_Component>
        <name>TGO</name>
        <type>Spacecraft</type>
        ...
      
    • Issue retrieving records required property for ACS raw and calibrated products.

      • there might several File_Area_Observational XML tags per PDS4 label,

      • there might be several Array and/or Axis_Array whose the name may be differ from one data product to another (eg: ‘FRAMES’ or ‘ROWS’ as axis array name).

      As a consequence, more than one Instrument-Product class might be needed depending of the ACS observations type: MIR, NIR or TIR.

Dev1 (Sep 16, 2021)

Version 3.0.0

RC2 (May 17, 2021)

  • New features

    • “Ability to run GEOGEN on multiple targets* SPICEPCR-552 – Implemented through the new --forced-target CLI option that forces a given target name to be used, superseding PLF TARGET_NAME property.

    • “Set to null non-applicable geometry parametersSPICEPCR-550 – Values for solar_longitude, local_true_solar_time for 67P/C-G; and values solar_longitude, sub_solar_longitude, sub_solar_latitude for the Sun will now be set to null in output Coverage GeoJSON files.

    • New --pid CLI option to filter input PLF file and compute geometry metadata for only one product, specified by its PRODUCT_ID; very useful for testing.

  • Bug fixes

    • “Define properly the target reference frame in GEOGEN” SPICEPCR-548 – Tested against products having "21 LUTETIA" as TARGET_NAME; updated ros_sample_test.plf file.

    • “Errors computing geometry for MEX VMC (limb) observations” SPICEPCR-662 – Fixed “Beagle 2” and “Zero Vector” errors reported from v3.0.0-rc1 testing; updated mex_targetless_test.plf and limb_sample_test.plf files.

    • “Instruments product type (definition) error” SPICEPCR-669 – Corrected issue reported from v3.0.0-rc1 testing: psa_config.json and ProductFactory class have been updated accordingly to enable computation of MEX VMC, ROSETTA OSIRIS, ALICE and MIRO geometry metadata.

  • Other

    • “Deal with limb images” SPICEPCR-465 – Latest tests have been done against MEX SPICE SKD v222_20210510_001, correcting an important issue with the MEX VMC FOV definition.

    • PDS4 TGO/CaSSIS: Updated test_tgo-cassis_config.json, CASSIS_RAW class, tgo_addendum.ti and tgo_cassis_sample.plf based on Tanya Lim’s feedback; defining SAMPLES as required PLF product property (“keyword”).

RC1 (Mar 23, 2021)

  • New feature: Limb Observations for FRAME detectors

    • Returns the sorted footprint coordinates of the target limb points within the detector FOV, and/or of the FOV surface intersect points (excluding tangent points)

    • Tested with MEX_HRSC_SRC and MEX_VMC detectors/observations of Mars/Phobos (see limb_sample_test.plf).

    • Further development is required to handle LINE detector observations.

    • Footprint boundary box parameters are not updated after splitting (currently only updated for LINE detectors)

  • Fixed issue with splitting POINT detector footprint geometry (LineString)

    • This fix applies to a LineString for which a set of successive points cross the antimeridian.

    • It simply prevents outputting a MultiLineString geometry from containing one-point LineString, but provides a good approximation/improvement.

    • Further development is required to correctly split an input LineString in these edge cases.

  • Updated configuration enabling for MEX VMC computation, and - IMPORTANT - removing dependency with addendum MEX_V14.TF (modified for PFS) and MEX_SPICAM_V00.TI kernels

    • Updated psa_config.json

    • New geogen.product.MEX_VMC_RDR class

    • Updated geogen.product.SPICAM_RDR class

    • Updated mex_addendum.ti

  • New/updated test PLF files

    • New limb_sample_test.plf (detectors: MEX_HRSC_SRC, MEX_VMC; targets: MARS, PHOBOS)

    • Split all_sample_test.plf into mex_sample_test.plf and ros_sample_test.plf

  • Minor (but useful) improvements

    • Clearer fov command output display, now indicating the GEOGEN Detector Type (POINT, LINE, FRAME)

    • compute command, now returning the name of the LOG file (in addition to B3F and GeoJSON directories path).

Version 2.0.0

Note

No operational release for this version. Issues identified during testing were addressed and solved by version 3.0.0.

RC2 (Feb 2, 2021)

  • Mirror updates to the documentation.

RC1 (Jan 29, 2021)

  • Improved Product model, enabling handling of PDS4 products.

  • New config utility command to check configuration for a given mission, instrument or product type

  • Improved target handling/assignment method (see Target Assignment)

  • New splitting algorithm for point detector footprint geometry (LineString)

  • New fov utility command to check SPICE detectors for a given mission.

  • New --addendum-dir for the compute and config commands, allowing for user-defined configuration of addendum kernels.

  • Improved handling of SPICE errors (eg: missing CK data…), allowing to continue computation of other product/observation to occurs.

  • New way of configuring spice kernels through the required ESA_SPICE_KERNELS environment variable.

  • New required TAMN_URL environment variable to set TAMN API end-point URL (eg: http://tamn.spacefrog.design/)

  • Improved testing framework.

Version 1.0.2

Version 1.0.1

  • Minor update to set TAMN_URI to http://tamn.openplanetary.org:3333/.

Version 1.0.0

  • Minor settings updates in VIRTIS (observationMode) and MIRO (detectorName) classes by Angel Montero.

  • Prevents from computation to stop when an error occurs (related product/observation is discarded).

RC3 (Sep 25, 2020)

  • Improved split algorithm

  • Tested ‘targetless’ products

  • New logging system

  • New check command (beta), to help check configuration for a given mission or instrument

  • Slightly improved code documentation

RC2 (Aug 13, 2020)

  • Excludes computation for products with invalid start and stop time.

RC1 (Jul 2, 2020)

  • GEOGEN CLI has now two commands: compute (identical to former geogen command), and split (TAMN-based).

  • “Built-in” poles and antimeridian crossing detection, and new related geometry parameters: antimeridian_crossing, npole_crossing, and spole_crossing.

  • New footprint westernmost_longitude, easternmost_longitude, minimum_latitude, maximum_latitude geometry parameters calculation method, taking into account for poles and/or antimeridian crossing states.

  • Split footprint GeoJSON polygons when crossing poles and/or antimeridian (TAMN-based), using

  • GeoJSON features bbox attribute added (based on westernmost_longitude, easternmost_longitude, minimum_latitude, maximum_latitude values).

  • Includes a first basic test script (run_tests.sh) generating B3F and GeoJSON outputs from different PLF test files.

Version 0.4.0

  • Added new MEX SPICAM detector names for SUN target: MEX_SPICAM_[channel_id]_SOLAR. PSAPCR-1960

  • Assigned CALIBRATION and N/A targets to MEX_SPICAM_[channel_id]_STELLAR detector name. [PSAPCR-1960]

  • 3 parameters excluded from computation for IAU_SUN target frame, because of SPICE warnings: solar_longitude, sub_solar_longitude, sub_solar_latitude. [PSAPCR-1960]

Version 0.3.0

  • Added Rosetta MIRO (Point detector).

  • Modified Rosetta VIRTIS AOV_ANGLES values (ros_addendum.ti).

Version 0.2.0

  • Fixed HRSC (FRAME detector) bowtie-shape issue PSAPCR-1782.

  • Improved invalid/no-target handling by introducing primary_target concept.

  • Changed DSK/surface model dependency to target, instead of mission.

  • Improved error handling when deriving AOV from to product observation mode.

  • Improved paths handling by removing path dependency in config file.

  • Added versioning and release notes.

Version 0.1.0

  • Initial release.