You can use mathematical expressions to build datasets dynamically. You can use create seismic and horizon datasets.
ISeismicData firstData = IData.factory.createNewInstance(..., ISeismicData.class);ISeismicData secondData = IData.factory.createNewInstance(..., ISeismicData.class);LinkedHashMap<String, ISeismicData> mappings = new LinkedHashMap<String, ISeismicData>();mappings.put("A", firstData);mappings.put("B", secondData);ICalculatorSeismicData calculatorData = ICalculatorSeismicData.Factory.createNewInstance(mappings, "A + B", "A");Deriving from other horizons (calculator)
IHorizonData firstData = ...IHorizonData secondData = ...LinkedHashMap<String, IData> mappings = new LinkedHashMap<String, IData>();mappings.put("A", firstData);mappings.put("B", secondData);IHorizonData calculatorData = HorizonUtil.createCalculatorHorizonData(mappings, "myData", "A + B", "A");Deriving from the trace header values of a seismic dataset (time horizon from header)
ISeismicData seismicData = ...IHorizonData horizonData = HorizonUtil.createTraceHeaderHorizonData(seismicData, "myData", "MUTE_START * 1000");