Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
74960a8
main.js seems to work with addition of simple scatter fields
mollybsmith-noaa May 28, 2026
954587b
submodule conflict
mollybsmith-noaa May 29, 2026
515cd16
Created simple scatter method
mollybsmith-noaa Jun 2, 2026
0125f3c
Merge branch 'development' into feature_metar_app_scatterplots
mollybsmith-noaa Jun 2, 2026
8114dc3
METAR app can now plot scalar statistics for ceiling and visibility
mollybsmith-noaa Jun 2, 2026
7635049
Spacing
mollybsmith-noaa Jun 2, 2026
c42f031
METAR scatter routine works up until the point where it starts assemb…
mollybsmith-noaa Jun 3, 2026
1f98627
METAR scatter routine cleanup
mollybsmith-noaa Jun 3, 2026
868222f
Added new stat templates for 2d plots
mollybsmith-noaa Jun 3, 2026
c305222
METAR app precalculated partial sums scatterplots work
mollybsmith-noaa Jun 3, 2026
92b972d
METAR app precalculated CTC scatterplots work
mollybsmith-noaa Jun 3, 2026
33ca6e8
Fixed data indexing issue in query function
mollybsmith-noaa Jun 4, 2026
149d253
Null points now support scatter plots properly
mollybsmith-noaa Jun 5, 2026
0656449
Matching works for METAR simple scatters
mollybsmith-noaa Jun 5, 2026
387ca10
isCTC and isScalar now determined for each curve instead of overall
mollybsmith-noaa Jun 5, 2026
13077dc
Removed redundancy in query function
mollybsmith-noaa Jun 9, 2026
766fb25
submodule merging
mollybsmith-noaa Jun 10, 2026
cf5522c
Added simple scatter middleware function call in METAR app
mollybsmith-noaa Jun 10, 2026
8de634c
submodule merging
mollybsmith-noaa Jun 10, 2026
cb0405b
Updated release notes
mollybsmith-noaa Jun 10, 2026
a7f3a84
Created simple scatter middleware file
mollybsmith-noaa Jun 11, 2026
18ed1f8
SimpleScatter middleware variable assignment
mollybsmith-noaa Jun 11, 2026
767b5cd
submodule conflict
mollybsmith-noaa Jun 12, 2026
0a5b980
Merge from development
mollybsmith-noaa Jun 12, 2026
720f3ba
simpleScatter middleware indVar selection
mollybsmith-noaa Jun 12, 2026
9025ccf
simpleScatter middleware indVar selection
mollybsmith-noaa Jun 12, 2026
c70e261
simple scatter middleware done except for CTC and Sums functions
mollybsmith-noaa Jun 15, 2026
bde60f8
submodule conflict
mollybsmith-noaa Jun 15, 2026
0234912
Middleware stat function signatures
mollybsmith-noaa Jun 16, 2026
abda2d9
simpleScatter middleware works
mollybsmith-noaa Jun 16, 2026
aa53c6b
Added new automated tests
mollybsmith-noaa Jun 16, 2026
7ae95a9
linting
mollybsmith-noaa Jun 16, 2026
1303e59
Updated release notes
mollybsmith-noaa Jun 16, 2026
ff5ac13
MET Cyclone date selector is less aggressive
mollybsmith-noaa Jun 16, 2026
f875f03
MET Cyclone date selector is less aggressive--couchbase edition
mollybsmith-noaa Jun 16, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion MATScommon
Submodule MATScommon updated 20 files
+1 −0 meteor_packages/mats-common/imports/startup/api/matsMethods.js
+6 −0 meteor_packages/mats-common/imports/startup/both/mats-curve-params.js
+47 −3 meteor_packages/mats-common/imports/startup/client/curve_util.js
+4 −4 meteor_packages/mats-common/imports/startup/server/data_diff_util.js
+267 −92 meteor_packages/mats-common/imports/startup/server/data_match_util.js
+8 −0 meteor_packages/mats-common/imports/startup/server/data_process_util.js
+433 −332 meteor_packages/mats-common/imports/startup/server/data_query_util.js
+82 −26 meteor_packages/mats-common/imports/startup/server/data_util.js
+17 −14 meteor_packages/mats-common/imports/startup/server/matsMiddle_common.js
+4 −2 meteor_packages/mats-common/imports/startup/server/matsMiddle_dailyModelCycle.js
+4 −2 meteor_packages/mats-common/imports/startup/server/matsMiddle_dieoff.js
+636 −0 meteor_packages/mats-common/imports/startup/server/matsMiddle_simpleScatter.js
+4 −2 meteor_packages/mats-common/imports/startup/server/matsMiddle_timeSeries.js
+4 −2 meteor_packages/mats-common/imports/startup/server/matsMiddle_validTime.js
+2 −0 meteor_packages/mats-common/package.js
+8 −2 meteor_packages/mats-common/public/MATSReleaseNotes.html
+2 −2 meteor_packages/mats-common/public/python/python_ctc_error.py
+15 −2 meteor_packages/mats-common/templates/curves/curve_list.html
+26 −0 meteor_packages/mats-common/templates/curves/curve_list.js
+2 −0 meteor_packages/mats-common/templates/plotType/plot_type.js
2 changes: 1 addition & 1 deletion apps/airQuality/server/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -708,7 +708,7 @@ const doCurveParams = async function () {

"FAR (False Alarm Ratio)": ["ctc", "x100", 0],

"Bias (forecast/actual)": ["ctc", "Ratio", 1],
"Bias (Forecast / Actual)": ["ctc", "Ratio", 1],

"HSS (Heidke Skill Score)": ["ctc", "x100", 100],

Expand Down
11 changes: 10 additions & 1 deletion apps/cb-metar/server/dataFunctions/data_contour.js
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ global.dataContour = async function (plotParams) {
} else {
// threshold is not an axis param and this is a scalar app
// so create a dummy threshold for the loop later
allThresholds = ["NA"];
allThresholds = ["All Data"];
}

const validTimes = curve["valid-time"] === undefined ? [] : curve["valid-time"];
Expand All @@ -135,6 +135,15 @@ global.dataContour = async function (plotParams) {
).optionsMap;
const statType = statisticOptionsMap[variable][statisticSelect][0];

if (
variableValuesMap[queryVariable][1] &&
statisticOptionsMap[variable][statisticSelect][0] === "scalar"
) {
throw new Error(
"INFO: Plotting thresholded variables (e.g. ceiling, visibility) with scalar statistics (e.g. RMSE, additive bias) is not available for this plot type."
);
}

let queryTemplate;
const regionType = curve["region-type"];
if (regionType === "Select stations") {
Expand Down
11 changes: 10 additions & 1 deletion apps/cb-metar/server/dataFunctions/data_contour_diff.js
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ global.dataContourDiff = async function (plotParams) {
} else {
// threshold is not an axis param and this is a scalar app
// so create a dummy threshold for the loop later
allThresholds = ["NA"];
allThresholds = ["All Data"];
}

const validTimes = curve["valid-time"] === undefined ? [] : curve["valid-time"];
Expand All @@ -145,6 +145,15 @@ global.dataContourDiff = async function (plotParams) {
[statType] = statisticOptionsMap[variable][statisticSelect];
allStatTypes.push(statType);

if (
variableValuesMap[queryVariable][1] &&
statisticOptionsMap[variable][statisticSelect][0] === "scalar"
) {
throw new Error(
"INFO: Plotting thresholded variables (e.g. ceiling, visibility) with scalar statistics (e.g. RMSE, additive bias) is not available for this plot type."
);
}

let queryTemplate;
const regionType = curve["region-type"];
if (regionType === "Select stations") {
Expand Down
10 changes: 9 additions & 1 deletion apps/cb-metar/server/dataFunctions/data_dailymodelcycle.js
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,15 @@ global.dataDailyModelCycle = async function (plotParams) {
let queryTemplate;
let sitesList;
const regionType =
filterModelBy === "None" && filterObsBy === "None"
filterModelBy === "None" && // not filtering the model by anything
filterObsBy === "None" && // not filtering the obs by anything
!(
// not a thresholded variable that we're forcing into a scalar stat
(
variableValuesMap[queryVariable][1] &&
statisticOptionsMap[variable][statisticSelect][0] === "scalar"
)
)
? curve["region-type"]
: "Select stations";
if (curve["region-type"] === "Predefined region") {
Expand Down
10 changes: 9 additions & 1 deletion apps/cb-metar/server/dataFunctions/data_dieoff.js
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,15 @@ global.dataDieoff = async function (plotParams) {
let sitesList;
let singleCycle;
const regionType =
filterModelBy === "None" && filterObsBy === "None"
filterModelBy === "None" && // not filtering the model by anything
filterObsBy === "None" && // not filtering the obs by anything
!(
// not a thresholded variable that we're forcing into a scalar stat
(
variableValuesMap[queryVariable][1] &&
statisticOptionsMap[variable][statisticSelect][0] === "scalar"
)
)
? curve["region-type"]
: "Select stations";
if (curve["region-type"] === "Predefined region") {
Expand Down
9 changes: 9 additions & 0 deletions apps/cb-metar/server/dataFunctions/data_histogram.js
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,15 @@ global.dataHistogram = async function (plotParams) {
[statType] = statisticOptionsMap[variable][statisticSelect];
allStatTypes.push(statType);

if (
variableValuesMap[queryVariable][1] &&
statisticOptionsMap[variable][statisticSelect][0] === "scalar"
) {
throw new Error(
"INFO: Plotting thresholded variables (e.g. ceiling, visibility) with scalar statistics (e.g. RMSE, additive bias) is not available for this plot type."
);
}

let queryTemplate;
const regionType = curve["region-type"];
if (regionType === "Select stations") {
Expand Down
10 changes: 9 additions & 1 deletion apps/cb-metar/server/dataFunctions/data_series.js
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,15 @@ global.dataSeries = async function (plotParams) {
let queryTemplate;
let sitesList;
const regionType =
filterModelBy === "None" && filterObsBy === "None"
filterModelBy === "None" && // not filtering the model by anything
filterObsBy === "None" && // not filtering the obs by anything
!(
// not a thresholded variable that we're forcing into a scalar stat
(
variableValuesMap[queryVariable][1] &&
statisticOptionsMap[variable][statisticSelect][0] === "scalar"
)
)
? curve["region-type"]
: "Select stations";
if (curve["region-type"] === "Predefined region") {
Expand Down
Loading
Loading