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.
139 lines
2.9 KiB
139 lines
2.9 KiB
'use strict';
|
|
|
|
var utils = module.exports = require('lazy-cache')(require);
|
|
var warnings = require('./warnings');
|
|
var fn = require;
|
|
require = utils;
|
|
|
|
/**
|
|
* Lazily required module dependencies
|
|
*/
|
|
|
|
require('arr-union', 'union');
|
|
require('collection-visit', 'visit');
|
|
require('define-property', 'define');
|
|
require('extend-shallow', 'extend');
|
|
require('get-value', 'get');
|
|
require('is-primitive');
|
|
require('kind-of', 'typeOf');
|
|
require('log-utils', 'log');
|
|
require('longest');
|
|
require('mixin-deep', 'merge');
|
|
require('object.omit', 'omit');
|
|
require('object.pick', 'pick');
|
|
require('omit-empty');
|
|
require('pad-right', 'pad');
|
|
require('set-value', 'set');
|
|
require('sort-object-arrays', 'sortArrays');
|
|
require('union-value');
|
|
require = fn;
|
|
|
|
/**
|
|
* Logging colors and symbols
|
|
*/
|
|
|
|
utils.symbol = utils.log.symbols;
|
|
utils.color = utils.log.colors;
|
|
|
|
/**
|
|
* Return true if `obj` has property `key`, and its value is
|
|
* not undefind, null or an empty string.
|
|
*
|
|
* @param {any} `val`
|
|
* @return {Boolean}
|
|
*/
|
|
|
|
utils.hasValue = function(key, target) {
|
|
if (!target.hasOwnProperty(key)) {
|
|
return false;
|
|
}
|
|
var val = target[key];
|
|
if (typeof val === 'undefined' || val === 'undefined') {
|
|
return false;
|
|
}
|
|
if (val === null || val === '') {
|
|
return false;
|
|
}
|
|
return true;
|
|
};
|
|
|
|
utils.hasElement = function(key, target) {
|
|
if (typeof target === 'string') {
|
|
target = [target];
|
|
}
|
|
return target.indexOf(key) === -1;
|
|
};
|
|
|
|
/**
|
|
* Return true if `val` is empty
|
|
*/
|
|
|
|
utils.isEmpty = function(val) {
|
|
if (utils.isPrimitive(val)) {
|
|
return val === 0 || val === null || typeof val === 'undefined';
|
|
}
|
|
if (Array.isArray(val)) {
|
|
return val.length === 0;
|
|
}
|
|
if (utils.isObject(val)) {
|
|
return Object.keys(utils.omitEmpty(val)).length === 0;
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Return true if `val` is an object, not an array or function.
|
|
*
|
|
* @param {any} `val`
|
|
* @return {Boolean}
|
|
*/
|
|
|
|
utils.isObject = function(val) {
|
|
return utils.typeOf(val) === 'object';
|
|
};
|
|
|
|
/**
|
|
* Cast `val` to an array.
|
|
*
|
|
* @param {String|Array} val
|
|
* @return {Array}
|
|
*/
|
|
|
|
utils.arrayify = function(val) {
|
|
return val ? (Array.isArray(val) ? val : [val]) : [];
|
|
};
|
|
|
|
/**
|
|
* Return the indefinite article(s) to use for the given
|
|
* JavaScript native type or types.
|
|
*
|
|
* @param {String|Array} `types`
|
|
* @return {String}
|
|
*/
|
|
|
|
utils.article = function(types) {
|
|
if (typeof types === 'string' || types.length === 1) {
|
|
var prefix = /^[aeiou]/.test(String(types)) ? 'an ' : 'a ';
|
|
return prefix + types;
|
|
}
|
|
return types.map(function(type) {
|
|
return utils.article(type);
|
|
}).join(' or ');
|
|
};
|
|
|
|
/**
|
|
* Format a line in the warning table
|
|
*/
|
|
|
|
utils.formatWarning = function(warning) {
|
|
var method = warning.method;
|
|
var msg = utils.log.warning;
|
|
msg += ' ';
|
|
msg += utils.color.yellow('warning');
|
|
msg += ' ';
|
|
if (method === 'custom') {
|
|
msg += warning.message;
|
|
} else {
|
|
msg += warnings[warning.method](warning);
|
|
}
|
|
return msg;
|
|
};
|
|
|