skillsForOccup = {
let skoccup = {}
let numRows = 0
let numSelected = 0
let numOccupIds = 0
console.log("START ** ***")
data_OccupSkill.forEach((row, i) => {
const dataValue = parseFloat(row['Data Value'])
numRows += 1
const occupId = row["SOC_Code"]
if (obsSOC2Idx.hasOwnProperty(occupId) && i < 100000) {
numSelected += 1
const skIdx = skillsIndex[skId]
let myRow
if (!skoccup.hasOwnProperty(occupId)) {
const occupIdx = obsSOC2Idx[occupId]
const myOccup = data_OccupTST[occupIdx]
myRow = {
occupId,
seqMaj: myOccup.SeqMajGrp,
seqRnd: myOccup.SeqRandom,
seqOnt: myOccup.SeqOntoGrp,
im: Array(35).fill(-1),
lv: Array(35).fill(-1)
}
skoccup[occupId] = myRow
numOccupIds += 1
} else {
myRow = skoccup[occupId]
}
// add current row ability index and value of IM or LV; converted to 0, 1 or 2 based on threshold
// whether addedd or existing, myRow should point into the array
let keyVal = 0 // default to low; 1 = abv, 2 = hi
if (row["Scale ID"] === 'IM') {
if (dataValue >= obscfg.imAbv) keyVal = 1
if (dataValue > obscfg.imHi) keyVal = 2
myRow.im[skIdx] = keyVal
// console.log("abl " + skIdx + " imval " + dataValue + " " + keyVal)
} else {
if (dataValue >= obscfg.lvAbv) keyVal = 1
if (dataValue > obscfg.lvHi) keyVal = 2
myRow.lv[skIdx] = keyVal
// console.log("abl " + skIdx + " lvval " + value + " " + keyVal)
}
// console.log("MyRow ", myRow)
}
})
console.log("In skills: Num sk-oc " + numRows + " sel: " + numSelected + " occup " + numOccupIds)
// analyze skill-occups: Number with 0 for all abils; Counts by keyvalue
let imCnts = [0, 0, 0]
let lvCnts = [0, 0, 0]
let numAllZeroIm = 0
let numAllZeroLv = 0
let numskoc = 0 // diag remove
for (const [key, val] of Object.entries(skoccup)) {
numskoc += 1
// if (numskoc < 5) console.log("im vals ", val.im)
let imAllZero = true
let lvAllZero = true
for (let j = 0; j < 35; j++) {
if (val.im[j] > -1) {
if (val.im[j] < 0 || val.im[j] > 2) console.log("Error at im " + key + " " + j + " " + val.im[j])
if (val.im[j] > 0) imAllZero = false
imCnts[val.im[j]] += 1
}
if (val.lv[j] > -1) {
if (val.lv[j] < 0 || val.lv[j] > 2) console.log("Error at lv " + key + " " + j)
if (val.lv[j] > 0) lvAllZero = false
lvCnts[val.lv[j]] += 1
}
}
if (imAllZero) numAllZeroIm += 1
if (lvAllZero) numAllZeroLv += 1
}
console.log(" cnts im ", imCnts)
console.log(" cnts lv ", lvCnts)
console.log(" Num all zero IM ", numAllZeroIm)
console.log(" Num all zero LV ", numAllZeroLv)
return skoccup
}