StackGenVis: Alignment of Data, Algorithms, and Models for Stacking Ensemble Learning Using Performance Metrics https://doi.org/10.1109/TVCG.2020.3030352
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
StackGenVis/frontend/node_modules/d3-loom/build/d3-loom.js.map

1 lines
24 KiB

{"version":3,"file":"d3-loom.js","sources":["../src/compare-value.js","../src/constant.js","../src/loom.js","../src/string.js"],"sourcesContent":["export default function compareValue(compare) {\n return (a, b) => compare(a.outer.value, b.outer.value);\n}\n","export default function constant(x) {\n return () => x;\n}\n","/* Based on the d3v4 d3.chord() function by Mike Bostock\n** Adjusted by Nadieh Bremer - July 2016 */\n\n/* global d3 */\nimport compareValue from './compare-value';\nimport constant from './constant';\n\nexport default function loom() {\n const tau = Math.PI * 2;\n\n let padAngle = 0;\n let sortGroups = null;\n let sortSubgroups = null;\n let sortLooms = null;\n let emptyPerc = 0.2;\n let heightInner = 20;\n let widthInner = () => 30;\n let value = d => d.value;\n let inner = d => d.inner;\n let outer = d => d.outer;\n\n function loomLayout(layoutData) {\n // Nest the data on the outer variable\n const data = d3.nest().key(outer).entries(layoutData);\n\n const n = data.length;\n\n // Loop over the outer groups and sum the values\n\n const groupSums = [];\n const groupIndex = d3.range(n);\n const subgroupIndex = [];\n const looms = [];\n looms.groups = new Array(n);\n const groups = looms.groups;\n let numSubGroups;\n looms.innergroups = [];\n const uniqueInner = looms.innergroups;\n const uniqueCheck = [];\n let k;\n let x;\n let x0;\n let j;\n let l;\n let s;\n let v;\n let sum;\n let section;\n let remain;\n let counter;\n let reverseOrder = false;\n let approxCenter;\n k = 0;\n numSubGroups = 0;\n for (let i = 0; i < n; i += 1) {\n v = data[i].values.length;\n sum = 0;\n for (j = 0; j < v; j += 1) {\n sum += value(data[i].values[j]);\n } // for j\n groupSums.push(sum);\n subgroupIndex.push(d3.range(v));\n numSubGroups += v;\n k += sum;\n } // for i\n\n // Sort the groups…\n if (sortGroups) {\n groupIndex.sort((a, b) => sortGroups(groupSums[a], groupSums[b]));\n }\n\n // Sort subgroups…\n if (sortSubgroups) {\n subgroupIndex.forEach((d, i) => {\n d.sort((a, b) =>\n sortSubgroups(inner(data[i].values[a]), inner(data[i].values[b]))\n );\n });\n }\n\n // After which group are we past the center, taking into account the padding\n // TODO: make something for if there is no \"nice\" split in two...\n const padk = k * (padAngle / tau);\n l = 0;\n for (let i = 0; i < n; i += 1) {\n section = groupSums[groupIndex[i]] + padk;\n l += section;\n if (l > (k + n * padk) / 2) {\n // Check if the group should be added to left or right\n remain = k + n * padk - (l - section);\n approxCenter = remain / section < 0.5\n ? groupIndex[i]\n : groupIndex[i - 1];\n break;\n } // if\n } // for i\n\n // How much should be added to k to make the empty part emptyPerc big of the total\n const emptyk = k * emptyPerc / (1 - emptyPerc);\n k += emptyk;\n\n // Convert the sum to scaling factor for [0, 2pi].\n k = Math.max(0, tau - padAngle * n) / k;\n const dx = k ? padAngle : tau / n;\n\n // Compute the start and end angle for each group and subgroup.\n // Note: Opera has a bug reordering object literal properties!\n const subgroups = new Array(numSubGroups);\n x = emptyk * 0.25 * k; // starting with quarter of the empty part to the side;\n counter = 0;\n for (let i = 0; i < n; i += 1) {\n const di = groupIndex[i];\n const outername = data[di].key;\n\n x0 = x;\n s = subgroupIndex[di].length;\n for (j = 0; j < s; j += 1) {\n const dj = reverseOrder\n ? subgroupIndex[di][s - 1 - j]\n : subgroupIndex[di][j];\n\n v = value(data[di].values[dj]);\n const innername = inner(data[di].values[dj]);\n const a0 = x;\n x += v * k;\n const a1 = x;\n subgroups[counter] = {\n index: di,\n subindex: dj,\n startAngle: a0,\n endAngle: a1,\n value: v,\n outername,\n innername,\n groupStartAngle: x0\n };\n\n // Check and save the unique inner names\n if (!uniqueCheck[innername]) {\n uniqueCheck[innername] = true;\n uniqueInner.push({ name: innername });\n } // if\n\n counter += 1;\n } // for j\n groups[di] = {\n index: di,\n startAngle: x0,\n endAngle: x,\n value: groupSums[di],\n outername\n };\n x += dx;\n // If this is the approximate center, add half of the empty piece for the bottom\n if (approxCenter === di) x += emptyk * 0.5 * k;\n // If you've crossed the bottom, reverse the order of the inner strings\n if (x > Math.PI) reverseOrder = true;\n } // for i\n\n // Sort the inner groups in the same way as the strings\n if (sortSubgroups) {\n uniqueInner.sort((a, b) => sortSubgroups(a.name, b.name));\n }\n\n // Find x and y locations of the inner categories\n const m = uniqueInner.length;\n for (let i = 0; i < m; i += 1) {\n uniqueInner[i].x = 0;\n uniqueInner[i].y = -m * heightInner / 2 + i * heightInner;\n uniqueInner[i].offset = widthInner(uniqueInner[i].name, i);\n } // for i\n\n // Generate bands for each (non-empty) subgroup-subgroup link\n counter = 0;\n for (let i = 0; i < n; i += 1) {\n const di = groupIndex[i];\n s = subgroupIndex[di].length;\n for (j = 0; j < s; j += 1) {\n const outerGroup = subgroups[counter];\n const innerTerm = outerGroup.innername;\n // Find the correct inner object based on the name\n const innerGroup = searchTerm(innerTerm, 'name', uniqueInner);\n if (outerGroup.value) {\n looms.push({ inner: innerGroup, outer: outerGroup });\n } // if\n counter += 1;\n } // for j\n } // for i\n\n return sortLooms ? looms.sort(sortLooms) : looms;\n } // loomLayout\n\n function searchTerm(term, property, arrayToSearch) {\n for (let i = 0; i < arrayToSearch.length; i += 1) {\n if (arrayToSearch[i][property] === term) {\n return arrayToSearch[i];\n } // if\n } // for i\n return null;\n } // searchTerm\n\n loomLayout.padAngle = function(_) {\n return arguments.length\n ? ((padAngle = Math.max(0, _)), loomLayout)\n : padAngle;\n };\n\n loomLayout.inner = function(_) {\n return arguments.length ? ((inner = _), loomLayout) : inner;\n };\n\n loomLayout.outer = function(_) {\n return arguments.length ? ((outer = _), loomLayout) : outer;\n };\n\n loomLayout.value = function(_) {\n return arguments.length ? ((value = _), loomLayout) : value;\n };\n\n loomLayout.heightInner = function(_) {\n return arguments.length ? ((heightInner = _), loomLayout) : heightInner;\n };\n\n loomLayout.widthInner = function(_) {\n return arguments.length\n ? ((widthInner = typeof _ === 'function' ? _ : constant(+_)), loomLayout)\n : widthInner;\n };\n\n loomLayout.emptyPerc = function(_) {\n return arguments.length\n ? ((emptyPerc = _ < 1\n ? Math.max(0, _)\n : Math.max(0, _ * 0.01)), loomLayout)\n : emptyPerc;\n };\n\n loomLayout.sortGroups = function(_) {\n return arguments.length ? ((sortGroups = _), loomLayout) : sortGroups;\n };\n\n loomLayout.sortSubgroups = function(_) {\n return arguments.length ? ((sortSubgroups = _), loomLayout) : sortSubgroups;\n };\n\n loomLayout.sortLooms = function(_) {\n return arguments.length\n ? (_ == null\n ? (sortLooms = null)\n : ((sortLooms = compareValue(_))._ = _), loomLayout)\n : sortLooms && sortLooms._;\n };\n\n return loomLayout;\n} // loom\n","/* global d3 */\n\nimport constant from './constant';\n\nexport default function string() {\n const slice = Array.prototype.slice;\n const cos = Math.cos;\n const sin = Math.sin;\n const halfPi = Math.PI / 2;\n const tau = Math.PI * 2;\n\n let inner = d => d.inner;\n let outer = d => d.outer;\n let radius = () => 100;\n let groupStartAngle = d => d.groupStartAngle;\n let startAngle = d => d.startAngle;\n let endAngle = d => d.endAngle;\n let x = d => d.x;\n let y = d => d.y;\n let offset = d => d.offset;\n let pullout = 50;\n let thicknessInner = 0;\n let context = null;\n\n function stringLayout(...args) {\n let buffer;\n const argv = slice.call(args);\n const out = outer.apply(this, argv);\n const inn = inner.apply(this, argv);\n argv[0] = out;\n const sr = +radius.apply(this, argv);\n const sa0 = startAngle.apply(this, argv) - halfPi;\n const sga0 = groupStartAngle.apply(this, argv) - halfPi;\n const sa1 = endAngle.apply(this, argv) - halfPi;\n let sx0 = sr * cos(sa0);\n const sy0 = sr * sin(sa0);\n let sx1 = sr * cos(sa1);\n const sy1 = sr * sin(sa1);\n argv[0] = inn;\n // 'tr' is assigned a value but never used\n // const tr = +radius.apply(this, (argv));\n let tx = x.apply(this, argv);\n const ty = y.apply(this, argv);\n let toffset = offset.apply(this, argv);\n let xco;\n let yco;\n let xci;\n let yci;\n\n // Does the group lie on the left side;\n const leftHalf = sga0 + halfPi > Math.PI && sga0 + halfPi < tau;\n // If the group lies on the other side, switch the inner point offset\n if (leftHalf) toffset = -toffset;\n tx += toffset;\n // And the height of the end point\n const theight = leftHalf ? -thicknessInner : thicknessInner;\n\n if (!context) {\n buffer = d3.path();\n context = buffer;\n }\n\n // Change the pullout based on where the stringLayout is\n const pulloutContext = (leftHalf ? -1 : 1) * pullout;\n sx0 += pulloutContext;\n sx1 += pulloutContext;\n // Start at smallest angle of outer arc\n context.moveTo(sx0, sy0);\n // Circular part along the outer arc\n context.arc(pulloutContext, 0, sr, sa0, sa1);\n // From end outer arc to center (taking into account the pullout)\n xco = d3.interpolateNumber(pulloutContext, sx1)(0.5);\n yco = d3.interpolateNumber(0, sy1)(0.5);\n if ((!leftHalf && sx1 < tx) || (leftHalf && sx1 > tx)) {\n // If the outer point lies closer to the center than the inner point\n xci = tx + (tx - sx1) / 2;\n yci = d3.interpolateNumber(ty + theight / 2, sy1)(0.5);\n } else {\n xci = d3.interpolateNumber(tx, sx1)(0.25);\n yci = ty + theight / 2;\n } // else\n context.bezierCurveTo(xco, yco, xci, yci, tx, ty + theight / 2);\n // Draw a straight line up/down (depending on the side of the circle)\n context.lineTo(tx, ty - theight / 2);\n // From center (taking into account the pullout) to start of outer arc\n xco = d3.interpolateNumber(pulloutContext, sx0)(0.5);\n yco = d3.interpolateNumber(0, sy0)(0.5);\n if ((!leftHalf && sx0 < tx) || (leftHalf && sx0 > tx)) {\n // If the outer point lies closer to the center than the inner point\n xci = tx + (tx - sx0) / 2;\n yci = d3.interpolateNumber(ty - theight / 2, sy0)(0.5);\n } else {\n xci = d3.interpolateNumber(tx, sx0)(0.25);\n yci = ty - theight / 2;\n } // else\n context.bezierCurveTo(xci, yci, xco, yco, sx0, sy0);\n // Close path\n context.closePath();\n\n if (buffer) {\n context = null;\n return `${buffer}` || null;\n }\n return null;\n }\n\n stringLayout.radius = function(_) {\n return arguments.length\n ? ((radius = typeof _ === 'function' ? _ : constant(+_)), stringLayout)\n : radius;\n };\n\n stringLayout.groupStartAngle = function(_) {\n return arguments.length\n ? ((groupStartAngle = typeof _ === 'function'\n ? _\n : constant(+_)), stringLayout)\n : groupStartAngle;\n };\n\n stringLayout.startAngle = function(_) {\n return arguments.length\n ? ((startAngle = typeof _ === 'function'\n ? _\n : constant(+_)), stringLayout)\n : startAngle;\n };\n\n stringLayout.endAngle = function(_) {\n return arguments.length\n ? ((endAngle = typeof _ === 'function' ? _ : constant(+_)), stringLayout)\n : endAngle;\n };\n\n stringLayout.x = function(_) {\n return arguments.length ? ((x = _), stringLayout) : x;\n };\n\n stringLayout.y = function(_) {\n return arguments.length ? ((y = _), stringLayout) : y;\n };\n\n stringLayout.offset = function(_) {\n return arguments.length ? ((offset = _), stringLayout) : offset;\n };\n\n stringLayout.thicknessInner = function(_) {\n return arguments.length\n ? ((thicknessInner = _), stringLayout)\n : thicknessInner;\n };\n\n stringLayout.inner = function(_) {\n return arguments.length ? ((inner = _), stringLayout) : inner;\n };\n\n stringLayout.outer = function(_) {\n return arguments.length ? ((outer = _), stringLayout) : outer;\n };\n\n stringLayout.pullout = function(_) {\n return arguments.length ? ((pullout = _), stringLayout) : pullout;\n };\n\n stringLayout.context = function(_) {\n return arguments.length\n ? ((context = _ == null ? null : _), stringLayout)\n : context;\n };\n\n return stringLayout;\n}\n"],"names":["compareValue","compare","a","b","outer","value","constant","x","loom","tau","Math","PI","padAngle","sortGroups","sortSubgroups","sortLooms","emptyPerc","heightInner","widthInner","d","inner","loomLayout","layoutData","data","d3","nest","key","entries","n","length","groupSums","groupIndex","range","subgroupIndex","looms","groups","Array","numSubGroups","innergroups","uniqueInner","uniqueCheck","k","x0","j","l","s","v","sum","section","remain","counter","reverseOrder","approxCenter","i","values","push","sort","forEach","padk","emptyk","max","dx","subgroups","di","outername","dj","innername","a0","a1","name","m","y","offset","outerGroup","innerTerm","innerGroup","searchTerm","term","property","arrayToSearch","_","arguments","string","slice","prototype","cos","sin","halfPi","radius","groupStartAngle","startAngle","endAngle","pullout","thicknessInner","context","stringLayout","buffer","args","argv","call","out","apply","inn","sr","sa0","sga0","sa1","sx0","sy0","sx1","sy1","tx","ty","toffset","xco","yco","xci","yci","leftHalf","theight","path","pulloutContext","moveTo","arc","interpolateNumber","bezierCurveTo","lineTo","closePath"],"mappings":"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"}