From 289661244ebac11c400de00b9227d8926f4be8e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Sun, 30 Jun 2019 15:16:37 +0200 Subject: [PATCH] chore: switch to cheminfo-build tool --- .gitignore | 1 + README.md | 1 + package.json | 17 ++--- rollup.config.js | 7 ++ src/index.js | 182 +++++++++++++++++++++++++++-------------------- 5 files changed, 123 insertions(+), 85 deletions(-) create mode 100644 rollup.config.js diff --git a/.gitignore b/.gitignore index 7a1537b..ea7fee3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ .idea node_modules +lib diff --git a/README.md b/README.md index 5696555..ebfeb9c 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,7 @@ It will be available as the global `ML` variable. The package is in UMD format a - Naive Bayes: [`ML.NaiveBayes`](https://github.com/mljs/naive-bayes) - K-Nearest Neighbor (KNN): [`ML.KNN`](https://github.com/mljs/knn) - Partial least squares (PLS): [`ML.PLS`](https://github.com/mljs/pls) +- K-OPLS: [`ML.KOPLS`](https://github.com/mljs/pls) - Cross-validation: [`ML.CrossValidation`](https://github.com/mljs/cross-validation) - Confusion matrix: [`ML.ConfusionMatrix`](https://github.com/mljs/confusion-matrix) - Decision tree classifier: [`ML.DecisionTreeClassifier`](https://github.com/mljs/decision-tree-cart) diff --git a/package.json b/package.json index f1aa088..e653c73 100644 --- a/package.json +++ b/package.json @@ -4,12 +4,15 @@ "description": "Machine learning tools", "main": "src/index.js", "scripts": { - "test": "node -p \"void(require('./'));console.log('OK')\"", - "build": "cheminfo build --root ML" + "compile": "rollup -c", + "build": "cheminfo-build --root ML", + "prepublishOnly": "npm run compile", + "test": "node -r esm -e \"import './';console.log('OK');\"" }, "files": [ "src", - "dist" + "dist", + "lib" ], "repository": { "type": "git", @@ -43,7 +46,6 @@ "ml-array-rescale": "^1.2.1", "ml-array-sequential-fill": "^1.1.1", "ml-array-standard-deviation": "^1.1.1", - "ml-array-utils": "^0.4.0", "ml-array-variance": "^1.1.1", "ml-array-xy-centroids-merge": "^1.0.0", "ml-array-xy-equally-spaced": "^1.0.0", @@ -83,9 +85,8 @@ "num-sort": "^2.0.0" }, "devDependencies": { - "babel-plugin-remove-comments": "^2.0.0", - "babel-preset-babili": "^0.1.4", - "babel-preset-es2015": "^6.24.1", - "cheminfo-tools": "^1.23.3" + "cheminfo-build": "^1.0.0", + "esm": "^3.2.25", + "rollup": "^1.16.3" } } diff --git a/rollup.config.js b/rollup.config.js new file mode 100644 index 0000000..8752014 --- /dev/null +++ b/rollup.config.js @@ -0,0 +1,7 @@ +export default { + input: 'src/index.js', + output: { + format: 'cjs', + file: 'lib/index.js' + } +}; diff --git a/src/index.js b/src/index.js index 960bed9..7056d44 100644 --- a/src/index.js +++ b/src/index.js @@ -1,101 +1,129 @@ -'use strict'; - -const mlCart = require('ml-cart'); -const mlRandomForest = require('ml-random-forest'); - -const ML = exports; +import { DecisionTreeClassifier, DecisionTreeRegression } from 'ml-cart'; +import { + RandomForestClassifier, + RandomForestRegression +} from 'ml-random-forest'; // Try to keep this list in the same structure as the README. // Unsupervised learning -ML.PCA = require('ml-pca'); -ML.HClust = require('ml-hclust'); -ML.KMeans = require('ml-kmeans'); +export { PCA } from 'ml-pca'; +import * as HClust from 'ml-hclust'; +export { HClust }; +export { default as KMeans } from 'ml-kmeans'; // Supervised learning -ML.NaiveBayes = require('ml-naivebayes'); -ML.KNN = require('ml-knn'); -ML.PLS = require('ml-pls'); -ML.CrossValidation = require('ml-cross-validation'); -ML.ConfusionMatrix = require('ml-confusion-matrix'); -ML.DecisionTreeClassifier = mlCart.DecisionTreeClassifier; -ML.RandomForestClassifier = mlRandomForest.RandomForestClassifier; +import * as NaiveBayes from 'ml-naivebayes'; +export { NaiveBayes }; +export { default as KNN } from 'ml-knn'; +export { PLS, KOPLS } from 'ml-pls'; +export { default as CrossValidation } from 'ml-cross-validation'; +export { default as ConfusionMatrix } from 'ml-confusion-matrix'; +export { DecisionTreeClassifier }; +export { RandomForestClassifier }; // Artificial neural networks -ML.FNN = require('ml-fnn'); -ML.SOM = require('ml-som'); +export { default as FNN } from 'ml-fnn'; +export { default as SOM } from 'ml-som'; // Regression -const Regression = require('ml-regression'); -ML.SimpleLinearRegression = Regression.SimpleLinearRegression; -ML.PolynomialRegression = Regression.PolynomialRegression; -ML.MultivariateLinearRegression = Regression.MultivariateLinearRegression; -ML.PowerRegression = Regression.PowerRegression; -ML.ExponentialRegression = Regression.ExponentialRegression; -ML.TheilSenRegression = Regression.TheilSenRegression; -ML.RobustPolynomialRegression = Regression.RobustPolynomialRegression; -ML.DecisionTreeRegression = mlCart.DecisionTreeRegression; -ML.RandomForestRegression = mlRandomForest.RandomForestRegression; +export { + SimpleLinearRegression, + PolynomialRegression, + MultivariateLinearRegression, + PowerRegression, + ExponentialRegression, + TheilSenRegression, + RobustPolynomialRegression +} from 'ml-regression'; +export { DecisionTreeRegression }; +export { RandomForestRegression }; // Optimization -ML.levenbergMarquardt = require('ml-levenberg-marquardt'); +export { default as levenbergMarquardt } from 'ml-levenberg-marquardt'; // Math -const Matrix = require('ml-matrix'); -ML.Matrix = Matrix.Matrix; -ML.SVD = Matrix.SVD; -ML.EVD = Matrix.EVD; -ML.CholeskyDecomposition = Matrix.CholeskyDecomposition; -ML.LuDecomposition = Matrix.LuDecomposition; -ML.QrDecomposition = Matrix.QrDecomposition; +import * as MatrixLib from 'ml-matrix'; +const { + Matrix, + SVD, + EVD, + CholeskyDecomposition, + LuDecomposition, + QrDecomposition +} = MatrixLib; +export { + MatrixLib, + Matrix, + SVD, + EVD, + CholeskyDecomposition, + LuDecomposition, + QrDecomposition +}; -ML.SparseMatrix = require('ml-sparse-matrix'); -ML.Kernel = require('ml-kernel'); -ML.Distance = require('ml-distance').distance; -ML.Similarity = require('ml-distance').similarity; -ML.distanceMatrix = require('ml-distance-matrix'); -ML.XSadd = require('ml-xsadd').default; +export { SparseMatrix } from 'ml-sparse-matrix'; +export { default as Kernel } from 'ml-kernel'; +import { distance, similarity } from 'ml-distance'; +export { distance as Distance, similarity as Similarity }; +export { default as distanceMatrix } from 'ml-distance-matrix'; +export { default as XSadd } from 'ml-xsadd'; // Statistics -ML.Performance = require('ml-performance'); +export { default as Performance } from 'ml-performance'; // Data preprocessing -ML.savitzkyGolay = require('ml-savitzky-golay'); +export { default as savitzkyGolay } from 'ml-savitzky-golay'; // Utility -ML.BitArray = require('ml-bit-array'); -ML.HashTable = require('ml-hash-table'); -ML.padArray = require('ml-pad-array'); -ML.binarySearch = require('binary-search'); -ML.numSort = require('num-sort'); -ML.Random = require('ml-random').default; - -// Undocumented/deprecated packages -ML.ArrayUtils = require('ml-array-utils'); -ML.Regression = require('ml-regression'); -ML.MatrixUtil = require('ml-matrix'); - -ML.Array = { - min: require('ml-array-min').default, - max: require('ml-array-max').default, - median: require('ml-array-median').default, - mean: require('ml-array-mean').default, - mode: require('ml-array-mode').default, - normed: require('ml-array-normed').default, - rescale: require('ml-array-rescale').default, - sequentialFill: require('ml-array-sequential-fill').default, - standardDeviation: require('ml-array-standard-deviation').default, - variance: require('ml-array-variance').default +export { default as BitArray } from 'ml-bit-array'; +export { default as HashTable } from 'ml-hash-table'; +export { default as padArray } from 'ml-pad-array'; +export { default as binarySearch } from 'binary-search'; +import * as numSort from 'num-sort'; +export { numSort }; +export { default as Random } from 'ml-random'; + +import min from 'ml-array-min'; +import max from 'ml-array-max'; +import median from 'ml-array-median'; +import mean from 'ml-array-mean'; +import mode from 'ml-array-mode'; +import normed from 'ml-array-normed'; +import rescale from 'ml-array-rescale'; +import sequentialFill from 'ml-array-sequential-fill'; +import standardDeviation from 'ml-array-standard-deviation'; +import variance from 'ml-array-variance'; +export const Array = { + min, + max, + median, + mean, + mode, + normed, + rescale, + sequentialFill, + standardDeviation, + variance }; -ML.ArrayXY = { - centroidsMerge: require('ml-array-xy-centroids-merge').default, - closestX: require('ml-arrayxy-closestx').default, - maxMerge: require('ml-array-xy-max-merge').default, - maxY: require('ml-array-xy-max-y').default, - sortX: require('ml-array-xy-sort-x').default, - uniqueX: require('ml-arrayxy-uniquex').default, - weightedMerge: require('ml-array-xy-weighted-merge').default, - equallySpaced: require('ml-array-xy-equally-spaced').default, - filterX: require('ml-array-xy-filter-x').default +import centroidsMerge from 'ml-array-xy-centroids-merge'; +import closestX from 'ml-arrayxy-closestx'; +import maxMerge from 'ml-array-xy-max-merge'; +import maxY from 'ml-array-xy-max-y'; +import sortX from 'ml-array-xy-sort-x'; +import uniqueX from 'ml-arrayxy-uniquex'; +import weightedMerge from 'ml-array-xy-weighted-merge'; +import equallySpaced from 'ml-array-xy-equally-spaced'; +import filterX from 'ml-array-xy-filter-x'; +export const ArrayXY = { + centroidsMerge, + closestX, + maxMerge, + maxY, + sortX, + uniqueX, + weightedMerge, + equallySpaced, + filterX };