UNPKG

@naimi/alib

Version:
113 lines (97 loc) 2.85 kB
const fs = require('fs') //! multiply all array elements by n. works on any dimension arrays arr_multiply = function (arr, n, len) { if (typeof len == "undefined") len = 0; if (arr.length === len) return 0; if (Array.isArray(arr[len])) arr_multiply(arr[len], n); else arr[len] = arr[len] * n; arr_multiply(arr, n, len + 1); } //! convert all floats > int. works on any dimension arrays arr2fixed = function (arr, n, len) { if (typeof len == "undefined") len = 0; if (arr.length === len) return 0; if (Array.isArray(arr[len])) arr2fixed(arr[len], n); else arr[len] = parseFloat(arr[len].toFixed(n)); arr2fixed(arr, n, len + 1); } var inp_fn = process.argv[2] if (process.argv[3] === undefined) var out_fn = inp_fn.replace(".json", "") + "_peak-hour.json" else var out_fn = process.argv[3]; const fsp = fs.promises; async function dir(pth) { try { return fsp.readdir(pth); } catch (e) { console.log(e); } } async function readf(inp) { try { console.log("reading :" + inp); return await fsp.readFile(inp, { encoding: 'utf8' }); } catch (e) { console.log(e); } } async function savef(fn, txt) { try { console.log("saving :" + fn); return await fsp.writeFile(fn, txt); } catch (e) { console.log(e); } } async function remove_per(inp) { return inp.replace(/%22/g, "\"").replace(/%20/g, " ").replace(/%3F/g, "?").replace(/%26/g, "&").replace(/%3C/g, "<").replace(/%3D/g, "="); } const main = async () => { const res = await dir("c:/"); var int0_str = await readf(inp_fn); var int0 = JSON.parse(int0_str); factor_am = 0.417 factor_pm = 0.294 if (inp_fn.toLowerCase().includes("bmc")) { //! For MWCOG model: //! AM peak period 3 Hrs. (6 AM - 9 AM) (41.7%) //! Midday period 6 Hrs. (9 AM - 3 PM) (17.7%) //! PM peak period 4 Hrs. (3 PM - 7 PM) (29.4%) //! Night period 11 Hrs. (7 PM - 6 AM) (15.0%) //! //! For BMC Model: //! AM = 6:30a - 9:30a (37.2%) //! MD = 9:30a - 3:30p (18.4%) //! PM = 3:30p - 6:30p (36.0%) //! NT = 6:30p - 6:30a (18.9%) factor_am = 0.372 factor_pm = 0.360 } //! int0_ph = clone_obj(int0) int0_ph = int0 arr_multiply(int0_ph.AMVol, factor_am); arr_multiply(int0_ph.PMVol, factor_pm); arr_multiply(int0_ph.AMTot_inp, factor_am); arr_multiply(int0_ph.PMTot_inp, factor_pm); arr_multiply(int0_ph.AMTot_out, factor_am); arr_multiply(int0_ph.PMTot_out, factor_pm); arr2fixed(int0_ph.AMVol, 0); arr2fixed(int0_ph.PMVol, 0); arr2fixed(int0_ph.AMTot_inp, 0); arr2fixed(int0_ph.PMTot_inp, 0); arr2fixed(int0_ph.AMTot_out, 0); arr2fixed(int0_ph.PMTot_out, 0); strOut_ph = JSON.stringify(int0_ph, 2); //! js // strOut_ph = beautify(strOut_ph); //! npm var done_fy = await savef(out_fn, strOut_ph) } main();