From 99e51edf54b09fdd1920908ad6ceda134a0010a7 Mon Sep 17 00:00:00 2001 From: Molly Smith Date: Thu, 14 Nov 2024 16:44:02 -0700 Subject: [PATCH 1/8] MET Cyclone checks for missing values now --- apps/met-cyclone/server/main.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/apps/met-cyclone/server/main.js b/apps/met-cyclone/server/main.js index 96a4e25ef..bbffe80ac 100644 --- a/apps/met-cyclone/server/main.js +++ b/apps/met-cyclone/server/main.js @@ -299,14 +299,14 @@ const doCurveParams = function () { "Model-truth distance to land (nm)": [ "precalculated", "line_data_tcmpr", - "ld.adland-ld.bdland", + "if(ld.adland != -9999 and ld.bdland != -9999,ld.adland-ld.bdland,null)", ], "Model MSLP (mb)": ["precalculated", "line_data_tcmpr", "ld.amslp"], "Truth MSLP (mb)": ["precalculated", "line_data_tcmpr", "ld.bmslp"], "Model-truth MSLP (mb)": [ "precalculated", "line_data_tcmpr", - "ld.amslp-ld.bmslp", + "if(ld.amslp != -9999 and ld.bmslp != -9999,ld.amslp-ld.bmslp,null)", ], "Model maximum wind speed (kts)": [ "precalculated", @@ -321,7 +321,7 @@ const doCurveParams = function () { "Model-truth maximum wind speed (kts)": [ "precalculated", "line_data_tcmpr", - "ld.amax_wind-ld.bmax_wind", + "if(ld.amax_wind != -9999 and ld.bmax_wind != -9999,ld.amax_wind-ld.bmax_wind,null)", ], "Model radius of maximum winds (nm)": [ "precalculated", @@ -336,28 +336,28 @@ const doCurveParams = function () { "Model-truth radius of maximum winds (nm)": [ "precalculated", "line_data_tcmpr", - "ld.amrd-ld.bmrd", + "if(ld.amrd != -9999 and ld.bmrd != -9999,ld.amrd-ld.bmrd,null)", ], "Model eye diameter (nm)": ["precalculated", "line_data_tcmpr", "ld.aeye"], "Truth eye diameter (nm)": ["precalculated", "line_data_tcmpr", "ld.beye"], "Model-truth eye diameter (nm)": [ "precalculated", "line_data_tcmpr", - "ld.aeye-ld.beye", + "if(ld.aeye != -9999 and ld.beye != -9999,ld.aeye-ld.beye,null)", ], "Model storm speed (kts)": ["precalculated", "line_data_tcmpr", "ld.aspeed"], "Truth storm speed (kts)": ["precalculated", "line_data_tcmpr", "ld.bspeed"], "Model-truth storm speed (kts)": [ "precalculated", "line_data_tcmpr", - "ld.aspeed-ld.bspeed", + "if(ld.aspeed != -9999 and ld.bspeed != -9999,ld.aspeed-ld.bspeed,null)", ], "Model storm direction (deg)": ["precalculated", "line_data_tcmpr", "ld.adir"], "Truth storm direction (deg)": ["precalculated", "line_data_tcmpr", "ld.bdir"], "Model-truth storm direction (deg)": [ "precalculated", "line_data_tcmpr", - "ld.adir-ld.bdir", + "if(ld.adir != -9999 and ld.bdir != -9999,ld.adir-ld.bdir,null)", ], }, line_data_ctc: { From ba70ebbc0b222333e8db73f473d6a8568b9d20fc Mon Sep 17 00:00:00 2001 From: Molly Smith Date: Thu, 14 Nov 2024 16:57:12 -0700 Subject: [PATCH 2/8] MET Cyclone matches on storm as well as time --- apps/met-cyclone/server/dataFunctions/data_dieoff.js | 4 ++-- apps/met-cyclone/server/dataFunctions/data_histogram.js | 4 ++-- apps/met-cyclone/server/dataFunctions/data_series.js | 4 ++-- apps/met-cyclone/server/dataFunctions/data_validtime.js | 4 ++-- apps/met-cyclone/server/dataFunctions/data_yeartoyear.js | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/apps/met-cyclone/server/dataFunctions/data_dieoff.js b/apps/met-cyclone/server/dataFunctions/data_dieoff.js index 041e45683..00c970b7e 100644 --- a/apps/met-cyclone/server/dataFunctions/data_dieoff.js +++ b/apps/met-cyclone/server/dataFunctions/data_dieoff.js @@ -22,7 +22,7 @@ dataDieoff = function (plotParams, plotFunction) { completeness: plotParams.completeness, outliers: plotParams.outliers, hideGaps: plotParams.noGapsCheck, - hasLevels: false, + hasLevels: true, }; const dataRequests = {}; // used to store data queries const queryArray = []; @@ -100,7 +100,7 @@ dataDieoff = function (plotParams, plotFunction) { thresholdClause = `and h.fcst_thresh = '${threshold}'`; } else if (statLineType === "precalculated") { // set up fields specific to precalculated stats - statisticClause = `avg(${statisticOptionsMap[statistic][2]}) as stat, group_concat(distinct ${statisticOptionsMap[statistic][2]}, ';', 9999, ';', unix_timestamp(ld.fcst_valid) order by unix_timestamp(ld.fcst_valid)) as sub_data`; + statisticClause = `avg(${statisticOptionsMap[statistic][2]}) as stat, group_concat(distinct ${statisticOptionsMap[statistic][2]}, ';', 9999, ';', unix_timestamp(ld.fcst_valid), ';', h.storm_id order by unix_timestamp(ld.fcst_valid), h.storm_id) as sub_data`; statHeaderType = "tcst_header"; [, lineDataType] = statisticOptionsMap[statistic]; modelClause = `and h.amodel = '${model}'`; diff --git a/apps/met-cyclone/server/dataFunctions/data_histogram.js b/apps/met-cyclone/server/dataFunctions/data_histogram.js index 18d53365a..09ea7fcf2 100644 --- a/apps/met-cyclone/server/dataFunctions/data_histogram.js +++ b/apps/met-cyclone/server/dataFunctions/data_histogram.js @@ -20,7 +20,7 @@ dataHistogram = function (plotParams, plotFunction) { completeness: plotParams.completeness, outliers: plotParams.outliers, hideGaps: plotParams.noGapsCheck, - hasLevels: false, + hasLevels: true, }; const alreadyMatched = false; const dataRequests = {}; // used to store data queries @@ -102,7 +102,7 @@ dataHistogram = function (plotParams, plotFunction) { thresholdClause = `and h.fcst_thresh = '${threshold}'`; } else if (statLineType === "precalculated") { // set up fields specific to precalculated stats - statisticClause = `avg(${statisticOptionsMap[statistic][2]}) as stat, group_concat(distinct ${statisticOptionsMap[statistic][2]}, ';', 9999, ';', unix_timestamp(ld.fcst_valid) order by unix_timestamp(ld.fcst_valid)) as sub_data`; + statisticClause = `avg(${statisticOptionsMap[statistic][2]}) as stat, group_concat(distinct ${statisticOptionsMap[statistic][2]}, ';', 9999, ';', unix_timestamp(ld.fcst_valid), ';', h.storm_id order by unix_timestamp(ld.fcst_valid), h.storm_id) as sub_data`; statHeaderType = "tcst_header"; [, lineDataType] = statisticOptionsMap[statistic]; modelClause = `and h.amodel = '${model}'`; diff --git a/apps/met-cyclone/server/dataFunctions/data_series.js b/apps/met-cyclone/server/dataFunctions/data_series.js index 1f57da93e..06f86d64c 100644 --- a/apps/met-cyclone/server/dataFunctions/data_series.js +++ b/apps/met-cyclone/server/dataFunctions/data_series.js @@ -22,7 +22,7 @@ dataSeries = function (plotParams, plotFunction) { completeness: plotParams.completeness, outliers: plotParams.outliers, hideGaps: plotParams.noGapsCheck, - hasLevels: false, + hasLevels: true, }; const dataRequests = {}; // used to store data queries const queryArray = []; @@ -103,7 +103,7 @@ dataSeries = function (plotParams, plotFunction) { thresholdClause = `and h.fcst_thresh = '${threshold}'`; } else if (statLineType === "precalculated") { // set up fields specific to precalculated stats - statisticClause = `avg(${statisticOptionsMap[statistic][2]}) as stat, group_concat(distinct ${statisticOptionsMap[statistic][2]}, ';', 9999, ';', unix_timestamp(ld.fcst_valid) order by unix_timestamp(ld.fcst_valid)) as sub_data`; + statisticClause = `avg(${statisticOptionsMap[statistic][2]}) as stat, group_concat(distinct ${statisticOptionsMap[statistic][2]}, ';', 9999, ';', unix_timestamp(ld.fcst_valid), ';', h.storm_id order by unix_timestamp(ld.fcst_valid), h.storm_id) as sub_data`; statHeaderType = "tcst_header"; [, lineDataType] = statisticOptionsMap[statistic]; modelClause = `and h.amodel = '${model}'`; diff --git a/apps/met-cyclone/server/dataFunctions/data_validtime.js b/apps/met-cyclone/server/dataFunctions/data_validtime.js index 959d07f4f..90c581ba3 100644 --- a/apps/met-cyclone/server/dataFunctions/data_validtime.js +++ b/apps/met-cyclone/server/dataFunctions/data_validtime.js @@ -22,7 +22,7 @@ dataValidTime = function (plotParams, plotFunction) { completeness: plotParams.completeness, outliers: plotParams.outliers, hideGaps: plotParams.noGapsCheck, - hasLevels: false, + hasLevels: true, }; const dataRequests = {}; // used to store data queries const queryArray = []; @@ -100,7 +100,7 @@ dataValidTime = function (plotParams, plotFunction) { thresholdClause = `and h.fcst_thresh = '${threshold}'`; } else if (statLineType === "precalculated") { // set up fields specific to precalculated stats - statisticClause = `avg(${statisticOptionsMap[statistic][2]}) as stat, group_concat(distinct ${statisticOptionsMap[statistic][2]}, ';', 9999, ';', unix_timestamp(ld.fcst_valid) order by unix_timestamp(ld.fcst_valid)) as sub_data`; + statisticClause = `avg(${statisticOptionsMap[statistic][2]}) as stat, group_concat(distinct ${statisticOptionsMap[statistic][2]}, ';', 9999, ';', unix_timestamp(ld.fcst_valid), ';', h.storm_id order by unix_timestamp(ld.fcst_valid), h.storm_id) as sub_data`; statHeaderType = "tcst_header"; [, lineDataType] = statisticOptionsMap[statistic]; modelClause = `and h.amodel = '${model}'`; diff --git a/apps/met-cyclone/server/dataFunctions/data_yeartoyear.js b/apps/met-cyclone/server/dataFunctions/data_yeartoyear.js index 8c1488667..a8486a8b2 100644 --- a/apps/met-cyclone/server/dataFunctions/data_yeartoyear.js +++ b/apps/met-cyclone/server/dataFunctions/data_yeartoyear.js @@ -21,7 +21,7 @@ dataYearToYear = function (plotParams, plotFunction) { completeness: plotParams.completeness, outliers: plotParams.outliers, hideGaps: plotParams.noGapsCheck, - hasLevels: false, + hasLevels: true, }; const dataRequests = {}; // used to store data queries const queryArray = []; @@ -99,7 +99,7 @@ dataYearToYear = function (plotParams, plotFunction) { thresholdClause = `and h.fcst_thresh = '${threshold}'`; } else if (statLineType === "precalculated") { // set up fields specific to precalculated stats - statisticClause = `avg(${statisticOptionsMap[statistic][2]}) as stat, group_concat(distinct ${statisticOptionsMap[statistic][2]}, ';', 9999, ';', unix_timestamp(ld.fcst_valid) order by unix_timestamp(ld.fcst_valid)) as sub_data`; + statisticClause = `avg(${statisticOptionsMap[statistic][2]}) as stat, group_concat(distinct ${statisticOptionsMap[statistic][2]}, ';', 9999, ';', unix_timestamp(ld.fcst_valid), ';', h.storm_id order by unix_timestamp(ld.fcst_valid), h.storm_id) as sub_data`; statHeaderType = "tcst_header"; [, lineDataType] = statisticOptionsMap[statistic]; modelClause = `and h.amodel = '${model}'`; From f2e5c1f9093045f1834b89d13b8b6b7623138ee5 Mon Sep 17 00:00:00 2001 From: Molly Smith Date: Thu, 14 Nov 2024 16:59:40 -0700 Subject: [PATCH 3/8] Updated release notes --- MATScommon | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MATScommon b/MATScommon index 3a28a7dfe..f9d0f9c41 160000 --- a/MATScommon +++ b/MATScommon @@ -1 +1 @@ -Subproject commit 3a28a7dfec83697ae291c1ea524dcac0d4955a24 +Subproject commit f9d0f9c41a13ac0ef1270419e95e37e47f5277ae From c4f2162c64199eba3007c87e677b4baf1a1240b9 Mon Sep 17 00:00:00 2001 From: Molly Smith Date: Thu, 14 Nov 2024 17:53:24 -0700 Subject: [PATCH 4/8] Made error bar thickness customizable and slightly increased the default thickness --- MATScommon | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MATScommon b/MATScommon index f9d0f9c41..2b693c62f 160000 --- a/MATScommon +++ b/MATScommon @@ -1 +1 @@ -Subproject commit f9d0f9c41a13ac0ef1270419e95e37e47f5277ae +Subproject commit 2b693c62f56ed3455fef516197a406befafda9e7 From c00aa290b5833eb83fae251485a0d194baa426b5 Mon Sep 17 00:00:00 2001 From: Molly Smith Date: Thu, 14 Nov 2024 17:54:19 -0700 Subject: [PATCH 5/8] Updated release notes --- MATScommon | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MATScommon b/MATScommon index 2b693c62f..445a22789 160000 --- a/MATScommon +++ b/MATScommon @@ -1 +1 @@ -Subproject commit 2b693c62f56ed3455fef516197a406befafda9e7 +Subproject commit 445a2278931f55297f8b91a5dcf0f8de0f658d08 From 98f68efdb3070a3b632105a038b99c37027e6c8f Mon Sep 17 00:00:00 2001 From: Molly Smith Date: Thu, 14 Nov 2024 17:58:46 -0700 Subject: [PATCH 6/8] Linting --- MATScommon | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MATScommon b/MATScommon index 445a22789..76a4ef62e 160000 --- a/MATScommon +++ b/MATScommon @@ -1 +1 @@ -Subproject commit 445a2278931f55297f8b91a5dcf0f8de0f658d08 +Subproject commit 76a4ef62eacfc040fb674d5bdb22b049163522f6 From fce69884392ba2cd5c1cbcac19011598a76e19c1 Mon Sep 17 00:00:00 2001 From: Molly Smith Date: Fri, 15 Nov 2024 07:52:26 -0700 Subject: [PATCH 7/8] Feature met cyclone improvements (#163) This PR improves the matching algorithm for MET Cyclone by having it match by storm_id as well as time. It also correctly filters out missing values in the MET Cyclone data, and makes error bar thickness customizable. --- MATScommon | 2 +- .../server/dataFunctions/data_dieoff.js | 4 ++-- .../server/dataFunctions/data_histogram.js | 4 ++-- .../server/dataFunctions/data_series.js | 4 ++-- .../server/dataFunctions/data_validtime.js | 4 ++-- .../server/dataFunctions/data_yeartoyear.js | 4 ++-- apps/met-cyclone/server/main.js | 14 +++++++------- 7 files changed, 18 insertions(+), 18 deletions(-) diff --git a/MATScommon b/MATScommon index 3a28a7dfe..76a4ef62e 160000 --- a/MATScommon +++ b/MATScommon @@ -1 +1 @@ -Subproject commit 3a28a7dfec83697ae291c1ea524dcac0d4955a24 +Subproject commit 76a4ef62eacfc040fb674d5bdb22b049163522f6 diff --git a/apps/met-cyclone/server/dataFunctions/data_dieoff.js b/apps/met-cyclone/server/dataFunctions/data_dieoff.js index 041e45683..00c970b7e 100644 --- a/apps/met-cyclone/server/dataFunctions/data_dieoff.js +++ b/apps/met-cyclone/server/dataFunctions/data_dieoff.js @@ -22,7 +22,7 @@ dataDieoff = function (plotParams, plotFunction) { completeness: plotParams.completeness, outliers: plotParams.outliers, hideGaps: plotParams.noGapsCheck, - hasLevels: false, + hasLevels: true, }; const dataRequests = {}; // used to store data queries const queryArray = []; @@ -100,7 +100,7 @@ dataDieoff = function (plotParams, plotFunction) { thresholdClause = `and h.fcst_thresh = '${threshold}'`; } else if (statLineType === "precalculated") { // set up fields specific to precalculated stats - statisticClause = `avg(${statisticOptionsMap[statistic][2]}) as stat, group_concat(distinct ${statisticOptionsMap[statistic][2]}, ';', 9999, ';', unix_timestamp(ld.fcst_valid) order by unix_timestamp(ld.fcst_valid)) as sub_data`; + statisticClause = `avg(${statisticOptionsMap[statistic][2]}) as stat, group_concat(distinct ${statisticOptionsMap[statistic][2]}, ';', 9999, ';', unix_timestamp(ld.fcst_valid), ';', h.storm_id order by unix_timestamp(ld.fcst_valid), h.storm_id) as sub_data`; statHeaderType = "tcst_header"; [, lineDataType] = statisticOptionsMap[statistic]; modelClause = `and h.amodel = '${model}'`; diff --git a/apps/met-cyclone/server/dataFunctions/data_histogram.js b/apps/met-cyclone/server/dataFunctions/data_histogram.js index 18d53365a..09ea7fcf2 100644 --- a/apps/met-cyclone/server/dataFunctions/data_histogram.js +++ b/apps/met-cyclone/server/dataFunctions/data_histogram.js @@ -20,7 +20,7 @@ dataHistogram = function (plotParams, plotFunction) { completeness: plotParams.completeness, outliers: plotParams.outliers, hideGaps: plotParams.noGapsCheck, - hasLevels: false, + hasLevels: true, }; const alreadyMatched = false; const dataRequests = {}; // used to store data queries @@ -102,7 +102,7 @@ dataHistogram = function (plotParams, plotFunction) { thresholdClause = `and h.fcst_thresh = '${threshold}'`; } else if (statLineType === "precalculated") { // set up fields specific to precalculated stats - statisticClause = `avg(${statisticOptionsMap[statistic][2]}) as stat, group_concat(distinct ${statisticOptionsMap[statistic][2]}, ';', 9999, ';', unix_timestamp(ld.fcst_valid) order by unix_timestamp(ld.fcst_valid)) as sub_data`; + statisticClause = `avg(${statisticOptionsMap[statistic][2]}) as stat, group_concat(distinct ${statisticOptionsMap[statistic][2]}, ';', 9999, ';', unix_timestamp(ld.fcst_valid), ';', h.storm_id order by unix_timestamp(ld.fcst_valid), h.storm_id) as sub_data`; statHeaderType = "tcst_header"; [, lineDataType] = statisticOptionsMap[statistic]; modelClause = `and h.amodel = '${model}'`; diff --git a/apps/met-cyclone/server/dataFunctions/data_series.js b/apps/met-cyclone/server/dataFunctions/data_series.js index 1f57da93e..06f86d64c 100644 --- a/apps/met-cyclone/server/dataFunctions/data_series.js +++ b/apps/met-cyclone/server/dataFunctions/data_series.js @@ -22,7 +22,7 @@ dataSeries = function (plotParams, plotFunction) { completeness: plotParams.completeness, outliers: plotParams.outliers, hideGaps: plotParams.noGapsCheck, - hasLevels: false, + hasLevels: true, }; const dataRequests = {}; // used to store data queries const queryArray = []; @@ -103,7 +103,7 @@ dataSeries = function (plotParams, plotFunction) { thresholdClause = `and h.fcst_thresh = '${threshold}'`; } else if (statLineType === "precalculated") { // set up fields specific to precalculated stats - statisticClause = `avg(${statisticOptionsMap[statistic][2]}) as stat, group_concat(distinct ${statisticOptionsMap[statistic][2]}, ';', 9999, ';', unix_timestamp(ld.fcst_valid) order by unix_timestamp(ld.fcst_valid)) as sub_data`; + statisticClause = `avg(${statisticOptionsMap[statistic][2]}) as stat, group_concat(distinct ${statisticOptionsMap[statistic][2]}, ';', 9999, ';', unix_timestamp(ld.fcst_valid), ';', h.storm_id order by unix_timestamp(ld.fcst_valid), h.storm_id) as sub_data`; statHeaderType = "tcst_header"; [, lineDataType] = statisticOptionsMap[statistic]; modelClause = `and h.amodel = '${model}'`; diff --git a/apps/met-cyclone/server/dataFunctions/data_validtime.js b/apps/met-cyclone/server/dataFunctions/data_validtime.js index 959d07f4f..90c581ba3 100644 --- a/apps/met-cyclone/server/dataFunctions/data_validtime.js +++ b/apps/met-cyclone/server/dataFunctions/data_validtime.js @@ -22,7 +22,7 @@ dataValidTime = function (plotParams, plotFunction) { completeness: plotParams.completeness, outliers: plotParams.outliers, hideGaps: plotParams.noGapsCheck, - hasLevels: false, + hasLevels: true, }; const dataRequests = {}; // used to store data queries const queryArray = []; @@ -100,7 +100,7 @@ dataValidTime = function (plotParams, plotFunction) { thresholdClause = `and h.fcst_thresh = '${threshold}'`; } else if (statLineType === "precalculated") { // set up fields specific to precalculated stats - statisticClause = `avg(${statisticOptionsMap[statistic][2]}) as stat, group_concat(distinct ${statisticOptionsMap[statistic][2]}, ';', 9999, ';', unix_timestamp(ld.fcst_valid) order by unix_timestamp(ld.fcst_valid)) as sub_data`; + statisticClause = `avg(${statisticOptionsMap[statistic][2]}) as stat, group_concat(distinct ${statisticOptionsMap[statistic][2]}, ';', 9999, ';', unix_timestamp(ld.fcst_valid), ';', h.storm_id order by unix_timestamp(ld.fcst_valid), h.storm_id) as sub_data`; statHeaderType = "tcst_header"; [, lineDataType] = statisticOptionsMap[statistic]; modelClause = `and h.amodel = '${model}'`; diff --git a/apps/met-cyclone/server/dataFunctions/data_yeartoyear.js b/apps/met-cyclone/server/dataFunctions/data_yeartoyear.js index 8c1488667..a8486a8b2 100644 --- a/apps/met-cyclone/server/dataFunctions/data_yeartoyear.js +++ b/apps/met-cyclone/server/dataFunctions/data_yeartoyear.js @@ -21,7 +21,7 @@ dataYearToYear = function (plotParams, plotFunction) { completeness: plotParams.completeness, outliers: plotParams.outliers, hideGaps: plotParams.noGapsCheck, - hasLevels: false, + hasLevels: true, }; const dataRequests = {}; // used to store data queries const queryArray = []; @@ -99,7 +99,7 @@ dataYearToYear = function (plotParams, plotFunction) { thresholdClause = `and h.fcst_thresh = '${threshold}'`; } else if (statLineType === "precalculated") { // set up fields specific to precalculated stats - statisticClause = `avg(${statisticOptionsMap[statistic][2]}) as stat, group_concat(distinct ${statisticOptionsMap[statistic][2]}, ';', 9999, ';', unix_timestamp(ld.fcst_valid) order by unix_timestamp(ld.fcst_valid)) as sub_data`; + statisticClause = `avg(${statisticOptionsMap[statistic][2]}) as stat, group_concat(distinct ${statisticOptionsMap[statistic][2]}, ';', 9999, ';', unix_timestamp(ld.fcst_valid), ';', h.storm_id order by unix_timestamp(ld.fcst_valid), h.storm_id) as sub_data`; statHeaderType = "tcst_header"; [, lineDataType] = statisticOptionsMap[statistic]; modelClause = `and h.amodel = '${model}'`; diff --git a/apps/met-cyclone/server/main.js b/apps/met-cyclone/server/main.js index 96a4e25ef..bbffe80ac 100644 --- a/apps/met-cyclone/server/main.js +++ b/apps/met-cyclone/server/main.js @@ -299,14 +299,14 @@ const doCurveParams = function () { "Model-truth distance to land (nm)": [ "precalculated", "line_data_tcmpr", - "ld.adland-ld.bdland", + "if(ld.adland != -9999 and ld.bdland != -9999,ld.adland-ld.bdland,null)", ], "Model MSLP (mb)": ["precalculated", "line_data_tcmpr", "ld.amslp"], "Truth MSLP (mb)": ["precalculated", "line_data_tcmpr", "ld.bmslp"], "Model-truth MSLP (mb)": [ "precalculated", "line_data_tcmpr", - "ld.amslp-ld.bmslp", + "if(ld.amslp != -9999 and ld.bmslp != -9999,ld.amslp-ld.bmslp,null)", ], "Model maximum wind speed (kts)": [ "precalculated", @@ -321,7 +321,7 @@ const doCurveParams = function () { "Model-truth maximum wind speed (kts)": [ "precalculated", "line_data_tcmpr", - "ld.amax_wind-ld.bmax_wind", + "if(ld.amax_wind != -9999 and ld.bmax_wind != -9999,ld.amax_wind-ld.bmax_wind,null)", ], "Model radius of maximum winds (nm)": [ "precalculated", @@ -336,28 +336,28 @@ const doCurveParams = function () { "Model-truth radius of maximum winds (nm)": [ "precalculated", "line_data_tcmpr", - "ld.amrd-ld.bmrd", + "if(ld.amrd != -9999 and ld.bmrd != -9999,ld.amrd-ld.bmrd,null)", ], "Model eye diameter (nm)": ["precalculated", "line_data_tcmpr", "ld.aeye"], "Truth eye diameter (nm)": ["precalculated", "line_data_tcmpr", "ld.beye"], "Model-truth eye diameter (nm)": [ "precalculated", "line_data_tcmpr", - "ld.aeye-ld.beye", + "if(ld.aeye != -9999 and ld.beye != -9999,ld.aeye-ld.beye,null)", ], "Model storm speed (kts)": ["precalculated", "line_data_tcmpr", "ld.aspeed"], "Truth storm speed (kts)": ["precalculated", "line_data_tcmpr", "ld.bspeed"], "Model-truth storm speed (kts)": [ "precalculated", "line_data_tcmpr", - "ld.aspeed-ld.bspeed", + "if(ld.aspeed != -9999 and ld.bspeed != -9999,ld.aspeed-ld.bspeed,null)", ], "Model storm direction (deg)": ["precalculated", "line_data_tcmpr", "ld.adir"], "Truth storm direction (deg)": ["precalculated", "line_data_tcmpr", "ld.bdir"], "Model-truth storm direction (deg)": [ "precalculated", "line_data_tcmpr", - "ld.adir-ld.bdir", + "if(ld.adir != -9999 and ld.bdir != -9999,ld.adir-ld.bdir,null)", ], }, line_data_ctc: { From 31bf99f3c7a25d683f4ab88abc69ed85d3444df0 Mon Sep 17 00:00:00 2001 From: Molly Smith Date: Mon, 18 Nov 2024 19:43:33 -0700 Subject: [PATCH 8/8] Updated documentation for release --- MATScommon | 2 +- docs/Users_Guide/release-notes.rst | 12 +++++++----- docs/conf.py | 6 +++--- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/MATScommon b/MATScommon index 76a4ef62e..9549dc904 160000 --- a/MATScommon +++ b/MATScommon @@ -1 +1 @@ -Subproject commit 76a4ef62eacfc040fb674d5bdb22b049163522f6 +Subproject commit 9549dc9045e832f0acc39d7634c7008c3350081d diff --git a/docs/Users_Guide/release-notes.rst b/docs/Users_Guide/release-notes.rst index 8b4b238c9..16b3d8240 100644 --- a/docs/Users_Guide/release-notes.rst +++ b/docs/Users_Guide/release-notes.rst @@ -9,24 +9,26 @@ When applicable, release notes are followed by the GitHub issue number which des enhancement, or new feature (`METexpress GitHub issues `_). Important issues are listed **in bold** for emphasis. -METexpress Version 5.3.4 release notes (20241101) +METexpress Version 5.3.4 release notes (20241119) ------------------------------------------------- .. dropdown:: Repository, build, and test - * None + * None. .. dropdown:: Documentation - * None + * None. .. dropdown:: Bugfixes - * Query improvements. + * None. .. dropdown:: Enhancements - * None. + * MET Cyclone now matches on storm ID as well as time. + * MET Cyclone correctly filters out missing values. + * Made error bar thickness customizable and slightly increased the default thickness. .. dropdown:: Miscellaneous diff --git a/docs/conf.py b/docs/conf.py index a5d625988..64fa6887b 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -25,12 +25,12 @@ # To rotate this list of authors for each official release, # move the first author to the end of the list CURRENT_AUTHORS = [ - 'Molly Smith', 'Randy Pierce' 'Jeff Hamilton', 'Natalie Babij', 'Ian McGinnis', 'Gopa Padmanabhan', + 'Molly Smith', ] # list of former contributors who are no longer involved with the project @@ -61,13 +61,13 @@ author_list = ', '.join(formatted_authors) # The stable version, displayed on the front page of the PDF -version = '5.3.4' +version = '5.3.5' verinfo = version # The full version, including alpha/beta/rc tags release = f'{version}' release_year = '2024' -release_date = f'{release_year}1101' +release_date = f'{release_year}1119' copyright = f'{release_year}, {author}' release_monthyear = datetime.strptime(release_date, '%Y%m%d').strftime('%B %Y')