OSVE Session File

Introduction

The OSVE Session File is a text file in JSON format intended to specify to OSVE the settings or parameters to use during initialisation, simulation and reporting steps.

The JSON file is structured with the following objects:

  • sessionConfiguration Main session object containing the specified OSVE settings. - source Defines the source or the origin of the data used for this OSVE execution. - simulationConfiguration Defines the simulation settings for the OSVE execution. - attitudeSimulationConfiguration Defines the attitude simulation settings used by AGM during the OSVE execution.

    If not specified, OSVE will run the simulation without using AGM. - kernelsList Defines SPICE kernels settings for being used by AGM during the OSVE execution.

    • instrumentSimulationConfiguration Defines the instrument simulation settings for being used by EPS during the OSVE execution. In not specified, OSVE will run the simulation without EPS.

    • inputFiles Defines the input files for the OSVE execution. - modellingConfiguration Defines the Experiment modelling files for being used by EPS.

    • outputFiles Defines the output files that OSVE will generate after the execution.

    • logging Defines the logging parameters of OSVE.

Session File Template

A template of the Session file with a description of each parameter is available hereunder. In the JSON file keywords are mandatory unless specified as [OPTIONAL]. Some keywords are labeled as [NOT_USED], this just remarks that this keyword is not used by OSVE itself but can be used for traceability purposes.

{
    "COMMENT: All the 'COMMENT' lines in this file are just intended to describe the related items in the configuration, but aren't meant to be present in the actual session file.":"",
  "sessionConfiguration" : {
      "COMMENT: sessionConfiguration -> Main OSVE configuration object.":"",
    "sessionID": "[OPTIONAL][NOT_USED] String with the identifier for this OSVE execution.",
    "version": "[OPTIONAL][NOT_USED] String with the Session object version, just to have control if any keyword is updated/removed.",
    "source": {
        "COMMENT: source -> [OPTIONAL][NOT_USED] Object intended to define the origin of the provided data.":"",
      "segmentation_info":{
          "COMMENT: segmentation_info -> [OPTIONAL][NOT_USED] Object intended to define the source segmentation details.":"",
        "plan_id": "[OPTIONAL][NOT_USED] String with the identifier of the source segmentation plan being used.",
        "mnemonic": "[OPTIONAL][NOT_USED] String with the mnemonic of the source segmentation being used.",
        "name": "[OPTIONAL][NOT_USED] String with the name of the source segmentation being used.",
        "description": "[OPTIONAL][NOT_USED] String with the description of the source segmentation being used."
       },
      "trajectory_info": {
          "COMMENT: trajectory_info -> [OPTIONAL][NOT_USED] Object intended to define the source trajectory details.":"",
         "trajectory": "[OPTIONAL][NOT_USED] String with the source trajectory being used."
       }
    },
    "simulationConfiguration": {
        "COMMENT: simulationConfiguration -> [OPTIONAL] Object intended to define the simulation parameters.":"",
      "timeStep": "[OPTIONAL] Integer or double specifying the time step or time resolution in seconds being used during the OSVE simulation. Default value is 1 second.",
      "outputTimeStep": "[OPTIONAL] Integer or double specifying the time step or time resolution in seconds being used by OSVE while generating the output data. In case of not specified the `timeStep` value will be used.",
      "filterStartTime": "[OPTIONAL] String with the format `yyyy-mm-ddThh:mm:ss.mmmZ` specifying the OSVE simulation start time. In not specified OSVE will take the latest start date from each of the timeline files (ITL, PTR, JSON).",
      "filterEndTime": "[OPTIONAL] String with the format `yyyy-mm-ddThh:mm:ss.mmmZ` specifying the OSVE simulation end time. If not specified OSVE will take the earliest end date from each of the timeline files (ITL, PTR, JSON).",
      "resizePtrBlocks": "[OPTIONAL] Boolean specifying if the PTR blocks shall be resized in case of possible during the PTR resolving step. Default value is false.",
      "simulateTimeline": "[OPTIONAL] Boolean specifying if the timelines shall be executed after the PTR resolving step. Default value is true."
    },
    "attitudeSimulationConfiguration": {
        "COMMENT: attitudeSimulationConfiguration -> [OPTIONAL] Object intended to define the AGM (AGE) simulation parameters.":"",
      "kernelsList": {
          "COMMENT: kernelsList -> Object intended to define the SPICE Kernels to being used by AGM (AGE) during the simulation.":"",
        "id": "[OPTIONAL][NOT_USED] String with the identifier of the kernel list to be used by AGM (AGE). E.g.: CREMA 3.0",
        "version": "[OPTIONAL][NOT_USED] String with the kernelsList object version, just to have control if any keyword is updated/removed.",
        "baselineRelPath": "[OPTIONAL] String with the relative path to reference all the kernels in the `fileList` array. Default empty string.",
        "fileList": [
            {"COMMENT: fileList -> List of SPICE Kernels to being used by AGM (AGE) during the simulation.":""},
          {
            "fileRelPath": "String with the relative path of a SPICE kernel to load. Can be specified multiple times.",
            "description": "[OPTIONAL] String with the description of the SPICE kernel to load."
          }
        ]
      },
      "baselineRelPath": "[OPTIONAL] String with the relative path to reference all the AGM configuration files. Default empty string.",
      "ageConfigFileName": "String with the relative path to the AGM configuration file in XML format.",
      "fixedDefinitionsFile": "String with the relative path of the AGM fixed definitions file in XML format.",
      "predefinedBlockFile": "String with the relative path of the AGM predefined blocks file in XML format.",
      "eventDefinitionsFile": "[OPTIONAL] String with the relative path of the AGM event definitions file in XML format.",
      "externalConstraintIds": "[OPTIONAL] List of String with the Ids of the external contraints to register in AGM."
    },
    "instrumentSimulationConfiguration": {
        "COMMENT: instrumentSimulationConfiguration -> [OPTIONAL] Object intended to define the ISE (EPS) simulation parameters.":"",
      "baselineRelPath": "[OPTIONAL] String with the relative path to reference all the EPS configuration files. Default empty string.",
      "unitFileName": "String with the relative path of the EPS Units definition file.",
      "configFileName": "String with the relative path of the EPS configuration file.",
      "eventDefFileName": "String with the relative path of the EPS event definitions file."
    },
    "inputFiles": {
        "COMMENT: inputFiles -> [OPTIONAL] Object intended to define the input files to be provided to OSVE.":"",
      "baselineRelPath": "[OPTIONAL] String with the relative path to reference all the input files. Default empty string.",
      "jsonSegmentFilePath": "[OPTIONAL] String with the relative path of the JSON timeline file for AGM (AGE), could not be provided if `xmlPtrPath` is present. Default empty string.",
      "xmlPtrPath": "[OPTIONAL] String with the relative path of the Pointing Requests file (PTR) for AGM (AGE), could not be provided if `jsonSegmentFilePath` is present. Default empty string.",
      "segmentTimelineFilePath": "[OPTIONAL] String with the relative path of the Instrument Timeline (ITL) to simulate with EPS (ISE). Default empty string.",
      "eventTimelineFilePath": "[OPTIONAL] String with the relative path of the Events file (EVF) for being used by ISE(EPS). Default empty string.",
      "modellingConfiguration": {
          "COMMENT: modellingConfiguration -> [OPTIONAL] Object intended to define the ISE (EPS) experiment modelling configuration.":"",
        "baselineRelPath": "[OPTIONAL] String with the relative path to reference all the modelling files. Default empty string.",
        "edfFileName": "String with the relative path of the Experiment Definitions file (EDF) for being used by EPS (ISE). Default empty string.",
        "observationDefFileName": "[OPTIONAL] String with the relative path of the Observations Definitions file for being used by ISE(EPS). Default empty string."
      }
    },
    "outputFiles": {
        "COMMENT: outputFiles -> [OPTIONAL] Object intended to define the output files of OSVE execution":"",
      "baselineRelPath": "[OPTIONAL] String with the relative path to reference all the output files, if defined it shall exist. Default empty string.",
      "simOutputFilesPath": "[OPTIONAL] String with the relative path of the folder where EPS (ISE) will place all the simulation outputs, if not present or empty no simulation output will be generated. Default empty string.",
      "ckAttitudeFilePath": "[OPTIONAL] String with the SPICE CameraKernel (CK) mapping the spacecraft attitude relative to J2000, that AGE(AGM) will generate after the OSVE execution, if not present or empty, no CK will be generated. Default empty string.",
      "ckSaFilePath": "[OPTIONAL] String with the SPICE CameraKernel (CK) mapping the Medium Gain Antenna orientation, that AGE(AGM) will generate after the OSVE execution, if not present or empty, no CK will be generated. Default empty string.",
      "ckMgaFilePath": "[OPTIONAL] String with the SPICE CameraKernel (CK) mapping the Solar Arrays orientation, that AGE(AGM) will generate after the OSVE execution, if not present or empty, no CK will be generated. Default empty string.",
      "ckConfig": {
          "COMMENT: ckConfig -> [OPTIONAL] Object intended to define the parameters for the CKs generation":"",
        "ckSclkId": "[OPTIONAL] Integer specifying the SPICE spacecraft clock identifier to use for the CK generation. Default clock id is -28999 that refers to JUICE FICT SCLK found at the JUICE SPICE Kernel Dataset.",
        "ckFrameId": "[OPTIONAL] Integer specifying the SPICE spacecraft reference frame identifier to use for the CK generation. This CK will map the attitude to pass from the specified reference frame to J2000 reference frame. Default frame id is -28001 that refers to JUICE_SPACECRAFT_PLAN found at the juice_v??.tf frames kernel found at the JUICE SPICE Kernel Dataset.",
        "ckTimeStep": "[OPTIONAL] Integer specifying the time resolution in seconds to use during the CK generation. Default is 300 seconds."
      },
      "txtAttitudeFilePath": "[OPTIONAL] String with the relative path where AGM(AGE) will place the CSV containing the spacecraft quaternions per timestep to pass from the spacecraft frame to J2000. Default empty string, the CSV will not be generated.",
      "attitudeXmlPtr": "[OPTIONAL] String with the relative path where AGE(AGM) will place the resolved PTR. Default empty string, the PTR will not be generated.",
      "simDataFilePath": "[OPTIONAL] String with the relative path where AGE(AGM) will place the CSV with some parameters extracted during the AGE(AGM) simulation (Solar arrays values, power and spacecraft quaternions). Default empty string, the CSV will not be generated.",
      "saDataFilePath": "[OPTIONAL] String with the relative path where AGE(AGM) will place the CSV with the Solar Arrays rotation angles extracted during the AGE(AGM) simulation. Default empty string, the CSV will not be generated.",
      "mgaDataFilePath": "[OPTIONAL] String with the relative path where AGE(AGM) will place the CSV with the Medium Gain Antenna elevation and azimuth angles extracted during the AGE(AGM) simulation. Default empty string, the CSV will not be generated.",
      "jsonItlPath": "[OPTIONAL] String with the relative path where ISE(EPS) will place the executed ITL timeline in JSON format. Default empty string, the JSON ITL will not be generated.",
      "powerFilePath": "[OPTIONAL] String with the relative path where AGE(AGM) will place the CSV with the Solar Arrays available power extracted during the AGE(AGM) simulation. Default empty string, the CSV will not be generated.",
      "powerConfig": {
          "COMMENT: powerConfig -> [OPTIONAL] Object intended to define the parameters for the CSV with the Solar Arrays available power":"",
        "powerTimeStep": "[OPTIONAL] Integer specifying the time resolution in seconds to use during the power CSV generation. If 'powerConfig' not specified, the `timeStep` value will be used.",
        "powerOptimized": "[OPTIONAL] Boolean specifying if AGE(AGM) should compute the generated power from the loaded SA and SC CameraKernels (CK) [true] or assuming a power optimized SA orientation for the loaded SC CameraKernels (CK) [false]. If 'powerConfig' not specifed, the `false` value will be used."
      },
      "dataPacks": [
        {"COMMENT: dataPacks -> [OPTIONAL] List of objects with the properties and fields of each datapack to be generated by OSVE":""},
                      {
                        "filePath": "String with the relative path where OSVE will place this datapack",
                        "type":"[OPTIONAL] String with the datapack type, supported types are: 'CSV', 'CALLBACK'. If 'type' not specified, the `CSV` value will be used.",
                        "timeStep": "[OPTIONAL] Integer specifying the time resolution in seconds to use during this datapack generation. If 'timeStep' not specified, the `simulationConfiguration::timeStep` value will be used.",
                        "precision": "[OPTIONAL] Integer in range 0..12 specifing the default number of decimal places for reported values. If 'precision' not specified, then 6 decimal places will be used.",
                        "fields": [
                            {"COMMENT: fields -> [OPTIONAL] List of objects with the properties of each datapack field or column to be generated.":""},
                                    {
                                      "type": "String with the field type, supported types are: 'time', 'MAPPS', 'OSVE'",
                                      "format": "[OPTIONAL] String with the time format, in case of field type 'time'. Supported formats: 'utc'. If 'format' not specified, the `utc` value will be used.",
                                      "overlayId": "[OPTIONAL] String with the MAPPS or OSVE overlay ID. REQUIRED when field type is 'MAPPS' or 'OSVE'. For supported Overlay_IDs see documentation.",
                                      "label": "[OPTIONAL] String with the field label to show in the datapack header. If 'label' not specified, the default label from the overlay ID will be used.",
                                      "precision": "[OPTIONAL] Integer in range 0..12 specifying the number of decimal places for this specific field. If 'precision' not specified, then the datapack default precision will be used.",
                                      "vector": "[OPTIONAL] Array of three numbers specifying the vector coordinates in case of a vector specification is required by the selected overlay ID. Example of syntax: [0.1, 0.1, 0.1]",
                                      "agmEventIndex": "[OPTIONAL] Integer specifying the AGM Event Index as found the AGM Event file starting by 0, only required when using 'AGM_PROFILE' overlay ID.",
                                      "agmEventMode": "[OPTIONAL] String specifying the AGM Event value to report. Type 'VALUE' for reporting the event value being checked against the event threshold, or type 'STATE' to report the event state. Only required when using 'AGM_PROFILE' overlay ID.",
                                      "parameter1": "[OPTIONAL] String with the value of the parameter1. Only required by overlays IDs that requires parameter1 specification.",
                                      "parameter2": "[OPTIONAL] String with the value of the parameter2. Only required by overlays IDs that requires parameter2 specification."
                                    }
                          ]
                      }
                   ]
    },
    "logging": {
        "COMMENT: logging -> [OPTIONAL] Object intended to define the OSVE logging parameters":"",
        "COMMENT: IMPORTANT NOTE: In case OSVE crash before parsing this session_file, the following jsonLogFile will be created: 'osve_crash.json'":"",
      "stdOutLogLevel": "[OPTIONAL] String with the log level defined for OSVE when writing on the standard output. Supported values: OK, DEBUG, INFO, WARNING, ERROR, FATAL, NONE. Default value is INFO.",
      "jsonLogFile": "[OPTIONAL] String with the relative path where OSVE will write all the logs in JSON format. The log level for this JSON file is DEBUG. Default empty string, no JSON log file will be generated.",
      "spiceErrorFile": "[OPTIONAL] String with the relative path where OSVE/SPICE will write all the error messages in case of any. Default empty string, no SPICE error file will be generated."
    }
  }
}

Examples of Session files are provided in the test directories. E.g.: Minor Moons test scenario: validation/osve/osve-if/pt-if-test-0001-minor-moons/session_file.json.