From fee2b2cdc14f6ac142b0a900f8270bc63d082a9e Mon Sep 17 00:00:00 2001
From: Justin Barno
Date: Thu, 18 Jan 2024 07:30:56 -0800
Subject: [PATCH] New uncertainty quantification estimates for the corner
frequency now available in both CCT and CERT spectral plots. The plot will
now show the most likely estimate alone with an approximation of the 95%
interval of misfit. The CERT plot also includes uncertainty from both the
joint and pair-wise inversion for the spectral ratios. You can also turn the
corner estimates on and off like the other plot elements from the legend now.
Added new beta version of export and import functionality for CERT. This allows you to manually adjust the spectral ratio windows for envelopes and then export the project for later use. Output is in a simple JSON document with one JSON object per-line so that the entire document need not be serialized. The format may change significantly based on community feedback while in the beta period. When importing the JSON into the tool it will attempt to map the values to any loaded waveforms based on their metadata and warn the user if it can't find mappings that are valid for any values.
Added a feature to allow for calculating the distances between any specific event in CERT. Right click an event in the events column of the main CERT display and select calculate distance to populate the distance column for all events based on the selected event.
Added additional map highlighting for the CERT map when selecting values in the spectral display and in the event table.
Manual updates to address some outdated instructions based on community feedback.
Re-formulated the observed energy calculation to replace a numerically derived constant to instead use an analytical formula that will take into account the MDAC model's propagation and density parameters. This should allow advanced users more control over the estimates and allowed better support for more types of geology overall.
Fixed a spectra plot replotting issue so that when the window within the ratio detail waveform plots is adjusted, the update will preserve the inversion data and replot it all correctly.
---
.github/workflows/maven-publish.yml | 9 +-
calibration-gui/pom.xml | 2 +-
.../calibration/gui/CodaGuiController.java | 44 +-
.../coda/calibration/gui/GuiApplication.java | 6 +-
.../AbstractMeasurementController.java | 18 +-
.../SpectraRatioLoadingController.java | 204 +++
.../param/SpectralRatioProjectLoader.java | 73 +
.../converters/ratios/SpectraRatioLoader.java | 75 ++
.../data/client/SpectraRatioWebClient.java | 23 +
.../data/client/api/SpectraRatioClient.java | 14 +-
.../data/exporters/JsonTempFileWriter.java | 56 +-
.../data/exporters/SpectraRatioExporter.java | 15 +-
.../api/SpectraRatioTempFileWriter.java | 9 +-
.../plotting/CertLeafletMapController.java | 63 +-
.../gui/plotting/CodaWaveformPlotManager.java | 24 +-
.../calibration/gui/plotting/LeafletMap.java | 8 +-
.../gui/plotting/LeafletMapController.java | 10 +-
.../gui/plotting/PlotlyPlotFactory.java | 17 +-
.../gui/plotting/RatioDetailPlot.java | 6 +
.../RatioMeasurementSpectraPlotManager.java | 156 ++-
.../RatioMeasurementWaveformPlotManager.java | 13 +-
.../gui/plotting/RatioMeasurementsGui.java | 12 +-
.../gui/plotting/SpectraPlotManager.java | 2 +-
.../gui/plotting/SpectralPlot.java | 101 +-
.../calibration/gui/plotting/WaveformGui.java | 14 +-
.../WaveformLoadingController.java | 6 +-
.../gui/SpectraRatioGuiController.java | 53 +-
.../gui/events/RatioSegmentChangeEvent.java | 31 +
.../src/main/resources/fxml/CertGui.fxml | 3 +-
.../main/resources/fxml/SpectraRatioGui.fxml | 8 +-
.../calibration-application/pom.xml | 4 +-
.../web/SpectraRatioJsonController.java | 24 +
.../resources/static/img/import_complete.png | Bin 305168 -> 390655 bytes
.../resources/static/img/import_stacks.png | Bin 291997 -> 329901 bytes
.../src/main/resources/static/index.html | 86 +-
.../static/javadoc/allclasses-index.html | 1095 +++++++--------
.../resources/static/javadoc/allclasses.html | 20 +-
.../static/javadoc/allpackages-index.html | 120 +-
.../static/javadoc/constant-values.html | 8 +-
.../static/javadoc/deprecated-list.html | 8 +-
.../resources/static/javadoc/element-list | 2 +
.../calibration/CalibrationApplication.html | 10 +-
.../calibration/ConfigureJacksonMixins.html | 10 +-
.../web/CalibrationJsonController.html | 10 +-
...alibrationNotificationStompController.html | 10 +-
.../web/ConfigurationItemJsonController.html | 10 +-
.../application/web/EventsJsonController.html | 10 +-
.../web/GeometryJsonController.html | 10 +-
...cParametersFiCollectionJsonController.html | 10 +-
.../MdacParametersFiItemJsonController.html | 10 +-
...cParametersPsCollectionJsonController.html | 10 +-
.../MdacParametersPsItemJsonController.html | 10 +-
.../web/MeasuredMwsJsonController.html | 10 +-
.../web/MeasurementJsonController.html | 10 +-
.../web/PeakVelocityJsonController.html | 10 +-
.../web/ReferenceEventsJsonController.html | 10 +-
.../web/ShapeMeasurementJsonController.html | 10 +-
...andParametersCollectionJsonController.html | 10 +-
...uencyBandParametersItemJsonController.html | 10 +-
...andParametersCollectionJsonController.html | 10 +-
.../web/SpectraMeasurementJsonController.html | 10 +-
.../web/SpectraRatioJsonController.html | 69 +-
.../SyntheticCollectionJsonController.html | 10 +-
.../web/SyntheticGenerationRequest.html | 16 +-
.../web/ValidationEventsJsonController.html | 10 +-
.../class-use/CalibrationJsonController.html | 8 +-
...alibrationNotificationStompController.html | 8 +-
.../ConfigurationItemJsonController.html | 8 +-
.../web/class-use/EventsJsonController.html | 8 +-
.../web/class-use/GeometryJsonController.html | 8 +-
...cParametersFiCollectionJsonController.html | 8 +-
.../MdacParametersFiItemJsonController.html | 8 +-
...cParametersPsCollectionJsonController.html | 8 +-
.../MdacParametersPsItemJsonController.html | 8 +-
.../class-use/MeasuredMwsJsonController.html | 8 +-
.../class-use/MeasurementJsonController.html | 8 +-
.../class-use/PeakVelocityJsonController.html | 8 +-
.../ReferenceEventsJsonController.html | 8 +-
.../ShapeMeasurementJsonController.html | 8 +-
...andParametersCollectionJsonController.html | 8 +-
...uencyBandParametersItemJsonController.html | 8 +-
...andParametersCollectionJsonController.html | 8 +-
.../SpectraMeasurementJsonController.html | 8 +-
.../class-use/SpectraRatioJsonController.html | 8 +-
.../SyntheticCollectionJsonController.html | 8 +-
.../class-use/SyntheticGenerationRequest.html | 8 +-
.../ValidationEventsJsonController.html | 8 +-
.../application/web/package-summary.html | 8 +-
.../application/web/package-tree.html | 8 +-
.../application/web/package-use.html | 8 +-
.../class-use/CalibrationApplication.html | 8 +-
.../class-use/ConfigureJacksonMixins.html | 8 +-
.../apps/coda/calibration/gui/AboutText.html | 10 +-
.../coda/calibration/gui/AppProperties.html | 10 +-
.../calibration/gui/CodaGuiController.html | 16 +-
.../gui/GuiApplication.ApplicationMode.html | 12 +-
.../coda/calibration/gui/GuiApplication.html | 10 +-
.../apps/coda/calibration/gui/MapConfig.html | 10 +-
.../gui/RefreshEventTableAction.html | 10 +-
.../coda/calibration/gui/WebfluxConfig.html | 10 +-
.../calibration/gui/class-use/AboutText.html | 8 +-
.../gui/class-use/AppProperties.html | 8 +-
.../gui/class-use/CodaGuiController.html | 8 +-
.../GuiApplication.ApplicationMode.html | 8 +-
.../gui/class-use/GuiApplication.html | 8 +-
.../calibration/gui/class-use/MapConfig.html | 8 +-
.../class-use/RefreshEventTableAction.html | 8 +-
.../gui/class-use/WebfluxConfig.html | 8 +-
.../AbstractMeasurementController.html | 10 +-
.../gui/controllers/AutoCompleteCombo.html | 10 +-
.../BaseSpectraPlotController.html | 10 +-
.../CodaParamLoadingController.html | 10 +-
.../gui/controllers/DataController.html | 10 +-
.../EnvelopeLoadingController.html | 10 +-
.../gui/controllers/EventTabController.html | 10 +-
.../gui/controllers/EventTableController.html | 10 +-
.../controllers/FilterDialogController.html | 10 +-
.../controllers/MapListeningController.html | 8 +-
.../controllers/MeasuredMwsController.html | 10 +-
.../gui/controllers/PathController.html | 10 +-
.../ReferenceEventLoadingController.html | 10 +-
.../controllers/RefreshableController.html | 8 +-
.../ScreenshotEnabledController.html | 8 +-
.../gui/controllers/ShapeController.html | 10 +-
.../gui/controllers/SiteController.html | 10 +-
.../controllers/SpectraPlotController.html | 10 +-
.../SpectraRatioLoadingController.html | 418 ++++++
.../SpectraRatioPlotController.html | 10 +-
.../AbstractMeasurementController.html | 8 +-
.../class-use/AutoCompleteCombo.html | 8 +-
.../class-use/BaseSpectraPlotController.html | 8 +-
.../class-use/CodaParamLoadingController.html | 11 +-
.../controllers/class-use/DataController.html | 11 +-
.../class-use/EnvelopeLoadingController.html | 11 +-
.../class-use/EventTabController.html | 8 +-
.../class-use/EventTableController.html | 11 +-
.../class-use/FilterDialogController.html | 8 +-
.../class-use/MapListeningController.html | 8 +-
.../class-use/MeasuredMwsController.html | 11 +-
.../controllers/class-use/PathController.html | 11 +-
.../ReferenceEventLoadingController.html | 11 +-
.../class-use/RefreshableController.html | 8 +-
.../ScreenshotEnabledController.html | 8 +-
.../class-use/ShapeController.html | 11 +-
.../controllers/class-use/SiteController.html | 11 +-
.../class-use/SpectraPlotController.html | 8 +-
.../SpectraRatioLoadingController.html | 216 +++
.../class-use/SpectraRatioPlotController.html | 8 +-
.../gui/controllers/package-summary.html | 12 +-
.../gui/controllers/package-tree.html | 9 +-
.../gui/controllers/package-use.html | 12 +-
.../parameters/ModelController.html | 10 +-
.../parameters/ParametersController.html | 10 +-
.../ShapeConfigurationController.html | 10 +-
.../parameters/SharedBandController.html | 10 +-
.../parameters/SiteBandController.html | 10 +-
.../VelocityConfigurationController.html | 10 +-
.../parameters/class-use/ModelController.html | 8 +-
.../class-use/ParametersController.html | 11 +-
.../ShapeConfigurationController.html | 8 +-
.../class-use/SharedBandController.html | 8 +-
.../class-use/SiteBandController.html | 8 +-
.../VelocityConfigurationController.html | 8 +-
.../parameters/package-summary.html | 8 +-
.../controllers/parameters/package-tree.html | 8 +-
.../controllers/parameters/package-use.html | 8 +-
.../api/FileToParameterConverter.html | 8 +-
.../api/FileToReferenceEventConverter.html | 8 +-
.../class-use/FileToParameterConverter.html | 8 +-
.../FileToReferenceEventConverter.html | 8 +-
.../gui/converters/api/package-summary.html | 8 +-
.../gui/converters/api/package-tree.html | 8 +-
.../gui/converters/api/package-use.html | 8 +-
.../converters/param/CodaJsonParamLoader.html | 10 +-
.../converters/param/CodaParamFileLoader.html | 10 +-
.../converters/param/MdacFiFileLoader.html | 10 +-
.../converters/param/MdacPsFileLoader.html | 10 +-
.../gui/converters/param/RawGeoJSON.html | 10 +-
.../param/ReferenceEventLoader.html | 10 +-
.../param/SpectralRatioProjectLoader.html | 308 +++++
.../param/class-use/CodaJsonParamLoader.html | 8 +-
.../param/class-use/CodaParamFileLoader.html | 8 +-
.../param/class-use/MdacFiFileLoader.html | 8 +-
.../param/class-use/MdacPsFileLoader.html | 8 +-
.../param/class-use/RawGeoJSON.html | 8 +-
.../param/class-use/ReferenceEventLoader.html | 8 +-
.../class-use/SpectralRatioProjectLoader.html | 150 +++
.../gui/converters/param/package-summary.html | 12 +-
.../gui/converters/param/package-tree.html | 9 +-
.../gui/converters/param/package-use.html | 8 +-
.../converters/ratios/SpectraRatioLoader.html | 309 +++++
.../ratios/class-use/SpectraRatioLoader.html | 195 +++
.../converters/ratios/package-summary.html | 168 +++
.../gui/converters/ratios/package-tree.html | 165 +++
.../gui/converters/ratios/package-use.html | 185 +++
.../sac/CodaStackedSacFileLoader.html | 10 +-
.../class-use/CodaStackedSacFileLoader.html | 8 +-
.../gui/converters/sac/package-summary.html | 8 +-
.../gui/converters/sac/package-tree.html | 8 +-
.../gui/converters/sac/package-use.html | 8 +-
.../gui/data/client/CalibrationWebClient.html | 10 +-
.../gui/data/client/EventWebClient.html | 10 +-
.../gui/data/client/ParameterWebClient.html | 10 +-
.../data/client/PeakVelocityWebClient.html | 10 +-
.../client/ShapeMeasurementWebClient.html | 10 +-
.../data/client/SpectraRatioWebClient.html | 90 +-
.../gui/data/client/SpectraWebClient.html | 10 +-
.../data/client/api/CalibrationClient.html | 8 +-
.../client/api/CalibrationJsonConstants.html | 10 +-
.../gui/data/client/api/EventClient.html | 8 +-
.../gui/data/client/api/ParameterClient.html | 8 +-
.../data/client/api/PeakVelocityClient.html | 8 +-
.../client/api/ShapeMeasurementClient.html | 8 +-
.../gui/data/client/api/SpectraClient.html | 8 +-
.../data/client/api/SpectraRatioClient.html | 72 +-
.../api/class-use/CalibrationClient.html | 11 +-
.../class-use/CalibrationJsonConstants.html | 8 +-
.../client/api/class-use/EventClient.html | 11 +-
.../client/api/class-use/ParameterClient.html | 21 +-
.../api/class-use/PeakVelocityClient.html | 18 +-
.../api/class-use/ShapeMeasurementClient.html | 18 +-
.../client/api/class-use/SpectraClient.html | 14 +-
.../api/class-use/SpectraRatioClient.html | 46 +-
.../gui/data/client/api/package-summary.html | 8 +-
.../gui/data/client/api/package-tree.html | 8 +-
.../gui/data/client/api/package-use.html | 12 +-
.../class-use/CalibrationWebClient.html | 8 +-
.../data/client/class-use/EventWebClient.html | 8 +-
.../client/class-use/ParameterWebClient.html | 8 +-
.../class-use/PeakVelocityWebClient.html | 8 +-
.../class-use/ShapeMeasurementWebClient.html | 8 +-
.../class-use/SpectraRatioWebClient.html | 8 +-
.../client/class-use/SpectraWebClient.html | 8 +-
.../gui/data/client/package-summary.html | 8 +-
.../gui/data/client/package-tree.html | 8 +-
.../gui/data/client/package-use.html | 8 +-
.../data/exporters/JsonTempFileWriter.html | 50 +-
.../gui/data/exporters/ParamExporter.html | 10 +-
.../data/exporters/SpectraRatioExporter.html | 38 +-
.../exporters/SwftStyleParamFileWriter.html | 10 +-
.../VelocityConfigurationFileMixin.html | 10 +-
.../api/MeasuredMwTempFileWriter.html | 8 +-
.../exporters/api/ParamTempFileWriter.html | 8 +-
.../api/ReferenceMwTempFileWriter.html | 8 +-
.../api/SpectraRatioTempFileWriter.html | 38 +-
.../exporters/api/SpectraTempFileWriter.html | 8 +-
.../api/ValidationMwTempFileWriter.html | 8 +-
.../class-use/MeasuredMwTempFileWriter.html | 8 +-
.../api/class-use/ParamTempFileWriter.html | 8 +-
.../class-use/ReferenceMwTempFileWriter.html | 8 +-
.../class-use/SpectraRatioTempFileWriter.html | 8 +-
.../api/class-use/SpectraTempFileWriter.html | 8 +-
.../class-use/ValidationMwTempFileWriter.html | 8 +-
.../data/exporters/api/package-summary.html | 8 +-
.../gui/data/exporters/api/package-tree.html | 8 +-
.../gui/data/exporters/api/package-use.html | 8 +-
.../class-use/JsonTempFileWriter.html | 8 +-
.../exporters/class-use/ParamExporter.html | 11 +-
.../class-use/SpectraRatioExporter.html | 38 +-
.../class-use/SwftStyleParamFileWriter.html | 8 +-
.../VelocityConfigurationFileMixin.html | 8 +-
.../gui/data/exporters/package-summary.html | 8 +-
.../gui/data/exporters/package-tree.html | 8 +-
.../gui/data/exporters/package-use.html | 12 +-
.../events/CalibrationStageShownEvent.html | 10 +-
.../gui/events/MapIconActivationCallback.html | 14 +-
.../gui/events/MapPolygonChangeHandler.html | 14 +-
.../MeasurementsWindowEvent.EventType.html | 12 +-
.../gui/events/MeasurementsWindowEvent.html | 10 +-
.../gui/events/ParametersLoadedEvent.html | 10 +-
.../gui/events/UpdateMapPolygonEvent.html | 10 +-
.../class-use/CalibrationStageShownEvent.html | 8 +-
.../class-use/MapIconActivationCallback.html | 8 +-
.../class-use/MapPolygonChangeHandler.html | 8 +-
.../MeasurementsWindowEvent.EventType.html | 8 +-
.../class-use/MeasurementsWindowEvent.html | 8 +-
.../class-use/ParametersLoadedEvent.html | 8 +-
.../class-use/UpdateMapPolygonEvent.html | 8 +-
.../gui/events/package-summary.html | 8 +-
.../calibration/gui/events/package-tree.html | 8 +-
.../calibration/gui/events/package-use.html | 8 +-
.../coda/calibration/gui/package-summary.html | 8 +-
.../coda/calibration/gui/package-tree.html | 8 +-
.../coda/calibration/gui/package-use.html | 8 +-
.../gui/plotting/BasicWaveformPlot.html | 12 +-
.../plotting/CertLeafletMapController.html | 100 +-
.../gui/plotting/CodaWaveformPlot.html | 12 +-
.../gui/plotting/CodaWaveformPlotManager.html | 20 +-
.../LeafletMap.IconCallbackHandler.html | 10 +-
...afletMap.PolygonChangeCallbackHandler.html | 10 +-
.../calibration/gui/plotting/LeafletMap.html | 48 +-
.../gui/plotting/LeafletMapController.html | 56 +-
.../gui/plotting/LeafletShapeFactory.html | 10 +-
.../gui/plotting/MapPlottingUtilities.html | 10 +-
.../gui/plotting/PlotlyPlotFactory.html | 74 +-
.../gui/plotting/RatioDetailPlot.html | 12 +-
.../RatioMeasurementSpectraPlotManager.html | 40 +-
.../RatioMeasurementWaveformPlotManager.html | 18 +-
.../gui/plotting/RatioMeasurementsGui.html | 10 +-
.../gui/plotting/SpectraPlotManager.html | 10 +-
.../gui/plotting/SpectralPlot.html | 128 +-
.../calibration/gui/plotting/WaveformGui.html | 20 +-
.../plotting/class-use/BasicWaveformPlot.html | 8 +-
.../class-use/CertLeafletMapController.html | 71 +-
.../plotting/class-use/CodaWaveformPlot.html | 8 +-
.../class-use/CodaWaveformPlotManager.html | 8 +-
.../LeafletMap.IconCallbackHandler.html | 8 +-
...afletMap.PolygonChangeCallbackHandler.html | 8 +-
.../gui/plotting/class-use/LeafletMap.html | 8 +-
.../class-use/LeafletMapController.html | 52 +-
.../class-use/LeafletShapeFactory.html | 8 +-
.../class-use/MapPlottingUtilities.html | 24 +-
.../plotting/class-use/PlotlyPlotFactory.html | 8 +-
.../plotting/class-use/RatioDetailPlot.html | 8 +-
.../RatioMeasurementSpectraPlotManager.html | 8 +-
.../RatioMeasurementWaveformPlotManager.html | 8 +-
.../class-use/RatioMeasurementsGui.html | 8 +-
.../class-use/SpectraPlotManager.html | 8 +-
.../gui/plotting/class-use/SpectralPlot.html | 8 +-
.../gui/plotting/class-use/WaveformGui.html | 11 +-
.../gui/plotting/package-summary.html | 8 +-
.../gui/plotting/package-tree.html | 8 +-
.../calibration/gui/plotting/package-use.html | 39 +-
.../gui/util/CalibrationProgressListener.html | 10 +-
.../calibration/gui/util/FileDialogs.html | 10 +-
.../gui/util/TextWrappingTableCell.html | 10 +-
.../gui/util/TimeLatchedGetSet.html | 10 +-
.../CalibrationProgressListener.html | 8 +-
.../gui/util/class-use/FileDialogs.html | 8 +-
.../util/class-use/TextWrappingTableCell.html | 8 +-
.../gui/util/class-use/TimeLatchedGetSet.html | 8 +-
.../calibration/gui/util/package-summary.html | 8 +-
.../calibration/gui/util/package-tree.html | 8 +-
.../calibration/gui/util/package-use.html | 8 +-
.../calibration/model/domain/EnvelopeFit.html | 16 +-
.../model/domain/EventSpectraReport.html | 14 +-
.../model/domain/GeoJsonPolygon.html | 16 +-
...ctedCalibrationShapeFitterConstraints.html | 10 +-
.../model/domain/InjectedVelocityConfig.html | 10 +-
.../model/domain/MdacParametersFI.html | 16 +-
.../model/domain/MdacParametersPS.html | 12 +-
.../model/domain/MeasuredMwDetails.html | 16 +-
.../model/domain/MeasuredMwParameters.html | 16 +-
.../model/domain/MeasuredMwReportByEvent.html | 16 +-
.../model/domain/MeasurementJob.html | 10 +-
.../model/domain/MwOptimizerMeasurement.html | 16 +-
.../domain/PathCalibrationMeasurement.html | 16 +-
.../model/domain/PeakVelocityMeasurement.html | 16 +-
.../PeakVelocityMeasurementMetadata.html | 8 +-
.../domain/RatioOptimizerMeasurement.html | 458 +++++++
.../model/domain/ReferenceMwParameters.html | 16 +-
.../model/domain/ShapeFitterConstraints.html | 16 +-
.../model/domain/ShapeMeasurement.html | 16 +-
.../domain/ShapeMeasurementMetadata.html | 8 +-
.../model/domain/SiteCorrections.html | 10 +-
.../domain/SiteFrequencyBandParameters.html | 16 +-
.../calibration/model/domain/Spectra.html | 16 +-
.../model/domain/SpectraMeasurement.html | 16 +-
.../domain/SpectraMeasurementMetadata.html | 8 +-
.../SpectraMeasurementMetadataImpl.html | 10 +-
.../model/domain/ValidationMwParameters.html | 16 +-
.../model/domain/VelocityConfiguration.html | 16 +-
.../model/domain/WaveformMetadataImpl.html | 10 +-
.../model/domain/class-use/EnvelopeFit.html | 8 +-
.../domain/class-use/EventSpectraReport.html | 8 +-
.../domain/class-use/GeoJsonPolygon.html | 8 +-
...ctedCalibrationShapeFitterConstraints.html | 8 +-
.../class-use/InjectedVelocityConfig.html | 8 +-
.../domain/class-use/MdacParametersFI.html | 8 +-
.../domain/class-use/MdacParametersPS.html | 8 +-
.../domain/class-use/MeasuredMwDetails.html | 43 +-
.../class-use/MeasuredMwParameters.html | 8 +-
.../class-use/MeasuredMwReportByEvent.html | 8 +-
.../domain/class-use/MeasurementJob.html | 8 +-
.../class-use/MwOptimizerMeasurement.html | 8 +-
.../class-use/PathCalibrationMeasurement.html | 8 +-
.../class-use/PeakVelocityMeasurement.html | 8 +-
.../PeakVelocityMeasurementMetadata.html | 8 +-
.../class-use/RatioOptimizerMeasurement.html | 150 +++
.../class-use/ReferenceMwParameters.html | 8 +-
.../class-use/ShapeFitterConstraints.html | 8 +-
.../domain/class-use/ShapeMeasurement.html | 8 +-
.../class-use/ShapeMeasurementMetadata.html | 8 +-
.../domain/class-use/SiteCorrections.html | 8 +-
.../SiteFrequencyBandParameters.html | 8 +-
.../model/domain/class-use/Spectra.html | 8 +-
.../domain/class-use/SpectraMeasurement.html | 8 +-
.../class-use/SpectraMeasurementMetadata.html | 8 +-
.../SpectraMeasurementMetadataImpl.html | 8 +-
.../class-use/ValidationMwParameters.html | 8 +-
.../class-use/VelocityConfiguration.html | 8 +-
.../class-use/WaveformMetadataImpl.html | 8 +-
.../model/domain/mixins/MdacFiFileMixin.html | 10 +-
.../model/domain/mixins/MdacPsFileMixin.html | 10 +-
.../ReferenceMwParametersFileMixin.html | 10 +-
.../ShapeFitterConstraintsFileMixin.html | 10 +-
...haredFrequencyBandParametersFileMixin.html | 10 +-
...haredFrequencyBandParametersJsonMixin.html | 10 +-
.../SiteFrequencyBandParametersFileMixin.html | 10 +-
.../SiteFrequencyBandParametersJsonMixin.html | 10 +-
.../SpectraRatioPairDetailsMetadataMixin.html | 270 ++++
.../ValidationMwParametersFileMixin.html | 10 +-
.../domain/mixins/WaveformMetadataMixin.html | 270 ++++
.../domain/mixins/WaveformPickMixin.html | 270 ++++
.../mixins/class-use/MdacFiFileMixin.html | 8 +-
.../mixins/class-use/MdacPsFileMixin.html | 8 +-
.../ReferenceMwParametersFileMixin.html | 8 +-
.../ShapeFitterConstraintsFileMixin.html | 8 +-
...haredFrequencyBandParametersFileMixin.html | 8 +-
...haredFrequencyBandParametersJsonMixin.html | 8 +-
.../SiteFrequencyBandParametersFileMixin.html | 8 +-
.../SiteFrequencyBandParametersJsonMixin.html | 8 +-
.../SpectraRatioPairDetailsMetadataMixin.html | 150 +++
.../ValidationMwParametersFileMixin.html | 8 +-
.../class-use/WaveformMetadataMixin.html | 150 +++
.../mixins/class-use/WaveformPickMixin.html | 150 +++
.../model/domain/mixins/package-summary.html | 20 +-
.../model/domain/mixins/package-tree.html | 11 +-
.../model/domain/mixins/package-use.html | 8 +-
.../model/domain/package-summary.html | 32 +-
.../model/domain/package-tree.html | 9 +-
.../calibration/model/domain/package-use.html | 41 +-
.../BandParametersDataChangeEvent.html | 16 +-
.../CalibrationStatusEvent.Status.html | 12 +-
.../messaging/CalibrationStatusEvent.html | 16 +-
.../model/messaging/GvDataChangeEvent.html | 16 +-
.../model/messaging/MdacDataChangeEvent.html | 16 +-
.../MeasurementStatusEvent.Status.html | 12 +-
.../messaging/MeasurementStatusEvent.html | 16 +-
.../messaging/RatioMeasurementEvent.html | 16 +-
.../messaging/RatioStatusEvent.Status.html | 12 +-
.../model/messaging/RatioStatusEvent.html | 16 +-
.../ShapeConstraintsChangeEvent.html | 16 +-
.../BandParametersDataChangeEvent.html | 8 +-
.../CalibrationStatusEvent.Status.html | 8 +-
.../class-use/CalibrationStatusEvent.html | 8 +-
.../class-use/GvDataChangeEvent.html | 8 +-
.../class-use/MdacDataChangeEvent.html | 8 +-
.../MeasurementStatusEvent.Status.html | 8 +-
.../class-use/MeasurementStatusEvent.html | 8 +-
.../class-use/RatioMeasurementEvent.html | 8 +-
.../class-use/RatioStatusEvent.Status.html | 8 +-
.../messaging/class-use/RatioStatusEvent.html | 8 +-
.../ShapeConstraintsChangeEvent.html | 8 +-
.../model/messaging/package-summary.html | 8 +-
.../model/messaging/package-tree.html | 8 +-
.../model/messaging/package-use.html | 8 +-
.../coda/calibration/package-summary.html | 8 +-
.../apps/coda/calibration/package-tree.html | 8 +-
.../apps/coda/calibration/package-use.html | 8 +-
...ationShapeFitterConstraintsRepository.html | 8 +-
.../MdacParametersFiRepository.html | 8 +-
.../MdacParametersPsRepository.html | 8 +-
.../repository/MeasuredMwsRepository.html | 8 +-
.../PathCalibrationMeasurementRepository.html | 8 +-
.../PeakVelocityMeasurementRepository.html | 8 +-
.../repository/PolygonRepository.html | 8 +-
.../ReferenceMwParametersRepository.html | 8 +-
.../ShapeMeasurementRepository.html | 8 +-
...aredFrequencyBandParametersRepository.html | 8 +-
...SiteFrequencyBandParametersRepository.html | 8 +-
.../SpectraMeasurementRepository.html | 8 +-
...raRatioJointInversionSampleRepository.html | 8 +-
.../SpectraRatioPairDetailsRepository.html | 107 +-
...traRatioPairInversionSampleRepository.html | 8 +-
.../repository/SyntheticRepository.html | 8 +-
.../ValidationMwParametersRepository.html | 8 +-
.../VelocityConfigurationRepository.html | 8 +-
...ationShapeFitterConstraintsRepository.html | 8 +-
.../class-use/MdacParametersFiRepository.html | 8 +-
.../class-use/MdacParametersPsRepository.html | 8 +-
.../class-use/MeasuredMwsRepository.html | 8 +-
.../PathCalibrationMeasurementRepository.html | 8 +-
.../PeakVelocityMeasurementRepository.html | 8 +-
.../class-use/PolygonRepository.html | 8 +-
.../ReferenceMwParametersRepository.html | 8 +-
.../class-use/ShapeMeasurementRepository.html | 8 +-
...aredFrequencyBandParametersRepository.html | 8 +-
...SiteFrequencyBandParametersRepository.html | 8 +-
.../SpectraMeasurementRepository.html | 8 +-
...raRatioJointInversionSampleRepository.html | 8 +-
.../SpectraRatioPairDetailsRepository.html | 8 +-
...traRatioPairInversionSampleRepository.html | 8 +-
.../class-use/SyntheticRepository.html | 8 +-
.../ValidationMwParametersRepository.html | 8 +-
.../VelocityConfigurationRepository.html | 8 +-
.../repository/package-summary.html | 8 +-
.../calibration/repository/package-tree.html | 8 +-
.../calibration/repository/package-use.html | 8 +-
.../service/api/AutopickingService.html | 8 +-
.../service/api/CalibrationService.html | 8 +-
.../service/api/ConfigurationService.html | 8 +-
.../service/api/DatabaseCleaningService.html | 8 +-
.../service/api/EndTimePicker.html | 8 +-
.../service/api/GeometryService.html | 8 +-
.../service/api/MdacParametersFiService.html | 8 +-
.../service/api/MdacParametersPsService.html | 8 +-
.../service/api/MeasuredMwsService.html | 8 +-
.../PathCalibrationMeasurementService.html | 8 +-
.../service/api/PathCalibrationService.html | 8 +-
.../api/PeakVelocityMeasurementService.html | 8 +-
.../api/ReferenceMwParametersService.html | 8 +-
.../service/api/ShapeCalibrationService.html | 8 +-
.../service/api/ShapeMeasurementService.html | 8 +-
.../SharedFrequencyBandParametersService.html | 8 +-
.../service/api/SiteCalibrationService.html | 8 +-
.../SiteFrequencyBandParametersService.html | 8 +-
.../api/SpectraMeasurementService.html | 8 +-
.../api/SpectraRatioPairDetailsService.html | 56 +-
...pectraRatioPairInversionSampleService.html | 8 +-
.../api/SyntheticCodaGenerationService.html | 8 +-
.../service/api/SyntheticService.html | 8 +-
.../api/ValidationMwParametersService.html | 8 +-
.../api/class-use/AutopickingService.html | 8 +-
.../api/class-use/CalibrationService.html | 8 +-
.../api/class-use/ConfigurationService.html | 8 +-
.../class-use/DatabaseCleaningService.html | 8 +-
.../service/api/class-use/EndTimePicker.html | 8 +-
.../api/class-use/GeometryService.html | 8 +-
.../class-use/MdacParametersFiService.html | 8 +-
.../class-use/MdacParametersPsService.html | 8 +-
.../api/class-use/MeasuredMwsService.html | 8 +-
.../PathCalibrationMeasurementService.html | 8 +-
.../api/class-use/PathCalibrationService.html | 8 +-
.../PeakVelocityMeasurementService.html | 8 +-
.../ReferenceMwParametersService.html | 8 +-
.../class-use/ShapeCalibrationService.html | 8 +-
.../class-use/ShapeMeasurementService.html | 8 +-
.../SharedFrequencyBandParametersService.html | 8 +-
.../api/class-use/SiteCalibrationService.html | 8 +-
.../SiteFrequencyBandParametersService.html | 8 +-
.../class-use/SpectraMeasurementService.html | 8 +-
.../SpectraRatioPairDetailsService.html | 8 +-
...pectraRatioPairInversionSampleService.html | 8 +-
.../SyntheticCodaGenerationService.html | 8 +-
.../api/class-use/SyntheticService.html | 8 +-
.../ValidationMwParametersService.html | 8 +-
.../service/api/package-summary.html | 8 +-
.../calibration/service/api/package-tree.html | 8 +-
.../calibration/service/api/package-use.html | 8 +-
.../service/impl/AutopickingServiceImpl.html | 10 +-
.../service/impl/CalibrationServiceImpl.html | 10 +-
.../service/impl/ConcurrencyUtils.html | 10 +-
.../impl/ConfigurationServiceImpl.html | 10 +-
.../impl/DatabaseCleaningServiceImpl.html | 10 +-
.../service/impl/GeometryServiceImpl.html | 10 +-
.../service/impl/Joint1DPathCorrection.html | 10 +-
.../impl/MdacParametersFiServiceImpl.html | 10 +-
.../impl/MdacParametersPsServiceImpl.html | 10 +-
.../service/impl/MeasuredMwsServiceImpl.html | 10 +-
...PathCalibrationMeasurementServiceImpl.html | 10 +-
.../PeakVelocityMeasurementServiceImpl.html | 10 +-
.../ReferenceMwParametersServiceImpl.html | 10 +-
.../service/impl/ServiceConfig.html | 10 +-
.../impl/ShapeCalibrationServiceImpl.html | 10 +-
.../impl/ShapeMeasurementServiceImpl.html | 10 +-
...redFrequencyBandParametersServiceImpl.html | 10 +-
.../impl/SiteCalibrationServiceImpl.html | 10 +-
...iteFrequencyBandParametersServiceImpl.html | 10 +-
.../impl/SpectraMeasurementServiceImpl.html | 10 +-
.../service/impl/SpectraRatioServiceImpl.html | 85 +-
.../SyntheticCodaGenerationServiceImpl.html | 10 +-
.../service/impl/SyntheticServiceImpl.html | 10 +-
.../ValidationMwParametersServiceImpl.html | 10 +-
.../class-use/AutopickingServiceImpl.html | 8 +-
.../class-use/CalibrationServiceImpl.html | 8 +-
.../impl/class-use/ConcurrencyUtils.html | 8 +-
.../class-use/ConfigurationServiceImpl.html | 8 +-
.../DatabaseCleaningServiceImpl.html | 8 +-
.../impl/class-use/GeometryServiceImpl.html | 8 +-
.../impl/class-use/Joint1DPathCorrection.html | 8 +-
.../MdacParametersFiServiceImpl.html | 8 +-
.../MdacParametersPsServiceImpl.html | 8 +-
.../class-use/MeasuredMwsServiceImpl.html | 8 +-
...PathCalibrationMeasurementServiceImpl.html | 8 +-
.../PeakVelocityMeasurementServiceImpl.html | 8 +-
.../ReferenceMwParametersServiceImpl.html | 8 +-
.../service/impl/class-use/ServiceConfig.html | 8 +-
.../ShapeCalibrationServiceImpl.html | 8 +-
.../ShapeMeasurementServiceImpl.html | 8 +-
...redFrequencyBandParametersServiceImpl.html | 8 +-
.../class-use/SiteCalibrationServiceImpl.html | 8 +-
...iteFrequencyBandParametersServiceImpl.html | 8 +-
.../SpectraMeasurementServiceImpl.html | 8 +-
.../class-use/SpectraRatioServiceImpl.html | 8 +-
.../SyntheticCodaGenerationServiceImpl.html | 8 +-
.../impl/class-use/SyntheticServiceImpl.html | 8 +-
.../ValidationMwParametersServiceImpl.html | 8 +-
.../service/impl/package-summary.html | 8 +-
.../service/impl/package-tree.html | 8 +-
.../calibration/service/impl/package-use.html | 8 +-
.../CalibrationCurveFitter.GridFitter.html | 8 +-
.../processing/CalibrationCurveFitter.html | 10 +-
.../impl/processing/CodaSNREndTimePicker.html | 10 +-
.../service/impl/processing/EnergyInfo.html | 12 +-
.../processing/MaxVelocityCalculator.html | 10 +-
.../impl/processing/MdacCalculator.html | 10 +-
.../processing/MdacCalculatorService.html | 10 +-
.../processing/MwMeasurementInputData.html | 10 +-
.../processing/PathCostFunctionResult.html | 16 +-
.../impl/processing/ShapeCalculator.html | 10 +-
.../impl/processing/SpectraCalculator.html | 14 +-
.../SpectraRatioInversionCalculator.html | 26 +-
.../impl/processing/SyntheticCodaModel.html | 10 +-
.../CalibrationCurveFitter.GridFitter.html | 8 +-
.../class-use/CalibrationCurveFitter.html | 8 +-
.../class-use/CodaSNREndTimePicker.html | 8 +-
.../impl/processing/class-use/EnergyInfo.html | 8 +-
.../class-use/MaxVelocityCalculator.html | 8 +-
.../processing/class-use/MdacCalculator.html | 8 +-
.../class-use/MdacCalculatorService.html | 8 +-
.../class-use/MwMeasurementInputData.html | 8 +-
.../class-use/PathCostFunctionResult.html | 8 +-
.../processing/class-use/ShapeCalculator.html | 8 +-
.../class-use/SpectraCalculator.html | 8 +-
.../SpectraRatioInversionCalculator.html | 8 +-
.../class-use/SyntheticCodaModel.html | 8 +-
.../impl/processing/package-summary.html | 8 +-
.../service/impl/processing/package-tree.html | 8 +-
.../service/impl/processing/package-use.html | 8 +-
.../standalone/CodaCalibrationStandalone.html | 10 +-
.../class-use/CodaCalibrationStandalone.html | 8 +-
.../data/client/CalibrationLocalClient.html | 10 +-
.../data/client/EventLocalClient.html | 10 +-
.../data/client/ParameterLocalClient.html | 10 +-
.../data/client/PeakVelocityLocalClient.html | 10 +-
.../client/ShapeMeasurementLocalClient.html | 10 +-
.../data/client/SpectraLocalClient.html | 10 +-
.../data/client/SpectraRatioLocalClient.html | 90 +-
.../data/client/WaveformLocalClient.html | 10 +-
.../class-use/CalibrationLocalClient.html | 8 +-
.../client/class-use/EventLocalClient.html | 8 +-
.../class-use/ParameterLocalClient.html | 8 +-
.../class-use/PeakVelocityLocalClient.html | 8 +-
.../ShapeMeasurementLocalClient.html | 8 +-
.../client/class-use/SpectraLocalClient.html | 8 +-
.../class-use/SpectraRatioLocalClient.html | 8 +-
.../client/class-use/WaveformLocalClient.html | 8 +-
.../data/client/package-summary.html | 8 +-
.../standalone/data/client/package-tree.html | 8 +-
.../standalone/data/client/package-use.html | 8 +-
.../standalone/package-summary.html | 8 +-
.../calibration/standalone/package-tree.html | 8 +-
.../calibration/standalone/package-use.html | 8 +-
.../application/config/WebSocketConfig.html | 10 +-
.../config/class-use/WebSocketConfig.html | 8 +-
.../application/config/package-summary.html | 8 +-
.../application/config/package-tree.html | 8 +-
.../application/config/package-use.html | 8 +-
.../web/BasicNotificationStompController.html | 10 +-
.../web/TypingMessageTemplate.html | 10 +-
...WaveformPicksCollectionJsonController.html | 10 +-
.../web/WaveformPicksItemJsonController.html | 10 +-
.../WaveformsCollectionJsonController.html | 10 +-
.../web/WaveformsItemJsonController.html | 10 +-
.../BasicNotificationStompController.html | 8 +-
.../web/class-use/TypingMessageTemplate.html | 8 +-
...WaveformPicksCollectionJsonController.html | 8 +-
.../WaveformPicksItemJsonController.html | 8 +-
.../WaveformsCollectionJsonController.html | 8 +-
.../WaveformsItemJsonController.html | 8 +-
.../application/web/package-summary.html | 8 +-
.../common/application/web/package-tree.html | 8 +-
.../common/application/web/package-use.html | 8 +-
.../coda/common/gui/FXMLLoaderBuilder.html | 10 +-
.../coda/common/gui/SimpleGuiPreloader.html | 10 +-
.../apps/coda/common/gui/WebclientConfig.html | 10 +-
.../gui/class-use/FXMLLoaderBuilder.html | 8 +-
.../gui/class-use/SimpleGuiPreloader.html | 8 +-
.../common/gui/class-use/WebclientConfig.html | 8 +-
.../AbstractSeismogramSaveLoadController.html | 10 +-
.../controllers/FailureReportController.html | 10 +-
.../common/gui/controllers/ProgressGui.html | 10 +-
.../AbstractSeismogramSaveLoadController.html | 8 +-
.../class-use/FailureReportController.html | 8 +-
.../controllers/class-use/ProgressGui.html | 8 +-
.../gui/controllers/package-summary.html | 8 +-
.../common/gui/controllers/package-tree.html | 8 +-
.../common/gui/controllers/package-use.html | 8 +-
.../converters/api/CodaFilenameParser.html | 8 +-
.../api/FileToEnvelopeConverter.html | 8 +-
.../api/FileToSeismogramConverter.html | 8 +-
.../api/FileToWaveformConverter.html | 8 +-
.../common/gui/converters/api/StackInfo.html | 10 +-
.../api/class-use/CodaFilenameParser.html | 8 +-
.../class-use/FileToEnvelopeConverter.html | 8 +-
.../class-use/FileToSeismogramConverter.html | 8 +-
.../class-use/FileToWaveformConverter.html | 8 +-
.../converters/api/class-use/StackInfo.html | 8 +-
.../gui/converters/api/package-summary.html | 8 +-
.../gui/converters/api/package-tree.html | 8 +-
.../gui/converters/api/package-use.html | 8 +-
.../sac/CodaFilenameParserImpl.html | 10 +-
.../gui/converters/sac/SacExporter.html | 10 +-
.../common/gui/converters/sac/SacLoader.html | 10 +-
.../sac/class-use/CodaFilenameParserImpl.html | 8 +-
.../converters/sac/class-use/SacExporter.html | 8 +-
.../converters/sac/class-use/SacLoader.html | 8 +-
.../gui/converters/sac/package-summary.html | 8 +-
.../gui/converters/sac/package-tree.html | 8 +-
.../gui/converters/sac/package-use.html | 8 +-
.../gui/data/client/CodaWebClientBuilder.html | 10 +-
.../gui/data/client/EventBusBuilder.html | 10 +-
.../client/EventBusStompSessionHandler.html | 10 +-
.../gui/data/client/WaveformWebClient.html | 10 +-
.../gui/data/client/api/WaveformClient.html | 8 +-
.../client/api/class-use/WaveformClient.html | 21 +-
.../gui/data/client/api/package-summary.html | 8 +-
.../gui/data/client/api/package-tree.html | 8 +-
.../gui/data/client/api/package-use.html | 8 +-
.../class-use/CodaWebClientBuilder.html | 8 +-
.../client/class-use/EventBusBuilder.html | 8 +-
.../EventBusStompSessionHandler.html | 8 +-
.../client/class-use/WaveformWebClient.html | 8 +-
.../gui/data/client/package-summary.html | 8 +-
.../common/gui/data/client/package-tree.html | 8 +-
.../common/gui/data/client/package-use.html | 8 +-
.../gui/events/EnvelopeLoadCompleteEvent.html | 10 +-
.../gui/events/EnvelopeLoadStartingEvent.html | 10 +-
.../gui/events/ShowFailureReportEvent.html | 10 +-
.../gui/events/SocketDisconnectEvent.html | 10 +-
.../gui/events/WaveformSelectionEvent.html | 10 +-
.../class-use/EnvelopeLoadCompleteEvent.html | 8 +-
.../class-use/EnvelopeLoadStartingEvent.html | 8 +-
.../class-use/ShowFailureReportEvent.html | 8 +-
.../class-use/SocketDisconnectEvent.html | 8 +-
.../class-use/WaveformSelectionEvent.html | 8 +-
.../common/gui/events/package-summary.html | 8 +-
.../coda/common/gui/events/package-tree.html | 8 +-
.../coda/common/gui/events/package-use.html | 8 +-
.../apps/coda/common/gui/package-summary.html | 8 +-
.../apps/coda/common/gui/package-tree.html | 8 +-
.../apps/coda/common/gui/package-use.html | 8 +-
.../common/gui/plotting/LabeledPlotPoint.html | 10 +-
.../coda/common/gui/plotting/PlotPoint.html | 16 +-
.../gui/plotting/SymbolStyleMapFactory.html | 10 +-
.../plotting/class-use/LabeledPlotPoint.html | 8 +-
.../gui/plotting/class-use/PlotPoint.html | 11 +-
.../class-use/SymbolStyleMapFactory.html | 11 +-
.../common/gui/plotting/package-summary.html | 8 +-
.../common/gui/plotting/package-tree.html | 8 +-
.../coda/common/gui/plotting/package-use.html | 8 +-
.../common/gui/util/CellBindingUtils.html | 10 +-
.../apps/coda/common/gui/util/ClickUtils.html | 10 +-
.../common/gui/util/CombinedTrustManager.html | 16 +-
.../coda/common/gui/util/CommonGuiUtils.html | 10 +-
.../gui/util/DoubleWrappingEventHandler.html | 10 +-
.../util/EventStaFreqStringComparator.html | 14 +-
.../gui/util/HiddenHeaderTableView.html | 10 +-
.../gui/util/IntegerWrappingEventHandler.html | 10 +-
.../util/MaybeNumericStringComparator.html | 14 +-
.../common/gui/util/NumberFormatFactory.html | 10 +-
.../util/PassFailEventProgressListener.html | 10 +-
.../util/ProgressEventProgressListener.html | 10 +-
.../common/gui/util/ProgressListener.html | 10 +-
.../coda/common/gui/util/ProgressMonitor.html | 12 +-
.../coda/common/gui/util/SnapshotUtils.html | 10 +-
.../apps/coda/common/gui/util/SslUtils.html | 10 +-
.../apps/coda/common/gui/util/TableUtils.html | 10 +-
.../common/gui/util/WrappingEventHandler.html | 10 +-
.../gui/util/class-use/CellBindingUtils.html | 8 +-
.../common/gui/util/class-use/ClickUtils.html | 8 +-
.../util/class-use/CombinedTrustManager.html | 8 +-
.../gui/util/class-use/CommonGuiUtils.html | 8 +-
.../class-use/DoubleWrappingEventHandler.html | 8 +-
.../EventStaFreqStringComparator.html | 8 +-
.../util/class-use/HiddenHeaderTableView.html | 8 +-
.../IntegerWrappingEventHandler.html | 8 +-
.../MaybeNumericStringComparator.html | 8 +-
.../util/class-use/NumberFormatFactory.html | 8 +-
.../PassFailEventProgressListener.html | 8 +-
.../ProgressEventProgressListener.html | 8 +-
.../gui/util/class-use/ProgressListener.html | 8 +-
.../gui/util/class-use/ProgressMonitor.html | 38 +-
.../gui/util/class-use/SnapshotUtils.html | 8 +-
.../common/gui/util/class-use/SslUtils.html | 8 +-
.../common/gui/util/class-use/TableUtils.html | 8 +-
.../util/class-use/WrappingEventHandler.html | 8 +-
.../coda/common/gui/util/package-summary.html | 8 +-
.../coda/common/gui/util/package-tree.html | 8 +-
.../coda/common/gui/util/package-use.html | 12 +-
.../apps/coda/common/mapping/LeafletIcon.html | 10 +-
.../apps/coda/common/mapping/LeafletLine.html | 16 +-
.../mapping/MAP_CALLBACK_EVENT_TYPE.html | 12 +-
.../coda/common/mapping/MapCallbackEvent.html | 10 +-
.../coda/common/mapping/MapProperties.html | 10 +-
.../common/mapping/StaticHtmlLeafletMap.html | 10 +-
.../common/mapping/WMSLayerDescriptor.html | 16 +-
.../apps/coda/common/mapping/api/GeoBox.html | 10 +-
.../apps/coda/common/mapping/api/GeoMap.html | 38 +-
.../coda/common/mapping/api/GeoShape.html | 8 +-
.../common/mapping/api/GeoShapeFactory.html | 8 +-
.../common/mapping/api/Icon.IconStyles.html | 12 +-
.../common/mapping/api/Icon.IconTypes.html | 12 +-
.../apps/coda/common/mapping/api/Icon.html | 8 +-
.../apps/coda/common/mapping/api/Line.html | 8 +-
.../coda/common/mapping/api/Location.html | 16 +-
.../common/mapping/api/class-use/GeoBox.html | 8 +-
.../common/mapping/api/class-use/GeoMap.html | 36 +-
.../mapping/api/class-use/GeoShape.html | 8 +-
.../api/class-use/GeoShapeFactory.html | 8 +-
.../api/class-use/Icon.IconStyles.html | 8 +-
.../mapping/api/class-use/Icon.IconTypes.html | 8 +-
.../common/mapping/api/class-use/Icon.html | 44 +-
.../common/mapping/api/class-use/Line.html | 8 +-
.../mapping/api/class-use/Location.html | 8 +-
.../common/mapping/api/package-summary.html | 8 +-
.../coda/common/mapping/api/package-tree.html | 8 +-
.../coda/common/mapping/api/package-use.html | 8 +-
.../common/mapping/class-use/LeafletIcon.html | 8 +-
.../common/mapping/class-use/LeafletLine.html | 8 +-
.../class-use/MAP_CALLBACK_EVENT_TYPE.html | 8 +-
.../mapping/class-use/MapCallbackEvent.html | 8 +-
.../mapping/class-use/MapProperties.html | 8 +-
.../class-use/StaticHtmlLeafletMap.html | 8 +-
.../mapping/class-use/WMSLayerDescriptor.html | 8 +-
.../coda/common/mapping/package-summary.html | 8 +-
.../coda/common/mapping/package-tree.html | 8 +-
.../apps/coda/common/mapping/package-use.html | 8 +-
.../mapping/utils/LeafletToJavascript.html | 10 +-
.../utils/class-use/LeafletToJavascript.html | 8 +-
.../common/mapping/utils/package-summary.html | 8 +-
.../common/mapping/utils/package-tree.html | 8 +-
.../common/mapping/utils/package-use.html | 8 +-
.../apps/coda/common/model/domain/Event.html | 16 +-
.../common/model/domain/FrequencyBand.html | 18 +-
.../apps/coda/common/model/domain/Pair.html | 16 +-
.../coda/common/model/domain/Project.html | 10 +-
.../domain/SharedFrequencyBandParameters.html | 16 +-
.../coda/common/model/domain/Station.html | 16 +-
.../apps/coda/common/model/domain/Stream.html | 16 +-
.../common/model/domain/SyntheticCoda.html | 16 +-
.../coda/common/model/domain/Waveform.html | 16 +-
.../common/model/domain/WaveformMetadata.html | 8 +-
.../common/model/domain/WaveformPick.html | 16 +-
.../common/model/domain/class-use/Event.html | 28 +-
.../model/domain/class-use/FrequencyBand.html | 15 +-
.../common/model/domain/class-use/Pair.html | 8 +-
.../model/domain/class-use/Project.html | 8 +-
.../SharedFrequencyBandParameters.html | 8 +-
.../model/domain/class-use/Station.html | 73 +-
.../common/model/domain/class-use/Stream.html | 8 +-
.../model/domain/class-use/SyntheticCoda.html | 8 +-
.../model/domain/class-use/Waveform.html | 26 +-
.../domain/class-use/WaveformMetadata.html | 107 +-
.../model/domain/class-use/WaveformPick.html | 8 +-
.../common/model/domain/package-summary.html | 8 +-
.../common/model/domain/package-tree.html | 8 +-
.../coda/common/model/domain/package-use.html | 22 +-
.../common/model/messaging/PassFailEvent.html | 16 +-
.../coda/common/model/messaging/Progress.html | 10 +-
.../common/model/messaging/ProgressEvent.html | 16 +-
.../coda/common/model/messaging/Result.html | 16 +-
.../SpectraMeasurementChangeEvent.html | 16 +-
.../model/messaging/WaveformChangeEvent.html | 16 +-
.../messaging/class-use/PassFailEvent.html | 8 +-
.../model/messaging/class-use/Progress.html | 8 +-
.../messaging/class-use/ProgressEvent.html | 8 +-
.../model/messaging/class-use/Result.html | 71 +-
.../SpectraMeasurementChangeEvent.html | 8 +-
.../class-use/WaveformChangeEvent.html | 8 +-
.../model/messaging/package-summary.html | 8 +-
.../common/model/messaging/package-tree.html | 8 +-
.../common/model/messaging/package-use.html | 49 +-
.../model/test/annotations/GuiTest.html | 8 +-
.../model/test/annotations/IntTest.html | 8 +-
.../test/annotations/class-use/GuiTest.html | 8 +-
.../test/annotations/class-use/IntTest.html | 8 +-
.../test/annotations/package-summary.html | 8 +-
.../model/test/annotations/package-tree.html | 8 +-
.../model/test/annotations/package-use.html | 8 +-
.../apps/coda/common/model/util/Durable.html | 8 +-
.../LightweightIllegalStateException.html | 14 +-
.../common/model/util/MESSAGE_HEADERS.html | 10 +-
.../coda/common/model/util/PICK_TYPES.html | 12 +-
.../coda/common/model/util/SPECTRA_TYPES.html | 12 +-
.../common/model/util/class-use/Durable.html | 8 +-
.../LightweightIllegalStateException.html | 8 +-
.../model/util/class-use/MESSAGE_HEADERS.html | 8 +-
.../model/util/class-use/PICK_TYPES.html | 8 +-
.../model/util/class-use/SPECTRA_TYPES.html | 8 +-
.../common/model/util/package-summary.html | 8 +-
.../coda/common/model/util/package-tree.html | 8 +-
.../coda/common/model/util/package-use.html | 8 +-
.../repository/DetachableJpaRepoImpl.html | 10 +-
.../repository/DetachableJpaRepository.html | 8 +-
.../repository/WaveformPickRepository.html | 8 +-
.../common/repository/WaveformRepository.html | 8 +-
.../class-use/DetachableJpaRepoImpl.html | 8 +-
.../class-use/DetachableJpaRepository.html | 8 +-
.../class-use/WaveformPickRepository.html | 8 +-
.../class-use/WaveformRepository.html | 8 +-
.../common/repository/package-summary.html | 8 +-
.../coda/common/repository/package-tree.html | 8 +-
.../coda/common/repository/package-use.html | 8 +-
.../coda/common/service/api/BaseService.html | 8 +-
.../coda/common/service/api/Listener.html | 8 +-
.../service/api/NotificationService.html | 8 +-
.../service/api/WaveformPickService.html | 8 +-
.../common/service/api/WaveformService.html | 48 +-
.../service/api/class-use/BaseService.html | 8 +-
.../service/api/class-use/Listener.html | 8 +-
.../api/class-use/NotificationService.html | 8 +-
.../api/class-use/WaveformPickService.html | 8 +-
.../api/class-use/WaveformService.html | 8 +-
.../common/service/api/package-summary.html | 8 +-
.../coda/common/service/api/package-tree.html | 8 +-
.../coda/common/service/api/package-use.html | 8 +-
.../service/impl/NotificationServiceImpl.html | 10 +-
.../service/impl/WaveformPickServiceImpl.html | 10 +-
.../service/impl/WaveformServiceImpl.html | 66 +-
.../class-use/NotificationServiceImpl.html | 8 +-
.../class-use/WaveformPickServiceImpl.html | 8 +-
.../impl/class-use/WaveformServiceImpl.html | 8 +-
.../common/service/impl/package-summary.html | 8 +-
.../common/service/impl/package-tree.html | 8 +-
.../coda/common/service/impl/package-use.html | 8 +-
.../common/service/util/MetadataUtils.html | 10 +-
.../util/WaveformToTimeSeriesConverter.html | 10 +-
.../common/service/util/WaveformUtils.html | 10 +-
.../service/util/class-use/MetadataUtils.html | 8 +-
.../WaveformToTimeSeriesConverter.html | 8 +-
.../service/util/class-use/WaveformUtils.html | 8 +-
.../common/service/util/package-summary.html | 8 +-
.../common/service/util/package-tree.html | 8 +-
.../coda/common/service/util/package-use.html | 8 +-
.../coda/common/util/NumberFormatFactory.html | 10 +-
.../util/class-use/NumberFormatFactory.html | 8 +-
.../coda/common/util/package-summary.html | 8 +-
.../apps/coda/common/util/package-tree.html | 8 +-
.../apps/coda/common/util/package-use.html | 8 +-
.../web/EnvelopeJsonController.html | 10 +-
.../web/EnvelopeParamsJsonController.html | 10 +-
.../web/class-use/EnvelopeJsonController.html | 8 +-
.../EnvelopeParamsJsonController.html | 8 +-
.../application/web/package-summary.html | 8 +-
.../application/web/package-tree.html | 8 +-
.../envelope/application/web/package-use.html | 8 +-
.../envelope/gui/EnvelopeGuiController.html | 10 +-
.../envelope/gui/EnvelopeParamsPorter.html | 10 +-
.../gui/LoadRatioEventsGuiController.html | 10 +-
.../envelope/gui/LoadRatioEventsJSON.html | 10 +-
.../gui/class-use/EnvelopeGuiController.html | 11 +-
.../gui/class-use/EnvelopeParamsPorter.html | 8 +-
.../LoadRatioEventsGuiController.html | 11 +-
.../gui/class-use/LoadRatioEventsJSON.html | 8 +-
.../controllers/EnvelopeParamsController.html | 10 +-
.../WaveformLoadingController.html | 10 +-
.../class-use/EnvelopeParamsController.html | 8 +-
.../class-use/WaveformLoadingController.html | 8 +-
.../gui/controllers/package-summary.html | 8 +-
.../gui/controllers/package-tree.html | 8 +-
.../envelope/gui/controllers/package-use.html | 8 +-
.../envelope/gui/data/api/EnvelopeClient.html | 8 +-
.../gui/data/api/EnvelopeParamsClient.html | 8 +-
.../data/api/class-use/EnvelopeClient.html | 8 +-
.../api/class-use/EnvelopeParamsClient.html | 8 +-
.../gui/data/api/package-summary.html | 8 +-
.../envelope/gui/data/api/package-tree.html | 8 +-
.../envelope/gui/data/api/package-use.html | 8 +-
.../data/client/EnvelopeParamsWebClient.html | 10 +-
.../gui/data/client/EnvelopeWebClient.html | 10 +-
.../class-use/EnvelopeParamsWebClient.html | 8 +-
.../client/class-use/EnvelopeWebClient.html | 8 +-
.../gui/data/client/package-summary.html | 8 +-
.../gui/data/client/package-tree.html | 8 +-
.../envelope/gui/data/client/package-use.html | 8 +-
.../EnvelopeJobConfigLoadCompleteEvent.html | 10 +-
.../EnvelopeJobConfigLoadCompleteEvent.html | 8 +-
.../envelope/gui/events/package-summary.html | 8 +-
.../envelope/gui/events/package-tree.html | 8 +-
.../coda/envelope/gui/events/package-use.html | 8 +-
.../coda/envelope/gui/package-summary.html | 8 +-
.../apps/coda/envelope/gui/package-tree.html | 8 +-
.../apps/coda/envelope/gui/package-use.html | 8 +-
...Default14BandEnvelopeJobConfiguration.html | 10 +-
.../model/domain/EnvelopeBandParameters.html | 10 +-
.../envelope/model/domain/EnvelopeJob.html | 16 +-
.../domain/EnvelopeJobConfiguration.html | 10 +-
.../envelope/model/domain/SpacingType.html | 12 +-
...Default14BandEnvelopeJobConfiguration.html | 8 +-
.../class-use/EnvelopeBandParameters.html | 8 +-
.../model/domain/class-use/EnvelopeJob.html | 8 +-
.../class-use/EnvelopeJobConfiguration.html | 8 +-
.../model/domain/class-use/SpacingType.html | 8 +-
.../model/domain/package-summary.html | 8 +-
.../envelope/model/domain/package-tree.html | 8 +-
.../envelope/model/domain/package-use.html | 8 +-
.../service/api/EnvelopeCreationService.html | 8 +-
.../service/api/EnvelopeParamsService.html | 8 +-
.../envelope/service/api/WaveformStacker.html | 8 +-
.../class-use/EnvelopeCreationService.html | 8 +-
.../api/class-use/EnvelopeParamsService.html | 8 +-
.../api/class-use/WaveformStacker.html | 8 +-
.../envelope/service/api/package-summary.html | 8 +-
.../envelope/service/api/package-tree.html | 8 +-
.../envelope/service/api/package-use.html | 8 +-
.../impl/EnvelopeCreationServiceImpl.html | 10 +-
.../impl/EnvelopeParamsServiceImpl.html | 10 +-
.../service/impl/EnvelopeStacker.html | 10 +-
.../EnvelopeCreationServiceImpl.html | 8 +-
.../class-use/EnvelopeParamsServiceImpl.html | 8 +-
.../impl/class-use/EnvelopeStacker.html | 8 +-
.../service/impl/package-summary.html | 8 +-
.../envelope/service/impl/package-tree.html | 8 +-
.../envelope/service/impl/package-use.html | 8 +-
.../data/client/EnvelopeLocalClient.html | 10 +-
.../client/EnvelopeParamsLocalClient.html | 10 +-
.../client/class-use/EnvelopeLocalClient.html | 8 +-
.../class-use/EnvelopeParamsLocalClient.html | 8 +-
.../data/client/package-summary.html | 8 +-
.../standalone/data/client/package-tree.html | 8 +-
.../standalone/data/client/package-use.html | 8 +-
.../coda/envelope/util/BandGenerator.html | 8 +-
.../envelope/util/LinearBandGenerator.html | 10 +-
.../coda/envelope/util/LogBandGenerator.html | 10 +-
.../util/class-use/BandGenerator.html | 8 +-
.../util/class-use/LinearBandGenerator.html | 8 +-
.../util/class-use/LogBandGenerator.html | 8 +-
.../coda/envelope/util/package-summary.html | 8 +-
.../apps/coda/envelope/util/package-tree.html | 8 +-
.../apps/coda/envelope/util/package-use.html | 8 +-
.../apps/coda/spectra/SpectraApplication.html | 10 +-
.../spectra/class-use/SpectraApplication.html | 8 +-
.../gui/RatioStatusProgressListener.html | 10 +-
.../gui/SpectraRatioGuiController.html | 16 +-
.../RatioStatusProgressListener.html | 8 +-
.../class-use/SpectraRatioGuiController.html | 11 +-
.../gui/events/RatioSegmentChangeEvent.html | 308 +++++
.../class-use/RatioSegmentChangeEvent.html | 150 +++
.../spectra/gui/events/package-summary.html | 168 +++
.../coda/spectra/gui/events/package-tree.html | 165 +++
.../coda/spectra/gui/events/package-use.html | 150 +++
.../coda/spectra/gui/package-summary.html | 8 +-
.../apps/coda/spectra/gui/package-tree.html | 8 +-
.../apps/coda/spectra/gui/package-use.html | 8 +-
.../model/domain/MomentCornerEstimate.html | 16 +-
.../spectra/model/domain/RatioEventData.html | 10 +-
.../model/domain/RatioEventStationData.html | 10 +-
.../model/domain/SpectraEvent.Fraction.html | 12 +-
.../spectra/model/domain/SpectraEvent.html | 10 +-
.../model/domain/SpectraRatioMeasurement.html | 16 +-
.../domain/SpectraRatioMeasurementJob.html | 10 +-
.../model/domain/SpectraRatioPairDetails.html | 130 +-
.../SpectraRatioPairDetailsMetadata.html | 634 +++++++++
.../SpectraRatioPairDetailsMetadataImpl.html | 1173 +++++++++++++++++
.../SpectraRatioPairInversionResult.html | 366 ++++-
.../SpectraRatioPairInversionResultJoint.html | 366 ++++-
.../model/domain/SpectraRatiosReport.html | 16 +-
.../class-use/MomentCornerEstimate.html | 54 +-
.../domain/class-use/RatioEventData.html | 8 +-
.../class-use/RatioEventStationData.html | 8 +-
.../class-use/SpectraEvent.Fraction.html | 8 +-
.../model/domain/class-use/SpectraEvent.html | 8 +-
.../class-use/SpectraRatioMeasurement.html | 8 +-
.../class-use/SpectraRatioMeasurementJob.html | 8 +-
.../class-use/SpectraRatioPairDetails.html | 274 +++-
.../SpectraRatioPairDetailsMetadata.html | 685 ++++++++++
.../SpectraRatioPairDetailsMetadataImpl.html | 150 +++
.../SpectraRatioPairInversionResult.html | 48 +-
.../SpectraRatioPairInversionResultJoint.html | 48 +-
.../domain/class-use/SpectraRatiosReport.html | 8 +-
.../model/domain/messaging/EventPair.html | 16 +-
.../SpectraRatioPairChangeEvent.html | 16 +-
.../messaging/SpectraRatiosReportDTO.html | 16 +-
.../domain/messaging/class-use/EventPair.html | 53 +-
.../SpectraRatioPairChangeEvent.html | 8 +-
.../class-use/SpectraRatiosReportDTO.html | 8 +-
.../domain/messaging/package-summary.html | 8 +-
.../model/domain/messaging/package-tree.html | 8 +-
.../model/domain/messaging/package-use.html | 8 +-
.../spectra/model/domain/package-summary.html | 31 +-
.../spectra/model/domain/package-tree.html | 15 +-
.../spectra/model/domain/package-use.html | 149 ++-
.../domain/util/SpectraRatioPairOperator.html | 172 ++-
.../util/SpectraRatiosReportByEventPair.html | 10 +-
.../class-use/SpectraRatioPairOperator.html | 47 +-
.../SpectraRatiosReportByEventPair.html | 8 +-
.../model/domain/util/package-summary.html | 8 +-
.../model/domain/util/package-tree.html | 8 +-
.../model/domain/util/package-use.html | 29 +-
.../apps/coda/spectra/package-summary.html | 8 +-
.../gnem/apps/coda/spectra/package-tree.html | 8 +-
.../gnem/apps/coda/spectra/package-use.html | 8 +-
.../standalone/SpectraRatioStandalone.html | 10 +-
.../class-use/SpectraRatioStandalone.html | 8 +-
.../spectra/standalone/package-summary.html | 8 +-
.../coda/spectra/standalone/package-tree.html | 8 +-
.../coda/spectra/standalone/package-use.html | 8 +-
.../resources/static/javadoc/help-doc.html | 8 +-
.../resources/static/javadoc/index-all.html | 727 +++++++++-
.../main/resources/static/javadoc/index.html | 174 +--
.../static/javadoc/jquery/jquery-ui.min.css | 2 +-
.../static/javadoc/jquery/jquery-ui.min.js | 4 +-
.../resources/static/javadoc/legal/jquery.md | 72 +
.../static/javadoc/legal/jqueryUI.md | 49 +
.../static/javadoc/legal/jqueryUI/index.html | 2 +-
.../resources/static/javadoc/legal/jszip.md | 653 +++++++++
.../resources/static/javadoc/legal/pako.md | 45 +
.../gnem/core/geom/CartesianCoordinate.html | 16 +-
.../llnl/gnem/core/geom/Coordinate.html | 8 +-
.../core/geom/DoubleValuedCoordinate.html | 16 +-
.../llnl/gnem/core/geom/ECEFCoordinate.html | 10 +-
.../gnem/core/geom/GeographicCoordinate.html | 16 +-
.../javadoc/llnl/gnem/core/geom/Location.html | 16 +-
.../llnl/gnem/core/geom/NEDCoordinate.html | 10 +-
.../geom/class-use/CartesianCoordinate.html | 8 +-
.../gnem/core/geom/class-use/Coordinate.html | 8 +-
.../class-use/DoubleValuedCoordinate.html | 8 +-
.../core/geom/class-use/ECEFCoordinate.html | 8 +-
.../geom/class-use/GeographicCoordinate.html | 8 +-
.../gnem/core/geom/class-use/Location.html | 8 +-
.../core/geom/class-use/NEDCoordinate.html | 8 +-
.../llnl/gnem/core/geom/package-summary.html | 8 +-
.../llnl/gnem/core/geom/package-tree.html | 8 +-
.../llnl/gnem/core/geom/package-use.html | 8 +-
.../gui/plotting/api/Axis.TickFormat.html | 12 +-
.../gnem/core/gui/plotting/api/Axis.Type.html | 12 +-
.../llnl/gnem/core/gui/plotting/api/Axis.html | 8 +-
.../core/gui/plotting/api/AxisLimits.html | 16 +-
.../gnem/core/gui/plotting/api/BasicPlot.html | 8 +-
.../gnem/core/gui/plotting/api/ColorMaps.html | 12 +-
.../gnem/core/gui/plotting/api/FillModes.html | 459 +++++++
.../core/gui/plotting/api/HoverModes.html | 500 +++++++
.../llnl/gnem/core/gui/plotting/api/Line.html | 230 +++-
.../core/gui/plotting/api/LineStyles.html | 12 +-
.../core/gui/plotting/api/ObjectGroup.html | 578 ++++++++
.../core/gui/plotting/api/PlotFactory.html | 64 +-
.../core/gui/plotting/api/PlotLayout.html | 12 +-
.../core/gui/plotting/api/PlotObject.html | 8 +-
.../core/gui/plotting/api/PlottingUtils.html | 10 +-
.../gnem/core/gui/plotting/api/Rectangle.html | 209 ++-
.../gnem/core/gui/plotting/api/Symbol.html | 64 +-
.../core/gui/plotting/api/SymbolStyles.html | 12 +-
.../gnem/core/gui/plotting/api/Title.html | 8 +-
.../core/gui/plotting/api/VerticalLine.html | 99 +-
.../api/class-use/Axis.TickFormat.html | 8 +-
.../gui/plotting/api/class-use/Axis.Type.html | 8 +-
.../core/gui/plotting/api/class-use/Axis.html | 8 +-
.../plotting/api/class-use/AxisLimits.html | 8 +-
.../gui/plotting/api/class-use/BasicPlot.html | 48 +-
.../gui/plotting/api/class-use/ColorMaps.html | 8 +-
.../gui/plotting/api/class-use/FillModes.html | 275 ++++
.../plotting/api/class-use/HoverModes.html | 275 ++++
.../core/gui/plotting/api/class-use/Line.html | 37 +-
.../plotting/api/class-use/LineStyles.html | 48 +-
.../plotting/api/class-use/ObjectGroup.html | 357 +++++
.../plotting/api/class-use/PlotFactory.html | 33 +-
.../plotting/api/class-use/PlotLayout.html | 8 +-
.../plotting/api/class-use/PlotObject.html | 241 +++-
.../plotting/api/class-use/PlottingUtils.html | 8 +-
.../gui/plotting/api/class-use/Rectangle.html | 49 +-
.../gui/plotting/api/class-use/Symbol.html | 8 +-
.../plotting/api/class-use/SymbolStyles.html | 8 +-
.../gui/plotting/api/class-use/Title.html | 8 +-
.../plotting/api/class-use/VerticalLine.html | 21 +-
.../gui/plotting/api/package-summary.html | 29 +-
.../core/gui/plotting/api/package-tree.html | 11 +-
.../core/gui/plotting/api/package-use.html | 68 +-
.../gui/plotting/events/PlotAxisChange.html | 16 +-
.../gui/plotting/events/PlotObjectClick.html | 10 +-
.../gui/plotting/events/PlotShapeMove.html | 16 +-
.../events/class-use/PlotAxisChange.html | 8 +-
.../events/class-use/PlotObjectClick.html | 8 +-
.../events/class-use/PlotShapeMove.html | 8 +-
.../gui/plotting/events/package-summary.html | 8 +-
.../gui/plotting/events/package-tree.html | 8 +-
.../core/gui/plotting/events/package-use.html | 8 +-
.../core/gui/plotting/fx/utils/FxUtils.html | 10 +-
.../plotting/fx/utils/MouseEventHelpers.html | 10 +-
.../plotting/fx/utils/class-use/FxUtils.html | 8 +-
.../fx/utils/class-use/MouseEventHelpers.html | 8 +-
.../plotting/fx/utils/package-summary.html | 8 +-
.../gui/plotting/fx/utils/package-tree.html | 8 +-
.../gui/plotting/fx/utils/package-use.html | 8 +-
.../core/gui/plotting/plotly/BasicAxis.html | 10 +-
.../core/gui/plotting/plotly/BasicLine.html | 362 ++++-
.../gui/plotting/plotly/BasicObjectGroup.html | 787 +++++++++++
.../core/gui/plotting/plotly/BasicSymbol.html | 119 +-
.../core/gui/plotting/plotly/BasicTitle.html | 10 +-
.../core/gui/plotting/plotly/PlotData.html | 72 +-
.../gui/plotting/plotly/PlotObjectData.html | 162 ++-
.../core/gui/plotting/plotly/PlotPoints.html | 10 +-
.../gui/plotting/plotly/PlotTrace.Style.html | 12 +-
.../core/gui/plotting/plotly/PlotTrace.html | 10 +-
.../core/gui/plotting/plotly/PlotlyPlot.html | 32 +-
.../plotting/plotly/PlotlyWaveformPlot.html | 12 +-
.../plotting/plotly/class-use/BasicAxis.html | 8 +-
.../plotting/plotly/class-use/BasicLine.html | 8 +-
.../plotly/class-use/BasicObjectGroup.html | 150 +++
.../plotly/class-use/BasicSymbol.html | 52 +-
.../plotting/plotly/class-use/BasicTitle.html | 8 +-
.../plotting/plotly/class-use/PlotData.html | 8 +-
.../plotly/class-use/PlotObjectData.html | 8 +-
.../plotting/plotly/class-use/PlotPoints.html | 8 +-
.../plotly/class-use/PlotTrace.Style.html | 8 +-
.../plotting/plotly/class-use/PlotTrace.html | 8 +-
.../plotting/plotly/class-use/PlotlyPlot.html | 8 +-
.../plotly/class-use/PlotlyWaveformPlot.html | 8 +-
.../gui/plotting/plotly/package-summary.html | 26 +-
.../gui/plotting/plotly/package-tree.html | 9 +-
.../core/gui/plotting/plotly/package-use.html | 20 +-
.../llnl/gnem/core/io/AbstractDataSource.html | 10 +-
.../javadoc/llnl/gnem/core/io/DataSource.html | 8 +-
.../llnl/gnem/core/io/FileDataSource.html | 10 +-
.../javadoc/llnl/gnem/core/io/SAC/Iztype.html | 14 +-
.../llnl/gnem/core/io/SAC/SACFileReader.html | 10 +-
.../llnl/gnem/core/io/SAC/SACHeader.html | 14 +-
.../gnem/core/io/SAC/class-use/Iztype.html | 8 +-
.../core/io/SAC/class-use/SACFileReader.html | 8 +-
.../gnem/core/io/SAC/class-use/SACHeader.html | 8 +-
.../gnem/core/io/SAC/package-summary.html | 8 +-
.../llnl/gnem/core/io/SAC/package-tree.html | 8 +-
.../llnl/gnem/core/io/SAC/package-use.html | 8 +-
.../core/io/class-use/AbstractDataSource.html | 8 +-
.../gnem/core/io/class-use/DataSource.html | 8 +-
.../core/io/class-use/FileDataSource.html | 8 +-
.../llnl/gnem/core/io/package-summary.html | 8 +-
.../llnl/gnem/core/io/package-tree.html | 8 +-
.../llnl/gnem/core/io/package-use.html | 8 +-
.../llnl/gnem/core/metadata/BandCode.html | 12 +-
.../llnl/gnem/core/metadata/Channel.html | 10 +-
.../gnem/core/metadata/InstrumentCode.html | 12 +-
.../gnem/core/metadata/InstrumentType.html | 12 +-
.../gnem/core/metadata/OrientationCode.html | 14 +-
.../core/metadata/class-use/BandCode.html | 8 +-
.../gnem/core/metadata/class-use/Channel.html | 8 +-
.../metadata/class-use/InstrumentCode.html | 8 +-
.../metadata/class-use/InstrumentType.html | 8 +-
.../metadata/class-use/OrientationCode.html | 8 +-
.../gnem/core/metadata/package-summary.html | 8 +-
.../llnl/gnem/core/metadata/package-tree.html | 8 +-
.../llnl/gnem/core/metadata/package-use.html | 8 +-
.../llnl/gnem/core/polygon/BasePolygon.html | 10 +-
.../llnl/gnem/core/polygon/BinarySearch.html | 10 +-
.../gnem/core/polygon/CartesianPolygon.html | 10 +-
.../llnl/gnem/core/polygon/Polygon.html | 10 +-
.../llnl/gnem/core/polygon/PolygonSet.html | 12 +-
.../gnem/core/polygon/PolygonSetType.html | 12 +-
.../gnem/core/polygon/PolygonSetView.html | 8 +-
.../llnl/gnem/core/polygon/SequenceNames.html | 10 +-
.../llnl/gnem/core/polygon/TableNames.html | 10 +-
.../llnl/gnem/core/polygon/Vertex.html | 16 +-
.../core/polygon/class-use/BasePolygon.html | 8 +-
.../core/polygon/class-use/BinarySearch.html | 8 +-
.../polygon/class-use/CartesianPolygon.html | 8 +-
.../gnem/core/polygon/class-use/Polygon.html | 8 +-
.../core/polygon/class-use/PolygonSet.html | 8 +-
.../polygon/class-use/PolygonSetType.html | 8 +-
.../polygon/class-use/PolygonSetView.html | 8 +-
.../core/polygon/class-use/SequenceNames.html | 8 +-
.../core/polygon/class-use/TableNames.html | 8 +-
.../gnem/core/polygon/class-use/Vertex.html | 8 +-
.../gnem/core/polygon/class-use/line.html | 8 +-
.../javadoc/llnl/gnem/core/polygon/line.html | 10 +-
.../gnem/core/polygon/package-summary.html | 8 +-
.../llnl/gnem/core/polygon/package-tree.html | 8 +-
.../llnl/gnem/core/polygon/package-use.html | 8 +-
.../gnem/core/signalprocessing/Sequence.html | 10 +-
.../signalprocessing/class-use/Sequence.html | 8 +-
.../extended/SignalProcessingException.html | 12 +-
.../class-use/SignalProcessingException.html | 8 +-
.../extended/package-summary.html | 8 +-
.../extended/package-tree.html | 8 +-
.../extended/package-use.html | 8 +-
.../filter/AnalogSecOrdSect.html | 10 +-
.../filter/ButterworthAnalogFilter.html | 10 +-
.../filter/ButterworthFilter.html | 10 +-
.../signalprocessing/filter/HilbertIIR.html | 10 +-
.../signalprocessing/filter/IIRFilter.html | 10 +-
.../filter/SecOrdSection.html | 10 +-
.../filter/class-use/AnalogSecOrdSect.html | 8 +-
.../class-use/ButterworthAnalogFilter.html | 8 +-
.../filter/class-use/ButterworthFilter.html | 8 +-
.../filter/class-use/HilbertIIR.html | 8 +-
.../filter/class-use/IIRFilter.html | 8 +-
.../filter/class-use/SecOrdSection.html | 8 +-
.../filter/package-summary.html | 8 +-
.../signalprocessing/filter/package-tree.html | 8 +-
.../signalprocessing/filter/package-use.html | 8 +-
.../signalprocessing/package-summary.html | 8 +-
.../core/signalprocessing/package-tree.html | 8 +-
.../core/signalprocessing/package-use.html | 8 +-
.../gnem/core/util/Epoch.TimeResolution.html | 12 +-
.../javadoc/llnl/gnem/core/util/Epoch.html | 18 +-
.../gnem/core/util/FileInputArrayLoader.html | 10 +-
.../gnem/core/util/FileSystemException.html | 12 +-
.../gnem/core/util/FileUtil/FileManager.html | 10 +-
.../gnem/core/util/FileUtil/ListOfFiles.html | 16 +-
.../util/FileUtil/class-use/FileManager.html | 8 +-
.../util/FileUtil/class-use/ListOfFiles.html | 8 +-
.../core/util/FileUtil/package-summary.html | 8 +-
.../gnem/core/util/FileUtil/package-tree.html | 8 +-
.../gnem/core/util/FileUtil/package-use.html | 8 +-
.../util/Geometry/CoordinateTransform.html | 10 +-
.../core/util/Geometry/CoordinateType.html | 12 +-
.../core/util/Geometry/DirectionCosines.html | 10 +-
.../core/util/Geometry/DistanceAzimuth.html | 10 +-
.../core/util/Geometry/ECEFCoordinate.html | 10 +-
.../llnl/gnem/core/util/Geometry/EModel.html | 10 +-
.../core/util/Geometry/ENUCoordinate.html | 12 +-
.../llnl/gnem/core/util/Geometry/Ellipse.html | 10 +-
.../util/Geometry/GeodeticCoordinate.html | 16 +-
.../core/util/Geometry/NEZCoordinate.html | 16 +-
.../Geometry/SphericalDirectionCosines.html | 10 +-
.../class-use/CoordinateTransform.html | 8 +-
.../Geometry/class-use/CoordinateType.html | 8 +-
.../Geometry/class-use/DirectionCosines.html | 8 +-
.../Geometry/class-use/DistanceAzimuth.html | 8 +-
.../Geometry/class-use/ECEFCoordinate.html | 8 +-
.../core/util/Geometry/class-use/EModel.html | 8 +-
.../Geometry/class-use/ENUCoordinate.html | 8 +-
.../core/util/Geometry/class-use/Ellipse.html | 8 +-
.../class-use/GeodeticCoordinate.html | 8 +-
.../Geometry/class-use/NEZCoordinate.html | 8 +-
.../class-use/SphericalDirectionCosines.html | 8 +-
.../core/util/Geometry/package-summary.html | 8 +-
.../gnem/core/util/Geometry/package-tree.html | 8 +-
.../gnem/core/util/Geometry/package-use.html | 8 +-
.../util/MathFunctions/FitnessCriteria.html | 10 +-
.../core/util/MathFunctions/MathFunction.html | 10 +-
.../class-use/FitnessCriteria.html | 8 +-
.../MathFunctions/class-use/MathFunction.html | 8 +-
.../util/MathFunctions/package-summary.html | 8 +-
.../core/util/MathFunctions/package-tree.html | 8 +-
.../core/util/MathFunctions/package-use.html | 8 +-
.../core/util/NumericalList.DoubleList.html | 10 +-
.../core/util/NumericalList.FloatList.html | 10 +-
.../core/util/NumericalList.NumberList.html | 10 +-
.../llnl/gnem/core/util/NumericalList.html | 8 +-
.../javadoc/llnl/gnem/core/util/Pair.html | 12 +-
.../javadoc/llnl/gnem/core/util/PairT.html | 16 +-
.../javadoc/llnl/gnem/core/util/Passband.html | 14 +-
.../gnem/core/util/SeriesMath.Function.html | 8 +-
.../llnl/gnem/core/util/SeriesMath.html | 10 +-
.../llnl/gnem/core/util/StaChanKey.html | 18 +-
.../llnl/gnem/core/util/StreamKey.html | 8 +-
.../javadoc/llnl/gnem/core/util/TimeT.html | 18 +-
.../util/class-use/Epoch.TimeResolution.html | 8 +-
.../llnl/gnem/core/util/class-use/Epoch.html | 8 +-
.../util/class-use/FileInputArrayLoader.html | 8 +-
.../util/class-use/FileSystemException.html | 8 +-
.../class-use/NumericalList.DoubleList.html | 8 +-
.../class-use/NumericalList.FloatList.html | 8 +-
.../class-use/NumericalList.NumberList.html | 8 +-
.../core/util/class-use/NumericalList.html | 8 +-
.../llnl/gnem/core/util/class-use/Pair.html | 8 +-
.../llnl/gnem/core/util/class-use/PairT.html | 8 +-
.../gnem/core/util/class-use/Passband.html | 8 +-
.../util/class-use/SeriesMath.Function.html | 8 +-
.../gnem/core/util/class-use/SeriesMath.html | 8 +-
.../gnem/core/util/class-use/StaChanKey.html | 8 +-
.../gnem/core/util/class-use/StreamKey.html | 8 +-
.../llnl/gnem/core/util/class-use/TimeT.html | 8 +-
.../llnl/gnem/core/util/package-summary.html | 8 +-
.../llnl/gnem/core/util/package-tree.html | 8 +-
.../llnl/gnem/core/util/package-use.html | 8 +-
.../util/randomNumbers/AlgorithmType.html | 12 +-
.../randomNumbers/BaseRandomAlgorithm.html | 10 +-
.../util/randomNumbers/RandomAlgorithm.html | 8 +-
.../randomNumbers/RandomAlgorithmFactory.html | 10 +-
.../core/util/randomNumbers/SimpleRandom.html | 10 +-
.../class-use/AlgorithmType.html | 8 +-
.../class-use/BaseRandomAlgorithm.html | 8 +-
.../class-use/RandomAlgorithm.html | 8 +-
.../class-use/RandomAlgorithmFactory.html | 8 +-
.../randomNumbers/class-use/SimpleRandom.html | 8 +-
.../util/randomNumbers/package-summary.html | 8 +-
.../core/util/randomNumbers/package-tree.html | 8 +-
.../core/util/randomNumbers/package-use.html | 8 +-
.../util/seriesMathHelpers/Discontinuity.html | 12 +-
.../DiscontinuityCollection.html | 12 +-
.../DiscontinuityFinder.html | 10 +-
.../core/util/seriesMathHelpers/Glitch.html | 14 +-
.../core/util/seriesMathHelpers/MinMax.html | 10 +-
.../util/seriesMathHelpers/RollingStats.html | 12 +-
.../SampleStatistics.Order.html | 12 +-
.../seriesMathHelpers/SampleStatistics.html | 12 +-
.../class-use/Discontinuity.html | 8 +-
.../class-use/DiscontinuityCollection.html | 8 +-
.../class-use/DiscontinuityFinder.html | 8 +-
.../seriesMathHelpers/class-use/Glitch.html | 8 +-
.../seriesMathHelpers/class-use/MinMax.html | 8 +-
.../class-use/RollingStats.html | 8 +-
.../class-use/SampleStatistics.Order.html | 8 +-
.../class-use/SampleStatistics.html | 8 +-
.../seriesMathHelpers/package-summary.html | 8 +-
.../util/seriesMathHelpers/package-tree.html | 8 +-
.../util/seriesMathHelpers/package-use.html | 8 +-
.../gnem/core/waveform/io/BinaryData.html | 10 +-
.../core/waveform/io/DoubleBinaryData.html | 10 +-
.../core/waveform/io/FloatBinaryData.html | 10 +-
.../gnem/core/waveform/io/IntBinaryData.html | 10 +-
.../waveform/io/class-use/BinaryData.html | 8 +-
.../io/class-use/DoubleBinaryData.html | 8 +-
.../io/class-use/FloatBinaryData.html | 8 +-
.../waveform/io/class-use/IntBinaryData.html | 8 +-
.../core/waveform/io/package-summary.html | 8 +-
.../gnem/core/waveform/io/package-tree.html | 8 +-
.../gnem/core/waveform/io/package-use.html | 8 +-
.../core/waveform/merge/MergeException.html | 12 +-
.../merge/class-use/MergeException.html | 8 +-
.../core/waveform/merge/package-summary.html | 8 +-
.../core/waveform/merge/package-tree.html | 8 +-
.../gnem/core/waveform/merge/package-use.html | 8 +-
.../responseProcessing/ResponseType.html | 12 +-
.../class-use/ResponseType.html | 8 +-
.../responseProcessing/package-summary.html | 8 +-
.../responseProcessing/package-tree.html | 8 +-
.../responseProcessing/package-use.html | 8 +-
.../waveform/seismogram/SeismicSignal.html | 8 +-
.../TimeSeries.BivariateFunction.html | 8 +-
.../waveform/seismogram/TimeSeries.Norm.html | 12 +-
.../seismogram/TimeSeries.SeriesListener.html | 8 +-
.../core/waveform/seismogram/TimeSeries.html | 20 +-
.../seismogram/class-use/SeismicSignal.html | 8 +-
.../TimeSeries.BivariateFunction.html | 8 +-
.../seismogram/class-use/TimeSeries.Norm.html | 8 +-
.../class-use/TimeSeries.SeriesListener.html | 8 +-
.../seismogram/class-use/TimeSeries.html | 8 +-
.../waveform/seismogram/package-summary.html | 8 +-
.../waveform/seismogram/package-tree.html | 8 +-
.../core/waveform/seismogram/package-use.html | 8 +-
.../static/javadoc/member-search-index.js | 2 +-
.../static/javadoc/member-search-index.zip | Bin 0 -> 73830 bytes
.../static/javadoc/overview-summary.html | 4 +-
.../static/javadoc/overview-tree.html | 24 +-
.../static/javadoc/package-search-index.js | 2 +-
.../static/javadoc/package-search-index.zip | Bin 0 -> 783 bytes
.../static/javadoc/serialized-form.html | 12 +-
.../static/javadoc/type-search-index.js | 2 +-
.../static/javadoc/type-search-index.zip | Bin 0 -> 5195 bytes
.../resources/static/search/search_index.json | 2 +-
.../src/main/resources/static/sitemap.xml | 10 +-
.../src/main/resources/static/sitemap.xml.gz | Bin 198 -> 198 bytes
.../resources/static/swagger/openapi.json | 2 +-
calibration-service/calibration-model/pom.xml | 2 +-
.../domain/RatioOptimizerMeasurement.java | 111 ++
.../SpectraRatioPairDetailsMetadataMixin.java | 21 +
.../domain/mixins/WaveformMetadataMixin.java | 21 +
.../domain/mixins/WaveformPickMixin.java | 21 +
.../coda/common/model/domain/Waveform.java | 2 -
.../model/domain/SpectraRatioPairDetails.java | 88 +-
.../SpectraRatioPairDetailsMetadata.java | 75 ++
.../SpectraRatioPairDetailsMetadataImpl.java | 325 +++++
.../SpectraRatioPairInversionResult.java | 112 ++
.../SpectraRatioPairInversionResultJoint.java | 112 ++
.../model/domain/SpectraRatiosReport.java | 4 +-
.../domain/util/SpectraRatioPairOperator.java | 29 +-
.../calibration-repository/pom.xml | 2 +-
.../SpectraRatioPairDetailsRepository.java | 18 +
.../calibration-service-api/pom.xml | 2 +-
.../api/SpectraRatioPairDetailsService.java | 6 +
.../common/service/api/WaveformService.java | 3 +
.../calibration-service-impl/pom.xml | 2 +-
.../service/impl/SpectraRatioServiceImpl.java | 151 ++-
.../impl/processing/MdacCalculator.java | 10 +-
.../impl/processing/SpectraCalculator.java | 28 +-
.../SpectraRatioInversionCalculator.java | 333 +++--
.../service/impl/WaveformServiceImpl.java | 6 +
.../service/impl/EnvelopeStacker.java | 182 +--
.../processing/SpectraCalculatorTest.java | 2 +-
calibration-service/pom.xml | 2 +-
calibration-standalone/pom.xml | 6 +-
.../data/client/SpectraRatioLocalClient.java | 24 +
docs/img/import_complete.png | Bin 305168 -> 390655 bytes
docs/img/import_stacks.png | Bin 291997 -> 329901 bytes
docs/index.md | 39 +-
docs/javadoc/allclasses-index.html | 1095 +++++++--------
docs/javadoc/allclasses.html | 20 +-
docs/javadoc/allpackages-index.html | 120 +-
docs/javadoc/constant-values.html | 8 +-
docs/javadoc/deprecated-list.html | 8 +-
docs/javadoc/element-list | 2 +
.../calibration/CalibrationApplication.html | 10 +-
.../calibration/ConfigureJacksonMixins.html | 10 +-
.../web/CalibrationJsonController.html | 10 +-
...alibrationNotificationStompController.html | 10 +-
.../web/ConfigurationItemJsonController.html | 10 +-
.../application/web/EventsJsonController.html | 10 +-
.../web/GeometryJsonController.html | 10 +-
...cParametersFiCollectionJsonController.html | 10 +-
.../MdacParametersFiItemJsonController.html | 10 +-
...cParametersPsCollectionJsonController.html | 10 +-
.../MdacParametersPsItemJsonController.html | 10 +-
.../web/MeasuredMwsJsonController.html | 10 +-
.../web/MeasurementJsonController.html | 10 +-
.../web/PeakVelocityJsonController.html | 10 +-
.../web/ReferenceEventsJsonController.html | 10 +-
.../web/ShapeMeasurementJsonController.html | 10 +-
...andParametersCollectionJsonController.html | 10 +-
...uencyBandParametersItemJsonController.html | 10 +-
...andParametersCollectionJsonController.html | 10 +-
.../web/SpectraMeasurementJsonController.html | 10 +-
.../web/SpectraRatioJsonController.html | 69 +-
.../SyntheticCollectionJsonController.html | 10 +-
.../web/SyntheticGenerationRequest.html | 16 +-
.../web/ValidationEventsJsonController.html | 10 +-
.../class-use/CalibrationJsonController.html | 8 +-
...alibrationNotificationStompController.html | 8 +-
.../ConfigurationItemJsonController.html | 8 +-
.../web/class-use/EventsJsonController.html | 8 +-
.../web/class-use/GeometryJsonController.html | 8 +-
...cParametersFiCollectionJsonController.html | 8 +-
.../MdacParametersFiItemJsonController.html | 8 +-
...cParametersPsCollectionJsonController.html | 8 +-
.../MdacParametersPsItemJsonController.html | 8 +-
.../class-use/MeasuredMwsJsonController.html | 8 +-
.../class-use/MeasurementJsonController.html | 8 +-
.../class-use/PeakVelocityJsonController.html | 8 +-
.../ReferenceEventsJsonController.html | 8 +-
.../ShapeMeasurementJsonController.html | 8 +-
...andParametersCollectionJsonController.html | 8 +-
...uencyBandParametersItemJsonController.html | 8 +-
...andParametersCollectionJsonController.html | 8 +-
.../SpectraMeasurementJsonController.html | 8 +-
.../class-use/SpectraRatioJsonController.html | 8 +-
.../SyntheticCollectionJsonController.html | 8 +-
.../class-use/SyntheticGenerationRequest.html | 8 +-
.../ValidationEventsJsonController.html | 8 +-
.../application/web/package-summary.html | 8 +-
.../application/web/package-tree.html | 8 +-
.../application/web/package-use.html | 8 +-
.../class-use/CalibrationApplication.html | 8 +-
.../class-use/ConfigureJacksonMixins.html | 8 +-
.../apps/coda/calibration/gui/AboutText.html | 10 +-
.../coda/calibration/gui/AppProperties.html | 10 +-
.../calibration/gui/CodaGuiController.html | 16 +-
.../gui/GuiApplication.ApplicationMode.html | 12 +-
.../coda/calibration/gui/GuiApplication.html | 10 +-
.../apps/coda/calibration/gui/MapConfig.html | 10 +-
.../gui/RefreshEventTableAction.html | 10 +-
.../coda/calibration/gui/WebfluxConfig.html | 10 +-
.../calibration/gui/class-use/AboutText.html | 8 +-
.../gui/class-use/AppProperties.html | 8 +-
.../gui/class-use/CodaGuiController.html | 8 +-
.../GuiApplication.ApplicationMode.html | 8 +-
.../gui/class-use/GuiApplication.html | 8 +-
.../calibration/gui/class-use/MapConfig.html | 8 +-
.../class-use/RefreshEventTableAction.html | 8 +-
.../gui/class-use/WebfluxConfig.html | 8 +-
.../AbstractMeasurementController.html | 10 +-
.../gui/controllers/AutoCompleteCombo.html | 10 +-
.../BaseSpectraPlotController.html | 10 +-
.../CodaParamLoadingController.html | 10 +-
.../gui/controllers/DataController.html | 10 +-
.../EnvelopeLoadingController.html | 10 +-
.../gui/controllers/EventTabController.html | 10 +-
.../gui/controllers/EventTableController.html | 10 +-
.../controllers/FilterDialogController.html | 10 +-
.../controllers/MapListeningController.html | 8 +-
.../controllers/MeasuredMwsController.html | 10 +-
.../gui/controllers/PathController.html | 10 +-
.../ReferenceEventLoadingController.html | 10 +-
.../controllers/RefreshableController.html | 8 +-
.../ScreenshotEnabledController.html | 8 +-
.../gui/controllers/ShapeController.html | 10 +-
.../gui/controllers/SiteController.html | 10 +-
.../controllers/SpectraPlotController.html | 10 +-
.../SpectraRatioLoadingController.html | 418 ++++++
.../SpectraRatioPlotController.html | 10 +-
.../AbstractMeasurementController.html | 8 +-
.../class-use/AutoCompleteCombo.html | 8 +-
.../class-use/BaseSpectraPlotController.html | 8 +-
.../class-use/CodaParamLoadingController.html | 11 +-
.../controllers/class-use/DataController.html | 11 +-
.../class-use/EnvelopeLoadingController.html | 11 +-
.../class-use/EventTabController.html | 8 +-
.../class-use/EventTableController.html | 11 +-
.../class-use/FilterDialogController.html | 8 +-
.../class-use/MapListeningController.html | 8 +-
.../class-use/MeasuredMwsController.html | 11 +-
.../controllers/class-use/PathController.html | 11 +-
.../ReferenceEventLoadingController.html | 11 +-
.../class-use/RefreshableController.html | 8 +-
.../ScreenshotEnabledController.html | 8 +-
.../class-use/ShapeController.html | 11 +-
.../controllers/class-use/SiteController.html | 11 +-
.../class-use/SpectraPlotController.html | 8 +-
.../SpectraRatioLoadingController.html | 216 +++
.../class-use/SpectraRatioPlotController.html | 8 +-
.../gui/controllers/package-summary.html | 12 +-
.../gui/controllers/package-tree.html | 9 +-
.../gui/controllers/package-use.html | 12 +-
.../parameters/ModelController.html | 10 +-
.../parameters/ParametersController.html | 10 +-
.../ShapeConfigurationController.html | 10 +-
.../parameters/SharedBandController.html | 10 +-
.../parameters/SiteBandController.html | 10 +-
.../VelocityConfigurationController.html | 10 +-
.../parameters/class-use/ModelController.html | 8 +-
.../class-use/ParametersController.html | 11 +-
.../ShapeConfigurationController.html | 8 +-
.../class-use/SharedBandController.html | 8 +-
.../class-use/SiteBandController.html | 8 +-
.../VelocityConfigurationController.html | 8 +-
.../parameters/package-summary.html | 8 +-
.../controllers/parameters/package-tree.html | 8 +-
.../controllers/parameters/package-use.html | 8 +-
.../api/FileToParameterConverter.html | 8 +-
.../api/FileToReferenceEventConverter.html | 8 +-
.../class-use/FileToParameterConverter.html | 8 +-
.../FileToReferenceEventConverter.html | 8 +-
.../gui/converters/api/package-summary.html | 8 +-
.../gui/converters/api/package-tree.html | 8 +-
.../gui/converters/api/package-use.html | 8 +-
.../converters/param/CodaJsonParamLoader.html | 10 +-
.../converters/param/CodaParamFileLoader.html | 10 +-
.../converters/param/MdacFiFileLoader.html | 10 +-
.../converters/param/MdacPsFileLoader.html | 10 +-
.../gui/converters/param/RawGeoJSON.html | 10 +-
.../param/ReferenceEventLoader.html | 10 +-
.../param/SpectralRatioProjectLoader.html | 308 +++++
.../param/class-use/CodaJsonParamLoader.html | 8 +-
.../param/class-use/CodaParamFileLoader.html | 8 +-
.../param/class-use/MdacFiFileLoader.html | 8 +-
.../param/class-use/MdacPsFileLoader.html | 8 +-
.../param/class-use/RawGeoJSON.html | 8 +-
.../param/class-use/ReferenceEventLoader.html | 8 +-
.../class-use/SpectralRatioProjectLoader.html | 150 +++
.../gui/converters/param/package-summary.html | 12 +-
.../gui/converters/param/package-tree.html | 9 +-
.../gui/converters/param/package-use.html | 8 +-
.../converters/ratios/SpectraRatioLoader.html | 309 +++++
.../ratios/class-use/SpectraRatioLoader.html | 195 +++
.../converters/ratios/package-summary.html | 168 +++
.../gui/converters/ratios/package-tree.html | 165 +++
.../gui/converters/ratios/package-use.html | 185 +++
.../sac/CodaStackedSacFileLoader.html | 10 +-
.../class-use/CodaStackedSacFileLoader.html | 8 +-
.../gui/converters/sac/package-summary.html | 8 +-
.../gui/converters/sac/package-tree.html | 8 +-
.../gui/converters/sac/package-use.html | 8 +-
.../gui/data/client/CalibrationWebClient.html | 10 +-
.../gui/data/client/EventWebClient.html | 10 +-
.../gui/data/client/ParameterWebClient.html | 10 +-
.../data/client/PeakVelocityWebClient.html | 10 +-
.../client/ShapeMeasurementWebClient.html | 10 +-
.../data/client/SpectraRatioWebClient.html | 90 +-
.../gui/data/client/SpectraWebClient.html | 10 +-
.../data/client/api/CalibrationClient.html | 8 +-
.../client/api/CalibrationJsonConstants.html | 10 +-
.../gui/data/client/api/EventClient.html | 8 +-
.../gui/data/client/api/ParameterClient.html | 8 +-
.../data/client/api/PeakVelocityClient.html | 8 +-
.../client/api/ShapeMeasurementClient.html | 8 +-
.../gui/data/client/api/SpectraClient.html | 8 +-
.../data/client/api/SpectraRatioClient.html | 72 +-
.../api/class-use/CalibrationClient.html | 11 +-
.../class-use/CalibrationJsonConstants.html | 8 +-
.../client/api/class-use/EventClient.html | 11 +-
.../client/api/class-use/ParameterClient.html | 21 +-
.../api/class-use/PeakVelocityClient.html | 18 +-
.../api/class-use/ShapeMeasurementClient.html | 18 +-
.../client/api/class-use/SpectraClient.html | 14 +-
.../api/class-use/SpectraRatioClient.html | 46 +-
.../gui/data/client/api/package-summary.html | 8 +-
.../gui/data/client/api/package-tree.html | 8 +-
.../gui/data/client/api/package-use.html | 12 +-
.../class-use/CalibrationWebClient.html | 8 +-
.../data/client/class-use/EventWebClient.html | 8 +-
.../client/class-use/ParameterWebClient.html | 8 +-
.../class-use/PeakVelocityWebClient.html | 8 +-
.../class-use/ShapeMeasurementWebClient.html | 8 +-
.../class-use/SpectraRatioWebClient.html | 8 +-
.../client/class-use/SpectraWebClient.html | 8 +-
.../gui/data/client/package-summary.html | 8 +-
.../gui/data/client/package-tree.html | 8 +-
.../gui/data/client/package-use.html | 8 +-
.../data/exporters/JsonTempFileWriter.html | 50 +-
.../gui/data/exporters/ParamExporter.html | 10 +-
.../data/exporters/SpectraRatioExporter.html | 38 +-
.../exporters/SwftStyleParamFileWriter.html | 10 +-
.../VelocityConfigurationFileMixin.html | 10 +-
.../api/MeasuredMwTempFileWriter.html | 8 +-
.../exporters/api/ParamTempFileWriter.html | 8 +-
.../api/ReferenceMwTempFileWriter.html | 8 +-
.../api/SpectraRatioTempFileWriter.html | 38 +-
.../exporters/api/SpectraTempFileWriter.html | 8 +-
.../api/ValidationMwTempFileWriter.html | 8 +-
.../class-use/MeasuredMwTempFileWriter.html | 8 +-
.../api/class-use/ParamTempFileWriter.html | 8 +-
.../class-use/ReferenceMwTempFileWriter.html | 8 +-
.../class-use/SpectraRatioTempFileWriter.html | 8 +-
.../api/class-use/SpectraTempFileWriter.html | 8 +-
.../class-use/ValidationMwTempFileWriter.html | 8 +-
.../data/exporters/api/package-summary.html | 8 +-
.../gui/data/exporters/api/package-tree.html | 8 +-
.../gui/data/exporters/api/package-use.html | 8 +-
.../class-use/JsonTempFileWriter.html | 8 +-
.../exporters/class-use/ParamExporter.html | 11 +-
.../class-use/SpectraRatioExporter.html | 38 +-
.../class-use/SwftStyleParamFileWriter.html | 8 +-
.../VelocityConfigurationFileMixin.html | 8 +-
.../gui/data/exporters/package-summary.html | 8 +-
.../gui/data/exporters/package-tree.html | 8 +-
.../gui/data/exporters/package-use.html | 12 +-
.../events/CalibrationStageShownEvent.html | 10 +-
.../gui/events/MapIconActivationCallback.html | 14 +-
.../gui/events/MapPolygonChangeHandler.html | 14 +-
.../MeasurementsWindowEvent.EventType.html | 12 +-
.../gui/events/MeasurementsWindowEvent.html | 10 +-
.../gui/events/ParametersLoadedEvent.html | 10 +-
.../gui/events/UpdateMapPolygonEvent.html | 10 +-
.../class-use/CalibrationStageShownEvent.html | 8 +-
.../class-use/MapIconActivationCallback.html | 8 +-
.../class-use/MapPolygonChangeHandler.html | 8 +-
.../MeasurementsWindowEvent.EventType.html | 8 +-
.../class-use/MeasurementsWindowEvent.html | 8 +-
.../class-use/ParametersLoadedEvent.html | 8 +-
.../class-use/UpdateMapPolygonEvent.html | 8 +-
.../gui/events/package-summary.html | 8 +-
.../calibration/gui/events/package-tree.html | 8 +-
.../calibration/gui/events/package-use.html | 8 +-
.../coda/calibration/gui/package-summary.html | 8 +-
.../coda/calibration/gui/package-tree.html | 8 +-
.../coda/calibration/gui/package-use.html | 8 +-
.../gui/plotting/BasicWaveformPlot.html | 12 +-
.../plotting/CertLeafletMapController.html | 100 +-
.../gui/plotting/CodaWaveformPlot.html | 12 +-
.../gui/plotting/CodaWaveformPlotManager.html | 20 +-
.../LeafletMap.IconCallbackHandler.html | 10 +-
...afletMap.PolygonChangeCallbackHandler.html | 10 +-
.../calibration/gui/plotting/LeafletMap.html | 48 +-
.../gui/plotting/LeafletMapController.html | 56 +-
.../gui/plotting/LeafletShapeFactory.html | 10 +-
.../gui/plotting/MapPlottingUtilities.html | 10 +-
.../gui/plotting/PlotlyPlotFactory.html | 74 +-
.../gui/plotting/RatioDetailPlot.html | 12 +-
.../RatioMeasurementSpectraPlotManager.html | 40 +-
.../RatioMeasurementWaveformPlotManager.html | 18 +-
.../gui/plotting/RatioMeasurementsGui.html | 10 +-
.../gui/plotting/SpectraPlotManager.html | 10 +-
.../gui/plotting/SpectralPlot.html | 128 +-
.../calibration/gui/plotting/WaveformGui.html | 20 +-
.../plotting/class-use/BasicWaveformPlot.html | 8 +-
.../class-use/CertLeafletMapController.html | 71 +-
.../plotting/class-use/CodaWaveformPlot.html | 8 +-
.../class-use/CodaWaveformPlotManager.html | 8 +-
.../LeafletMap.IconCallbackHandler.html | 8 +-
...afletMap.PolygonChangeCallbackHandler.html | 8 +-
.../gui/plotting/class-use/LeafletMap.html | 8 +-
.../class-use/LeafletMapController.html | 52 +-
.../class-use/LeafletShapeFactory.html | 8 +-
.../class-use/MapPlottingUtilities.html | 24 +-
.../plotting/class-use/PlotlyPlotFactory.html | 8 +-
.../plotting/class-use/RatioDetailPlot.html | 8 +-
.../RatioMeasurementSpectraPlotManager.html | 8 +-
.../RatioMeasurementWaveformPlotManager.html | 8 +-
.../class-use/RatioMeasurementsGui.html | 8 +-
.../class-use/SpectraPlotManager.html | 8 +-
.../gui/plotting/class-use/SpectralPlot.html | 8 +-
.../gui/plotting/class-use/WaveformGui.html | 11 +-
.../gui/plotting/package-summary.html | 8 +-
.../gui/plotting/package-tree.html | 8 +-
.../calibration/gui/plotting/package-use.html | 39 +-
.../gui/util/CalibrationProgressListener.html | 10 +-
.../calibration/gui/util/FileDialogs.html | 10 +-
.../gui/util/TextWrappingTableCell.html | 10 +-
.../gui/util/TimeLatchedGetSet.html | 10 +-
.../CalibrationProgressListener.html | 8 +-
.../gui/util/class-use/FileDialogs.html | 8 +-
.../util/class-use/TextWrappingTableCell.html | 8 +-
.../gui/util/class-use/TimeLatchedGetSet.html | 8 +-
.../calibration/gui/util/package-summary.html | 8 +-
.../calibration/gui/util/package-tree.html | 8 +-
.../calibration/gui/util/package-use.html | 8 +-
.../calibration/model/domain/EnvelopeFit.html | 16 +-
.../model/domain/EventSpectraReport.html | 14 +-
.../model/domain/GeoJsonPolygon.html | 16 +-
...ctedCalibrationShapeFitterConstraints.html | 10 +-
.../model/domain/InjectedVelocityConfig.html | 10 +-
.../model/domain/MdacParametersFI.html | 16 +-
.../model/domain/MdacParametersPS.html | 12 +-
.../model/domain/MeasuredMwDetails.html | 16 +-
.../model/domain/MeasuredMwParameters.html | 16 +-
.../model/domain/MeasuredMwReportByEvent.html | 16 +-
.../model/domain/MeasurementJob.html | 10 +-
.../model/domain/MwOptimizerMeasurement.html | 16 +-
.../domain/PathCalibrationMeasurement.html | 16 +-
.../model/domain/PeakVelocityMeasurement.html | 16 +-
.../PeakVelocityMeasurementMetadata.html | 8 +-
.../domain/RatioOptimizerMeasurement.html | 458 +++++++
.../model/domain/ReferenceMwParameters.html | 16 +-
.../model/domain/ShapeFitterConstraints.html | 16 +-
.../model/domain/ShapeMeasurement.html | 16 +-
.../domain/ShapeMeasurementMetadata.html | 8 +-
.../model/domain/SiteCorrections.html | 10 +-
.../domain/SiteFrequencyBandParameters.html | 16 +-
.../calibration/model/domain/Spectra.html | 16 +-
.../model/domain/SpectraMeasurement.html | 16 +-
.../domain/SpectraMeasurementMetadata.html | 8 +-
.../SpectraMeasurementMetadataImpl.html | 10 +-
.../model/domain/ValidationMwParameters.html | 16 +-
.../model/domain/VelocityConfiguration.html | 16 +-
.../model/domain/WaveformMetadataImpl.html | 10 +-
.../model/domain/class-use/EnvelopeFit.html | 8 +-
.../domain/class-use/EventSpectraReport.html | 8 +-
.../domain/class-use/GeoJsonPolygon.html | 8 +-
...ctedCalibrationShapeFitterConstraints.html | 8 +-
.../class-use/InjectedVelocityConfig.html | 8 +-
.../domain/class-use/MdacParametersFI.html | 8 +-
.../domain/class-use/MdacParametersPS.html | 8 +-
.../domain/class-use/MeasuredMwDetails.html | 43 +-
.../class-use/MeasuredMwParameters.html | 8 +-
.../class-use/MeasuredMwReportByEvent.html | 8 +-
.../domain/class-use/MeasurementJob.html | 8 +-
.../class-use/MwOptimizerMeasurement.html | 8 +-
.../class-use/PathCalibrationMeasurement.html | 8 +-
.../class-use/PeakVelocityMeasurement.html | 8 +-
.../PeakVelocityMeasurementMetadata.html | 8 +-
.../class-use/RatioOptimizerMeasurement.html | 150 +++
.../class-use/ReferenceMwParameters.html | 8 +-
.../class-use/ShapeFitterConstraints.html | 8 +-
.../domain/class-use/ShapeMeasurement.html | 8 +-
.../class-use/ShapeMeasurementMetadata.html | 8 +-
.../domain/class-use/SiteCorrections.html | 8 +-
.../SiteFrequencyBandParameters.html | 8 +-
.../model/domain/class-use/Spectra.html | 8 +-
.../domain/class-use/SpectraMeasurement.html | 8 +-
.../class-use/SpectraMeasurementMetadata.html | 8 +-
.../SpectraMeasurementMetadataImpl.html | 8 +-
.../class-use/ValidationMwParameters.html | 8 +-
.../class-use/VelocityConfiguration.html | 8 +-
.../class-use/WaveformMetadataImpl.html | 8 +-
.../model/domain/mixins/MdacFiFileMixin.html | 10 +-
.../model/domain/mixins/MdacPsFileMixin.html | 10 +-
.../ReferenceMwParametersFileMixin.html | 10 +-
.../ShapeFitterConstraintsFileMixin.html | 10 +-
...haredFrequencyBandParametersFileMixin.html | 10 +-
...haredFrequencyBandParametersJsonMixin.html | 10 +-
.../SiteFrequencyBandParametersFileMixin.html | 10 +-
.../SiteFrequencyBandParametersJsonMixin.html | 10 +-
.../SpectraRatioPairDetailsMetadataMixin.html | 270 ++++
.../ValidationMwParametersFileMixin.html | 10 +-
.../domain/mixins/WaveformMetadataMixin.html | 270 ++++
.../domain/mixins/WaveformPickMixin.html | 270 ++++
.../mixins/class-use/MdacFiFileMixin.html | 8 +-
.../mixins/class-use/MdacPsFileMixin.html | 8 +-
.../ReferenceMwParametersFileMixin.html | 8 +-
.../ShapeFitterConstraintsFileMixin.html | 8 +-
...haredFrequencyBandParametersFileMixin.html | 8 +-
...haredFrequencyBandParametersJsonMixin.html | 8 +-
.../SiteFrequencyBandParametersFileMixin.html | 8 +-
.../SiteFrequencyBandParametersJsonMixin.html | 8 +-
.../SpectraRatioPairDetailsMetadataMixin.html | 150 +++
.../ValidationMwParametersFileMixin.html | 8 +-
.../class-use/WaveformMetadataMixin.html | 150 +++
.../mixins/class-use/WaveformPickMixin.html | 150 +++
.../model/domain/mixins/package-summary.html | 20 +-
.../model/domain/mixins/package-tree.html | 11 +-
.../model/domain/mixins/package-use.html | 8 +-
.../model/domain/package-summary.html | 32 +-
.../model/domain/package-tree.html | 9 +-
.../calibration/model/domain/package-use.html | 41 +-
.../BandParametersDataChangeEvent.html | 16 +-
.../CalibrationStatusEvent.Status.html | 12 +-
.../messaging/CalibrationStatusEvent.html | 16 +-
.../model/messaging/GvDataChangeEvent.html | 16 +-
.../model/messaging/MdacDataChangeEvent.html | 16 +-
.../MeasurementStatusEvent.Status.html | 12 +-
.../messaging/MeasurementStatusEvent.html | 16 +-
.../messaging/RatioMeasurementEvent.html | 16 +-
.../messaging/RatioStatusEvent.Status.html | 12 +-
.../model/messaging/RatioStatusEvent.html | 16 +-
.../ShapeConstraintsChangeEvent.html | 16 +-
.../BandParametersDataChangeEvent.html | 8 +-
.../CalibrationStatusEvent.Status.html | 8 +-
.../class-use/CalibrationStatusEvent.html | 8 +-
.../class-use/GvDataChangeEvent.html | 8 +-
.../class-use/MdacDataChangeEvent.html | 8 +-
.../MeasurementStatusEvent.Status.html | 8 +-
.../class-use/MeasurementStatusEvent.html | 8 +-
.../class-use/RatioMeasurementEvent.html | 8 +-
.../class-use/RatioStatusEvent.Status.html | 8 +-
.../messaging/class-use/RatioStatusEvent.html | 8 +-
.../ShapeConstraintsChangeEvent.html | 8 +-
.../model/messaging/package-summary.html | 8 +-
.../model/messaging/package-tree.html | 8 +-
.../model/messaging/package-use.html | 8 +-
.../coda/calibration/package-summary.html | 8 +-
.../apps/coda/calibration/package-tree.html | 8 +-
.../apps/coda/calibration/package-use.html | 8 +-
...ationShapeFitterConstraintsRepository.html | 8 +-
.../MdacParametersFiRepository.html | 8 +-
.../MdacParametersPsRepository.html | 8 +-
.../repository/MeasuredMwsRepository.html | 8 +-
.../PathCalibrationMeasurementRepository.html | 8 +-
.../PeakVelocityMeasurementRepository.html | 8 +-
.../repository/PolygonRepository.html | 8 +-
.../ReferenceMwParametersRepository.html | 8 +-
.../ShapeMeasurementRepository.html | 8 +-
...aredFrequencyBandParametersRepository.html | 8 +-
...SiteFrequencyBandParametersRepository.html | 8 +-
.../SpectraMeasurementRepository.html | 8 +-
...raRatioJointInversionSampleRepository.html | 8 +-
.../SpectraRatioPairDetailsRepository.html | 107 +-
...traRatioPairInversionSampleRepository.html | 8 +-
.../repository/SyntheticRepository.html | 8 +-
.../ValidationMwParametersRepository.html | 8 +-
.../VelocityConfigurationRepository.html | 8 +-
...ationShapeFitterConstraintsRepository.html | 8 +-
.../class-use/MdacParametersFiRepository.html | 8 +-
.../class-use/MdacParametersPsRepository.html | 8 +-
.../class-use/MeasuredMwsRepository.html | 8 +-
.../PathCalibrationMeasurementRepository.html | 8 +-
.../PeakVelocityMeasurementRepository.html | 8 +-
.../class-use/PolygonRepository.html | 8 +-
.../ReferenceMwParametersRepository.html | 8 +-
.../class-use/ShapeMeasurementRepository.html | 8 +-
...aredFrequencyBandParametersRepository.html | 8 +-
...SiteFrequencyBandParametersRepository.html | 8 +-
.../SpectraMeasurementRepository.html | 8 +-
...raRatioJointInversionSampleRepository.html | 8 +-
.../SpectraRatioPairDetailsRepository.html | 8 +-
...traRatioPairInversionSampleRepository.html | 8 +-
.../class-use/SyntheticRepository.html | 8 +-
.../ValidationMwParametersRepository.html | 8 +-
.../VelocityConfigurationRepository.html | 8 +-
.../repository/package-summary.html | 8 +-
.../calibration/repository/package-tree.html | 8 +-
.../calibration/repository/package-use.html | 8 +-
.../service/api/AutopickingService.html | 8 +-
.../service/api/CalibrationService.html | 8 +-
.../service/api/ConfigurationService.html | 8 +-
.../service/api/DatabaseCleaningService.html | 8 +-
.../service/api/EndTimePicker.html | 8 +-
.../service/api/GeometryService.html | 8 +-
.../service/api/MdacParametersFiService.html | 8 +-
.../service/api/MdacParametersPsService.html | 8 +-
.../service/api/MeasuredMwsService.html | 8 +-
.../PathCalibrationMeasurementService.html | 8 +-
.../service/api/PathCalibrationService.html | 8 +-
.../api/PeakVelocityMeasurementService.html | 8 +-
.../api/ReferenceMwParametersService.html | 8 +-
.../service/api/ShapeCalibrationService.html | 8 +-
.../service/api/ShapeMeasurementService.html | 8 +-
.../SharedFrequencyBandParametersService.html | 8 +-
.../service/api/SiteCalibrationService.html | 8 +-
.../SiteFrequencyBandParametersService.html | 8 +-
.../api/SpectraMeasurementService.html | 8 +-
.../api/SpectraRatioPairDetailsService.html | 56 +-
...pectraRatioPairInversionSampleService.html | 8 +-
.../api/SyntheticCodaGenerationService.html | 8 +-
.../service/api/SyntheticService.html | 8 +-
.../api/ValidationMwParametersService.html | 8 +-
.../api/class-use/AutopickingService.html | 8 +-
.../api/class-use/CalibrationService.html | 8 +-
.../api/class-use/ConfigurationService.html | 8 +-
.../class-use/DatabaseCleaningService.html | 8 +-
.../service/api/class-use/EndTimePicker.html | 8 +-
.../api/class-use/GeometryService.html | 8 +-
.../class-use/MdacParametersFiService.html | 8 +-
.../class-use/MdacParametersPsService.html | 8 +-
.../api/class-use/MeasuredMwsService.html | 8 +-
.../PathCalibrationMeasurementService.html | 8 +-
.../api/class-use/PathCalibrationService.html | 8 +-
.../PeakVelocityMeasurementService.html | 8 +-
.../ReferenceMwParametersService.html | 8 +-
.../class-use/ShapeCalibrationService.html | 8 +-
.../class-use/ShapeMeasurementService.html | 8 +-
.../SharedFrequencyBandParametersService.html | 8 +-
.../api/class-use/SiteCalibrationService.html | 8 +-
.../SiteFrequencyBandParametersService.html | 8 +-
.../class-use/SpectraMeasurementService.html | 8 +-
.../SpectraRatioPairDetailsService.html | 8 +-
...pectraRatioPairInversionSampleService.html | 8 +-
.../SyntheticCodaGenerationService.html | 8 +-
.../api/class-use/SyntheticService.html | 8 +-
.../ValidationMwParametersService.html | 8 +-
.../service/api/package-summary.html | 8 +-
.../calibration/service/api/package-tree.html | 8 +-
.../calibration/service/api/package-use.html | 8 +-
.../service/impl/AutopickingServiceImpl.html | 10 +-
.../service/impl/CalibrationServiceImpl.html | 10 +-
.../service/impl/ConcurrencyUtils.html | 10 +-
.../impl/ConfigurationServiceImpl.html | 10 +-
.../impl/DatabaseCleaningServiceImpl.html | 10 +-
.../service/impl/GeometryServiceImpl.html | 10 +-
.../service/impl/Joint1DPathCorrection.html | 10 +-
.../impl/MdacParametersFiServiceImpl.html | 10 +-
.../impl/MdacParametersPsServiceImpl.html | 10 +-
.../service/impl/MeasuredMwsServiceImpl.html | 10 +-
...PathCalibrationMeasurementServiceImpl.html | 10 +-
.../PeakVelocityMeasurementServiceImpl.html | 10 +-
.../ReferenceMwParametersServiceImpl.html | 10 +-
.../service/impl/ServiceConfig.html | 10 +-
.../impl/ShapeCalibrationServiceImpl.html | 10 +-
.../impl/ShapeMeasurementServiceImpl.html | 10 +-
...redFrequencyBandParametersServiceImpl.html | 10 +-
.../impl/SiteCalibrationServiceImpl.html | 10 +-
...iteFrequencyBandParametersServiceImpl.html | 10 +-
.../impl/SpectraMeasurementServiceImpl.html | 10 +-
.../service/impl/SpectraRatioServiceImpl.html | 85 +-
.../SyntheticCodaGenerationServiceImpl.html | 10 +-
.../service/impl/SyntheticServiceImpl.html | 10 +-
.../ValidationMwParametersServiceImpl.html | 10 +-
.../class-use/AutopickingServiceImpl.html | 8 +-
.../class-use/CalibrationServiceImpl.html | 8 +-
.../impl/class-use/ConcurrencyUtils.html | 8 +-
.../class-use/ConfigurationServiceImpl.html | 8 +-
.../DatabaseCleaningServiceImpl.html | 8 +-
.../impl/class-use/GeometryServiceImpl.html | 8 +-
.../impl/class-use/Joint1DPathCorrection.html | 8 +-
.../MdacParametersFiServiceImpl.html | 8 +-
.../MdacParametersPsServiceImpl.html | 8 +-
.../class-use/MeasuredMwsServiceImpl.html | 8 +-
...PathCalibrationMeasurementServiceImpl.html | 8 +-
.../PeakVelocityMeasurementServiceImpl.html | 8 +-
.../ReferenceMwParametersServiceImpl.html | 8 +-
.../service/impl/class-use/ServiceConfig.html | 8 +-
.../ShapeCalibrationServiceImpl.html | 8 +-
.../ShapeMeasurementServiceImpl.html | 8 +-
...redFrequencyBandParametersServiceImpl.html | 8 +-
.../class-use/SiteCalibrationServiceImpl.html | 8 +-
...iteFrequencyBandParametersServiceImpl.html | 8 +-
.../SpectraMeasurementServiceImpl.html | 8 +-
.../class-use/SpectraRatioServiceImpl.html | 8 +-
.../SyntheticCodaGenerationServiceImpl.html | 8 +-
.../impl/class-use/SyntheticServiceImpl.html | 8 +-
.../ValidationMwParametersServiceImpl.html | 8 +-
.../service/impl/package-summary.html | 8 +-
.../service/impl/package-tree.html | 8 +-
.../calibration/service/impl/package-use.html | 8 +-
.../CalibrationCurveFitter.GridFitter.html | 8 +-
.../processing/CalibrationCurveFitter.html | 10 +-
.../impl/processing/CodaSNREndTimePicker.html | 10 +-
.../service/impl/processing/EnergyInfo.html | 12 +-
.../processing/MaxVelocityCalculator.html | 10 +-
.../impl/processing/MdacCalculator.html | 10 +-
.../processing/MdacCalculatorService.html | 10 +-
.../processing/MwMeasurementInputData.html | 10 +-
.../processing/PathCostFunctionResult.html | 16 +-
.../impl/processing/ShapeCalculator.html | 10 +-
.../impl/processing/SpectraCalculator.html | 14 +-
.../SpectraRatioInversionCalculator.html | 26 +-
.../impl/processing/SyntheticCodaModel.html | 10 +-
.../CalibrationCurveFitter.GridFitter.html | 8 +-
.../class-use/CalibrationCurveFitter.html | 8 +-
.../class-use/CodaSNREndTimePicker.html | 8 +-
.../impl/processing/class-use/EnergyInfo.html | 8 +-
.../class-use/MaxVelocityCalculator.html | 8 +-
.../processing/class-use/MdacCalculator.html | 8 +-
.../class-use/MdacCalculatorService.html | 8 +-
.../class-use/MwMeasurementInputData.html | 8 +-
.../class-use/PathCostFunctionResult.html | 8 +-
.../processing/class-use/ShapeCalculator.html | 8 +-
.../class-use/SpectraCalculator.html | 8 +-
.../SpectraRatioInversionCalculator.html | 8 +-
.../class-use/SyntheticCodaModel.html | 8 +-
.../impl/processing/package-summary.html | 8 +-
.../service/impl/processing/package-tree.html | 8 +-
.../service/impl/processing/package-use.html | 8 +-
.../standalone/CodaCalibrationStandalone.html | 10 +-
.../class-use/CodaCalibrationStandalone.html | 8 +-
.../data/client/CalibrationLocalClient.html | 10 +-
.../data/client/EventLocalClient.html | 10 +-
.../data/client/ParameterLocalClient.html | 10 +-
.../data/client/PeakVelocityLocalClient.html | 10 +-
.../client/ShapeMeasurementLocalClient.html | 10 +-
.../data/client/SpectraLocalClient.html | 10 +-
.../data/client/SpectraRatioLocalClient.html | 90 +-
.../data/client/WaveformLocalClient.html | 10 +-
.../class-use/CalibrationLocalClient.html | 8 +-
.../client/class-use/EventLocalClient.html | 8 +-
.../class-use/ParameterLocalClient.html | 8 +-
.../class-use/PeakVelocityLocalClient.html | 8 +-
.../ShapeMeasurementLocalClient.html | 8 +-
.../client/class-use/SpectraLocalClient.html | 8 +-
.../class-use/SpectraRatioLocalClient.html | 8 +-
.../client/class-use/WaveformLocalClient.html | 8 +-
.../data/client/package-summary.html | 8 +-
.../standalone/data/client/package-tree.html | 8 +-
.../standalone/data/client/package-use.html | 8 +-
.../standalone/package-summary.html | 8 +-
.../calibration/standalone/package-tree.html | 8 +-
.../calibration/standalone/package-use.html | 8 +-
.../application/config/WebSocketConfig.html | 10 +-
.../config/class-use/WebSocketConfig.html | 8 +-
.../application/config/package-summary.html | 8 +-
.../application/config/package-tree.html | 8 +-
.../application/config/package-use.html | 8 +-
.../web/BasicNotificationStompController.html | 10 +-
.../web/TypingMessageTemplate.html | 10 +-
...WaveformPicksCollectionJsonController.html | 10 +-
.../web/WaveformPicksItemJsonController.html | 10 +-
.../WaveformsCollectionJsonController.html | 10 +-
.../web/WaveformsItemJsonController.html | 10 +-
.../BasicNotificationStompController.html | 8 +-
.../web/class-use/TypingMessageTemplate.html | 8 +-
...WaveformPicksCollectionJsonController.html | 8 +-
.../WaveformPicksItemJsonController.html | 8 +-
.../WaveformsCollectionJsonController.html | 8 +-
.../WaveformsItemJsonController.html | 8 +-
.../application/web/package-summary.html | 8 +-
.../common/application/web/package-tree.html | 8 +-
.../common/application/web/package-use.html | 8 +-
.../coda/common/gui/FXMLLoaderBuilder.html | 10 +-
.../coda/common/gui/SimpleGuiPreloader.html | 10 +-
.../apps/coda/common/gui/WebclientConfig.html | 10 +-
.../gui/class-use/FXMLLoaderBuilder.html | 8 +-
.../gui/class-use/SimpleGuiPreloader.html | 8 +-
.../common/gui/class-use/WebclientConfig.html | 8 +-
.../AbstractSeismogramSaveLoadController.html | 10 +-
.../controllers/FailureReportController.html | 10 +-
.../common/gui/controllers/ProgressGui.html | 10 +-
.../AbstractSeismogramSaveLoadController.html | 8 +-
.../class-use/FailureReportController.html | 8 +-
.../controllers/class-use/ProgressGui.html | 8 +-
.../gui/controllers/package-summary.html | 8 +-
.../common/gui/controllers/package-tree.html | 8 +-
.../common/gui/controllers/package-use.html | 8 +-
.../converters/api/CodaFilenameParser.html | 8 +-
.../api/FileToEnvelopeConverter.html | 8 +-
.../api/FileToSeismogramConverter.html | 8 +-
.../api/FileToWaveformConverter.html | 8 +-
.../common/gui/converters/api/StackInfo.html | 10 +-
.../api/class-use/CodaFilenameParser.html | 8 +-
.../class-use/FileToEnvelopeConverter.html | 8 +-
.../class-use/FileToSeismogramConverter.html | 8 +-
.../class-use/FileToWaveformConverter.html | 8 +-
.../converters/api/class-use/StackInfo.html | 8 +-
.../gui/converters/api/package-summary.html | 8 +-
.../gui/converters/api/package-tree.html | 8 +-
.../gui/converters/api/package-use.html | 8 +-
.../sac/CodaFilenameParserImpl.html | 10 +-
.../gui/converters/sac/SacExporter.html | 10 +-
.../common/gui/converters/sac/SacLoader.html | 10 +-
.../sac/class-use/CodaFilenameParserImpl.html | 8 +-
.../converters/sac/class-use/SacExporter.html | 8 +-
.../converters/sac/class-use/SacLoader.html | 8 +-
.../gui/converters/sac/package-summary.html | 8 +-
.../gui/converters/sac/package-tree.html | 8 +-
.../gui/converters/sac/package-use.html | 8 +-
.../gui/data/client/CodaWebClientBuilder.html | 10 +-
.../gui/data/client/EventBusBuilder.html | 10 +-
.../client/EventBusStompSessionHandler.html | 10 +-
.../gui/data/client/WaveformWebClient.html | 10 +-
.../gui/data/client/api/WaveformClient.html | 8 +-
.../client/api/class-use/WaveformClient.html | 21 +-
.../gui/data/client/api/package-summary.html | 8 +-
.../gui/data/client/api/package-tree.html | 8 +-
.../gui/data/client/api/package-use.html | 8 +-
.../class-use/CodaWebClientBuilder.html | 8 +-
.../client/class-use/EventBusBuilder.html | 8 +-
.../EventBusStompSessionHandler.html | 8 +-
.../client/class-use/WaveformWebClient.html | 8 +-
.../gui/data/client/package-summary.html | 8 +-
.../common/gui/data/client/package-tree.html | 8 +-
.../common/gui/data/client/package-use.html | 8 +-
.../gui/events/EnvelopeLoadCompleteEvent.html | 10 +-
.../gui/events/EnvelopeLoadStartingEvent.html | 10 +-
.../gui/events/ShowFailureReportEvent.html | 10 +-
.../gui/events/SocketDisconnectEvent.html | 10 +-
.../gui/events/WaveformSelectionEvent.html | 10 +-
.../class-use/EnvelopeLoadCompleteEvent.html | 8 +-
.../class-use/EnvelopeLoadStartingEvent.html | 8 +-
.../class-use/ShowFailureReportEvent.html | 8 +-
.../class-use/SocketDisconnectEvent.html | 8 +-
.../class-use/WaveformSelectionEvent.html | 8 +-
.../common/gui/events/package-summary.html | 8 +-
.../coda/common/gui/events/package-tree.html | 8 +-
.../coda/common/gui/events/package-use.html | 8 +-
.../apps/coda/common/gui/package-summary.html | 8 +-
.../apps/coda/common/gui/package-tree.html | 8 +-
.../apps/coda/common/gui/package-use.html | 8 +-
.../common/gui/plotting/LabeledPlotPoint.html | 10 +-
.../coda/common/gui/plotting/PlotPoint.html | 16 +-
.../gui/plotting/SymbolStyleMapFactory.html | 10 +-
.../plotting/class-use/LabeledPlotPoint.html | 8 +-
.../gui/plotting/class-use/PlotPoint.html | 11 +-
.../class-use/SymbolStyleMapFactory.html | 11 +-
.../common/gui/plotting/package-summary.html | 8 +-
.../common/gui/plotting/package-tree.html | 8 +-
.../coda/common/gui/plotting/package-use.html | 8 +-
.../common/gui/util/CellBindingUtils.html | 10 +-
.../apps/coda/common/gui/util/ClickUtils.html | 10 +-
.../common/gui/util/CombinedTrustManager.html | 16 +-
.../coda/common/gui/util/CommonGuiUtils.html | 10 +-
.../gui/util/DoubleWrappingEventHandler.html | 10 +-
.../util/EventStaFreqStringComparator.html | 14 +-
.../gui/util/HiddenHeaderTableView.html | 10 +-
.../gui/util/IntegerWrappingEventHandler.html | 10 +-
.../util/MaybeNumericStringComparator.html | 14 +-
.../common/gui/util/NumberFormatFactory.html | 10 +-
.../util/PassFailEventProgressListener.html | 10 +-
.../util/ProgressEventProgressListener.html | 10 +-
.../common/gui/util/ProgressListener.html | 10 +-
.../coda/common/gui/util/ProgressMonitor.html | 12 +-
.../coda/common/gui/util/SnapshotUtils.html | 10 +-
.../apps/coda/common/gui/util/SslUtils.html | 10 +-
.../apps/coda/common/gui/util/TableUtils.html | 10 +-
.../common/gui/util/WrappingEventHandler.html | 10 +-
.../gui/util/class-use/CellBindingUtils.html | 8 +-
.../common/gui/util/class-use/ClickUtils.html | 8 +-
.../util/class-use/CombinedTrustManager.html | 8 +-
.../gui/util/class-use/CommonGuiUtils.html | 8 +-
.../class-use/DoubleWrappingEventHandler.html | 8 +-
.../EventStaFreqStringComparator.html | 8 +-
.../util/class-use/HiddenHeaderTableView.html | 8 +-
.../IntegerWrappingEventHandler.html | 8 +-
.../MaybeNumericStringComparator.html | 8 +-
.../util/class-use/NumberFormatFactory.html | 8 +-
.../PassFailEventProgressListener.html | 8 +-
.../ProgressEventProgressListener.html | 8 +-
.../gui/util/class-use/ProgressListener.html | 8 +-
.../gui/util/class-use/ProgressMonitor.html | 38 +-
.../gui/util/class-use/SnapshotUtils.html | 8 +-
.../common/gui/util/class-use/SslUtils.html | 8 +-
.../common/gui/util/class-use/TableUtils.html | 8 +-
.../util/class-use/WrappingEventHandler.html | 8 +-
.../coda/common/gui/util/package-summary.html | 8 +-
.../coda/common/gui/util/package-tree.html | 8 +-
.../coda/common/gui/util/package-use.html | 12 +-
.../apps/coda/common/mapping/LeafletIcon.html | 10 +-
.../apps/coda/common/mapping/LeafletLine.html | 16 +-
.../mapping/MAP_CALLBACK_EVENT_TYPE.html | 12 +-
.../coda/common/mapping/MapCallbackEvent.html | 10 +-
.../coda/common/mapping/MapProperties.html | 10 +-
.../common/mapping/StaticHtmlLeafletMap.html | 10 +-
.../common/mapping/WMSLayerDescriptor.html | 16 +-
.../apps/coda/common/mapping/api/GeoBox.html | 10 +-
.../apps/coda/common/mapping/api/GeoMap.html | 38 +-
.../coda/common/mapping/api/GeoShape.html | 8 +-
.../common/mapping/api/GeoShapeFactory.html | 8 +-
.../common/mapping/api/Icon.IconStyles.html | 12 +-
.../common/mapping/api/Icon.IconTypes.html | 12 +-
.../apps/coda/common/mapping/api/Icon.html | 8 +-
.../apps/coda/common/mapping/api/Line.html | 8 +-
.../coda/common/mapping/api/Location.html | 16 +-
.../common/mapping/api/class-use/GeoBox.html | 8 +-
.../common/mapping/api/class-use/GeoMap.html | 36 +-
.../mapping/api/class-use/GeoShape.html | 8 +-
.../api/class-use/GeoShapeFactory.html | 8 +-
.../api/class-use/Icon.IconStyles.html | 8 +-
.../mapping/api/class-use/Icon.IconTypes.html | 8 +-
.../common/mapping/api/class-use/Icon.html | 44 +-
.../common/mapping/api/class-use/Line.html | 8 +-
.../mapping/api/class-use/Location.html | 8 +-
.../common/mapping/api/package-summary.html | 8 +-
.../coda/common/mapping/api/package-tree.html | 8 +-
.../coda/common/mapping/api/package-use.html | 8 +-
.../common/mapping/class-use/LeafletIcon.html | 8 +-
.../common/mapping/class-use/LeafletLine.html | 8 +-
.../class-use/MAP_CALLBACK_EVENT_TYPE.html | 8 +-
.../mapping/class-use/MapCallbackEvent.html | 8 +-
.../mapping/class-use/MapProperties.html | 8 +-
.../class-use/StaticHtmlLeafletMap.html | 8 +-
.../mapping/class-use/WMSLayerDescriptor.html | 8 +-
.../coda/common/mapping/package-summary.html | 8 +-
.../coda/common/mapping/package-tree.html | 8 +-
.../apps/coda/common/mapping/package-use.html | 8 +-
.../mapping/utils/LeafletToJavascript.html | 10 +-
.../utils/class-use/LeafletToJavascript.html | 8 +-
.../common/mapping/utils/package-summary.html | 8 +-
.../common/mapping/utils/package-tree.html | 8 +-
.../common/mapping/utils/package-use.html | 8 +-
.../apps/coda/common/model/domain/Event.html | 16 +-
.../common/model/domain/FrequencyBand.html | 18 +-
.../apps/coda/common/model/domain/Pair.html | 16 +-
.../coda/common/model/domain/Project.html | 10 +-
.../domain/SharedFrequencyBandParameters.html | 16 +-
.../coda/common/model/domain/Station.html | 16 +-
.../apps/coda/common/model/domain/Stream.html | 16 +-
.../common/model/domain/SyntheticCoda.html | 16 +-
.../coda/common/model/domain/Waveform.html | 16 +-
.../common/model/domain/WaveformMetadata.html | 8 +-
.../common/model/domain/WaveformPick.html | 16 +-
.../common/model/domain/class-use/Event.html | 28 +-
.../model/domain/class-use/FrequencyBand.html | 15 +-
.../common/model/domain/class-use/Pair.html | 8 +-
.../model/domain/class-use/Project.html | 8 +-
.../SharedFrequencyBandParameters.html | 8 +-
.../model/domain/class-use/Station.html | 73 +-
.../common/model/domain/class-use/Stream.html | 8 +-
.../model/domain/class-use/SyntheticCoda.html | 8 +-
.../model/domain/class-use/Waveform.html | 26 +-
.../domain/class-use/WaveformMetadata.html | 107 +-
.../model/domain/class-use/WaveformPick.html | 8 +-
.../common/model/domain/package-summary.html | 8 +-
.../common/model/domain/package-tree.html | 8 +-
.../coda/common/model/domain/package-use.html | 22 +-
.../common/model/messaging/PassFailEvent.html | 16 +-
.../coda/common/model/messaging/Progress.html | 10 +-
.../common/model/messaging/ProgressEvent.html | 16 +-
.../coda/common/model/messaging/Result.html | 16 +-
.../SpectraMeasurementChangeEvent.html | 16 +-
.../model/messaging/WaveformChangeEvent.html | 16 +-
.../messaging/class-use/PassFailEvent.html | 8 +-
.../model/messaging/class-use/Progress.html | 8 +-
.../messaging/class-use/ProgressEvent.html | 8 +-
.../model/messaging/class-use/Result.html | 71 +-
.../SpectraMeasurementChangeEvent.html | 8 +-
.../class-use/WaveformChangeEvent.html | 8 +-
.../model/messaging/package-summary.html | 8 +-
.../common/model/messaging/package-tree.html | 8 +-
.../common/model/messaging/package-use.html | 49 +-
.../model/test/annotations/GuiTest.html | 8 +-
.../model/test/annotations/IntTest.html | 8 +-
.../test/annotations/class-use/GuiTest.html | 8 +-
.../test/annotations/class-use/IntTest.html | 8 +-
.../test/annotations/package-summary.html | 8 +-
.../model/test/annotations/package-tree.html | 8 +-
.../model/test/annotations/package-use.html | 8 +-
.../apps/coda/common/model/util/Durable.html | 8 +-
.../LightweightIllegalStateException.html | 14 +-
.../common/model/util/MESSAGE_HEADERS.html | 10 +-
.../coda/common/model/util/PICK_TYPES.html | 12 +-
.../coda/common/model/util/SPECTRA_TYPES.html | 12 +-
.../common/model/util/class-use/Durable.html | 8 +-
.../LightweightIllegalStateException.html | 8 +-
.../model/util/class-use/MESSAGE_HEADERS.html | 8 +-
.../model/util/class-use/PICK_TYPES.html | 8 +-
.../model/util/class-use/SPECTRA_TYPES.html | 8 +-
.../common/model/util/package-summary.html | 8 +-
.../coda/common/model/util/package-tree.html | 8 +-
.../coda/common/model/util/package-use.html | 8 +-
.../repository/DetachableJpaRepoImpl.html | 10 +-
.../repository/DetachableJpaRepository.html | 8 +-
.../repository/WaveformPickRepository.html | 8 +-
.../common/repository/WaveformRepository.html | 8 +-
.../class-use/DetachableJpaRepoImpl.html | 8 +-
.../class-use/DetachableJpaRepository.html | 8 +-
.../class-use/WaveformPickRepository.html | 8 +-
.../class-use/WaveformRepository.html | 8 +-
.../common/repository/package-summary.html | 8 +-
.../coda/common/repository/package-tree.html | 8 +-
.../coda/common/repository/package-use.html | 8 +-
.../coda/common/service/api/BaseService.html | 8 +-
.../coda/common/service/api/Listener.html | 8 +-
.../service/api/NotificationService.html | 8 +-
.../service/api/WaveformPickService.html | 8 +-
.../common/service/api/WaveformService.html | 48 +-
.../service/api/class-use/BaseService.html | 8 +-
.../service/api/class-use/Listener.html | 8 +-
.../api/class-use/NotificationService.html | 8 +-
.../api/class-use/WaveformPickService.html | 8 +-
.../api/class-use/WaveformService.html | 8 +-
.../common/service/api/package-summary.html | 8 +-
.../coda/common/service/api/package-tree.html | 8 +-
.../coda/common/service/api/package-use.html | 8 +-
.../service/impl/NotificationServiceImpl.html | 10 +-
.../service/impl/WaveformPickServiceImpl.html | 10 +-
.../service/impl/WaveformServiceImpl.html | 66 +-
.../class-use/NotificationServiceImpl.html | 8 +-
.../class-use/WaveformPickServiceImpl.html | 8 +-
.../impl/class-use/WaveformServiceImpl.html | 8 +-
.../common/service/impl/package-summary.html | 8 +-
.../common/service/impl/package-tree.html | 8 +-
.../coda/common/service/impl/package-use.html | 8 +-
.../common/service/util/MetadataUtils.html | 10 +-
.../util/WaveformToTimeSeriesConverter.html | 10 +-
.../common/service/util/WaveformUtils.html | 10 +-
.../service/util/class-use/MetadataUtils.html | 8 +-
.../WaveformToTimeSeriesConverter.html | 8 +-
.../service/util/class-use/WaveformUtils.html | 8 +-
.../common/service/util/package-summary.html | 8 +-
.../common/service/util/package-tree.html | 8 +-
.../coda/common/service/util/package-use.html | 8 +-
.../coda/common/util/NumberFormatFactory.html | 10 +-
.../util/class-use/NumberFormatFactory.html | 8 +-
.../coda/common/util/package-summary.html | 8 +-
.../apps/coda/common/util/package-tree.html | 8 +-
.../apps/coda/common/util/package-use.html | 8 +-
.../web/EnvelopeJsonController.html | 10 +-
.../web/EnvelopeParamsJsonController.html | 10 +-
.../web/class-use/EnvelopeJsonController.html | 8 +-
.../EnvelopeParamsJsonController.html | 8 +-
.../application/web/package-summary.html | 8 +-
.../application/web/package-tree.html | 8 +-
.../envelope/application/web/package-use.html | 8 +-
.../envelope/gui/EnvelopeGuiController.html | 10 +-
.../envelope/gui/EnvelopeParamsPorter.html | 10 +-
.../gui/LoadRatioEventsGuiController.html | 10 +-
.../envelope/gui/LoadRatioEventsJSON.html | 10 +-
.../gui/class-use/EnvelopeGuiController.html | 11 +-
.../gui/class-use/EnvelopeParamsPorter.html | 8 +-
.../LoadRatioEventsGuiController.html | 11 +-
.../gui/class-use/LoadRatioEventsJSON.html | 8 +-
.../controllers/EnvelopeParamsController.html | 10 +-
.../WaveformLoadingController.html | 10 +-
.../class-use/EnvelopeParamsController.html | 8 +-
.../class-use/WaveformLoadingController.html | 8 +-
.../gui/controllers/package-summary.html | 8 +-
.../gui/controllers/package-tree.html | 8 +-
.../envelope/gui/controllers/package-use.html | 8 +-
.../envelope/gui/data/api/EnvelopeClient.html | 8 +-
.../gui/data/api/EnvelopeParamsClient.html | 8 +-
.../data/api/class-use/EnvelopeClient.html | 8 +-
.../api/class-use/EnvelopeParamsClient.html | 8 +-
.../gui/data/api/package-summary.html | 8 +-
.../envelope/gui/data/api/package-tree.html | 8 +-
.../envelope/gui/data/api/package-use.html | 8 +-
.../data/client/EnvelopeParamsWebClient.html | 10 +-
.../gui/data/client/EnvelopeWebClient.html | 10 +-
.../class-use/EnvelopeParamsWebClient.html | 8 +-
.../client/class-use/EnvelopeWebClient.html | 8 +-
.../gui/data/client/package-summary.html | 8 +-
.../gui/data/client/package-tree.html | 8 +-
.../envelope/gui/data/client/package-use.html | 8 +-
.../EnvelopeJobConfigLoadCompleteEvent.html | 10 +-
.../EnvelopeJobConfigLoadCompleteEvent.html | 8 +-
.../envelope/gui/events/package-summary.html | 8 +-
.../envelope/gui/events/package-tree.html | 8 +-
.../coda/envelope/gui/events/package-use.html | 8 +-
.../coda/envelope/gui/package-summary.html | 8 +-
.../apps/coda/envelope/gui/package-tree.html | 8 +-
.../apps/coda/envelope/gui/package-use.html | 8 +-
...Default14BandEnvelopeJobConfiguration.html | 10 +-
.../model/domain/EnvelopeBandParameters.html | 10 +-
.../envelope/model/domain/EnvelopeJob.html | 16 +-
.../domain/EnvelopeJobConfiguration.html | 10 +-
.../envelope/model/domain/SpacingType.html | 12 +-
...Default14BandEnvelopeJobConfiguration.html | 8 +-
.../class-use/EnvelopeBandParameters.html | 8 +-
.../model/domain/class-use/EnvelopeJob.html | 8 +-
.../class-use/EnvelopeJobConfiguration.html | 8 +-
.../model/domain/class-use/SpacingType.html | 8 +-
.../model/domain/package-summary.html | 8 +-
.../envelope/model/domain/package-tree.html | 8 +-
.../envelope/model/domain/package-use.html | 8 +-
.../service/api/EnvelopeCreationService.html | 8 +-
.../service/api/EnvelopeParamsService.html | 8 +-
.../envelope/service/api/WaveformStacker.html | 8 +-
.../class-use/EnvelopeCreationService.html | 8 +-
.../api/class-use/EnvelopeParamsService.html | 8 +-
.../api/class-use/WaveformStacker.html | 8 +-
.../envelope/service/api/package-summary.html | 8 +-
.../envelope/service/api/package-tree.html | 8 +-
.../envelope/service/api/package-use.html | 8 +-
.../impl/EnvelopeCreationServiceImpl.html | 10 +-
.../impl/EnvelopeParamsServiceImpl.html | 10 +-
.../service/impl/EnvelopeStacker.html | 10 +-
.../EnvelopeCreationServiceImpl.html | 8 +-
.../class-use/EnvelopeParamsServiceImpl.html | 8 +-
.../impl/class-use/EnvelopeStacker.html | 8 +-
.../service/impl/package-summary.html | 8 +-
.../envelope/service/impl/package-tree.html | 8 +-
.../envelope/service/impl/package-use.html | 8 +-
.../data/client/EnvelopeLocalClient.html | 10 +-
.../client/EnvelopeParamsLocalClient.html | 10 +-
.../client/class-use/EnvelopeLocalClient.html | 8 +-
.../class-use/EnvelopeParamsLocalClient.html | 8 +-
.../data/client/package-summary.html | 8 +-
.../standalone/data/client/package-tree.html | 8 +-
.../standalone/data/client/package-use.html | 8 +-
.../coda/envelope/util/BandGenerator.html | 8 +-
.../envelope/util/LinearBandGenerator.html | 10 +-
.../coda/envelope/util/LogBandGenerator.html | 10 +-
.../util/class-use/BandGenerator.html | 8 +-
.../util/class-use/LinearBandGenerator.html | 8 +-
.../util/class-use/LogBandGenerator.html | 8 +-
.../coda/envelope/util/package-summary.html | 8 +-
.../apps/coda/envelope/util/package-tree.html | 8 +-
.../apps/coda/envelope/util/package-use.html | 8 +-
.../apps/coda/spectra/SpectraApplication.html | 10 +-
.../spectra/class-use/SpectraApplication.html | 8 +-
.../gui/RatioStatusProgressListener.html | 10 +-
.../gui/SpectraRatioGuiController.html | 16 +-
.../RatioStatusProgressListener.html | 8 +-
.../class-use/SpectraRatioGuiController.html | 11 +-
.../gui/events/RatioSegmentChangeEvent.html | 308 +++++
.../class-use/RatioSegmentChangeEvent.html | 150 +++
.../spectra/gui/events/package-summary.html | 168 +++
.../coda/spectra/gui/events/package-tree.html | 165 +++
.../coda/spectra/gui/events/package-use.html | 150 +++
.../coda/spectra/gui/package-summary.html | 8 +-
.../apps/coda/spectra/gui/package-tree.html | 8 +-
.../apps/coda/spectra/gui/package-use.html | 8 +-
.../model/domain/MomentCornerEstimate.html | 16 +-
.../spectra/model/domain/RatioEventData.html | 10 +-
.../model/domain/RatioEventStationData.html | 10 +-
.../model/domain/SpectraEvent.Fraction.html | 12 +-
.../spectra/model/domain/SpectraEvent.html | 10 +-
.../model/domain/SpectraRatioMeasurement.html | 16 +-
.../domain/SpectraRatioMeasurementJob.html | 10 +-
.../model/domain/SpectraRatioPairDetails.html | 130 +-
.../SpectraRatioPairDetailsMetadata.html | 634 +++++++++
.../SpectraRatioPairDetailsMetadataImpl.html | 1173 +++++++++++++++++
.../SpectraRatioPairInversionResult.html | 366 ++++-
.../SpectraRatioPairInversionResultJoint.html | 366 ++++-
.../model/domain/SpectraRatiosReport.html | 16 +-
.../class-use/MomentCornerEstimate.html | 54 +-
.../domain/class-use/RatioEventData.html | 8 +-
.../class-use/RatioEventStationData.html | 8 +-
.../class-use/SpectraEvent.Fraction.html | 8 +-
.../model/domain/class-use/SpectraEvent.html | 8 +-
.../class-use/SpectraRatioMeasurement.html | 8 +-
.../class-use/SpectraRatioMeasurementJob.html | 8 +-
.../class-use/SpectraRatioPairDetails.html | 274 +++-
.../SpectraRatioPairDetailsMetadata.html | 685 ++++++++++
.../SpectraRatioPairDetailsMetadataImpl.html | 150 +++
.../SpectraRatioPairInversionResult.html | 48 +-
.../SpectraRatioPairInversionResultJoint.html | 48 +-
.../domain/class-use/SpectraRatiosReport.html | 8 +-
.../model/domain/messaging/EventPair.html | 16 +-
.../SpectraRatioPairChangeEvent.html | 16 +-
.../messaging/SpectraRatiosReportDTO.html | 16 +-
.../domain/messaging/class-use/EventPair.html | 53 +-
.../SpectraRatioPairChangeEvent.html | 8 +-
.../class-use/SpectraRatiosReportDTO.html | 8 +-
.../domain/messaging/package-summary.html | 8 +-
.../model/domain/messaging/package-tree.html | 8 +-
.../model/domain/messaging/package-use.html | 8 +-
.../spectra/model/domain/package-summary.html | 31 +-
.../spectra/model/domain/package-tree.html | 15 +-
.../spectra/model/domain/package-use.html | 149 ++-
.../domain/util/SpectraRatioPairOperator.html | 172 ++-
.../util/SpectraRatiosReportByEventPair.html | 10 +-
.../class-use/SpectraRatioPairOperator.html | 47 +-
.../SpectraRatiosReportByEventPair.html | 8 +-
.../model/domain/util/package-summary.html | 8 +-
.../model/domain/util/package-tree.html | 8 +-
.../model/domain/util/package-use.html | 29 +-
.../apps/coda/spectra/package-summary.html | 8 +-
.../gnem/apps/coda/spectra/package-tree.html | 8 +-
.../gnem/apps/coda/spectra/package-use.html | 8 +-
.../standalone/SpectraRatioStandalone.html | 10 +-
.../class-use/SpectraRatioStandalone.html | 8 +-
.../spectra/standalone/package-summary.html | 8 +-
.../coda/spectra/standalone/package-tree.html | 8 +-
.../coda/spectra/standalone/package-use.html | 8 +-
docs/javadoc/help-doc.html | 8 +-
docs/javadoc/index-all.html | 727 +++++++++-
docs/javadoc/index.html | 174 +--
docs/javadoc/jquery/jquery-ui.min.css | 2 +-
docs/javadoc/jquery/jquery-ui.min.js | 4 +-
docs/javadoc/legal/jqueryUI.md | 2 +-
.../gnem/core/geom/CartesianCoordinate.html | 16 +-
.../llnl/gnem/core/geom/Coordinate.html | 8 +-
.../core/geom/DoubleValuedCoordinate.html | 16 +-
.../llnl/gnem/core/geom/ECEFCoordinate.html | 10 +-
.../gnem/core/geom/GeographicCoordinate.html | 16 +-
.../javadoc/llnl/gnem/core/geom/Location.html | 16 +-
.../llnl/gnem/core/geom/NEDCoordinate.html | 10 +-
.../geom/class-use/CartesianCoordinate.html | 8 +-
.../gnem/core/geom/class-use/Coordinate.html | 8 +-
.../class-use/DoubleValuedCoordinate.html | 8 +-
.../core/geom/class-use/ECEFCoordinate.html | 8 +-
.../geom/class-use/GeographicCoordinate.html | 8 +-
.../gnem/core/geom/class-use/Location.html | 8 +-
.../core/geom/class-use/NEDCoordinate.html | 8 +-
.../llnl/gnem/core/geom/package-summary.html | 8 +-
.../llnl/gnem/core/geom/package-tree.html | 8 +-
.../llnl/gnem/core/geom/package-use.html | 8 +-
.../gui/plotting/api/Axis.TickFormat.html | 12 +-
.../gnem/core/gui/plotting/api/Axis.Type.html | 12 +-
.../llnl/gnem/core/gui/plotting/api/Axis.html | 8 +-
.../core/gui/plotting/api/AxisLimits.html | 16 +-
.../gnem/core/gui/plotting/api/BasicPlot.html | 8 +-
.../gnem/core/gui/plotting/api/ColorMaps.html | 12 +-
.../gnem/core/gui/plotting/api/FillModes.html | 459 +++++++
.../core/gui/plotting/api/HoverModes.html | 500 +++++++
.../llnl/gnem/core/gui/plotting/api/Line.html | 230 +++-
.../core/gui/plotting/api/LineStyles.html | 12 +-
.../core/gui/plotting/api/ObjectGroup.html | 578 ++++++++
.../core/gui/plotting/api/PlotFactory.html | 64 +-
.../core/gui/plotting/api/PlotLayout.html | 12 +-
.../core/gui/plotting/api/PlotObject.html | 8 +-
.../core/gui/plotting/api/PlottingUtils.html | 10 +-
.../gnem/core/gui/plotting/api/Rectangle.html | 209 ++-
.../gnem/core/gui/plotting/api/Symbol.html | 64 +-
.../core/gui/plotting/api/SymbolStyles.html | 12 +-
.../gnem/core/gui/plotting/api/Title.html | 8 +-
.../core/gui/plotting/api/VerticalLine.html | 99 +-
.../api/class-use/Axis.TickFormat.html | 8 +-
.../gui/plotting/api/class-use/Axis.Type.html | 8 +-
.../core/gui/plotting/api/class-use/Axis.html | 8 +-
.../plotting/api/class-use/AxisLimits.html | 8 +-
.../gui/plotting/api/class-use/BasicPlot.html | 48 +-
.../gui/plotting/api/class-use/ColorMaps.html | 8 +-
.../gui/plotting/api/class-use/FillModes.html | 275 ++++
.../plotting/api/class-use/HoverModes.html | 275 ++++
.../core/gui/plotting/api/class-use/Line.html | 37 +-
.../plotting/api/class-use/LineStyles.html | 48 +-
.../plotting/api/class-use/ObjectGroup.html | 357 +++++
.../plotting/api/class-use/PlotFactory.html | 33 +-
.../plotting/api/class-use/PlotLayout.html | 8 +-
.../plotting/api/class-use/PlotObject.html | 241 +++-
.../plotting/api/class-use/PlottingUtils.html | 8 +-
.../gui/plotting/api/class-use/Rectangle.html | 49 +-
.../gui/plotting/api/class-use/Symbol.html | 8 +-
.../plotting/api/class-use/SymbolStyles.html | 8 +-
.../gui/plotting/api/class-use/Title.html | 8 +-
.../plotting/api/class-use/VerticalLine.html | 21 +-
.../gui/plotting/api/package-summary.html | 29 +-
.../core/gui/plotting/api/package-tree.html | 11 +-
.../core/gui/plotting/api/package-use.html | 68 +-
.../gui/plotting/events/PlotAxisChange.html | 16 +-
.../gui/plotting/events/PlotObjectClick.html | 10 +-
.../gui/plotting/events/PlotShapeMove.html | 16 +-
.../events/class-use/PlotAxisChange.html | 8 +-
.../events/class-use/PlotObjectClick.html | 8 +-
.../events/class-use/PlotShapeMove.html | 8 +-
.../gui/plotting/events/package-summary.html | 8 +-
.../gui/plotting/events/package-tree.html | 8 +-
.../core/gui/plotting/events/package-use.html | 8 +-
.../core/gui/plotting/fx/utils/FxUtils.html | 10 +-
.../plotting/fx/utils/MouseEventHelpers.html | 10 +-
.../plotting/fx/utils/class-use/FxUtils.html | 8 +-
.../fx/utils/class-use/MouseEventHelpers.html | 8 +-
.../plotting/fx/utils/package-summary.html | 8 +-
.../gui/plotting/fx/utils/package-tree.html | 8 +-
.../gui/plotting/fx/utils/package-use.html | 8 +-
.../core/gui/plotting/plotly/BasicAxis.html | 10 +-
.../core/gui/plotting/plotly/BasicLine.html | 362 ++++-
.../gui/plotting/plotly/BasicObjectGroup.html | 787 +++++++++++
.../core/gui/plotting/plotly/BasicSymbol.html | 119 +-
.../core/gui/plotting/plotly/BasicTitle.html | 10 +-
.../core/gui/plotting/plotly/PlotData.html | 72 +-
.../gui/plotting/plotly/PlotObjectData.html | 162 ++-
.../core/gui/plotting/plotly/PlotPoints.html | 10 +-
.../gui/plotting/plotly/PlotTrace.Style.html | 12 +-
.../core/gui/plotting/plotly/PlotTrace.html | 10 +-
.../core/gui/plotting/plotly/PlotlyPlot.html | 32 +-
.../plotting/plotly/PlotlyWaveformPlot.html | 12 +-
.../plotting/plotly/class-use/BasicAxis.html | 8 +-
.../plotting/plotly/class-use/BasicLine.html | 8 +-
.../plotly/class-use/BasicObjectGroup.html | 150 +++
.../plotly/class-use/BasicSymbol.html | 52 +-
.../plotting/plotly/class-use/BasicTitle.html | 8 +-
.../plotting/plotly/class-use/PlotData.html | 8 +-
.../plotly/class-use/PlotObjectData.html | 8 +-
.../plotting/plotly/class-use/PlotPoints.html | 8 +-
.../plotly/class-use/PlotTrace.Style.html | 8 +-
.../plotting/plotly/class-use/PlotTrace.html | 8 +-
.../plotting/plotly/class-use/PlotlyPlot.html | 8 +-
.../plotly/class-use/PlotlyWaveformPlot.html | 8 +-
.../gui/plotting/plotly/package-summary.html | 26 +-
.../gui/plotting/plotly/package-tree.html | 9 +-
.../core/gui/plotting/plotly/package-use.html | 20 +-
.../llnl/gnem/core/io/AbstractDataSource.html | 10 +-
.../javadoc/llnl/gnem/core/io/DataSource.html | 8 +-
.../llnl/gnem/core/io/FileDataSource.html | 10 +-
.../javadoc/llnl/gnem/core/io/SAC/Iztype.html | 14 +-
.../llnl/gnem/core/io/SAC/SACFileReader.html | 10 +-
.../llnl/gnem/core/io/SAC/SACHeader.html | 14 +-
.../gnem/core/io/SAC/class-use/Iztype.html | 8 +-
.../core/io/SAC/class-use/SACFileReader.html | 8 +-
.../gnem/core/io/SAC/class-use/SACHeader.html | 8 +-
.../gnem/core/io/SAC/package-summary.html | 8 +-
.../llnl/gnem/core/io/SAC/package-tree.html | 8 +-
.../llnl/gnem/core/io/SAC/package-use.html | 8 +-
.../core/io/class-use/AbstractDataSource.html | 8 +-
.../gnem/core/io/class-use/DataSource.html | 8 +-
.../core/io/class-use/FileDataSource.html | 8 +-
.../llnl/gnem/core/io/package-summary.html | 8 +-
.../llnl/gnem/core/io/package-tree.html | 8 +-
.../llnl/gnem/core/io/package-use.html | 8 +-
.../llnl/gnem/core/metadata/BandCode.html | 12 +-
.../llnl/gnem/core/metadata/Channel.html | 10 +-
.../gnem/core/metadata/InstrumentCode.html | 12 +-
.../gnem/core/metadata/InstrumentType.html | 12 +-
.../gnem/core/metadata/OrientationCode.html | 14 +-
.../core/metadata/class-use/BandCode.html | 8 +-
.../gnem/core/metadata/class-use/Channel.html | 8 +-
.../metadata/class-use/InstrumentCode.html | 8 +-
.../metadata/class-use/InstrumentType.html | 8 +-
.../metadata/class-use/OrientationCode.html | 8 +-
.../gnem/core/metadata/package-summary.html | 8 +-
.../llnl/gnem/core/metadata/package-tree.html | 8 +-
.../llnl/gnem/core/metadata/package-use.html | 8 +-
.../llnl/gnem/core/polygon/BasePolygon.html | 10 +-
.../llnl/gnem/core/polygon/BinarySearch.html | 10 +-
.../gnem/core/polygon/CartesianPolygon.html | 10 +-
.../llnl/gnem/core/polygon/Polygon.html | 10 +-
.../llnl/gnem/core/polygon/PolygonSet.html | 12 +-
.../gnem/core/polygon/PolygonSetType.html | 12 +-
.../gnem/core/polygon/PolygonSetView.html | 8 +-
.../llnl/gnem/core/polygon/SequenceNames.html | 10 +-
.../llnl/gnem/core/polygon/TableNames.html | 10 +-
.../llnl/gnem/core/polygon/Vertex.html | 16 +-
.../core/polygon/class-use/BasePolygon.html | 8 +-
.../core/polygon/class-use/BinarySearch.html | 8 +-
.../polygon/class-use/CartesianPolygon.html | 8 +-
.../gnem/core/polygon/class-use/Polygon.html | 8 +-
.../core/polygon/class-use/PolygonSet.html | 8 +-
.../polygon/class-use/PolygonSetType.html | 8 +-
.../polygon/class-use/PolygonSetView.html | 8 +-
.../core/polygon/class-use/SequenceNames.html | 8 +-
.../core/polygon/class-use/TableNames.html | 8 +-
.../gnem/core/polygon/class-use/Vertex.html | 8 +-
.../gnem/core/polygon/class-use/line.html | 8 +-
docs/javadoc/llnl/gnem/core/polygon/line.html | 10 +-
.../gnem/core/polygon/package-summary.html | 8 +-
.../llnl/gnem/core/polygon/package-tree.html | 8 +-
.../llnl/gnem/core/polygon/package-use.html | 8 +-
.../gnem/core/signalprocessing/Sequence.html | 10 +-
.../signalprocessing/class-use/Sequence.html | 8 +-
.../extended/SignalProcessingException.html | 12 +-
.../class-use/SignalProcessingException.html | 8 +-
.../extended/package-summary.html | 8 +-
.../extended/package-tree.html | 8 +-
.../extended/package-use.html | 8 +-
.../filter/AnalogSecOrdSect.html | 10 +-
.../filter/ButterworthAnalogFilter.html | 10 +-
.../filter/ButterworthFilter.html | 10 +-
.../signalprocessing/filter/HilbertIIR.html | 10 +-
.../signalprocessing/filter/IIRFilter.html | 10 +-
.../filter/SecOrdSection.html | 10 +-
.../filter/class-use/AnalogSecOrdSect.html | 8 +-
.../class-use/ButterworthAnalogFilter.html | 8 +-
.../filter/class-use/ButterworthFilter.html | 8 +-
.../filter/class-use/HilbertIIR.html | 8 +-
.../filter/class-use/IIRFilter.html | 8 +-
.../filter/class-use/SecOrdSection.html | 8 +-
.../filter/package-summary.html | 8 +-
.../signalprocessing/filter/package-tree.html | 8 +-
.../signalprocessing/filter/package-use.html | 8 +-
.../signalprocessing/package-summary.html | 8 +-
.../core/signalprocessing/package-tree.html | 8 +-
.../core/signalprocessing/package-use.html | 8 +-
.../gnem/core/util/Epoch.TimeResolution.html | 12 +-
docs/javadoc/llnl/gnem/core/util/Epoch.html | 18 +-
.../gnem/core/util/FileInputArrayLoader.html | 10 +-
.../gnem/core/util/FileSystemException.html | 12 +-
.../gnem/core/util/FileUtil/FileManager.html | 10 +-
.../gnem/core/util/FileUtil/ListOfFiles.html | 16 +-
.../util/FileUtil/class-use/FileManager.html | 8 +-
.../util/FileUtil/class-use/ListOfFiles.html | 8 +-
.../core/util/FileUtil/package-summary.html | 8 +-
.../gnem/core/util/FileUtil/package-tree.html | 8 +-
.../gnem/core/util/FileUtil/package-use.html | 8 +-
.../util/Geometry/CoordinateTransform.html | 10 +-
.../core/util/Geometry/CoordinateType.html | 12 +-
.../core/util/Geometry/DirectionCosines.html | 10 +-
.../core/util/Geometry/DistanceAzimuth.html | 10 +-
.../core/util/Geometry/ECEFCoordinate.html | 10 +-
.../llnl/gnem/core/util/Geometry/EModel.html | 10 +-
.../core/util/Geometry/ENUCoordinate.html | 12 +-
.../llnl/gnem/core/util/Geometry/Ellipse.html | 10 +-
.../util/Geometry/GeodeticCoordinate.html | 16 +-
.../core/util/Geometry/NEZCoordinate.html | 16 +-
.../Geometry/SphericalDirectionCosines.html | 10 +-
.../class-use/CoordinateTransform.html | 8 +-
.../Geometry/class-use/CoordinateType.html | 8 +-
.../Geometry/class-use/DirectionCosines.html | 8 +-
.../Geometry/class-use/DistanceAzimuth.html | 8 +-
.../Geometry/class-use/ECEFCoordinate.html | 8 +-
.../core/util/Geometry/class-use/EModel.html | 8 +-
.../Geometry/class-use/ENUCoordinate.html | 8 +-
.../core/util/Geometry/class-use/Ellipse.html | 8 +-
.../class-use/GeodeticCoordinate.html | 8 +-
.../Geometry/class-use/NEZCoordinate.html | 8 +-
.../class-use/SphericalDirectionCosines.html | 8 +-
.../core/util/Geometry/package-summary.html | 8 +-
.../gnem/core/util/Geometry/package-tree.html | 8 +-
.../gnem/core/util/Geometry/package-use.html | 8 +-
.../util/MathFunctions/FitnessCriteria.html | 10 +-
.../core/util/MathFunctions/MathFunction.html | 10 +-
.../class-use/FitnessCriteria.html | 8 +-
.../MathFunctions/class-use/MathFunction.html | 8 +-
.../util/MathFunctions/package-summary.html | 8 +-
.../core/util/MathFunctions/package-tree.html | 8 +-
.../core/util/MathFunctions/package-use.html | 8 +-
.../core/util/NumericalList.DoubleList.html | 10 +-
.../core/util/NumericalList.FloatList.html | 10 +-
.../core/util/NumericalList.NumberList.html | 10 +-
.../llnl/gnem/core/util/NumericalList.html | 8 +-
docs/javadoc/llnl/gnem/core/util/Pair.html | 12 +-
docs/javadoc/llnl/gnem/core/util/PairT.html | 16 +-
.../javadoc/llnl/gnem/core/util/Passband.html | 14 +-
.../gnem/core/util/SeriesMath.Function.html | 8 +-
.../llnl/gnem/core/util/SeriesMath.html | 10 +-
.../llnl/gnem/core/util/StaChanKey.html | 18 +-
.../llnl/gnem/core/util/StreamKey.html | 8 +-
docs/javadoc/llnl/gnem/core/util/TimeT.html | 18 +-
.../util/class-use/Epoch.TimeResolution.html | 8 +-
.../llnl/gnem/core/util/class-use/Epoch.html | 8 +-
.../util/class-use/FileInputArrayLoader.html | 8 +-
.../util/class-use/FileSystemException.html | 8 +-
.../class-use/NumericalList.DoubleList.html | 8 +-
.../class-use/NumericalList.FloatList.html | 8 +-
.../class-use/NumericalList.NumberList.html | 8 +-
.../core/util/class-use/NumericalList.html | 8 +-
.../llnl/gnem/core/util/class-use/Pair.html | 8 +-
.../llnl/gnem/core/util/class-use/PairT.html | 8 +-
.../gnem/core/util/class-use/Passband.html | 8 +-
.../util/class-use/SeriesMath.Function.html | 8 +-
.../gnem/core/util/class-use/SeriesMath.html | 8 +-
.../gnem/core/util/class-use/StaChanKey.html | 8 +-
.../gnem/core/util/class-use/StreamKey.html | 8 +-
.../llnl/gnem/core/util/class-use/TimeT.html | 8 +-
.../llnl/gnem/core/util/package-summary.html | 8 +-
.../llnl/gnem/core/util/package-tree.html | 8 +-
.../llnl/gnem/core/util/package-use.html | 8 +-
.../util/randomNumbers/AlgorithmType.html | 12 +-
.../randomNumbers/BaseRandomAlgorithm.html | 10 +-
.../util/randomNumbers/RandomAlgorithm.html | 8 +-
.../randomNumbers/RandomAlgorithmFactory.html | 10 +-
.../core/util/randomNumbers/SimpleRandom.html | 10 +-
.../class-use/AlgorithmType.html | 8 +-
.../class-use/BaseRandomAlgorithm.html | 8 +-
.../class-use/RandomAlgorithm.html | 8 +-
.../class-use/RandomAlgorithmFactory.html | 8 +-
.../randomNumbers/class-use/SimpleRandom.html | 8 +-
.../util/randomNumbers/package-summary.html | 8 +-
.../core/util/randomNumbers/package-tree.html | 8 +-
.../core/util/randomNumbers/package-use.html | 8 +-
.../util/seriesMathHelpers/Discontinuity.html | 12 +-
.../DiscontinuityCollection.html | 12 +-
.../DiscontinuityFinder.html | 10 +-
.../core/util/seriesMathHelpers/Glitch.html | 14 +-
.../core/util/seriesMathHelpers/MinMax.html | 10 +-
.../util/seriesMathHelpers/RollingStats.html | 12 +-
.../SampleStatistics.Order.html | 12 +-
.../seriesMathHelpers/SampleStatistics.html | 12 +-
.../class-use/Discontinuity.html | 8 +-
.../class-use/DiscontinuityCollection.html | 8 +-
.../class-use/DiscontinuityFinder.html | 8 +-
.../seriesMathHelpers/class-use/Glitch.html | 8 +-
.../seriesMathHelpers/class-use/MinMax.html | 8 +-
.../class-use/RollingStats.html | 8 +-
.../class-use/SampleStatistics.Order.html | 8 +-
.../class-use/SampleStatistics.html | 8 +-
.../seriesMathHelpers/package-summary.html | 8 +-
.../util/seriesMathHelpers/package-tree.html | 8 +-
.../util/seriesMathHelpers/package-use.html | 8 +-
.../gnem/core/waveform/io/BinaryData.html | 10 +-
.../core/waveform/io/DoubleBinaryData.html | 10 +-
.../core/waveform/io/FloatBinaryData.html | 10 +-
.../gnem/core/waveform/io/IntBinaryData.html | 10 +-
.../waveform/io/class-use/BinaryData.html | 8 +-
.../io/class-use/DoubleBinaryData.html | 8 +-
.../io/class-use/FloatBinaryData.html | 8 +-
.../waveform/io/class-use/IntBinaryData.html | 8 +-
.../core/waveform/io/package-summary.html | 8 +-
.../gnem/core/waveform/io/package-tree.html | 8 +-
.../gnem/core/waveform/io/package-use.html | 8 +-
.../core/waveform/merge/MergeException.html | 12 +-
.../merge/class-use/MergeException.html | 8 +-
.../core/waveform/merge/package-summary.html | 8 +-
.../core/waveform/merge/package-tree.html | 8 +-
.../gnem/core/waveform/merge/package-use.html | 8 +-
.../responseProcessing/ResponseType.html | 12 +-
.../class-use/ResponseType.html | 8 +-
.../responseProcessing/package-summary.html | 8 +-
.../responseProcessing/package-tree.html | 8 +-
.../responseProcessing/package-use.html | 8 +-
.../waveform/seismogram/SeismicSignal.html | 8 +-
.../TimeSeries.BivariateFunction.html | 8 +-
.../waveform/seismogram/TimeSeries.Norm.html | 12 +-
.../seismogram/TimeSeries.SeriesListener.html | 8 +-
.../core/waveform/seismogram/TimeSeries.html | 20 +-
.../seismogram/class-use/SeismicSignal.html | 8 +-
.../TimeSeries.BivariateFunction.html | 8 +-
.../seismogram/class-use/TimeSeries.Norm.html | 8 +-
.../class-use/TimeSeries.SeriesListener.html | 8 +-
.../seismogram/class-use/TimeSeries.html | 8 +-
.../waveform/seismogram/package-summary.html | 8 +-
.../waveform/seismogram/package-tree.html | 8 +-
.../core/waveform/seismogram/package-use.html | 8 +-
docs/javadoc/member-search-index.js | 2 +-
docs/javadoc/member-search-index.zip | Bin 0 -> 73830 bytes
docs/javadoc/overview-summary.html | 4 +-
docs/javadoc/overview-tree.html | 24 +-
docs/javadoc/package-search-index.js | 2 +-
docs/javadoc/package-search-index.zip | Bin 0 -> 783 bytes
docs/javadoc/serialized-form.html | 12 +-
docs/javadoc/type-search-index.js | 2 +-
docs/javadoc/type-search-index.zip | Bin 0 -> 5195 bytes
docs/swagger/openapi.json | 2 +-
externals/pom.xml | 2 +-
.../gnem/core/gui/plotting/api/FillModes.java | 29 +
.../core/gui/plotting/api/HoverModes.java | 33 +
.../llnl/gnem/core/gui/plotting/api/Line.java | 42 +-
.../core/gui/plotting/api/ObjectGroup.java | 71 +
.../core/gui/plotting/api/PlotFactory.java | 9 +-
.../gnem/core/gui/plotting/api/Rectangle.java | 123 +-
.../gnem/core/gui/plotting/api/Symbol.java | 8 +-
.../core/gui/plotting/api/VerticalLine.java | 25 +-
.../core/gui/plotting/plotly/BasicLine.java | 183 ++-
.../gui/plotting/plotly/BasicObjectGroup.java | 402 ++++++
.../core/gui/plotting/plotly/BasicSymbol.java | 33 +-
.../core/gui/plotting/plotly/PlotData.java | 13 +-
.../gui/plotting/plotly/PlotObjectData.java | 60 +-
.../core/gui/plotting/plotly/PlotTrace.java | 8 +-
.../core/gui/plotting/plotly/PlotlyPlot.java | 93 +-
mapping/pom.xml | 2 +-
.../apps/coda/common/mapping/api/GeoMap.java | 7 +-
pom.xml | 10 +-
2881 files changed, 50831 insertions(+), 15909 deletions(-)
create mode 100644 calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/controllers/SpectraRatioLoadingController.java
create mode 100644 calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/converters/param/SpectralRatioProjectLoader.java
create mode 100644 calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/converters/ratios/SpectraRatioLoader.java
create mode 100644 calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/spectra/gui/events/RatioSegmentChangeEvent.java
create mode 100644 calibration-service/calibration-application/src/main/resources/static/javadoc/gov/llnl/gnem/apps/coda/calibration/gui/controllers/SpectraRatioLoadingController.html
create mode 100644 calibration-service/calibration-application/src/main/resources/static/javadoc/gov/llnl/gnem/apps/coda/calibration/gui/controllers/class-use/SpectraRatioLoadingController.html
create mode 100644 calibration-service/calibration-application/src/main/resources/static/javadoc/gov/llnl/gnem/apps/coda/calibration/gui/converters/param/SpectralRatioProjectLoader.html
create mode 100644 calibration-service/calibration-application/src/main/resources/static/javadoc/gov/llnl/gnem/apps/coda/calibration/gui/converters/param/class-use/SpectralRatioProjectLoader.html
create mode 100644 calibration-service/calibration-application/src/main/resources/static/javadoc/gov/llnl/gnem/apps/coda/calibration/gui/converters/ratios/SpectraRatioLoader.html
create mode 100644 calibration-service/calibration-application/src/main/resources/static/javadoc/gov/llnl/gnem/apps/coda/calibration/gui/converters/ratios/class-use/SpectraRatioLoader.html
create mode 100644 calibration-service/calibration-application/src/main/resources/static/javadoc/gov/llnl/gnem/apps/coda/calibration/gui/converters/ratios/package-summary.html
create mode 100644 calibration-service/calibration-application/src/main/resources/static/javadoc/gov/llnl/gnem/apps/coda/calibration/gui/converters/ratios/package-tree.html
create mode 100644 calibration-service/calibration-application/src/main/resources/static/javadoc/gov/llnl/gnem/apps/coda/calibration/gui/converters/ratios/package-use.html
create mode 100644 calibration-service/calibration-application/src/main/resources/static/javadoc/gov/llnl/gnem/apps/coda/calibration/model/domain/RatioOptimizerMeasurement.html
create mode 100644 calibration-service/calibration-application/src/main/resources/static/javadoc/gov/llnl/gnem/apps/coda/calibration/model/domain/class-use/RatioOptimizerMeasurement.html
create mode 100644 calibration-service/calibration-application/src/main/resources/static/javadoc/gov/llnl/gnem/apps/coda/calibration/model/domain/mixins/SpectraRatioPairDetailsMetadataMixin.html
create mode 100644 calibration-service/calibration-application/src/main/resources/static/javadoc/gov/llnl/gnem/apps/coda/calibration/model/domain/mixins/WaveformMetadataMixin.html
create mode 100644 calibration-service/calibration-application/src/main/resources/static/javadoc/gov/llnl/gnem/apps/coda/calibration/model/domain/mixins/WaveformPickMixin.html
create mode 100644 calibration-service/calibration-application/src/main/resources/static/javadoc/gov/llnl/gnem/apps/coda/calibration/model/domain/mixins/class-use/SpectraRatioPairDetailsMetadataMixin.html
create mode 100644 calibration-service/calibration-application/src/main/resources/static/javadoc/gov/llnl/gnem/apps/coda/calibration/model/domain/mixins/class-use/WaveformMetadataMixin.html
create mode 100644 calibration-service/calibration-application/src/main/resources/static/javadoc/gov/llnl/gnem/apps/coda/calibration/model/domain/mixins/class-use/WaveformPickMixin.html
create mode 100644 calibration-service/calibration-application/src/main/resources/static/javadoc/gov/llnl/gnem/apps/coda/spectra/gui/events/RatioSegmentChangeEvent.html
create mode 100644 calibration-service/calibration-application/src/main/resources/static/javadoc/gov/llnl/gnem/apps/coda/spectra/gui/events/class-use/RatioSegmentChangeEvent.html
create mode 100644 calibration-service/calibration-application/src/main/resources/static/javadoc/gov/llnl/gnem/apps/coda/spectra/gui/events/package-summary.html
create mode 100644 calibration-service/calibration-application/src/main/resources/static/javadoc/gov/llnl/gnem/apps/coda/spectra/gui/events/package-tree.html
create mode 100644 calibration-service/calibration-application/src/main/resources/static/javadoc/gov/llnl/gnem/apps/coda/spectra/gui/events/package-use.html
create mode 100644 calibration-service/calibration-application/src/main/resources/static/javadoc/gov/llnl/gnem/apps/coda/spectra/model/domain/SpectraRatioPairDetailsMetadata.html
create mode 100644 calibration-service/calibration-application/src/main/resources/static/javadoc/gov/llnl/gnem/apps/coda/spectra/model/domain/SpectraRatioPairDetailsMetadataImpl.html
create mode 100644 calibration-service/calibration-application/src/main/resources/static/javadoc/gov/llnl/gnem/apps/coda/spectra/model/domain/class-use/SpectraRatioPairDetailsMetadata.html
create mode 100644 calibration-service/calibration-application/src/main/resources/static/javadoc/gov/llnl/gnem/apps/coda/spectra/model/domain/class-use/SpectraRatioPairDetailsMetadataImpl.html
create mode 100644 calibration-service/calibration-application/src/main/resources/static/javadoc/legal/jquery.md
create mode 100644 calibration-service/calibration-application/src/main/resources/static/javadoc/legal/jqueryUI.md
create mode 100644 calibration-service/calibration-application/src/main/resources/static/javadoc/legal/jszip.md
create mode 100644 calibration-service/calibration-application/src/main/resources/static/javadoc/legal/pako.md
create mode 100644 calibration-service/calibration-application/src/main/resources/static/javadoc/llnl/gnem/core/gui/plotting/api/FillModes.html
create mode 100644 calibration-service/calibration-application/src/main/resources/static/javadoc/llnl/gnem/core/gui/plotting/api/HoverModes.html
create mode 100644 calibration-service/calibration-application/src/main/resources/static/javadoc/llnl/gnem/core/gui/plotting/api/ObjectGroup.html
create mode 100644 calibration-service/calibration-application/src/main/resources/static/javadoc/llnl/gnem/core/gui/plotting/api/class-use/FillModes.html
create mode 100644 calibration-service/calibration-application/src/main/resources/static/javadoc/llnl/gnem/core/gui/plotting/api/class-use/HoverModes.html
create mode 100644 calibration-service/calibration-application/src/main/resources/static/javadoc/llnl/gnem/core/gui/plotting/api/class-use/ObjectGroup.html
create mode 100644 calibration-service/calibration-application/src/main/resources/static/javadoc/llnl/gnem/core/gui/plotting/plotly/BasicObjectGroup.html
create mode 100644 calibration-service/calibration-application/src/main/resources/static/javadoc/llnl/gnem/core/gui/plotting/plotly/class-use/BasicObjectGroup.html
create mode 100644 calibration-service/calibration-application/src/main/resources/static/javadoc/member-search-index.zip
create mode 100644 calibration-service/calibration-application/src/main/resources/static/javadoc/package-search-index.zip
create mode 100644 calibration-service/calibration-application/src/main/resources/static/javadoc/type-search-index.zip
create mode 100644 calibration-service/calibration-model/src/main/java/gov/llnl/gnem/apps/coda/calibration/model/domain/RatioOptimizerMeasurement.java
create mode 100644 calibration-service/calibration-model/src/main/java/gov/llnl/gnem/apps/coda/calibration/model/domain/mixins/SpectraRatioPairDetailsMetadataMixin.java
create mode 100644 calibration-service/calibration-model/src/main/java/gov/llnl/gnem/apps/coda/calibration/model/domain/mixins/WaveformMetadataMixin.java
create mode 100644 calibration-service/calibration-model/src/main/java/gov/llnl/gnem/apps/coda/calibration/model/domain/mixins/WaveformPickMixin.java
create mode 100644 calibration-service/calibration-model/src/main/java/gov/llnl/gnem/apps/coda/spectra/model/domain/SpectraRatioPairDetailsMetadata.java
create mode 100644 calibration-service/calibration-model/src/main/java/gov/llnl/gnem/apps/coda/spectra/model/domain/SpectraRatioPairDetailsMetadataImpl.java
create mode 100644 docs/javadoc/gov/llnl/gnem/apps/coda/calibration/gui/controllers/SpectraRatioLoadingController.html
create mode 100644 docs/javadoc/gov/llnl/gnem/apps/coda/calibration/gui/controllers/class-use/SpectraRatioLoadingController.html
create mode 100644 docs/javadoc/gov/llnl/gnem/apps/coda/calibration/gui/converters/param/SpectralRatioProjectLoader.html
create mode 100644 docs/javadoc/gov/llnl/gnem/apps/coda/calibration/gui/converters/param/class-use/SpectralRatioProjectLoader.html
create mode 100644 docs/javadoc/gov/llnl/gnem/apps/coda/calibration/gui/converters/ratios/SpectraRatioLoader.html
create mode 100644 docs/javadoc/gov/llnl/gnem/apps/coda/calibration/gui/converters/ratios/class-use/SpectraRatioLoader.html
create mode 100644 docs/javadoc/gov/llnl/gnem/apps/coda/calibration/gui/converters/ratios/package-summary.html
create mode 100644 docs/javadoc/gov/llnl/gnem/apps/coda/calibration/gui/converters/ratios/package-tree.html
create mode 100644 docs/javadoc/gov/llnl/gnem/apps/coda/calibration/gui/converters/ratios/package-use.html
create mode 100644 docs/javadoc/gov/llnl/gnem/apps/coda/calibration/model/domain/RatioOptimizerMeasurement.html
create mode 100644 docs/javadoc/gov/llnl/gnem/apps/coda/calibration/model/domain/class-use/RatioOptimizerMeasurement.html
create mode 100644 docs/javadoc/gov/llnl/gnem/apps/coda/calibration/model/domain/mixins/SpectraRatioPairDetailsMetadataMixin.html
create mode 100644 docs/javadoc/gov/llnl/gnem/apps/coda/calibration/model/domain/mixins/WaveformMetadataMixin.html
create mode 100644 docs/javadoc/gov/llnl/gnem/apps/coda/calibration/model/domain/mixins/WaveformPickMixin.html
create mode 100644 docs/javadoc/gov/llnl/gnem/apps/coda/calibration/model/domain/mixins/class-use/SpectraRatioPairDetailsMetadataMixin.html
create mode 100644 docs/javadoc/gov/llnl/gnem/apps/coda/calibration/model/domain/mixins/class-use/WaveformMetadataMixin.html
create mode 100644 docs/javadoc/gov/llnl/gnem/apps/coda/calibration/model/domain/mixins/class-use/WaveformPickMixin.html
create mode 100644 docs/javadoc/gov/llnl/gnem/apps/coda/spectra/gui/events/RatioSegmentChangeEvent.html
create mode 100644 docs/javadoc/gov/llnl/gnem/apps/coda/spectra/gui/events/class-use/RatioSegmentChangeEvent.html
create mode 100644 docs/javadoc/gov/llnl/gnem/apps/coda/spectra/gui/events/package-summary.html
create mode 100644 docs/javadoc/gov/llnl/gnem/apps/coda/spectra/gui/events/package-tree.html
create mode 100644 docs/javadoc/gov/llnl/gnem/apps/coda/spectra/gui/events/package-use.html
create mode 100644 docs/javadoc/gov/llnl/gnem/apps/coda/spectra/model/domain/SpectraRatioPairDetailsMetadata.html
create mode 100644 docs/javadoc/gov/llnl/gnem/apps/coda/spectra/model/domain/SpectraRatioPairDetailsMetadataImpl.html
create mode 100644 docs/javadoc/gov/llnl/gnem/apps/coda/spectra/model/domain/class-use/SpectraRatioPairDetailsMetadata.html
create mode 100644 docs/javadoc/gov/llnl/gnem/apps/coda/spectra/model/domain/class-use/SpectraRatioPairDetailsMetadataImpl.html
create mode 100644 docs/javadoc/llnl/gnem/core/gui/plotting/api/FillModes.html
create mode 100644 docs/javadoc/llnl/gnem/core/gui/plotting/api/HoverModes.html
create mode 100644 docs/javadoc/llnl/gnem/core/gui/plotting/api/ObjectGroup.html
create mode 100644 docs/javadoc/llnl/gnem/core/gui/plotting/api/class-use/FillModes.html
create mode 100644 docs/javadoc/llnl/gnem/core/gui/plotting/api/class-use/HoverModes.html
create mode 100644 docs/javadoc/llnl/gnem/core/gui/plotting/api/class-use/ObjectGroup.html
create mode 100644 docs/javadoc/llnl/gnem/core/gui/plotting/plotly/BasicObjectGroup.html
create mode 100644 docs/javadoc/llnl/gnem/core/gui/plotting/plotly/class-use/BasicObjectGroup.html
create mode 100644 docs/javadoc/member-search-index.zip
create mode 100644 docs/javadoc/package-search-index.zip
create mode 100644 docs/javadoc/type-search-index.zip
create mode 100644 externals/src/main/java/llnl/gnem/core/gui/plotting/api/FillModes.java
create mode 100644 externals/src/main/java/llnl/gnem/core/gui/plotting/api/HoverModes.java
create mode 100644 externals/src/main/java/llnl/gnem/core/gui/plotting/api/ObjectGroup.java
create mode 100644 externals/src/main/java/llnl/gnem/core/gui/plotting/plotly/BasicObjectGroup.java
diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml
index 493f95fa..0d274185 100644
--- a/.github/workflows/maven-publish.yml
+++ b/.github/workflows/maven-publish.yml
@@ -54,7 +54,8 @@ jobs:
overwrite: true
file_glob: true
- - name: Publish to GitHub Packages
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: mvn deploy
+
+ # - name: Publish to GitHub Packages
+ # env:
+ # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ # run: mvn deploy
diff --git a/calibration-gui/pom.xml b/calibration-gui/pom.xml
index e1fb010c..28ff6a9f 100644
--- a/calibration-gui/pom.xml
+++ b/calibration-gui/pom.xml
@@ -5,7 +5,7 @@
gov.llnl.gnem.apps.coda.calibration
coda-calibration
- 1.0.20
+ 1.0.21
calibration-gui
diff --git a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/CodaGuiController.java b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/CodaGuiController.java
index 3beec686..ddf7b487 100644
--- a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/CodaGuiController.java
+++ b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/CodaGuiController.java
@@ -1,6 +1,6 @@
/*
* Copyright (c) 2023, Lawrence Livermore National Security, LLC. Produced at the Lawrence Livermore National Laboratory
-* CODE-743439.
+* CODE-743439, CODE-848318.
* All rights reserved.
* This file is part of CCT. For details, see https://github.com/LLNL/coda-calibration-tool.
*
@@ -53,6 +53,7 @@
import gov.llnl.gnem.apps.coda.calibration.gui.controllers.ScreenshotEnabledController;
import gov.llnl.gnem.apps.coda.calibration.gui.controllers.ShapeController;
import gov.llnl.gnem.apps.coda.calibration.gui.controllers.SiteController;
+import gov.llnl.gnem.apps.coda.calibration.gui.controllers.SpectraRatioLoadingController;
import gov.llnl.gnem.apps.coda.calibration.gui.controllers.parameters.ParametersController;
import gov.llnl.gnem.apps.coda.calibration.gui.data.client.api.CalibrationClient;
import gov.llnl.gnem.apps.coda.calibration.gui.data.client.api.ParameterClient;
@@ -111,7 +112,7 @@ public class CodaGuiController {
private static final String SCREENSHOT_TITLE = "CERT_Screenshot";
- private static final String ABOUT_TEXT = "Version 1.0.20";
+ private static final String ABOUT_TEXT = "Version 1.0.21";
@FXML
private Node rootElement;
@@ -186,6 +187,8 @@ public class CodaGuiController {
private ReferenceEventLoadingController refEventLoadingController;
+ private SpectraRatioLoadingController spectraRatioLoadingController;
+
private CalibrationClient calibrationClient;
private DirectoryChooser sacDirFileChooser = new DirectoryChooser();
@@ -197,6 +200,8 @@ public class CodaGuiController {
private FileChooser referenceEventFileChooser = new FileChooser();
private FileChooser psModelFileChooser = new FileChooser();
private FileChooser fiModelFileChooser = new FileChooser();
+ private DirectoryChooser ratioDirFileChooser = new DirectoryChooser();
+ private FileChooser ratioFileChooser = new FileChooser();
private final ExtensionFilter allFilesFilter = new ExtensionFilter("All Files", "*.*");
private ParamExporter paramExporter;
@@ -229,16 +234,17 @@ public class CodaGuiController {
@Autowired
public CodaGuiController(LeafletMapController cctMapController, CertLeafletMapController certMapController, WaveformClient waveformClient, EnvelopeLoadingController waveformLoadingController,
- CodaParamLoadingController codaParamLoadingController, ReferenceEventLoadingController refEventLoadingController, CalibrationClient calibrationClient, ParamExporter paramExporter,
- LoadRatioEventsGuiController ratioLoadGui, WaveformGui waveformGui, DataController data, EventTableController eventTable, ParametersController param, ShapeController shape,
- PathController path, SiteController site, MeasuredMwsController measuredMws, ParameterClient configClient, EnvelopeGuiController envelopeGui, SpectraRatioGuiController spectraGui,
- HostnameVerifier hostnameVerifier, SSLContext sslContext, Environment env, EventBus bus) {
+ CodaParamLoadingController codaParamLoadingController, ReferenceEventLoadingController refEventLoadingController, SpectraRatioLoadingController spectraRatioLoadingController,
+ CalibrationClient calibrationClient, ParamExporter paramExporter, LoadRatioEventsGuiController ratioLoadGui, WaveformGui waveformGui, DataController data, EventTableController eventTable,
+ ParametersController param, ShapeController shape, PathController path, SiteController site, MeasuredMwsController measuredMws, ParameterClient configClient,
+ EnvelopeGuiController envelopeGui, SpectraRatioGuiController spectraGui, HostnameVerifier hostnameVerifier, SSLContext sslContext, Environment env, EventBus bus) {
this.waveformClient = waveformClient;
this.cctMapController = cctMapController;
this.certMapController = certMapController;
this.envelopeLoadingController = waveformLoadingController;
this.codaParamLoadingController = codaParamLoadingController;
this.refEventLoadingController = refEventLoadingController;
+ this.spectraRatioLoadingController = spectraRatioLoadingController;
this.calibrationClient = calibrationClient;
this.paramExporter = paramExporter;
this.waveformGui = waveformGui;
@@ -283,6 +289,12 @@ public CodaGuiController(LeafletMapController cctMapController, CertLeafletMapCo
referenceEventFileChooser.getExtensionFilters().add(new ExtensionFilter("Reference Event Files (.txt,.dat)", "*.txt", "*.dat"));
referenceEventFileChooser.getExtensionFilters().add(allFilesFilter);
+ ratioFileChooser.setTitle("Load Coda Ratio Project File");
+ ratioFileChooser.getExtensionFilters().add(new ExtensionFilter("Coda Ratio Project File (.json)", "*.json"));
+ ratioFileChooser.getExtensionFilters().add(allFilesFilter);
+
+ ratioDirFileChooser.setTitle("Directory to save Coda Ratio Project");
+
eventTableRefreshFunction = () -> this.bus.post(new RefreshEventTableAction());
}
@@ -319,11 +331,6 @@ private void changeAppMode() {
}
}
- @FXML
- private void openWaveformLoadingWindow() {
- Optional.ofNullable(sacFileChooser.showOpenMultipleDialog(rootElement.getScene().getWindow())).ifPresent(envelopeLoadingController::loadFiles);
- }
-
@FXML
private void showMapWindow() {
Platform.runLater(() -> {
@@ -420,6 +427,11 @@ private void openFailureReportDisplay() {
bus.post(new ShowFailureReportEvent());
}
+ @FXML
+ private void openWaveformLoadingWindow() {
+ Optional.ofNullable(sacFileChooser.showOpenMultipleDialog(rootElement.getScene().getWindow())).ifPresent(envelopeLoadingController::loadFiles);
+ }
+
@FXML
private void openCalibrationDataSavingWindow(ActionEvent e) {
//Save all parameters to an archive file and prompt the user about where to save it.
@@ -440,6 +452,16 @@ private void openCalibrationDataSavingWindow(ActionEvent e) {
}
}
+ @FXML
+ private void openRatiosLoadingWindow() {
+ Optional.ofNullable(ratioFileChooser.showOpenMultipleDialog(rootElement.getScene().getWindow())).ifPresent(spectraRatioLoadingController::loadFiles);
+ }
+
+ @FXML
+ private void openRatiosSavingWindow() {
+ Optional.ofNullable(ratioDirFileChooser.showDialog(rootElement.getScene().getWindow())).ifPresent(spectraRatioLoadingController::saveToDirectory);
+ }
+
@FXML
private void openWaveformDirectorySavingWindow() {
Optional.ofNullable(sacDirFileChooser.showDialog(rootElement.getScene().getWindow())).ifPresent(envelopeLoadingController::saveToDirectory);
diff --git a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/GuiApplication.java b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/GuiApplication.java
index 66b6134a..07149876 100644
--- a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/GuiApplication.java
+++ b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/GuiApplication.java
@@ -89,7 +89,7 @@ public GuiApplication() {
}
public GuiApplication(ConfigurableApplicationContext springContext, EventBus bus, ApplicationMode mode) {
- this.springContext = springContext;
+ GuiApplication.springContext = springContext;
this.bus = bus;
GuiApplication.startupMode = mode;
}
@@ -117,7 +117,7 @@ public void init() throws Exception {
@Override
public void start(Stage primaryStage) throws Exception {
- this.primaryStage = primaryStage;
+ GuiApplication.primaryStage = primaryStage;
try (InputStream icon1 = this.getClass().getResourceAsStream("/coda_32x32.png");
InputStream icon2 = this.getClass().getResourceAsStream("/coda_64x64.png");
InputStream icon3 = this.getClass().getResourceAsStream("/coda_128x128.png");
@@ -261,6 +261,6 @@ public Stage getPrimaryStage() {
}
public void setPrimaryStage(Stage primaryStage) {
- this.primaryStage = primaryStage;
+ GuiApplication.primaryStage = primaryStage;
}
}
diff --git a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/controllers/AbstractMeasurementController.java b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/controllers/AbstractMeasurementController.java
index c0d500b0..8888c726 100644
--- a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/controllers/AbstractMeasurementController.java
+++ b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/controllers/AbstractMeasurementController.java
@@ -1,6 +1,6 @@
/*
* Copyright (c) 2023, Lawrence Livermore National Security, LLC. Produced at the Lawrence Livermore National Laboratory
-* CODE-743439.
+* CODE-743439, CODE-848318.
* All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the “Licensee”); you may not use this file except in compliance with the License. You may obtain a copy of the License at:
@@ -298,7 +298,7 @@ public void initialize() {
stressPlot = plotFactory.basicPlot();
stressPlot.getTitle().setText("Apparent Stress (MPa)");
stressPlot.getTitle().setFontSize(16);
- stressPlot.addAxes(plotFactory.axis(Axis.Type.LOG_X, "Measured"), plotFactory.axis(Axis.Type.LOG_Y, "Comparison"));
+ stressPlot.addAxes(plotFactory.axis(Axis.Type.LOG_X, "Observed"), plotFactory.axis(Axis.Type.LOG_Y, "Comparison"));
final AxisLimits stressXaxis = new AxisLimits(Axis.Type.X, 1.0, 1.0);
final AxisLimits stressYaxis = new AxisLimits(Axis.Type.Y, 1.0, 1.0);
stressPlot.setAxisLimits(stressXaxis, stressYaxis);
@@ -328,7 +328,7 @@ public void initialize() {
energyVsMomentPlot.attachToDisplayNode(energyVsMomentPane);
apparentStressVsMomentPlot = plotFactory.basicPlot();
- apparentStressVsMomentPlot.getTitle().setText("Apparent Stress vs Moment");
+ apparentStressVsMomentPlot.getTitle().setText("Observed Stress vs Moment");
apparentStressVsMomentPlot.getTitle().setFontSize(16);
apparentStressVsMomentPlot.getTitle().setYOffset(0.92);
apparentStressVsMomentPlot.addAxes(plotFactory.axis(Axis.Type.X, "log10 Mo (N-m)"), plotFactory.axis(Axis.Type.LOG_Y, "App. Stress (MPa)"));
@@ -538,11 +538,13 @@ private void plotSpectra() {
final boolean showPoorlyConstrainedBanner = likelyPoorlyConstrained;
+ final MeasuredMwDetails specMwInfo = mwDetails;
+
spectraControllers.forEach(spc -> {
if (fittingSpectra != null && spc.shouldShowFits()) {
- spc.getSpectralPlot().plotXYdata(toPlotPoints(selectedEventMeasurements, spc.getDataFunc()), fittingSpectra, null);
+ spc.getSpectralPlot().plotXYdata(toPlotPoints(selectedEventMeasurements, spc.getDataFunc()), fittingSpectra, specMwInfo, null);
} else {
- spc.getSpectralPlot().plotXYdata(toPlotPoints(selectedEventMeasurements, spc.getDataFunc()), null, null);
+ spc.getSpectralPlot().plotXYdata(toPlotPoints(selectedEventMeasurements, spc.getDataFunc()), null, specMwInfo, null);
}
spc.getSpectraDataMap().putAll(mapSpectraToPoint(selectedEventMeasurements, spc.getDataFunc()));
@@ -702,9 +704,9 @@ protected void reloadData() {
}
double m0 = (1.5 * mw) + 9.1;
- if (ev.getApparentStressInMpa() != null && ev.getApparentStressInMpa() != 0.0) {
+ if (ev.getEnergyStress() != null && ev.getEnergyStress() != 0.0) {
apparentStressVsMomentPlot.addPlotObject(
- plotFactory.createSymbol(SymbolStyles.CIRCLE, "", m0, ev.getApparentStressInMpa(), Color.BLACK, Color.BLACK, Color.BLACK, ev.getEventId(), false));
+ plotFactory.createSymbol(SymbolStyles.CIRCLE, "", m0, ev.getEnergyStress(), Color.BLACK, Color.BLACK, Color.BLACK, ev.getEventId(), false));
}
if (ev.getCornerFreq() != null && ev.getCornerFreq() != 0.0) {
Symbol symbol = plotFactory.createSymbol(SymbolStyles.CIRCLE, "Data", ev.getCornerFreq(), m0, Color.BLACK, Color.BLACK, Color.BLACK, ev.getEventId(), false);
@@ -751,7 +753,7 @@ protected void reloadData() {
mwPlotSymbols.add(valSym);
}
- final Double stress = ev.getApparentStressInMpa();
+ final Double stress = ev.getEnergyStress();
Double refStress = ev.getRefApparentStressInMpa();
if (stress != null) {
diff --git a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/controllers/SpectraRatioLoadingController.java b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/controllers/SpectraRatioLoadingController.java
new file mode 100644
index 00000000..89f149ae
--- /dev/null
+++ b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/controllers/SpectraRatioLoadingController.java
@@ -0,0 +1,204 @@
+/*
+* Copyright (c) 2023, Lawrence Livermore National Security, LLC. Produced at the Lawrence Livermore National Laboratory
+* CODE-743439, CODE-848318.
+* All rights reserved.
+* This file is part of CCT. For details, see https://github.com/LLNL/coda-calibration-tool.
+*
+* Licensed under the Apache License, Version 2.0 (the “Licensee”); you may not use this file except in compliance with the License. You may obtain a copy of the License at:
+* http://www.apache.org/licenses/LICENSE-2.0
+* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and limitations under the license.
+*
+* This work was performed under the auspices of the U.S. Department of Energy
+* by Lawrence Livermore National Laboratory under Contract DE-AC52-07NA27344.
+*/
+package gov.llnl.gnem.apps.coda.calibration.gui.controllers;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.nio.file.FileSystems;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.PathMatcher;
+import java.time.Duration;
+import java.time.Instant;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.atomic.AtomicLong;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import com.google.common.eventbus.EventBus;
+
+import gov.llnl.gnem.apps.coda.calibration.gui.converters.ratios.SpectraRatioLoader;
+import gov.llnl.gnem.apps.coda.calibration.gui.data.client.api.SpectraRatioClient;
+import gov.llnl.gnem.apps.coda.calibration.gui.data.exporters.SpectraRatioExporter;
+import gov.llnl.gnem.apps.coda.common.gui.controllers.ProgressGui;
+import gov.llnl.gnem.apps.coda.common.gui.events.EnvelopeLoadStartingEvent;
+import gov.llnl.gnem.apps.coda.common.gui.events.ShowFailureReportEvent;
+import gov.llnl.gnem.apps.coda.common.gui.util.ProgressEventProgressListener;
+import gov.llnl.gnem.apps.coda.common.gui.util.ProgressMonitor;
+import gov.llnl.gnem.apps.coda.common.model.messaging.PassFailEvent;
+import gov.llnl.gnem.apps.coda.common.model.messaging.Progress;
+import gov.llnl.gnem.apps.coda.common.model.messaging.ProgressEvent;
+import gov.llnl.gnem.apps.coda.common.model.messaging.Result;
+import gov.llnl.gnem.apps.coda.common.model.util.LightweightIllegalStateException;
+import gov.llnl.gnem.apps.coda.spectra.model.domain.SpectraRatioPairDetailsMetadata;
+import javafx.application.Platform;
+import javafx.scene.input.MouseEvent;
+
+@Component
+public class SpectraRatioLoadingController {
+
+ private static final Logger log = LoggerFactory.getLogger(SpectraRatioLoadingController.class);
+ private SpectraRatioClient client;
+ private EventBus bus;
+
+ protected static final Long LOCAL_FAIL_EVENT = -1l;
+ protected int maxBatching = 20;
+
+ protected AtomicLong idCounter = new AtomicLong();
+
+ private PathMatcher fileMatcher = FileSystems.getDefault().getPathMatcher("regex:(?i).*\\.(json)");
+ private SpectraRatioLoader ratioLoader;
+ private SpectraRatioExporter ratioExporter;
+
+ @Autowired
+ public SpectraRatioLoadingController(SpectraRatioLoader ratioLoader, SpectraRatioExporter ratioExporter, SpectraRatioClient client, EventBus bus) {
+ this.ratioLoader = ratioLoader;
+ this.ratioExporter = ratioExporter;
+ this.client = client;
+ this.bus = bus;
+ }
+
+ public void saveToDirectory(File exportDirectory) {
+ CompletableFuture.runAsync(() -> {
+ try {
+ if (exportDirectory.isDirectory() && exportDirectory.canWrite()) {
+ Progress fileProcessingProgress = new Progress(0l, 0l);
+ ProgressEvent processingProgressEvent = new ProgressEvent(idCounter.getAndIncrement(), fileProcessingProgress);
+ ProgressMonitor processingMonitor = new ProgressMonitor("Exporting Ratio Project", new ProgressEventProgressListener(bus, processingProgressEvent));
+
+ try (final BufferedWriter fileWriter = new BufferedWriter(new FileWriter(exportDirectory.toPath().resolve("CERT-Project-" + Instant.now().toEpochMilli() + ".json").toFile()))) {
+ ProgressGui progressGui = ProgressGui.getInstance();
+ progressGui.show();
+ progressGui.addProgressMonitor(processingMonitor);
+ fileProcessingProgress.setTotal(1l);
+ bus.post(processingProgressEvent);
+ client.getRatiosMetadata().doOnComplete(() -> {
+ fileProcessingProgress.setCurrent(1l);
+ bus.post(processingProgressEvent);
+ }).filter(x -> x != null).filter(x -> x.getId() != null).subscribe(x -> {
+ ratioExporter.writeSpectraRatioPairDetails(fileWriter, x);
+ });
+ } catch (RuntimeException | IOException e) {
+ log.error(e.getMessage(), e);
+ }
+ }
+ } catch (IllegalStateException e) {
+ log.error("Unable to instantiate saving progress display {}", e.getMessage(), e);
+ }
+ });
+ }
+
+ public void loadFiles(List inputFiles) {
+ Progress progress = new Progress(-1l, 0l);
+ ProgressEvent progressEvent = new ProgressEvent(idCounter.getAndIncrement(), progress);
+ ProgressMonitor progressMonitor = new ProgressMonitor("Loading Ratio Project", new ProgressEventProgressListener(bus, progressEvent));
+ loadFiles(inputFiles, () -> {
+ progress.setTotal(1l);
+ progress.setCurrent(1l);
+ bus.post(progressEvent);
+ }, progressMonitor);
+ }
+
+ public void loadFiles(List inputFiles, Runnable completionCallback, ProgressMonitor... additionalBars) {
+ CompletableFuture.runAsync(() -> {
+ try (Stream fileStream = inputFiles.stream()) {
+ List files = new ArrayList<>();
+ fileStream.forEach(input -> {
+ try (Stream walkStream = Files.walk(input.toPath(), 10)) {
+ files.addAll(walkStream.filter(p -> p.toFile().isFile() && fileMatcher.matches(p)).map(Path::toFile).collect(Collectors.toList()));
+ } catch (IOException e) {
+ log.trace(e.getMessage(), e);
+ }
+ });
+
+ if (!files.isEmpty()) {
+ bus.post(new EnvelopeLoadStartingEvent());
+ Progress fileProcessingProgress = new Progress(-1l, 0l);
+ Progress fileFailedProgress = new Progress(-1l, 0l);
+ ProgressEvent processingProgressEvent = new ProgressEvent(idCounter.getAndIncrement(), fileProcessingProgress);
+ ProgressEvent processingFailedProgressEvent = new ProgressEvent(idCounter.getAndIncrement(), fileFailedProgress);
+ ProgressMonitor processingMonitor = new ProgressMonitor("Ratio Project File Loading", new ProgressEventProgressListener(bus, processingProgressEvent));
+ ProgressMonitor processingFailedMonitor = new ProgressMonitor("Ratio Project Processing Failures", new ProgressEventProgressListener(bus, processingFailedProgressEvent));
+ processingFailedMonitor.addEventFilter(MouseEvent.MOUSE_CLICKED, e -> bus.post(new ShowFailureReportEvent()));
+ Platform.runLater(() -> processingFailedMonitor.getProgressBar().getStyleClass().add("red-bar"));
+
+ try {
+ ProgressGui progressGui = ProgressGui.getInstance();
+ progressGui.show();
+ progressGui.addProgressMonitor(processingMonitor);
+ progressGui.addProgressMonitor(processingFailedMonitor);
+
+ if (additionalBars != null) {
+ for (ProgressMonitor bar : additionalBars) {
+ progressGui.addProgressMonitor(bar);
+ }
+ }
+
+ fileProcessingProgress.setTotal(0l);
+ bus.post(processingProgressEvent);
+
+ fileFailedProgress.setTotal(0l);
+ bus.post(processingFailedProgressEvent);
+
+ for (File file : files) {
+ List> results = ratioLoader.convertFile(file);
+ try {
+ List successfulResults = results.parallelStream()
+ .filter(Result::isSuccess)
+ .map(result -> result.getResultPayload().get())
+ .collect(Collectors.toList());
+
+ List loadFailures = new ArrayList<>();
+ client.loadRatioMetadata(idCounter.getAndIncrement(), successfulResults).doOnNext(ret -> loadFailures.add(ret)).retry(3).blockLast(Duration.ofHours(1l));
+
+ if (loadFailures.size() > 0) {
+ fileFailedProgress.setTotal(fileFailedProgress.getTotal() + loadFailures.size());
+ fileFailedProgress.setCurrent(fileFailedProgress.getCurrent() + loadFailures.size());
+ bus.post(processingFailedProgressEvent);
+ loadFailures.forEach(
+ r -> bus.post(new PassFailEvent(LOCAL_FAIL_EVENT, "", new Result<>(false, Collections.singletonList(new LightweightIllegalStateException(r)), null))));
+ }
+
+ fileProcessingProgress.setTotal(fileProcessingProgress.getTotal() + successfulResults.size());
+ fileProcessingProgress.setCurrent(fileProcessingProgress.getCurrent() + successfulResults.size() - loadFailures.size());
+ bus.post(processingProgressEvent);
+ } catch (RuntimeException ex) {
+ log.trace(ex.getMessage(), ex);
+ }
+ }
+ } catch (RuntimeException e) {
+ log.error(e.getMessage(), e);
+ }
+
+ }
+ } catch (IllegalStateException e) {
+ log.error("Unable to instantiate loading display {}", e.getMessage(), e);
+ }
+ if (completionCallback != null) {
+ completionCallback.run();
+ }
+ });
+ }
+}
diff --git a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/converters/param/SpectralRatioProjectLoader.java b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/converters/param/SpectralRatioProjectLoader.java
new file mode 100644
index 00000000..72f4dd19
--- /dev/null
+++ b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/converters/param/SpectralRatioProjectLoader.java
@@ -0,0 +1,73 @@
+/*
+* Copyright (c) 2023, Lawrence Livermore National Security, LLC. Produced at the Lawrence Livermore National Laboratory
+* CODE-743439, CODE-848318.
+* All rights reserved.
+*
+* Licensed under the Apache License, Version 2.0 (the “Licensee”); you may not use this file except in compliance with the License. You may obtain a copy of the License at:
+* http://www.apache.org/licenses/LICENSE-2.0
+* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and limitations under the license.
+*
+* This work was performed under the auspices of the U.S. Department of Energy
+* by Lawrence Livermore National Laboratory under Contract DE-AC52-07NA27344.
+*/
+package gov.llnl.gnem.apps.coda.calibration.gui.converters.param;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.FileSystems;
+import java.nio.file.Files;
+import java.nio.file.PathMatcher;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import gov.llnl.gnem.apps.coda.common.model.messaging.Result;
+import gov.llnl.gnem.apps.coda.common.model.util.LightweightIllegalStateException;
+import gov.llnl.gnem.apps.coda.spectra.model.domain.SpectraRatioPairDetailsMetadata;
+
+public class SpectralRatioProjectLoader {
+
+ private final PathMatcher filter = FileSystems.getDefault().getPathMatcher("regex:(?i).*\\.json");
+
+ private final ObjectMapper mapper;
+
+ public SpectralRatioProjectLoader() {
+ mapper = new ObjectMapper();
+ mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
+ }
+
+ public Result> convertFile(File file) {
+ return convertFileToSpectraRatioPairDetailsMetadata(file);
+ }
+
+ private Result> convertFileToSpectraRatioPairDetailsMetadata(File file) {
+ Result> res = new Result<>(false, null);
+ try {
+ List lines = Files.readAllLines(file.toPath());
+ List data = new ArrayList<>();
+
+ for (String line : lines) {
+ try {
+ data.add(mapper.readValue(line, SpectraRatioPairDetailsMetadata.class));
+ } catch (JsonProcessingException e) {
+ return exceptionalResult(e);
+ }
+ }
+ res.setResultPayload(Optional.of(data));
+ } catch (IOException e) {
+ return exceptionalResult(new LightweightIllegalStateException(String.format("Error parsing (%s): %s", file.getName(), e.getMessage()), e));
+ }
+ return res;
+ }
+
+ private Result> exceptionalResult(Exception error) {
+ List exceptions = new ArrayList<>();
+ exceptions.add(error);
+ return new Result>(false, exceptions, null);
+ }
+}
diff --git a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/converters/ratios/SpectraRatioLoader.java b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/converters/ratios/SpectraRatioLoader.java
new file mode 100644
index 00000000..920715c8
--- /dev/null
+++ b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/converters/ratios/SpectraRatioLoader.java
@@ -0,0 +1,75 @@
+/*
+* Copyright (c) 2023, Lawrence Livermore National Security, LLC. Produced at the Lawrence Livermore National Laboratory
+* CODE-743439, CODE-848318.
+* All rights reserved.
+* This file is part of CCT. For details, see https://github.com/LLNL/coda-calibration-tool.
+*
+* Licensed under the Apache License, Version 2.0 (the “Licensee”); you may not use this file except in compliance with the License. You may obtain a copy of the License at:
+* http://www.apache.org/licenses/LICENSE-2.0
+* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and limitations under the license.
+*
+* This work was performed under the auspices of the U.S. Department of Energy
+* by Lawrence Livermore National Laboratory under Contract DE-AC52-07NA27344.
+*/
+package gov.llnl.gnem.apps.coda.calibration.gui.converters.ratios;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.FileSystems;
+import java.nio.file.PathMatcher;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+
+import com.fasterxml.jackson.core.Version;
+import com.fasterxml.jackson.databind.MappingIterator;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.module.SimpleAbstractTypeResolver;
+import com.fasterxml.jackson.databind.module.SimpleModule;
+
+import gov.llnl.gnem.apps.coda.calibration.model.domain.WaveformMetadataImpl;
+import gov.llnl.gnem.apps.coda.common.model.domain.WaveformMetadata;
+import gov.llnl.gnem.apps.coda.common.model.messaging.Result;
+import gov.llnl.gnem.apps.coda.common.model.util.LightweightIllegalStateException;
+import gov.llnl.gnem.apps.coda.spectra.model.domain.SpectraRatioPairDetailsMetadata;
+import gov.llnl.gnem.apps.coda.spectra.model.domain.SpectraRatioPairDetailsMetadataImpl;
+
+@Component
+public class SpectraRatioLoader {
+ private final Logger log = LoggerFactory.getLogger(this.getClass());
+ final PathMatcher filter = FileSystems.getDefault().getPathMatcher("regex:(?i).*json");
+
+ private ObjectMapper streamedMapper = new ObjectMapper();
+
+ public SpectraRatioLoader() {
+ SimpleModule module = new SimpleModule("SpectraRatioMetadataMapper", Version.unknownVersion());
+ SimpleAbstractTypeResolver resolver = new SimpleAbstractTypeResolver();
+ resolver.addMapping(SpectraRatioPairDetailsMetadata.class, SpectraRatioPairDetailsMetadataImpl.class);
+ resolver.addMapping(WaveformMetadata.class, WaveformMetadataImpl.class);
+ module.setAbstractTypes(resolver);
+ streamedMapper.registerModule(module);
+ }
+
+ public List> convertFile(File file) {
+ if (file != null && file.exists() && file.isFile() && filter.matches(file.toPath())) {
+ List> results = new ArrayList<>();
+ try (MappingIterator it = streamedMapper.readerFor(SpectraRatioPairDetailsMetadata.class).readValues(file)) {
+ while (it.hasNextValue()) {
+ SpectraRatioPairDetailsMetadata ratio = it.nextValue();
+ results.add(new Result<>(true, ratio));
+ }
+ } catch (IOException e) {
+ Result result = new Result<>(false, null);
+ result.getErrors().add(e);
+ results.add(result);
+ }
+ return results;
+ }
+ return Collections.singletonList(new Result<>(false, Collections.singletonList(new LightweightIllegalStateException("File " + file + " does not exist or is not a file.")), null));
+ }
+}
diff --git a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/data/client/SpectraRatioWebClient.java b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/data/client/SpectraRatioWebClient.java
index f34a7f9d..6e71a895 100644
--- a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/data/client/SpectraRatioWebClient.java
+++ b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/data/client/SpectraRatioWebClient.java
@@ -26,8 +26,11 @@
import gov.llnl.gnem.apps.coda.calibration.gui.data.client.api.SpectraRatioClient;
import gov.llnl.gnem.apps.coda.spectra.model.domain.RatioEventData;
import gov.llnl.gnem.apps.coda.spectra.model.domain.SpectraRatioMeasurementJob;
+import gov.llnl.gnem.apps.coda.spectra.model.domain.SpectraRatioPairDetails;
+import gov.llnl.gnem.apps.coda.spectra.model.domain.SpectraRatioPairDetailsMetadata;
import gov.llnl.gnem.apps.coda.spectra.model.domain.messaging.SpectraRatiosReportDTO;
import gov.llnl.gnem.apps.coda.spectra.model.domain.util.SpectraRatiosReportByEventPair;
+import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@Component
@@ -67,4 +70,24 @@ public Mono makeSpectraRatioMeasurementsFromRati
.map(SpectraRatiosReportDTO::getReport)
.map(SpectraRatiosReportByEventPair::new);
}
+
+ @Override
+ public Mono updateRatio(SpectraRatioPairDetails ratio) {
+ return client.post().uri("/spectra-ratios/update-ratio").bodyValue(ratio).retrieve().bodyToMono(SpectraRatioPairDetails.class);
+ }
+
+ @Override
+ public Flux getRatios() {
+ return client.get().uri("/spectra-ratios/all").retrieve().bodyToFlux(SpectraRatioPairDetails.class);
+ }
+
+ @Override
+ public Flux getRatiosMetadata() {
+ return client.get().uri("/spectra-ratios/all-metadata-only").retrieve().bodyToFlux(SpectraRatioPairDetailsMetadata.class);
+ }
+
+ @Override
+ public Flux loadRatioMetadata(long id, List ratios) {
+ return client.post().uri("/spectra-ratios/load-ratios-metadata").bodyValue(ratios).retrieve().bodyToFlux(String.class);
+ }
}
diff --git a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/data/client/api/SpectraRatioClient.java b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/data/client/api/SpectraRatioClient.java
index 2a778092..7ba7d328 100644
--- a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/data/client/api/SpectraRatioClient.java
+++ b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/data/client/api/SpectraRatioClient.java
@@ -1,6 +1,6 @@
/*
-* Copyright (c) 2018, Lawrence Livermore National Security, LLC. Produced at the Lawrence Livermore National Laboratory
-* CODE-743439.
+* Copyright (c) 2023, Lawrence Livermore National Security, LLC. Produced at the Lawrence Livermore National Laboratory
+* CODE-743439, CODE-848318.
* All rights reserved.
* This file is part of CCT. For details, see https://github.com/LLNL/coda-calibration-tool.
*
@@ -18,7 +18,10 @@
import java.util.Set;
import gov.llnl.gnem.apps.coda.spectra.model.domain.RatioEventData;
+import gov.llnl.gnem.apps.coda.spectra.model.domain.SpectraRatioPairDetails;
+import gov.llnl.gnem.apps.coda.spectra.model.domain.SpectraRatioPairDetailsMetadata;
import gov.llnl.gnem.apps.coda.spectra.model.domain.util.SpectraRatiosReportByEventPair;
+import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
public interface SpectraRatioClient {
@@ -27,4 +30,11 @@ public interface SpectraRatioClient {
public Mono makeSpectraRatioMeasurementsFromRatioData(Set smallEventIds, Set largeEventIds, List ratioEventData);
+ public Mono updateRatio(SpectraRatioPairDetails ratio);
+
+ public Flux getRatios();
+
+ public Flux getRatiosMetadata();
+
+ public Flux loadRatioMetadata(long andIncrement, List ratios);
}
\ No newline at end of file
diff --git a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/data/exporters/JsonTempFileWriter.java b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/data/exporters/JsonTempFileWriter.java
index 649d2b0f..39689b49 100644
--- a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/data/exporters/JsonTempFileWriter.java
+++ b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/data/exporters/JsonTempFileWriter.java
@@ -29,9 +29,13 @@
import org.springframework.stereotype.Component;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.core.JsonFactory;
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.ObjectWriter;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.JsonNodeType;
import com.fasterxml.jackson.databind.node.ObjectNode;
@@ -58,11 +62,16 @@
import gov.llnl.gnem.apps.coda.calibration.model.domain.mixins.ShapeFitterConstraintsFileMixin;
import gov.llnl.gnem.apps.coda.calibration.model.domain.mixins.SharedFrequencyBandParametersFileMixin;
import gov.llnl.gnem.apps.coda.calibration.model.domain.mixins.SiteFrequencyBandParametersFileMixin;
+import gov.llnl.gnem.apps.coda.calibration.model.domain.mixins.SpectraRatioPairDetailsMetadataMixin;
import gov.llnl.gnem.apps.coda.calibration.model.domain.mixins.ValidationMwParametersFileMixin;
+import gov.llnl.gnem.apps.coda.calibration.model.domain.mixins.WaveformMetadataMixin;
+import gov.llnl.gnem.apps.coda.calibration.model.domain.mixins.WaveformPickMixin;
import gov.llnl.gnem.apps.coda.common.model.domain.FrequencyBand;
import gov.llnl.gnem.apps.coda.common.model.domain.SharedFrequencyBandParameters;
import gov.llnl.gnem.apps.coda.common.model.domain.Station;
-import gov.llnl.gnem.apps.coda.spectra.model.domain.SpectraRatioPairDetails;
+import gov.llnl.gnem.apps.coda.common.model.domain.WaveformMetadata;
+import gov.llnl.gnem.apps.coda.common.model.domain.WaveformPick;
+import gov.llnl.gnem.apps.coda.spectra.model.domain.SpectraRatioPairDetailsMetadata;
@Component
public class JsonTempFileWriter implements SpectraTempFileWriter, ParamTempFileWriter, MeasuredMwTempFileWriter, ReferenceMwTempFileWriter, ValidationMwTempFileWriter, SpectraRatioTempFileWriter {
@@ -75,6 +84,8 @@ public class JsonTempFileWriter implements SpectraTempFileWriter, ParamTempFileW
private ObjectMapper mapper;
+ private ObjectMapper streamedMapper;
+
public JsonTempFileWriter() {
mapper = new ObjectMapper();
mapper.setSerializationInclusion(Include.NON_NULL);
@@ -87,6 +98,20 @@ public JsonTempFileWriter() {
mapper.addMixIn(MdacParametersFI.class, MdacFiFileMixin.class);
mapper.addMixIn(MdacParametersPS.class, MdacPsFileMixin.class);
mapper.addMixIn(ValidationMwParameters.class, ValidationMwParametersFileMixin.class);
+ mapper.addMixIn(SpectraRatioPairDetailsMetadata.class, SpectraRatioPairDetailsMetadataMixin.class);
+ mapper.addMixIn(WaveformMetadata.class, WaveformMetadataMixin.class);
+ mapper.addMixIn(WaveformPick.class, WaveformPickMixin.class);
+
+ //For writing to an output stream we don't control so
+ //Jackson doesn't attempt to close it when we go out of scope
+ JsonFactory jsonFactory = new JsonFactory();
+ jsonFactory.configure(JsonGenerator.Feature.AUTO_CLOSE_TARGET, false);
+ jsonFactory.configure(JsonParser.Feature.AUTO_CLOSE_SOURCE, false);
+
+ streamedMapper = new ObjectMapper(jsonFactory);
+ streamedMapper.addMixIn(SpectraRatioPairDetailsMetadata.class, SpectraRatioPairDetailsMetadataMixin.class);
+ streamedMapper.addMixIn(WaveformMetadata.class, WaveformMetadataMixin.class);
+ streamedMapper.addMixIn(WaveformPick.class, WaveformPickMixin.class);
}
@Override
@@ -142,12 +167,12 @@ public void writeMeasuredMws(Path folder, String filename, List spectraRatioPairDetails) {
+ public void writeSpectraRatioDetails(Path folder, List spectraRatioPairDetails) {
writeSpectraRatioDetails(folder, RATIO_JSON_NAME, spectraRatioPairDetails);
}
@Override
- public void writeSpectraRatioDetails(Path folder, String filename, List spectraRatioPairDetails) {
+ public void writeSpectraRatioDetails(Path folder, String filename, List spectraRatioPairDetails) {
try {
JsonNode document = createOrGetDocument(folder, filename);
writeSpectraRatioEvents(createOrGetFile(folder, filename), document, spectraRatioPairDetails);
@@ -166,6 +191,20 @@ public void writeSpectraValues(Path folder, String filename, List measurements) throws IOException {
writeArrayNodeToFile(file, document, measurements, CalibrationJsonConstants.SPECTRA);
}
@@ -215,7 +254,7 @@ private void writeMeasuredEvents(File file, JsonNode document, List spectraRatioPairDetails) throws IOException {
+ private void writeSpectraRatioEvents(File file, JsonNode document, List spectraRatioPairDetails) throws IOException {
writeArrayNodeToFile(file, document, spectraRatioPairDetails, "spectra-ratio-pair-details");
}
@@ -224,13 +263,17 @@ private void writeArrayNodeToFile(File file, JsonNode document, Collection 0) {
writeFieldNodeToFile(file, document, field, arrayNode);
}
}
+ private void writeMetadataHeaders(File file, JsonNode document) throws IOException {
+ writeFieldNodeToFile(file, document, CalibrationJsonConstants.SCHEMA_FIELD, mapper.valueToTree(CalibrationJsonConstants.SCHEMA_VALUE));
+ writeFieldNodeToFile(file, document, CalibrationJsonConstants.TYPE_FIELD, mapper.valueToTree(CalibrationJsonConstants.TYPE_VALUE));
+ }
+
private void writeFieldNodeToFile(File file, JsonNode document, String field, JsonNode node) throws IOException {
if (node != null) {
Files.deleteIfExists(file.toPath());
@@ -283,4 +326,5 @@ private File createOrGetFile(Path folder, String filename) throws IOException {
File file = Files.createFile(folder.resolve(filename)).toFile();
return file;
}
+
}
diff --git a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/data/exporters/SpectraRatioExporter.java b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/data/exporters/SpectraRatioExporter.java
index 9976e9b8..04979626 100644
--- a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/data/exporters/SpectraRatioExporter.java
+++ b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/data/exporters/SpectraRatioExporter.java
@@ -14,6 +14,7 @@
*/
package gov.llnl.gnem.apps.coda.calibration.gui.data.exporters;
+import java.io.BufferedWriter;
import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
@@ -27,7 +28,7 @@
import gov.llnl.gnem.apps.coda.calibration.gui.data.exporters.api.SpectraRatioTempFileWriter;
import gov.llnl.gnem.apps.coda.common.gui.util.CommonGuiUtils;
-import gov.llnl.gnem.apps.coda.spectra.model.domain.SpectraRatioPairDetails;
+import gov.llnl.gnem.apps.coda.spectra.model.domain.SpectraRatioPairDetailsMetadata;
@Component
public class SpectraRatioExporter {
@@ -40,10 +41,10 @@ public SpectraRatioExporter(List spectraRatioWriters
this.spectraRatioWriters = spectraRatioWriters;
}
- public File createExportArchive(List ratiosByEventPair, Path directory) throws IOException {
+ public File createExportArchive(List ratiosByEventPair, Path directory) throws IOException {
if (spectraRatioWriters != null) {
- List spectraRatioDetails = new ArrayList<>(ratiosByEventPair);
+ List spectraRatioDetails = new ArrayList<>(ratiosByEventPair);
for (SpectraRatioTempFileWriter writer : spectraRatioWriters) {
writer.writeSpectraRatioDetails(directory, spectraRatioDetails);
}
@@ -52,9 +53,15 @@ public File createExportArchive(List ratiosByEventPair,
return CommonGuiUtils.zipDirectory(directory);
}
- public void writeSpectraRatioPairDetails(Path path, String filename, List spectraRatioDetails) {
+ public void writeSpectraRatioPairDetails(Path path, String filename, List spectraRatioDetails) {
for (SpectraRatioTempFileWriter writer : spectraRatioWriters) {
writer.writeSpectraRatioDetails(path, filename, spectraRatioDetails);
}
}
+
+ public void writeSpectraRatioPairDetails(BufferedWriter fileWriter, SpectraRatioPairDetailsMetadata ratio) {
+ for (SpectraRatioTempFileWriter writer : spectraRatioWriters) {
+ writer.writeSpectraRatioDetails(fileWriter, ratio);
+ }
+ }
}
diff --git a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/data/exporters/api/SpectraRatioTempFileWriter.java b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/data/exporters/api/SpectraRatioTempFileWriter.java
index 77caa9fb..b64da66d 100644
--- a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/data/exporters/api/SpectraRatioTempFileWriter.java
+++ b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/data/exporters/api/SpectraRatioTempFileWriter.java
@@ -14,13 +14,16 @@
*/
package gov.llnl.gnem.apps.coda.calibration.gui.data.exporters.api;
+import java.io.BufferedWriter;
import java.nio.file.Path;
import java.util.List;
-import gov.llnl.gnem.apps.coda.spectra.model.domain.SpectraRatioPairDetails;
+import gov.llnl.gnem.apps.coda.spectra.model.domain.SpectraRatioPairDetailsMetadata;
public interface SpectraRatioTempFileWriter {
- public void writeSpectraRatioDetails(Path folder, List spectraRatioPairDetails);
+ public void writeSpectraRatioDetails(Path folder, List spectraRatioPairDetails);
- public void writeSpectraRatioDetails(Path folder, String filename, List spectraRatioPairDetails);
+ public void writeSpectraRatioDetails(Path folder, String filename, List spectraRatioPairDetails);
+
+ public void writeSpectraRatioDetails(BufferedWriter fileWriter, SpectraRatioPairDetailsMetadata spectraRatioPairDetails);
}
diff --git a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/CertLeafletMapController.java b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/CertLeafletMapController.java
index 615154e2..f02dc0dd 100644
--- a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/CertLeafletMapController.java
+++ b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/CertLeafletMapController.java
@@ -1,6 +1,6 @@
/*
-* Copyright (c) 2018, Lawrence Livermore National Security, LLC. Produced at the Lawrence Livermore National Laboratory
-* CODE-743439.
+* Copyright (c) 2023, Lawrence Livermore National Security, LLC. Produced at the Lawrence Livermore National Laboratory
+* CODE-743439, CODE-848318.
* All rights reserved.
* This file is part of CCT. For details, see https://github.com/LLNL/coda-calibration-tool.
*
@@ -21,8 +21,11 @@
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.time.Instant;
+import java.util.ArrayList;
import java.util.Collection;
+import java.util.List;
import java.util.Objects;
+import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.function.Consumer;
@@ -41,6 +44,7 @@
import gov.llnl.gnem.apps.coda.common.mapping.api.GeoMap;
import gov.llnl.gnem.apps.coda.common.mapping.api.GeoShape;
import gov.llnl.gnem.apps.coda.common.mapping.api.Icon;
+import gov.llnl.gnem.apps.coda.common.model.domain.Event;
import javafx.application.Platform;
import javafx.embed.swing.SwingFXUtils;
import javafx.event.ActionEvent;
@@ -73,12 +77,15 @@ public class CertLeafletMapController implements GeoMap {
private LeafletMap mapImpl;
+ private MapPlottingUtilities iconFactories;
+
private DirectoryChooser screenshotFolderChooser = new DirectoryChooser();
private MapProperties mapProps;
- private CertLeafletMapController(@Autowired(required = false) MapProperties mapProps) {
+ private CertLeafletMapController(@Autowired(required = false) MapProperties mapProps, final MapPlottingUtilities iconFactory) {
this.mapProps = mapProps;
+ this.iconFactories = iconFactory;
this.mapImpl = new LeafletMap();
}
@@ -100,6 +107,51 @@ public void initialize() {
});
}
+ public void replaceIcons(List oldIcons, List newIcons) {
+ mapImpl.removeIcons(oldIcons);
+ mapImpl.addIcons(newIcons);
+ }
+
+ public void setEventIconsActive(final List events) {
+ Set icons = mapImpl.getIcons();
+ if (icons != null) {
+ List iconsToReplace = new ArrayList<>();
+ List newIconsToUse = new ArrayList<>();
+
+ icons.forEach(i -> {
+ events.forEach(e -> {
+ if (i.getFriendlyName().equals(e.getEventId())) {
+ iconsToReplace.add(i);
+ newIconsToUse.add(iconFactories.createEventIconForeground(e));
+ }
+ });
+ });
+ if (iconsToReplace != null) {
+ replaceIcons(iconsToReplace, newIconsToUse);
+ }
+ }
+ }
+
+ public void setEventIconsInActive(final List events) {
+ Set icons = mapImpl.getIcons();
+ if (icons != null) {
+ List iconsToReplace = new ArrayList<>();
+ List newIconsToUse = new ArrayList<>();
+
+ icons.forEach(i -> {
+ events.forEach(e -> {
+ if (i.getFriendlyName().equals(e.getEventId())) {
+ iconsToReplace.add(i);
+ newIconsToUse.add(iconFactories.createEventIcon(e));
+ }
+ });
+ });
+ if (iconsToReplace != null) {
+ replaceIcons(iconsToReplace, newIconsToUse);
+ }
+ }
+ }
+
@Override
public void show() {
// No op for now
@@ -115,6 +167,11 @@ public void clearIcons() {
mapImpl.clearIcons();
}
+ @Override
+ public Set getIcons() {
+ return mapImpl.getIcons();
+ }
+
@Override
public void addLayer(WMSLayerDescriptor layer) {
mapImpl.addLayer(layer);
diff --git a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/CodaWaveformPlotManager.java b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/CodaWaveformPlotManager.java
index 700e1172..45439691 100644
--- a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/CodaWaveformPlotManager.java
+++ b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/CodaWaveformPlotManager.java
@@ -46,7 +46,6 @@
import gov.llnl.gnem.apps.coda.common.gui.data.client.api.WaveformClient;
import gov.llnl.gnem.apps.coda.common.gui.util.EventStaFreqStringComparator;
import gov.llnl.gnem.apps.coda.common.gui.util.SnapshotUtils;
-import gov.llnl.gnem.apps.coda.common.mapping.api.GeoMap;
import gov.llnl.gnem.apps.coda.common.mapping.api.Icon;
import gov.llnl.gnem.apps.coda.common.model.domain.Pair;
import gov.llnl.gnem.apps.coda.common.model.domain.Station;
@@ -107,7 +106,8 @@ public class CodaWaveformPlotManager {
private final ShapeMeasurementClient shapeClient;
private final ParameterClient paramsClient;
private final PeakVelocityClient peakVelocityClient;
- private final GeoMap map;
+ private final LeafletMapController cctMap;
+ private final CertLeafletMapController certMap;
private final MapPlottingUtilities mapPlotUtils;
private final ToolBar multiPageToolbar;
private final ToolBar multiFrequencyToolbar;
@@ -325,12 +325,13 @@ public class CodaWaveformPlotManager {
};
public CodaWaveformPlotManager(final WaveformClient waveformClient, final ShapeMeasurementClient shapeClient, final ParameterClient paramsClient, final PeakVelocityClient peakVelocityClient,
- final GeoMap map, final MapPlottingUtilities mapPlotUtils) {
+ final CertLeafletMapController certMap, final LeafletMapController cctMap, final MapPlottingUtilities mapPlotUtils) {
this.waveformClient = waveformClient;
this.shapeClient = shapeClient;
this.paramsClient = paramsClient;
this.peakVelocityClient = peakVelocityClient;
- this.map = map;
+ this.cctMap = cctMap;
+ this.certMap = certMap;
this.mapPlotUtils = mapPlotUtils;
this.borderPane = new BorderPane();
this.waveformPanel = new VBox();
@@ -612,7 +613,8 @@ private void plotWaveform(long waveformId) {
if (waveform != null) {
final Collection icons = mapWaveform(waveform);
mappedIcons.addAll(icons);
- map.addIcons(icons);
+ cctMap.addIcons(icons);
+ certMap.addIcons(icons);
if (plot != null) {
plot.setMargin(null, null, null, null);
plot.getxAxis().setText(TIME_SECONDS_FROM_ORIGIN);
@@ -642,7 +644,8 @@ private void setWaveformsByEventStation(long waveformId) {
private void clear() {
final List oldIcons = mappedIcons;
mappedIcons = new ArrayList<>();
- map.removeIcons(oldIcons);
+ cctMap.removeIcons(oldIcons);
+ certMap.removeIcons(oldIcons);
synchronized (bagLock) {
plotBag.addAll(orderedWaveformPlots.values().stream().filter(plot -> {
plot.setAxisChangeListener(null);
@@ -801,9 +804,11 @@ private Collection mapWaveform(final Waveform waveform) {
public void setVisible(final boolean visible) {
if (visible) {
- map.addIcons(mappedIcons);
+ cctMap.addIcons(mappedIcons);
+ certMap.addIcons(mappedIcons);
} else {
- map.removeIcons(mappedIcons);
+ cctMap.removeIcons(mappedIcons);
+ certMap.removeIcons(mappedIcons);
}
}
@@ -917,7 +922,8 @@ private void setPlots(final List> plotPairs) {
orderedWaveformPlots.put(index, plotPair.getY());
final Collection icons = mapWaveform(waveform);
mappedIcons.addAll(icons);
- map.addIcons(icons);
+ cctMap.addIcons(icons);
+ certMap.addIcons(icons);
if (plot != null) {
if (plotPairs.size() > 1) {
if (i == plotPairs.size() - 1) {
diff --git a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/LeafletMap.java b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/LeafletMap.java
index 656205a4..c2d655bf 100644
--- a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/LeafletMap.java
+++ b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/LeafletMap.java
@@ -1,6 +1,6 @@
/*
-* Copyright (c) 2020, Lawrence Livermore National Security, LLC. Produced at the Lawrence Livermore National Laboratory
-* CODE-743439.
+* Copyright (c) 2023, Lawrence Livermore National Security, LLC. Produced at the Lawrence Livermore National Laboratory
+* CODE-743439, CODE-848318.
* All rights reserved.
* This file is part of CCT. For details, see https://github.com/LLNL/coda-calibration-tool.
*
@@ -208,6 +208,10 @@ public void clearIcons() {
clearIconLayer();
}
+ public Set getIcons() {
+ return icons;
+ }
+
private void clearIconLayer() {
if (mapReady.get()) {
Platform.runLater(() -> webView.getEngine().executeScript("clearIcons();"));
diff --git a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/LeafletMapController.java b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/LeafletMapController.java
index 7101044e..3d97ce6f 100644
--- a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/LeafletMapController.java
+++ b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/LeafletMapController.java
@@ -1,6 +1,6 @@
/*
-* Copyright (c) 2018, Lawrence Livermore National Security, LLC. Produced at the Lawrence Livermore National Laboratory
-* CODE-743439.
+* Copyright (c) 2023, Lawrence Livermore National Security, LLC. Produced at the Lawrence Livermore National Laboratory
+* CODE-743439, CODE-848318.
* All rights reserved.
* This file is part of CCT. For details, see https://github.com/LLNL/coda-calibration-tool.
*
@@ -23,6 +23,7 @@
import java.time.Instant;
import java.util.Collection;
import java.util.Objects;
+import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.function.Consumer;
@@ -130,6 +131,11 @@ public long getIconCount() {
return mapImpl.getIconCount();
}
+ @Override
+ public Set getIcons() {
+ return mapImpl.getIcons();
+ }
+
@Override
public void clearIcons() {
mapImpl.clearIcons();
diff --git a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/PlotlyPlotFactory.java b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/PlotlyPlotFactory.java
index b0bc90a7..3e585c34 100644
--- a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/PlotlyPlotFactory.java
+++ b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/PlotlyPlotFactory.java
@@ -1,6 +1,6 @@
/*
-* Copyright (c) 2021, Lawrence Livermore National Security, LLC. Produced at the Lawrence Livermore National Laboratory
-* CODE-743439.
+* Copyright (c) 2023, Lawrence Livermore National Security, LLC. Produced at the Lawrence Livermore National Laboratory
+* CODE-743439, CODE-848318.
* All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the “Licensee”); you may not use this file except in compliance with the License. You may obtain a copy of the License at:
@@ -30,9 +30,9 @@
import llnl.gnem.core.gui.plotting.plotly.BasicLine;
import llnl.gnem.core.gui.plotting.plotly.BasicSymbol;
import llnl.gnem.core.gui.plotting.plotly.BasicTitle;
-import llnl.gnem.core.gui.plotting.plotly.PlotlyPlot;
import llnl.gnem.core.gui.plotting.plotly.PlotData;
import llnl.gnem.core.gui.plotting.plotly.PlotTrace;
+import llnl.gnem.core.gui.plotting.plotly.PlotlyPlot;
@Service
public class PlotlyPlotFactory implements PlotFactory {
@@ -57,6 +57,11 @@ public Line line(final double[] xVals, final double[] yVals, final Color color,
return new BasicLine(xVals, yVals, color, style, pxThickness);
}
+ @Override
+ public Line lineWithErrorBars(final double[] xVals, final double[] yVals, final double[] errorMin, final double[] errorMax) {
+ return new BasicLine(xVals, yVals, errorMin, errorMax, Color.BLACK, LineStyles.SOLID, 2);
+ }
+
@Override
public Line lineX(String label, double startingX, double xIncrement, float[] xData, Color color, LineStyles style, int pxThickness) {
return new BasicLine(label, startingX, xIncrement, xData, color, style, pxThickness);
@@ -72,6 +77,12 @@ public Rectangle rectangle(final double x1, final double x2, final double yRatio
return new Rectangle(x1, x2, yRatio, label, color);
}
+ @Override
+ public Rectangle rectangle(final double x1, final double x2, final int pxWidth, final double yRatio, final String label, final Color edgeColor, final Color fillColor, final boolean draggable,
+ boolean logScaleX) {
+ return new Rectangle(x1, x2, pxWidth, yRatio, label, edgeColor, fillColor, draggable, logScaleX);
+ }
+
@Override
public Symbol createSymbol(final SymbolStyles style, final String name, final double x, final double y, final Color color, final Color edgeColor, final Color textColor, final String text,
final boolean textVisible) {
diff --git a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/RatioDetailPlot.java b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/RatioDetailPlot.java
index 8e7e8957..209cfc5e 100644
--- a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/RatioDetailPlot.java
+++ b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/RatioDetailPlot.java
@@ -600,7 +600,9 @@ public void resetCuts() {
int numerEndIdx = numeratorSeries.getIndexForTime(new TimeT(ratioDetails.getNumerEndCutSec()).add(numerOriginTime).getEpochTime());
int denomEndIdx = denominatorSeries.getIndexForTime(new TimeT(ratioDetails.getDenomEndCutSec()).add(denomOriginTime).getEpochTime());
+ this.ratioDetails.setUserEdited(false);
this.ratioDetails.updateCutTimesAndRecalculateDiff(numerStartIdx, denomStartIdx, numerEndIdx, denomEndIdx);
+
if (this.cutSegmentChangeListener != null) {
CompletableFuture.runAsync(() -> {
cutSegmentProperty.firePropertyChange(new PropertyChangeEvent(this, "segment_change", null, null));
@@ -616,18 +618,22 @@ protected void handlePickMovedState(PlotShapeMove move) {
case NUMERATOR_START_CUT_LABEL:
log.trace("Numerator start cut moved.");
adjustStartCuts(move.getX0());
+ this.ratioDetails.setUserEdited(true);
break;
case NUMERATOR_END_CUT_LABEL:
log.trace("Numerator end cut moved.");
adjustEndCuts(move.getX0());
+ this.ratioDetails.setUserEdited(true);
break;
case NUMERATOR_CUT_LABEL:
log.trace("Numerator cut moved.");
shiftCutByTime(move.getX0(), true);
+ this.ratioDetails.setUserEdited(true);
break;
case DENOMINATOR_CUT_LABEL:
log.trace("Denominator cut moved.");
shiftCutByTime(move.getX0(), false);
+ this.ratioDetails.setUserEdited(true);
break;
default:
log.trace("No cut moved.");
diff --git a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/RatioMeasurementSpectraPlotManager.java b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/RatioMeasurementSpectraPlotManager.java
index c31e7ae8..15be1414 100644
--- a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/RatioMeasurementSpectraPlotManager.java
+++ b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/RatioMeasurementSpectraPlotManager.java
@@ -1,6 +1,6 @@
/*
* Copyright (c) 2023, Lawrence Livermore National Security, LLC. Produced at the Lawrence Livermore National Laboratory
-* CODE-743439.
+* CODE-743439, CODE-848318.
* All rights reserved.
* This file is part of CCT. For details, see https://github.com/LLNL/coda-calibration-tool.
*
@@ -25,6 +25,7 @@
import java.text.NumberFormat;
import java.time.Duration;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -38,6 +39,8 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.google.common.eventbus.EventBus;
+
import gov.llnl.gnem.apps.coda.calibration.gui.controllers.SpectraRatioPlotController;
import gov.llnl.gnem.apps.coda.calibration.gui.data.client.api.SpectraClient;
import gov.llnl.gnem.apps.coda.calibration.gui.data.exporters.SpectraRatioExporter;
@@ -58,6 +61,7 @@
import gov.llnl.gnem.apps.coda.common.model.messaging.Result;
import gov.llnl.gnem.apps.coda.common.model.util.SPECTRA_TYPES;
import gov.llnl.gnem.apps.coda.spectra.model.domain.SpectraRatioPairDetails;
+import gov.llnl.gnem.apps.coda.spectra.model.domain.SpectraRatioPairDetailsMetadataImpl;
import gov.llnl.gnem.apps.coda.spectra.model.domain.SpectraRatioPairInversionResult;
import gov.llnl.gnem.apps.coda.spectra.model.domain.SpectraRatioPairInversionResultJoint;
import gov.llnl.gnem.apps.coda.spectra.model.domain.messaging.EventPair;
@@ -98,7 +102,6 @@
import llnl.gnem.core.gui.plotting.api.PlotFactory;
import llnl.gnem.core.gui.plotting.api.PlotObject;
import llnl.gnem.core.gui.plotting.api.SymbolStyles;
-import llnl.gnem.core.gui.plotting.api.VerticalLine;
import llnl.gnem.core.gui.plotting.events.PlotObjectClick;
import llnl.gnem.core.gui.plotting.plotly.PlotObjectData;
import llnl.gnem.core.gui.plotting.plotly.PlotTrace;
@@ -130,7 +133,7 @@ public class RatioMeasurementSpectraPlotManager {
private Map symbolMap;
private List spectraRatioPairOperatorList;
- private Map symbolStyleMap;
+ private Map> symbolStyleMap;
private SpectraClient spectraClient;
private final Property shouldFocus = new SimpleBooleanProperty(false);
@@ -228,9 +231,11 @@ public class RatioMeasurementSpectraPlotManager {
private PlotObjectData bestMomentPointPlotData;
private SpectraRatioExporter spectraRatioExporter;
+ private EventBus bus;
- public RatioMeasurementSpectraPlotManager(final SymbolStyleMapFactory styleFactory, CertLeafletMapController mapImpl, MapPlottingUtilities iconFactory, SpectraClient spectraClient,
+ public RatioMeasurementSpectraPlotManager(EventBus bus, final SymbolStyleMapFactory styleFactory, CertLeafletMapController mapImpl, MapPlottingUtilities iconFactory, SpectraClient spectraClient,
SpectraRatioExporter spectraRatioExporter) {
+ this.bus = bus;
this.symbolStyleMapFactory = styleFactory;
this.mapImpl = mapImpl;
this.iconFactory = iconFactory;
@@ -319,6 +324,9 @@ protected void updateItem(EventPair pair, boolean empty) {
ratioSpectralPlotController.setYAxisResizable(true);
ratioSpectralPlotController.setShouldShowFits(true);
+ // Map to store styles for each event pair
+ symbolStyleMap = new HashMap<>();
+
SpectralPlot plot = getRatioSpectraPlot();
plot.setLabels("Seismic Envelope Ratio Spectra", X_AXIS_LABEL, Y_AXIS_LABEL);
plot.getSubplot().addPlotObjectObserver(getPlotpointObserver(ratioSpectralPlotController::getSpectraDataMap));
@@ -516,7 +524,7 @@ public void downloadPlots(final ActionEvent e) {
Path tmpFolder = Files.createTempDirectory(Long.toString(System.currentTimeMillis()));
tmpFolder.toFile().deleteOnExit();
exportScreenshots(tmpFolder.toFile());
- exportArchive = spectraRatioExporter.createExportArchive(ratiosByEventPair, tmpFolder);
+ exportArchive = spectraRatioExporter.createExportArchive(ratiosByEventPair.stream().map(SpectraRatioPairDetailsMetadataImpl::new).collect(Collectors.toList()), tmpFolder);
if (exportArchive != null) {
Files.move(exportArchive.toPath(), selectedFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
}
@@ -530,44 +538,22 @@ public void downloadPlots(final ActionEvent e) {
private void plotStationData(EventPair eventPair) {
List ratiosByEventPair = ratioMeasurementReport.getRatiosList(getEventPair());
- symbolStyleMap = symbolStyleMapFactory.build(new ArrayList<>(ratioMeasurementReport.getReport().getData().get(eventPair).keySet()), Station::getStationName);
+
+ // Create new spectra style map if none exists for the specified event pair
+ if (symbolStyleMap.get(eventPair) == null) {
+ Map symbolMapStyle = symbolStyleMapFactory.build(new ArrayList<>(ratioMeasurementReport.getReport().getData().get(eventPair).keySet()), Station::getStationName);
+ symbolStyleMap.put(eventPair, symbolMapStyle);
+ }
+
spectraRatioPairOperatorList = ratiosByEventPair.stream().map(SpectraRatioPairOperator::new).collect(Collectors.toList());
+
symbolMap.clear();
symbolMap.putAll(mapFunctionToPoint(spectraRatioPairOperatorList, SpectraRatioPairOperator::getDiffAvg));
ratioSpectralPlotController.getSpectraDataMap().clear();
- getRatioSpectraPlot().clearPlot();
ratioSpectralPlotController.getSpectraDataMap().putAll(symbolMap);
- getRatioSpectraPlot().plotXYdata(toPlotPoints(SpectraRatioPairOperator::getDiffAvg), null, Y_AXIS_LABEL);
-
- Map inversionData = ratioMeasurementReport.getReport().getInversionEstimates();
- ratioSummaryValues.clear();
- ratioSummaryTable.getItems().clear();
-
- addEventDataToTable("Event Pair Data", eventPair);
-
- if (inversionData != null) {
- plotInversionPairData(inversionData, eventPair);
- addInversionDataToTable(inversionData.get(eventPair), "Pair Inversion Data");
- }
- Map jointInversionData = ratioMeasurementReport.getReport().getJointInversionEstimates();
- if (jointInversionData != null) {
- plotJointInversionData(jointInversionData, eventPair);
- addInversionDataToTable(jointInversionData.get(eventPair), "Joint Inversion Data");
- }
-
- updateMomentRatioLines();
-
- try {
- runGuiUpdate(() -> {
- getRatioSpectraPlot().getSubplot().fullReplot();
- });
- } catch (InvocationTargetException e) {
- log.debug(e.getMessage(), e);
- } catch (InterruptedException e) {
- log.debug(e.getMessage(), e);
- }
+ updateSpectraPlot(eventPair);
}
private void plotInversionPairData(Map inversionData, EventPair eventPair) {
@@ -595,6 +581,14 @@ private SpectraRatioPairInversionResult mapJointInversionResultToInversionResult
.setEventIdB(eventRecord.getEventIdB())
.setMomentEstimateA(eventRecord.getMomentEstimateA())
.setMomentEstimateB(eventRecord.getMomentEstimateB())
+ .setCornerEstimateA1Max(eventRecord.getCornerEstimateA1Max())
+ .setCornerEstimateA1Min(eventRecord.getCornerEstimateA1Min())
+ .setCornerEstimateB1Max(eventRecord.getCornerEstimateB1Max())
+ .setCornerEstimateB1Min(eventRecord.getCornerEstimateB1Min())
+ .setCornerEstimateA2Max(eventRecord.getCornerEstimateA2Max())
+ .setCornerEstimateA2Min(eventRecord.getCornerEstimateA2Min())
+ .setCornerEstimateB2Max(eventRecord.getCornerEstimateB2Max())
+ .setCornerEstimateB2Min(eventRecord.getCornerEstimateB2Min())
.setApparentStressEstimateA(eventRecord.getApparentStressEstimateA())
.setApparentStressEstimateB(eventRecord.getApparentStressEstimateB())
.setCornerEstimateA(eventRecord.getCornerEstimateA())
@@ -706,7 +700,24 @@ private void plotInversionData(String dataLabelPrefix, Map avgRatioPoints = toPlotPoints(eventPair, SpectraRatioPairOperator::getDiffAvg).stream().map(PlotPoint::getY).collect(Collectors.toList());
+ Double minY = Collections.min(avgRatioPoints);
+ Double maxY = Collections.max(avgRatioPoints);
+
+ // Make Pair inversion corner frequency lines smaller than joint
+ double offset = (maxY - minY) * 0.1;
+ if (dataLabelPrefix.equals("Pair")) {
+ minY += offset;
+ maxY -= offset;
+ }
+
+ double errorA = bestFit.getCornerEstimateA1Max();
+ double errorB = bestFit.getCornerEstimateB1Max();
+ double errorMinusA = bestFit.getCornerEstimateA1Min();
+ double errorMinusB = bestFit.getCornerEstimateB1Min();
+
+ setCornerFrequencyLines(bestFit.getCornerEstimateA(), bestFit.getCornerEstimateB(), errorA, errorB, errorMinusA, errorMinusB, ratioShapeColor, maxY, minY);
Line fitRatioShape = plotMomentRatioShape(
spectraClient.getSpecificSpectra(bestFit.getMomentEstimateA(), bestFit.getApparentStressEstimateA(), 0.001, 30.0, 100).block(Duration.ofMinutes(10l)),
@@ -846,12 +857,13 @@ public Map mapFunctionToPoint(final List toPlotPoints(final Function func) {
+ private List toPlotPoints(final EventPair eventPair, final Function func) {
List allPlotPoints = new ArrayList<>();
+ Map symbolStyles = symbolStyleMap.get(eventPair);
spectraRatioPairOperatorList.forEach(ratioDetails -> {
FrequencyBand freqValue = ratioDetails.getFrequency();
- PlotPoint pp = symbolStyleMap.get(ratioDetails.getDenomWaveform().getStream().getStation().getStationName());
+ PlotPoint pp = symbolStyles.get(ratioDetails.getDenomWaveform().getStream().getStation().getStationName());
if (pp != null) {
pp.setX(centerFreq(freqValue.getLowFrequency(), freqValue.getHighFrequency()));
pp.setY(func.apply(ratioDetails));
@@ -974,18 +986,10 @@ private void setMomentRefRatioLines(double momentRatio, double refRatio) {
getRatioSpectraPlot().getSubplot().addPlotObject(refLine);
}
- private void setCornerFrequencyLines(double cornerEstimateA, double cornerEstimateB, Color lineColor) {
-
- VerticalLine lineA = plotFactory.verticalLine(cornerEstimateA, 50.0, dfmt2.format(cornerEstimateA));
- lineA.setFillColor(lineColor);
- VerticalLine lineB = plotFactory.verticalLine(cornerEstimateB, 50.0, dfmt2.format(cornerEstimateB));
- lineB.setFillColor(lineColor);
-
- lineA.setLogScaleX(true);
- lineB.setLogScaleX(true);
-
- getRatioSpectraPlot().getSubplot().addPlotObject(lineA);
- getRatioSpectraPlot().getSubplot().addPlotObject(lineB);
+ private void setCornerFrequencyLines(double cornerEstimateA, double cornerEstimateB, double errorA, double errorB, double errorMinusA, double errorMinusB, Color lineColor, Double yTop,
+ Double yBottom) {
+ getRatioSpectraPlot().plotCornerFrequency("~Fc Low", cornerEstimateA, errorA, errorMinusA, yTop, yBottom, lineColor);
+ getRatioSpectraPlot().plotCornerFrequency("~Fc High", cornerEstimateB, errorB, errorMinusB, yTop, yBottom, lineColor);
}
protected void runGuiUpdate(final Runnable runnable) throws InvocationTargetException, InterruptedException {
@@ -1102,7 +1106,7 @@ public Result getRatioDetailsFromStationAndFreq(Station
private void createRatioWaveformPlotPopup(SpectraRatioPairOperator ratioDetails) {
- RatioMeasurementWaveformPlotManager ratioWaveformPlots = new RatioMeasurementWaveformPlotManager(mapImpl, iconFactory);
+ RatioMeasurementWaveformPlotManager ratioWaveformPlots = new RatioMeasurementWaveformPlotManager(bus, mapImpl, iconFactory);
ratioWaveformPlots.setParentSpectra(this);
ratioWaveformPlots.setCurrentEvent(ratioMeasurementReport.getStationsForEventPair(getEventPair()));
@@ -1139,8 +1143,9 @@ private void createRatioWaveformPlotPopup(SpectraRatioPairOperator ratioDetails)
}
private void createSpectraPlotPopup() {
- List numerPoints = new ArrayList<>(toPlotPoints(SpectraRatioPairOperator::getNumerAvg));
- List denomPoints = new ArrayList<>(toPlotPoints(SpectraRatioPairOperator::getDenomAvg));
+ EventPair eventPair = getEventPair();
+ List numerPoints = new ArrayList<>(toPlotPoints(eventPair, SpectraRatioPairOperator::getNumerAvg));
+ List denomPoints = new ArrayList<>(toPlotPoints(eventPair, SpectraRatioPairOperator::getDenomAvg));
SpectraPlotManager spectraPlotManager = new SpectraPlotManager(getEventPair(), numerPoints, denomPoints);
final FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/fxml/SpectraPlotGui.fxml"));
@@ -1199,13 +1204,48 @@ public void triggerKeyEvent(final KeyEvent event) {
log.trace("Key Pressed on Ratio Spectra Plot");
}
- protected void updatePlotPoint() {
+ protected void updatePlotPoint(EventPair eventPair) {
+ EventPair currentPair = getEventPair();
symbolMap = mapFunctionToPoint(spectraRatioPairOperatorList, SpectraRatioPairOperator::getDiffAvg);
- ratioSpectralPlotController.getSpectraDataMap().clear();
- ratioSpectralPlotController.getSpectraDataMap().putAll(symbolMap);
- ratioSpectralPlotController.getSpectralPlot().plotXYdata(toPlotPoints(SpectraRatioPairOperator::getDiffAvg), null, Y_AXIS_LABEL);
+
+ if (eventPair.getX().getEventId() == currentPair.getX().getEventId() && eventPair.getY().getEventId() == currentPair.getY().getEventId()) {
+ updateSpectraPlot(eventPair);
+ }
+ }
+
+ protected void updateSpectraPlot(EventPair eventPair) {
+
+ getRatioSpectraPlot().clearPlot();
+ getRatioSpectraPlot().plotXYdata(toPlotPoints(eventPair, SpectraRatioPairOperator::getDiffAvg), null, null, Y_AXIS_LABEL);
+
+ Map inversionData = ratioMeasurementReport.getReport().getInversionEstimates();
+ ratioSummaryValues.clear();
+ ratioSummaryTable.getItems().clear();
+
+ addEventDataToTable("Event Pair Data", eventPair);
+
+ if (inversionData != null) {
+ plotInversionPairData(inversionData, eventPair);
+ addInversionDataToTable(inversionData.get(eventPair), "Pair Inversion Data");
+ }
+
+ Map jointInversionData = ratioMeasurementReport.getReport().getJointInversionEstimates();
+ if (jointInversionData != null) {
+ plotJointInversionData(jointInversionData, eventPair);
+ addInversionDataToTable(jointInversionData.get(eventPair), "Joint Inversion Data");
+ }
updateMomentRatioLines();
+
+ try {
+ runGuiUpdate(() -> {
+ getRatioSpectraPlot().getSubplot().fullReplot();
+ });
+ } catch (InvocationTargetException e) {
+ log.debug(e.getMessage(), e);
+ } catch (InterruptedException e) {
+ log.debug(e.getMessage(), e);
+ }
}
public void exportScreenshots(final File folder) {
diff --git a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/RatioMeasurementWaveformPlotManager.java b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/RatioMeasurementWaveformPlotManager.java
index 75cc972e..57157450 100644
--- a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/RatioMeasurementWaveformPlotManager.java
+++ b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/RatioMeasurementWaveformPlotManager.java
@@ -28,6 +28,8 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.google.common.eventbus.EventBus;
+
import gov.llnl.gnem.apps.coda.common.gui.util.NumberFormatFactory;
import gov.llnl.gnem.apps.coda.common.gui.util.SnapshotUtils;
import gov.llnl.gnem.apps.coda.common.model.domain.FrequencyBand;
@@ -35,6 +37,7 @@
import gov.llnl.gnem.apps.coda.common.model.domain.Station;
import gov.llnl.gnem.apps.coda.common.model.domain.Waveform;
import gov.llnl.gnem.apps.coda.common.model.messaging.Result;
+import gov.llnl.gnem.apps.coda.spectra.gui.events.RatioSegmentChangeEvent;
import gov.llnl.gnem.apps.coda.spectra.model.domain.SpectraRatioPairDetails;
import gov.llnl.gnem.apps.coda.spectra.model.domain.util.SpectraRatioPairOperator;
import javafx.application.Platform;
@@ -74,6 +77,7 @@ public class RatioMeasurementWaveformPlotManager {
private static final Logger log = LoggerFactory.getLogger(RatioMeasurementWaveformPlotManager.class);
private final NumberFormat dfmt4 = NumberFormatFactory.fourDecimalOneLeadingZero();
private RatioMeasurementSpectraPlotManager parentSpectraPlot;
+ private EventBus bus;
private RatioDetailPlot selectedSinglePlot;
private RatioDetailPlot ratioDiffWavePlot;
@@ -206,7 +210,8 @@ public class RatioMeasurementWaveformPlotManager {
showHideRatioWaveform(ratioWindowModeBoolean);
};
- public RatioMeasurementWaveformPlotManager(CertLeafletMapController mapImpl, MapPlottingUtilities iconFactory) {
+ public RatioMeasurementWaveformPlotManager(EventBus bus, CertLeafletMapController mapImpl, MapPlottingUtilities iconFactory) {
+ this.bus = bus;
this.mapImpl = mapImpl;
this.iconFactory = iconFactory;
freqBandLabel = new Label("Frequency Band");
@@ -256,7 +261,7 @@ public void setCurrentStation(Station station) {
}
// Ensure frequency index fits new station
- if (curFreqIndex > curFrequencies.size()) {
+ if (curFreqIndex >= curFrequencies.size()) {
curFreqIndex = curFrequencies.size() - 1;
}
@@ -478,13 +483,15 @@ private void updatePlotAxes(PlotAxisChange change) {
private void updatePlot() {
if (selectedSinglePlot != null) {
if (this.parentSpectraPlot != null) {
- this.parentSpectraPlot.updatePlotPoint();
+ this.parentSpectraPlot.updatePlotPoint(selectedSinglePlot.getRatioDetails().getEventPair());
}
Platform.runLater(() -> {
setDisplayText(selectedSinglePlot.getRatioDetails());
selectedSinglePlot.plotRatio();
ratioDiffWavePlot.plotDiffRatio();
});
+
+ bus.post(new RatioSegmentChangeEvent(selectedSinglePlot.getRatioDetails()));
}
}
diff --git a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/RatioMeasurementsGui.java b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/RatioMeasurementsGui.java
index 877c0cf5..c33bc5e5 100644
--- a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/RatioMeasurementsGui.java
+++ b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/RatioMeasurementsGui.java
@@ -28,6 +28,7 @@
import gov.llnl.gnem.apps.coda.calibration.gui.data.exporters.SpectraRatioExporter;
import gov.llnl.gnem.apps.coda.calibration.model.messaging.RatioMeasurementEvent;
import gov.llnl.gnem.apps.coda.common.gui.plotting.SymbolStyleMapFactory;
+import gov.llnl.gnem.apps.coda.spectra.gui.events.RatioSegmentChangeEvent;
import gov.llnl.gnem.apps.coda.spectra.model.domain.util.SpectraRatiosReportByEventPair;
import javafx.application.Platform;
import javafx.beans.property.Property;
@@ -46,23 +47,27 @@ public class RatioMeasurementsGui {
private final MapPlottingUtilities iconFactory;
private SpectraClient spectraClient;
private SpectraRatioExporter spectraRatioExporter;
+ private SpectraRatioClient spectraRatioClient;
private final SymbolStyleMapFactory symbolStyleFactory;
private final Property shouldFocus = new SimpleBooleanProperty(false);
+ private EventBus bus;
@Autowired
public RatioMeasurementsGui(final EventBus bus, final SymbolStyleMapFactory styleFactory, final CertLeafletMapController mapImpl, final MapPlottingUtilities iconFactory,
SpectraClient spectraClient, SpectraRatioClient spectraRatioClient, SpectraRatioExporter spectraRatioExporter) {
bus.register(this);
+ this.bus = bus;
this.mapImpl = mapImpl;
this.iconFactory = iconFactory;
this.spectraClient = spectraClient;
this.spectraRatioExporter = spectraRatioExporter;
+ this.spectraRatioClient = spectraRatioClient;
this.symbolStyleFactory = styleFactory;
}
private void createSpectraPlotPopup(SpectraRatiosReportByEventPair ratioReport) {
- RatioMeasurementSpectraPlotManager spectraRatioPlotManager = new RatioMeasurementSpectraPlotManager(symbolStyleFactory, mapImpl, iconFactory, spectraClient, spectraRatioExporter);
+ RatioMeasurementSpectraPlotManager spectraRatioPlotManager = new RatioMeasurementSpectraPlotManager(bus, symbolStyleFactory, mapImpl, iconFactory, spectraClient, spectraRatioExporter);
spectraRatioPlotManager.setRatioMeasurements(ratioReport);
final FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/fxml/SpectraRatioPlotGui.fxml"));
@@ -106,6 +111,11 @@ private void listener(final RatioMeasurementEvent event) {
}
}
+ @Subscribe
+ private void listener(final RatioSegmentChangeEvent event) {
+ spectraRatioClient.updateRatio(event.getRatioDetails().getRatio());
+ }
+
public Property focusProperty() {
return shouldFocus;
}
diff --git a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/SpectraPlotManager.java b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/SpectraPlotManager.java
index 979d854d..c422cf82 100644
--- a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/SpectraPlotManager.java
+++ b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/SpectraPlotManager.java
@@ -107,7 +107,7 @@ public SpectralPlot plotSpectra(List plotPoints, String plotTitle, Pa
if (plotPoints != null && plotPoints.size() > 1) {
SpectralPlot plot = new SpectralPlot();
setDisplayText(plot, plotTitle);
- plot.plotXYdata(plotPoints, null, AVG_LINE_LABEL);
+ plot.plotXYdata(plotPoints, null, null, AVG_LINE_LABEL);
plot.setLabels(plotTitle, X_AXIS_LABEL, Y_AXIS_LABEL);
Platform.runLater(() -> {
diff --git a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/SpectralPlot.java b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/SpectralPlot.java
index c1c6e405..611937af 100644
--- a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/SpectralPlot.java
+++ b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/SpectralPlot.java
@@ -1,6 +1,6 @@
/*
-* Copyright (c) 2021, Lawrence Livermore National Security, LLC. Produced at the Lawrence Livermore National Laboratory
-* CODE-743439.
+* Copyright (c) 2023, Lawrence Livermore National Security, LLC. Produced at the Lawrence Livermore National Laboratory
+* CODE-743439, CODE-848318.
* All rights reserved.
* This file is part of CCT. For details, see https://github.com/LLNL/coda-calibration-tool.
*
@@ -17,11 +17,13 @@
import java.io.Serializable;
import java.text.NumberFormat;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
+import gov.llnl.gnem.apps.coda.calibration.model.domain.MeasuredMwDetails;
import gov.llnl.gnem.apps.coda.calibration.model.domain.Spectra;
import gov.llnl.gnem.apps.coda.common.gui.plotting.LabeledPlotPoint;
import gov.llnl.gnem.apps.coda.common.gui.plotting.PlotPoint;
@@ -42,13 +44,17 @@
import llnl.gnem.core.gui.plotting.api.Axis;
import llnl.gnem.core.gui.plotting.api.AxisLimits;
import llnl.gnem.core.gui.plotting.api.BasicPlot;
+import llnl.gnem.core.gui.plotting.api.FillModes;
+import llnl.gnem.core.gui.plotting.api.HoverModes;
import llnl.gnem.core.gui.plotting.api.Line;
import llnl.gnem.core.gui.plotting.api.LineStyles;
+import llnl.gnem.core.gui.plotting.api.ObjectGroup;
import llnl.gnem.core.gui.plotting.api.PlotFactory;
import llnl.gnem.core.gui.plotting.api.PlotObject;
import llnl.gnem.core.gui.plotting.api.PlottingUtils;
import llnl.gnem.core.gui.plotting.api.Symbol;
import llnl.gnem.core.gui.plotting.api.SymbolStyles;
+import llnl.gnem.core.gui.plotting.plotly.BasicObjectGroup;
public class SpectralPlot extends Pane implements Serializable {
@@ -187,7 +193,7 @@ protected void plotXYdata(final List points) {
* calibration spectra
*
*/
- public void plotXYdata(final List plots, final List spectra, final String label) {
+ public void plotXYdata(final List plots, final List spectra, final MeasuredMwDetails mwDetails, final String label) {
plot.clear();
if (plots.size() > 1) {
@@ -214,7 +220,7 @@ public void plotXYdata(final List plots, final List spectra,
if (spectra != null) {
for (final Spectra spec : spectra) {
if (plotCorners && spec.getCornerFrequency() != null) {
- plotCornerFrequency(spec.getCornerFrequency());
+ plotCornerFrequency("~Fc", spec, mwDetails, Color.BLACK);
}
plotSpectraObject(plot, spec);
}
@@ -227,8 +233,91 @@ public void plotXYdata(final List plots, final List spectra,
plot.replot();
}
- private void plotCornerFrequency(final double cornerFreq) {
- plot.addPlotObject(plotFactory.verticalLine(cornerFreq, 50, "~Fc (" + dfmt.format(cornerFreq) + ")").setDraggable(false).setLogScaleX(true).setFillColor(Color.BLACK));
+ private void plotCornerFrequency(final String name, final Spectra spec, final MeasuredMwDetails mwDetails, final Color color) {
+ List mwValuesY = spec.getSpectraXY().stream().map(d -> d.getY() - 7.0).collect(Collectors.toList());
+
+ Double minY = Collections.min(mwValuesY);
+ Double maxY = Collections.max(mwValuesY);
+ Double cF = spec.getCornerFrequency();
+
+ double error = 0.0;
+ double errorMinus = 0.0;
+
+ if (mwDetails != null) {
+ error = mwDetails.getCornerFreq2Max();
+ errorMinus = mwDetails.getCornerFreq2Min();
+ }
+
+ ObjectGroup cornerFreqLine = buildVerticalLineWithHorizontalErrorBars(name, cF, maxY, minY, error, errorMinus, color);
+ cornerFreqLine.plotGroup(plot);
+ }
+
+ public void plotCornerFrequency(String name, final Double cornerFreq, final Double error, final Double errorMinus, final Double topY, final Double bottomY, final Color color) {
+ ObjectGroup cornerFreqLine = buildVerticalLineWithHorizontalErrorBars(name, cornerFreq, topY, bottomY, error, errorMinus, color);
+ cornerFreqLine.getLegendObject().setFillColor(Color.BLACK);
+ cornerFreqLine.plotGroup(plot);
+ }
+
+ public ObjectGroup buildVerticalLineWithHorizontalErrorBars(final String name, final Double x, final Double topY, final Double bottomY, final Double error, final Double errorMinus,
+ final Color color) {
+
+ final double[] xPos = new double[1];
+ final double[] shadowX = new double[5];
+ final double[] shadowY = new double[5];
+ final double[] maxY = new double[1];
+ final double[] midY = new double[1];
+ final double[] minY = new double[1];
+ final double[] e1 = new double[1];
+ final double[] e2 = new double[1];
+ final double[] height = new double[1];
+
+ xPos[0] = x;
+ maxY[0] = topY;
+ minY[0] = bottomY;
+ midY[0] = (topY + bottomY) / 2.0;
+ e1[0] = error - x;
+ e2[0] = x - errorMinus;
+ height[0] = (topY - bottomY) / 2.0;
+
+ // Setting shadow box coordinates
+ shadowX[0] = errorMinus;
+ shadowX[1] = errorMinus;
+ shadowX[2] = error;
+ shadowX[3] = error;
+ shadowX[4] = errorMinus;
+ shadowY[0] = topY;
+ shadowY[1] = bottomY;
+ shadowY[2] = bottomY;
+ shadowY[3] = topY;
+ shadowY[4] = topY;
+
+ Line shadowBox = plotFactory.line(shadowX, shadowY, color.deriveColor(0.0, 1.0, 1.0, 0.1), LineStyles.SOLID, 1);
+ shadowBox.setFillMode(FillModes.TO_SELF); // Fills the area between the lines
+ shadowBox.setHoverMode(HoverModes.SKIP); // Skips hover actions for the shadow box
+
+ Line valueLine = plotFactory.lineWithErrorBars(xPos, midY, height, height);
+ valueLine.setFillColor(color);
+ valueLine.setUseHorizontalErrorBars(false);
+
+ Line topErrorLine = plotFactory.lineWithErrorBars(xPos, maxY, e1, e2);
+ topErrorLine.setFillColor(color);
+ topErrorLine.setUseHorizontalErrorBars(true);
+
+ Line botErrorLine = plotFactory.lineWithErrorBars(xPos, minY, e1, e2);
+ botErrorLine.setFillColor(color);
+ botErrorLine.setUseHorizontalErrorBars(true);
+
+ ObjectGroup cornerFreqBar = new BasicObjectGroup(plotFactory, name);
+ cornerFreqBar.setHoverName(name);
+ cornerFreqBar.setHoverTemplate("%{x:.2f} (" + dfmt.format(errorMinus) + ", " + dfmt.format(error) + ")");
+
+ // Order matters! Add shadow first to plot it under error bars.
+ cornerFreqBar.addPlotObject(shadowBox);
+ cornerFreqBar.addPlotObject(valueLine);
+ cornerFreqBar.addPlotObject(topErrorLine);
+ cornerFreqBar.addPlotObject(botErrorLine);
+
+ return cornerFreqBar;
}
private void plotSpectraObject(final BasicPlot jsubplot, final Spectra spectra) {
diff --git a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/WaveformGui.java b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/WaveformGui.java
index 5cd19525..48c329b1 100644
--- a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/WaveformGui.java
+++ b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/calibration/gui/plotting/WaveformGui.java
@@ -30,7 +30,6 @@
import gov.llnl.gnem.apps.coda.calibration.gui.data.client.api.ShapeMeasurementClient;
import gov.llnl.gnem.apps.coda.common.gui.data.client.api.WaveformClient;
import gov.llnl.gnem.apps.coda.common.gui.events.WaveformSelectionEvent;
-import gov.llnl.gnem.apps.coda.common.mapping.api.GeoMap;
import javafx.application.Platform;
import javafx.beans.property.Property;
import javafx.beans.property.SimpleBooleanProperty;
@@ -68,20 +67,22 @@ public class WaveformGui {
private final ShapeMeasurementClient shapeClient;
private final ParameterClient paramsClient;
private final PeakVelocityClient peakVelocityClient;
- private final GeoMap map;
+ private final CertLeafletMapController certMap;
+ private final LeafletMapController cctMap;
private final MapPlottingUtilities mapPlotUtilities;
private final Property shouldFocus = new SimpleBooleanProperty(false);
private final DirectoryChooser screenshotFolderChooser = new DirectoryChooser();
@Autowired
- public WaveformGui(final WaveformClient waveformClient, final ShapeMeasurementClient shapeClient, final ParameterClient paramsClient, final PeakVelocityClient peakVelocityClient, final GeoMap map,
- final MapPlottingUtilities mapPlotUtilities, final EventBus bus) {
+ public WaveformGui(final WaveformClient waveformClient, final ShapeMeasurementClient shapeClient, final ParameterClient paramsClient, final PeakVelocityClient peakVelocityClient,
+ final LeafletMapController cctMap, final CertLeafletMapController certMap, final MapPlottingUtilities mapPlotUtilities, final EventBus bus) {
this.waveformClient = waveformClient;
this.shapeClient = shapeClient;
this.paramsClient = paramsClient;
this.peakVelocityClient = peakVelocityClient;
- this.map = map;
this.mapPlotUtilities = mapPlotUtilities;
+ this.cctMap = cctMap;
+ this.certMap = certMap;
bus.register(this);
Platform.runLater(() -> {
final FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/fxml/WaveformGui.fxml"));
@@ -122,13 +123,14 @@ private void listener(final WaveformSelectionEvent event) {
@FXML
public void initialize() {
final Label label = new Label("\uE3B0");
+
label.getStyleClass().add("material-icons-medium");
label.setMaxHeight(16);
label.setMinWidth(16);
snapshotButton.setGraphic(label);
snapshotButton.setContentDisplay(ContentDisplay.CENTER);
screenshotFolderChooser.setTitle("Screenshot Export Folder");
- waveformPlotManager = new CodaWaveformPlotManager(waveformClient, shapeClient, paramsClient, peakVelocityClient, map, mapPlotUtilities);
+ waveformPlotManager = new CodaWaveformPlotManager(waveformClient, shapeClient, paramsClient, peakVelocityClient, certMap, cctMap, mapPlotUtilities);
waveformPlotManager.attachToDisplayNode(waveformPlotNode);
stage.setOnCloseRequest(evt -> {
waveformPlotManager.setSavedAxisLimits(null);
diff --git a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/envelope/gui/controllers/WaveformLoadingController.java b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/envelope/gui/controllers/WaveformLoadingController.java
index 07d5ac67..c03e6f19 100644
--- a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/envelope/gui/controllers/WaveformLoadingController.java
+++ b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/envelope/gui/controllers/WaveformLoadingController.java
@@ -181,7 +181,7 @@ public void stackEnvelopes(SortedMap> evidStaFreqMap) {
bus.post(progressEvent);
evidStaFreqMap.entrySet().parallelStream().forEach(entry -> {
- if (entry.getValue().size() > 1) {
+ if (!entry.getValue().isEmpty()) {
List files = entry.getValue();
Map> waveformsByFreqAndSta = new HashMap<>();
@@ -241,7 +241,7 @@ private Waveform stackEnvelopes(List waves) {
// FIXME: Duplicate of the one in service.
// Need a common-utils because this pulls in stuff from Externals for TimeSeries etc so I can't cheat and slam it into the common model.
Waveform base = null;
- if (waves != null && waves.size() > 1) {
+ if (waves != null && !waves.isEmpty()) {
try {
base = waves.get(0);
TimeSeries seis = convertToTimeSeries(base);
@@ -272,7 +272,7 @@ private Waveform stackEnvelopes(List waves) {
log.info(e.getMessage(), e);
}
} else {
- log.info("Waveform with only one channel found for list {}, skipping stacking", waves);
+ log.info("Empty list provided for creating envelopes, skipping");
}
return base;
}
diff --git a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/spectra/gui/SpectraRatioGuiController.java b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/spectra/gui/SpectraRatioGuiController.java
index 2a61551d..2a5535b6 100644
--- a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/spectra/gui/SpectraRatioGuiController.java
+++ b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/spectra/gui/SpectraRatioGuiController.java
@@ -1,6 +1,6 @@
/*
* Copyright (c) 2023, Lawrence Livermore National Security, LLC. Produced at the Lawrence Livermore National Laboratory
-* CODE-743439.
+* CODE-743439, CODE-848318.
* All rights reserved.
* This file is part of CCT. For details, see https://github.com/LLNL/coda-calibration-tool.
*
@@ -39,18 +39,21 @@
import gov.llnl.gnem.apps.coda.calibration.gui.data.client.api.EventClient;
import gov.llnl.gnem.apps.coda.calibration.gui.data.client.api.SpectraClient;
import gov.llnl.gnem.apps.coda.calibration.gui.data.client.api.SpectraRatioClient;
+import gov.llnl.gnem.apps.coda.calibration.gui.plotting.CertLeafletMapController;
import gov.llnl.gnem.apps.coda.calibration.model.domain.Spectra;
import gov.llnl.gnem.apps.coda.calibration.model.messaging.RatioMeasurementEvent;
import gov.llnl.gnem.apps.coda.calibration.model.messaging.RatioStatusEvent;
import gov.llnl.gnem.apps.coda.calibration.model.messaging.RatioStatusEvent.Status;
import gov.llnl.gnem.apps.coda.common.gui.events.ShowFailureReportEvent;
import gov.llnl.gnem.apps.coda.common.gui.util.MaybeNumericStringComparator;
+import gov.llnl.gnem.apps.coda.common.model.domain.Event;
import gov.llnl.gnem.apps.coda.common.model.messaging.Result;
import gov.llnl.gnem.apps.coda.common.model.util.SPECTRA_TYPES;
import gov.llnl.gnem.apps.coda.spectra.model.domain.SpectraEvent;
import javafx.application.Platform;
import javafx.beans.binding.Bindings;
import javafx.collections.FXCollections;
+import javafx.collections.ListChangeListener;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.scene.control.Alert;
@@ -62,6 +65,7 @@
import javafx.scene.control.TableColumn.CellDataFeatures;
import javafx.scene.control.TableView;
import javafx.stage.Stage;
+import llnl.gnem.core.util.Geometry.EModel;
@Component
public class SpectraRatioGuiController implements RefreshableController {
@@ -83,6 +87,9 @@ public class SpectraRatioGuiController implements RefreshableController {
@FXML
private TableColumn dateCol;
+ @FXML
+ private TableColumn distanceCol;
+
@FXML
private TableColumn numCol;
@@ -98,6 +105,9 @@ public class SpectraRatioGuiController implements RefreshableController {
@FXML
private MenuItem deselectRowsBtn;
+ @FXML
+ private MenuItem calculateDistanceBtn;
+
@FXML
private Button calcRatioBtn;
@@ -108,6 +118,9 @@ public class SpectraRatioGuiController implements RefreshableController {
private EventClient eventClient;
private SpectraClient spectraClient;
private SpectraRatioClient spectraRatioClient;
+ private CertLeafletMapController certMapController;
+
+ private Event selectedEventForDistCalc;
private EventBus bus;
private boolean calculationProcessing = false;
@@ -129,11 +142,12 @@ public class SpectraRatioGuiController implements RefreshableController {
private Stage stage;
- public SpectraRatioGuiController(EventClient eventClient, SpectraClient spectraClient, SpectraRatioClient spectraRatioClient, EventBus bus, ConfigurableApplicationContext springContext)
- throws IOException {
+ public SpectraRatioGuiController(EventClient eventClient, SpectraClient spectraClient, CertLeafletMapController certMapController, SpectraRatioClient spectraRatioClient, EventBus bus,
+ ConfigurableApplicationContext springContext) throws IOException {
this.eventClient = eventClient;
this.spectraClient = spectraClient;
this.spectraRatioClient = spectraRatioClient;
+ this.certMapController = certMapController;
this.bus = bus;
}
@@ -177,6 +191,18 @@ private Double getEventRefMw(SpectraEvent event) {
return eventSpectra.getMw();
}
+ private Double getEventDistance(SpectraEvent spectraEvent) {
+ Event event = eventClient.getEvent(spectraEvent.getEventID()).block();
+
+ // Calculate event distance based from selected event
+ if (event != null && selectedEventForDistCalc != null) {
+
+ return EModel.getDistanceWGS84(event.getLatitude(), event.getLongitude(), selectedEventForDistCalc.getLatitude(), selectedEventForDistCalc.getLongitude());
+ }
+
+ return 0.0;
+ }
+
public void loadEnvelopes() {
requestData();
}
@@ -185,11 +211,22 @@ public void loadEnvelopes() {
public void initialize() {
bus.register(this);
this.alertPopup = new Alert(Alert.AlertType.INFORMATION);
+ this.selectedEventForDistCalc = null;
alertPopup.setTitle("Notice");
alertPopup.setHeaderText(null);
alertPopup.setContentText("You need to select at least 1 numerator event and 1 denominator event to calculate ratios.");
tableView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
+ tableView.getSelectionModel().getSelectedItems().addListener(new ListChangeListener() {
+ @Override
+ public void onChanged(Change extends SpectraEvent> c) {
+ List events = c.getList().stream().map(s -> eventClient.getEvent(s.getEventID()).block()).collect(Collectors.toList());
+ List allEvents = tableView.getItems().stream().map(s -> eventClient.getEvent(s.getEventID()).block()).collect(Collectors.toList());
+ certMapController.setEventIconsInActive(allEvents);
+ certMapController.setEventIconsActive(events);
+ }
+ });
+
eventCol.setCellValueFactory(x -> Bindings.createStringBinding(() -> Optional.ofNullable(x).map(CellDataFeatures::getValue).map(SpectraEvent::getEventID).orElseGet(String::new)));
eventCol.comparatorProperty().set(new MaybeNumericStringComparator());
@@ -213,6 +250,8 @@ public void initialize() {
}).orElseGet(CheckBox::new)));
numCol.comparatorProperty().set((c1, c2) -> Boolean.compare(c1.isSelected(), c2.isSelected()));
+ distanceCol.setCellValueFactory(x -> Bindings.createObjectBinding(() -> Optional.ofNullable(x).map(CellDataFeatures::getValue).map(this::getEventDistance).orElseGet(null)));
+
denCol.setCellValueFactory(x -> Bindings.createObjectBinding(() -> Optional.ofNullable(x).map(CellDataFeatures::getValue).map(event -> {
CheckBox box = new CheckBox();
box.setSelected(event.isDenominator());
@@ -279,6 +318,14 @@ private void deselectRows() {
}
}
+ @FXML
+ private void calculateDistance() {
+ if (tableView != null) {
+ selectedEventForDistCalc = eventClient.getEvent(tableView.getSelectionModel().getSelectedItems().get(0).getEventID()).block();
+ tableView.refresh();
+ }
+ }
+
@FXML
private void calculateSpectraRatio() {
diff --git a/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/spectra/gui/events/RatioSegmentChangeEvent.java b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/spectra/gui/events/RatioSegmentChangeEvent.java
new file mode 100644
index 00000000..e475ced6
--- /dev/null
+++ b/calibration-gui/src/main/java/gov/llnl/gnem/apps/coda/spectra/gui/events/RatioSegmentChangeEvent.java
@@ -0,0 +1,31 @@
+/*
+* Copyright (c) 2023, Lawrence Livermore National Security, LLC. Produced at the Lawrence Livermore National Laboratory
+* CODE-743439, CODE-848318
+* All rights reserved.
+* This file is part of CCT. For details, see https://github.com/LLNL/coda-calibration-tool.
+*
+* Licensed under the Apache License, Version 2.0 (the “Licensee”); you may not use this file except in compliance with the License. You may obtain a copy of the License at:
+* http://www.apache.org/licenses/LICENSE-2.0
+* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and limitations under the license.
+*
+* This work was performed under the auspices of the U.S. Department of Energy
+* by Lawrence Livermore National Laboratory under Contract DE-AC52-07NA27344.
+*/
+package gov.llnl.gnem.apps.coda.spectra.gui.events;
+
+import gov.llnl.gnem.apps.coda.spectra.model.domain.util.SpectraRatioPairOperator;
+
+public class RatioSegmentChangeEvent {
+
+ private final SpectraRatioPairOperator ratioDetails;
+
+ public RatioSegmentChangeEvent(SpectraRatioPairOperator ratioDetails) {
+ this.ratioDetails = ratioDetails;
+ }
+
+ public SpectraRatioPairOperator getRatioDetails() {
+ return ratioDetails;
+ }
+
+}
diff --git a/calibration-gui/src/main/resources/fxml/CertGui.fxml b/calibration-gui/src/main/resources/fxml/CertGui.fxml
index 3d3b5ef6..9a362cad 100644
--- a/calibration-gui/src/main/resources/fxml/CertGui.fxml
+++ b/calibration-gui/src/main/resources/fxml/CertGui.fxml
@@ -37,6 +37,7 @@
+
diff --git a/calibration-service/calibration-application/pom.xml b/calibration-service/calibration-application/pom.xml
index 7249b698..9bf5022e 100644
--- a/calibration-service/calibration-application/pom.xml
+++ b/calibration-service/calibration-application/pom.xml
@@ -3,7 +3,7 @@
gov.llnl.gnem.apps.coda.calibration
calibration-service
- 1.0.20
+ 1.0.21
4.0.0
@@ -112,7 +112,7 @@
org.springframework.boot
spring-boot-maven-plugin
- true
+ true
gov.llnl.gnem.apps.coda.calibration.CalibrationApplication
runnable
true
diff --git a/calibration-service/calibration-application/src/main/java/gov/llnl/gnem/apps/coda/calibration/application/web/SpectraRatioJsonController.java b/calibration-service/calibration-application/src/main/java/gov/llnl/gnem/apps/coda/calibration/application/web/SpectraRatioJsonController.java
index e6e352eb..dcd9e69d 100644
--- a/calibration-service/calibration-application/src/main/java/gov/llnl/gnem/apps/coda/calibration/application/web/SpectraRatioJsonController.java
+++ b/calibration-service/calibration-application/src/main/java/gov/llnl/gnem/apps/coda/calibration/application/web/SpectraRatioJsonController.java
@@ -38,6 +38,7 @@
import gov.llnl.gnem.apps.coda.spectra.model.domain.RatioEventData;
import gov.llnl.gnem.apps.coda.spectra.model.domain.SpectraRatioMeasurementJob;
import gov.llnl.gnem.apps.coda.spectra.model.domain.SpectraRatioPairDetails;
+import gov.llnl.gnem.apps.coda.spectra.model.domain.SpectraRatioPairDetailsMetadata;
import gov.llnl.gnem.apps.coda.spectra.model.domain.SpectraRatiosReport;
import gov.llnl.gnem.apps.coda.spectra.model.domain.messaging.SpectraRatiosReportDTO;
@@ -59,6 +60,11 @@ public List getMeasurements() {
return service.findAll();
}
+ @GetMapping(name = "getMeasurementsMetadata", path = "/all-metadata-only", produces = MediaType.APPLICATION_JSON_VALUE)
+ public List getMeasurementsMetadata() {
+ return service.findAllMetadataOnly();
+ }
+
@PostMapping(value = "/measure-spectra-ratio-from-waveforms", name = "measureSpectraRatio", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity> measureSpectraRatioFromWaveforms(@RequestBody SpectraRatioMeasurementJob job) {
return measureSpectraRatioFromWaveforms(job.getAutoPickingEnabled(), job.getPersistResults(), job.getSmallEventIds(), job.getLargeEventIds());
@@ -69,6 +75,24 @@ public ResponseEntity> measureSpectraRatioFromRatioData(@RequestBody SpectraRa
return measureSpectraRatioFromRatioData(job.getSmallEventIds(), job.getLargeEventIds(), job.getRatioEventData());
}
+ @PostMapping(value = "/update-ratio", name = "updateSpectraRatio", produces = MediaType.APPLICATION_JSON_VALUE)
+ public ResponseEntity> updateSpectraRatio(@RequestBody SpectraRatioPairDetails ratio) {
+ try {
+ return ResponseEntity.ok().body(service.update(ratio));
+ } catch (RuntimeException e) {
+ return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(e.getLocalizedMessage());
+ }
+ }
+
+ @PostMapping(value = "/load-ratios-metadata", name = "loadRatioMetadata", produces = MediaType.APPLICATION_JSON_VALUE)
+ public ResponseEntity> loadRatioMetadata(@RequestBody List ratios) {
+ try {
+ return ResponseEntity.ok().body(service.loadRatioMetadata(ratios));
+ } catch (RuntimeException e) {
+ return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(e.getLocalizedMessage());
+ }
+ }
+
private ResponseEntity> measureSpectraRatioFromRatioData(Set smallEventIds, Set largeEventIds, List ratioEventData) {
log.trace("Received request to measure spectra ratio");
diff --git a/calibration-service/calibration-application/src/main/resources/static/img/import_complete.png b/calibration-service/calibration-application/src/main/resources/static/img/import_complete.png
index 1f54137682b2af95bbb3d49e102858606f24cd3a..15af0dc75b09d914eb521ab9b46a9e9aef4e17ac 100644
GIT binary patch
literal 390655
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 &
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