Skip to content

Commit

Permalink
Variable filtering for other station plots
Browse files Browse the repository at this point in the history
  • Loading branch information
mollybsmith-noaa committed Dec 15, 2023
1 parent 571ecab commit 4afc36c
Show file tree
Hide file tree
Showing 4 changed files with 100 additions and 27 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ class MatsMiddleDailyModelCycle {

utcCycleStart = null;

filterInfo = {};

writeOutput = false;

mmCommon = null;
Expand All @@ -58,7 +60,8 @@ class MatsMiddleDailyModelCycle {
threshold,
fromSecs,
toSecs,
utcCycleStart
utcCycleStart,
filterInfo
) => {
const Future = require("fibers/future");

Expand All @@ -73,7 +76,8 @@ class MatsMiddleDailyModelCycle {
threshold,
fromSecs,
toSecs,
utcCycleStart
utcCycleStart,
filterInfo
);
dFuture.return();
})();
Expand All @@ -89,7 +93,8 @@ class MatsMiddleDailyModelCycle {
threshold,
fromSecs,
toSecs,
utcCycleStart
utcCycleStart,
filterInfo
) => {
const fs = require("fs");

Expand All @@ -101,6 +106,7 @@ class MatsMiddleDailyModelCycle {
this.fromSecs = fromSecs;
this.toSecs = toSecs;
this.utcCycleStart = utcCycleStart;
this.filterInfo = filterInfo;

this.conn = await cbPool.getConnection();

Expand Down Expand Up @@ -152,9 +158,15 @@ class MatsMiddleDailyModelCycle {
let stationNamesObs = "";
for (let i = 0; i < this.stationNames.length; i += 1) {
if (i === 0) {
stationNamesObs = `obs.data.${this.stationNames[i]}.${this.varName} ${this.stationNames[i]}`;
if (this.filterInfo.filterObsBy) {
stationNamesObs = `CASE WHEN obs.data.${this.stationNames[i]}.\`${this.filterInfo.filterObsBy}\` >= ${this.filterInfo.filterObsMin} AND obs.data.${this.stationNames[i]}.\`${this.filterInfo.filterObsBy}\` <= ${this.filterInfo.filterObsMax} THEN obs.data.${this.stationNames[i]}.\`${this.varName}\` ELSE "NULL" END ${this.stationNames[i]}`;
} else {
stationNamesObs = `obs.data.${this.stationNames[i]}.\`${this.varName}\` ${this.stationNames[i]}`;
}
} else if (this.filterInfo.filterObsBy) {
stationNamesObs += `, CASE WHEN obs.data.${this.stationNames[i]}.\`${this.filterInfo.filterObsBy}\` >= ${this.filterInfo.filterObsMin} AND obs.data.${this.stationNames[i]}.\`${this.filterInfo.filterObsBy}\` <= ${this.filterInfo.filterObsMax} THEN obs.data.${this.stationNames[i]}.\`${this.varName}\` ELSE "NULL" END ${this.stationNames[i]}`;
} else {
stationNamesObs += `,obs.data.${this.stationNames[i]}.${this.varName} ${this.stationNames[i]}`;
stationNamesObs += `, obs.data.${this.stationNames[i]}.\`${this.varName}\` ${this.stationNames[i]}`;
}
}
let tmplWithStationNamesObs = this.cbPool.trfmSQLRemoveClause(
Expand Down Expand Up @@ -184,7 +196,10 @@ class MatsMiddleDailyModelCycle {
const dataSingleEpoch = {};
const stationsSingleEpoch = {};
for (let i = 0; i < this.stationNames.length; i++) {
const varValStation = fveDataSingleEpoch[this.stationNames[i]];
const varValStation =
fveDataSingleEpoch[this.stationNames[i]] === "NULL"
? null
: fveDataSingleEpoch[this.stationNames[i]];
stationsSingleEpoch[this.stationNames[i]] = varValStation;
}
dataSingleEpoch.avtime = fveDataSingleEpoch.fve;
Expand Down Expand Up @@ -223,9 +238,15 @@ class MatsMiddleDailyModelCycle {
let stationNamesModels = "";
for (let i = 0; i < this.stationNames.length; i += 1) {
if (i === 0) {
stationNamesModels = `models.data.${this.stationNames[i]}.${this.varName} ${this.stationNames[i]}`;
if (this.filterInfo.filterModelBy) {
stationNamesModels = `CASE WHEN models.data.${this.stationNames[i]}.\`${this.filterInfo.filterModelBy}\` >= ${this.filterInfo.filterModelMin} AND models.data.${this.stationNames[i]}.\`${this.filterInfo.filterModelBy}\` <= ${this.filterInfo.filterModelMax} THEN models.data.${this.stationNames[i]}.\`${this.varName}\` ELSE "NULL" END ${this.stationNames[i]}`;
} else {
stationNamesModels = `models.data.${this.stationNames[i]}.\`${this.varName}\` ${this.stationNames[i]}`;
}
} else if (this.filterInfo.filterModelBy) {
stationNamesModels += `, CASE WHEN models.data.${this.stationNames[i]}.\`${this.filterInfo.filterModelBy}\` >= ${this.filterInfo.filterModelMin} AND models.data.${this.stationNames[i]}.\`${this.filterInfo.filterModelBy}\` <= ${this.filterInfo.filterModelMax} THEN models.data.${this.stationNames[i]}.\`${this.varName}\` ELSE "NULL" END ${this.stationNames[i]}`;
} else {
stationNamesModels += `,models.data.${this.stationNames[i]}.${this.varName} ${this.stationNames[i]}`;
stationNamesModels += `, models.data.${this.stationNames[i]}.\`${this.varName}\` ${this.stationNames[i]}`;
}
}

Expand Down Expand Up @@ -253,7 +274,10 @@ class MatsMiddleDailyModelCycle {
const dataSingleEpoch = {};
const stationsSingleEpoch = {};
for (let i = 0; i < this.stationNames.length; i++) {
const varValStation = fveDataSingleEpoch[this.stationNames[i]];
const varValStation =
fveDataSingleEpoch[this.stationNames[i]] === "NULL"
? null
: fveDataSingleEpoch[this.stationNames[i]];
stationsSingleEpoch[this.stationNames[i]] = varValStation;
}
dataSingleEpoch.avtime = fveDataSingleEpoch.fve;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@ class MatsMiddleDieoff {

singleCycle = null;

filterInfo = {};

writeOutput = false;

mmCommon = null;
Expand All @@ -67,7 +69,8 @@ class MatsMiddleDieoff {
toSecs,
validTimes,
utcCycleStart,
singleCycle
singleCycle,
filterInfo
) => {
const Future = require("fibers/future");

Expand All @@ -85,7 +88,8 @@ class MatsMiddleDieoff {
toSecs,
validTimes,
utcCycleStart,
singleCycle
singleCycle,
filterInfo
);
dFuture.return();
})();
Expand All @@ -104,7 +108,8 @@ class MatsMiddleDieoff {
toSecs,
validTimes,
utcCycleStart,
singleCycle
singleCycle,
filterInfo
) => {
const fs = require("fs");

Expand Down Expand Up @@ -137,6 +142,7 @@ class MatsMiddleDieoff {
}

this.singleCycle = singleCycle;
this.filterInfo = filterInfo;

this.conn = await cbPool.getConnection();

Expand Down Expand Up @@ -183,9 +189,15 @@ class MatsMiddleDieoff {
let stationNamesObs = "";
for (let i = 0; i < this.stationNames.length; i += 1) {
if (i === 0) {
stationNamesObs = `obs.data.${this.stationNames[i]}.${this.varName} ${this.stationNames[i]}`;
if (this.filterInfo.filterObsBy) {
stationNamesObs = `CASE WHEN obs.data.${this.stationNames[i]}.\`${this.filterInfo.filterObsBy}\` >= ${this.filterInfo.filterObsMin} AND obs.data.${this.stationNames[i]}.\`${this.filterInfo.filterObsBy}\` <= ${this.filterInfo.filterObsMax} THEN obs.data.${this.stationNames[i]}.\`${this.varName}\` ELSE "NULL" END ${this.stationNames[i]}`;
} else {
stationNamesObs = `obs.data.${this.stationNames[i]}.\`${this.varName}\` ${this.stationNames[i]}`;
}
} else if (this.filterInfo.filterObsBy) {
stationNamesObs += `, CASE WHEN obs.data.${this.stationNames[i]}.\`${this.filterInfo.filterObsBy}\` >= ${this.filterInfo.filterObsMin} AND obs.data.${this.stationNames[i]}.\`${this.filterInfo.filterObsBy}\` <= ${this.filterInfo.filterObsMax} THEN obs.data.${this.stationNames[i]}.\`${this.varName}\` ELSE "NULL" END ${this.stationNames[i]}`;
} else {
stationNamesObs += `,obs.data.${this.stationNames[i]}.${this.varName} ${this.stationNames[i]}`;
stationNamesObs += `, obs.data.${this.stationNames[i]}.\`${this.varName}\` ${this.stationNames[i]}`;
}
}
let tmplWithStationNamesObs = cbPool.trfmSQLRemoveClause(
Expand Down Expand Up @@ -215,7 +227,10 @@ class MatsMiddleDieoff {
const dataSingleEpoch = {};
const stationsSingleEpoch = {};
for (let i = 0; i < this.stationNames.length; i++) {
const varValStation = fveDataSingleEpoch[this.stationNames[i]];
const varValStation =
fveDataSingleEpoch[this.stationNames[i]] === "NULL"
? null
: fveDataSingleEpoch[this.stationNames[i]];
stationsSingleEpoch[this.stationNames[i]] = varValStation;
}
dataSingleEpoch.fcst = fveDataSingleEpoch.fcst;
Expand Down Expand Up @@ -249,9 +264,15 @@ class MatsMiddleDieoff {
let stationNamesModels = "";
for (let i = 0; i < this.stationNames.length; i += 1) {
if (i === 0) {
stationNamesModels = `models.data.${this.stationNames[i]}.${this.varName} ${this.stationNames[i]}`;
if (this.filterInfo.filterModelBy) {
stationNamesModels = `CASE WHEN models.data.${this.stationNames[i]}.\`${this.filterInfo.filterModelBy}\` >= ${this.filterInfo.filterModelMin} AND models.data.${this.stationNames[i]}.\`${this.filterInfo.filterModelBy}\` <= ${this.filterInfo.filterModelMax} THEN models.data.${this.stationNames[i]}.\`${this.varName}\` ELSE "NULL" END ${this.stationNames[i]}`;
} else {
stationNamesModels = `models.data.${this.stationNames[i]}.\`${this.varName}\` ${this.stationNames[i]}`;
}
} else if (this.filterInfo.filterModelBy) {
stationNamesModels += `, CASE WHEN models.data.${this.stationNames[i]}.\`${this.filterInfo.filterModelBy}\` >= ${this.filterInfo.filterModelMin} AND models.data.${this.stationNames[i]}.\`${this.filterInfo.filterModelBy}\` <= ${this.filterInfo.filterModelMax} THEN models.data.${this.stationNames[i]}.\`${this.varName}\` ELSE "NULL" END ${this.stationNames[i]}`;
} else {
stationNamesModels += `,models.data.${this.stationNames[i]}.${this.varName} ${this.stationNames[i]}`;
stationNamesModels += `, models.data.${this.stationNames[i]}.\`${this.varName}\` ${this.stationNames[i]}`;
}
}

Expand Down Expand Up @@ -287,7 +308,10 @@ class MatsMiddleDieoff {
const dataSingleEpoch = {};
const stationsSingleEpoch = {};
for (let i = 0; i < this.stationNames.length; i++) {
const varValStation = fveDataSingleEpoch[this.stationNames[i]];
const varValStation =
fveDataSingleEpoch[this.stationNames[i]] === "NULL"
? null
: fveDataSingleEpoch[this.stationNames[i]];
stationsSingleEpoch[this.stationNames[i]] = varValStation;
}
dataSingleEpoch.stations = stationsSingleEpoch;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,7 @@ class MatsMiddleTimeSeries {
/{{stationNamesList}}/g,
stationNamesObs
);

const promises = [];
for (let iofve = 0; iofve < this.fcstValidEpoch_Array.length; iofve += 100) {
const fveArraySlice = this.fcstValidEpoch_Array.slice(iofve, iofve + 100);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ class MatsMiddleValidTime {

toSecs = null;

filterInfo = {};

writeOutput = false;

mmCommon = null;
Expand All @@ -58,7 +60,8 @@ class MatsMiddleValidTime {
fcstLen,
threshold,
fromSecs,
toSecs
toSecs,
filterInfo
) => {
const Future = require("fibers/future");

Expand All @@ -73,7 +76,8 @@ class MatsMiddleValidTime {
fcstLen,
threshold,
fromSecs,
toSecs
toSecs,
filterInfo
);
dFuture.return();
})();
Expand All @@ -89,7 +93,8 @@ class MatsMiddleValidTime {
fcstLen,
threshold,
fromSecs,
toSecs
toSecs,
filterInfo
) => {
const fs = require("fs");

Expand All @@ -101,6 +106,7 @@ class MatsMiddleValidTime {
this.threshold = threshold;
this.fromSecs = fromSecs;
this.toSecs = toSecs;
this.filterInfo = filterInfo;

this.conn = await cbPool.getConnection();

Expand Down Expand Up @@ -150,9 +156,15 @@ class MatsMiddleValidTime {
let stationNamesObs = "";
for (let i = 0; i < this.stationNames.length; i += 1) {
if (i === 0) {
stationNamesObs = `obs.data.${this.stationNames[i]}.${this.varName} ${this.stationNames[i]}`;
if (this.filterInfo.filterObsBy) {
stationNamesObs = `CASE WHEN obs.data.${this.stationNames[i]}.\`${this.filterInfo.filterObsBy}\` >= ${this.filterInfo.filterObsMin} AND obs.data.${this.stationNames[i]}.\`${this.filterInfo.filterObsBy}\` <= ${this.filterInfo.filterObsMax} THEN obs.data.${this.stationNames[i]}.\`${this.varName}\` ELSE "NULL" END ${this.stationNames[i]}`;
} else {
stationNamesObs = `obs.data.${this.stationNames[i]}.\`${this.varName}\` ${this.stationNames[i]}`;
}
} else if (this.filterInfo.filterObsBy) {
stationNamesObs += `, CASE WHEN obs.data.${this.stationNames[i]}.\`${this.filterInfo.filterObsBy}\` >= ${this.filterInfo.filterObsMin} AND obs.data.${this.stationNames[i]}.\`${this.filterInfo.filterObsBy}\` <= ${this.filterInfo.filterObsMax} THEN obs.data.${this.stationNames[i]}.\`${this.varName}\` ELSE "NULL" END ${this.stationNames[i]}`;
} else {
stationNamesObs += `,obs.data.${this.stationNames[i]}.${this.varName} ${this.stationNames[i]}`;
stationNamesObs += `, obs.data.${this.stationNames[i]}.\`${this.varName}\` ${this.stationNames[i]}`;
}
}
let tmplWithStationNamesObs = cbPool.trfmSQLRemoveClause(
Expand Down Expand Up @@ -187,7 +199,10 @@ class MatsMiddleValidTime {
const dataSingleEpoch = {};
const stationsSingleEpoch = {};
for (let i = 0; i < this.stationNames.length; i++) {
const varValStation = fveDataSingleEpoch[this.stationNames[i]];
const varValStation =
fveDataSingleEpoch[this.stationNames[i]] === "NULL"
? null
: fveDataSingleEpoch[this.stationNames[i]];
stationsSingleEpoch[this.stationNames[i]] = varValStation;
}
dataSingleEpoch.fcst = fveDataSingleEpoch.fcst;
Expand Down Expand Up @@ -231,9 +246,15 @@ class MatsMiddleValidTime {
let stationNamesModels = "";
for (let i = 0; i < this.stationNames.length; i += 1) {
if (i === 0) {
stationNamesModels = `models.data.${this.stationNames[i]}.${this.varName} ${this.stationNames[i]}`;
if (this.filterInfo.filterModelBy) {
stationNamesModels = `CASE WHEN models.data.${this.stationNames[i]}.\`${this.filterInfo.filterModelBy}\` >= ${this.filterInfo.filterModelMin} AND models.data.${this.stationNames[i]}.\`${this.filterInfo.filterModelBy}\` <= ${this.filterInfo.filterModelMax} THEN models.data.${this.stationNames[i]}.\`${this.varName}\` ELSE "NULL" END ${this.stationNames[i]}`;
} else {
stationNamesModels = `models.data.${this.stationNames[i]}.\`${this.varName}\` ${this.stationNames[i]}`;
}
} else if (this.filterInfo.filterModelBy) {
stationNamesModels += `, CASE WHEN models.data.${this.stationNames[i]}.\`${this.filterInfo.filterModelBy}\` >= ${this.filterInfo.filterModelMin} AND models.data.${this.stationNames[i]}.\`${this.filterInfo.filterModelBy}\` <= ${this.filterInfo.filterModelMax} THEN models.data.${this.stationNames[i]}.\`${this.varName}\` ELSE "NULL" END ${this.stationNames[i]}`;
} else {
stationNamesModels += `,models.data.${this.stationNames[i]}.${this.varName} ${this.stationNames[i]}`;
stationNamesModels += `, models.data.${this.stationNames[i]}.\`${this.varName}\` ${this.stationNames[i]}`;
}
}

Expand Down Expand Up @@ -268,7 +289,10 @@ class MatsMiddleValidTime {
const dataSingleEpoch = {};
const stationsSingleEpoch = {};
for (let i = 0; i < this.stationNames.length; i++) {
const varValStation = fveDataSingleEpoch[this.stationNames[i]];
const varValStation =
fveDataSingleEpoch[this.stationNames[i]] === "NULL"
? null
: fveDataSingleEpoch[this.stationNames[i]];
stationsSingleEpoch[this.stationNames[i]] = varValStation;
}
dataSingleEpoch.stations = stationsSingleEpoch;
Expand Down

0 comments on commit 4afc36c

Please sign in to comment.